From 93ee9caaede478563bed7d29c7331552f74c3508 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Wed, 10 Jan 2018 23:08:26 +0000 Subject: In C++17, when instantiating an out-of-line definition of an inline static data member, don't forget to instantiate the initializer too. llvm-svn: 322236 --- clang/test/CodeGenCXX/cxx1z-inline-variables.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'clang/test/CodeGenCXX/cxx1z-inline-variables.cpp') diff --git a/clang/test/CodeGenCXX/cxx1z-inline-variables.cpp b/clang/test/CodeGenCXX/cxx1z-inline-variables.cpp index 2d16acd8a8c..50eab3b7061 100644 --- a/clang/test/CodeGenCXX/cxx1z-inline-variables.cpp +++ b/clang/test/CodeGenCXX/cxx1z-inline-variables.cpp @@ -58,14 +58,22 @@ template struct X { static int a; static inline int b; static int c; + static const int d; + static int e; }; // CHECK: @_ZN1XIiE1aE = linkonce_odr global i32 10 // CHECK: @_ZN1XIiE1bE = global i32 20 // CHECK-NOT: @_ZN1XIiE1cE +// CHECK: @_ZN1XIiE1dE = linkonce_odr constant i32 40 +// CHECK: @_ZN1XIiE1eE = linkonce_odr global i32 50 template<> inline int X::a = 10; int &use3 = X::a; template<> int X::b = 20; template<> inline int X::c = 30; +template constexpr int X::d = 40; +template inline int X::e = 50; +const int *use_x_int_d = &X::d; +const int *use_x_int_e = &X::e; template struct Y; template<> struct Y { -- cgit v1.2.3