diff options
Diffstat (limited to 'clang/test/CIR/CodeGen/static-vars.cpp')
| -rw-r--r-- | clang/test/CIR/CodeGen/static-vars.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/clang/test/CIR/CodeGen/static-vars.cpp b/clang/test/CIR/CodeGen/static-vars.cpp index d949936f6bff..4f22fc7abc54 100644 --- a/clang/test/CIR/CodeGen/static-vars.cpp +++ b/clang/test/CIR/CodeGen/static-vars.cpp @@ -2,6 +2,37 @@ // RUN: FileCheck --input-file=%t.cir %s // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t1.ll // RUN: FileCheck --check-prefix=LLVM --input-file=%t1.ll %s +// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -emit-llvm %s -o %t1.ll +// RUN: FileCheck --check-prefix=OGCG --input-file=%t1.ll %s + +template<typename T> +struct implicitly_instantiated { + static T member; +}; + +template<typename T> +T implicitly_instantiated<T>::member = 12345; + +int use_implicitly_instantiated() { + return implicitly_instantiated<int>::member; +} + +// CHECK-DAG: cir.global linkonce_odr comdat @_ZN23implicitly_instantiatedIiE6memberE = #cir.int<12345> : !s32i +// LLVM-DAG: @_ZN23implicitly_instantiatedIiE6memberE = linkonce_odr global i32 12345, comdat +// OGCG-DAG: @_ZN23implicitly_instantiatedIiE6memberE = linkonce_odr global i32 12345, comdat + +template<typename T> +struct explicitly_instantiated { + static T member; +}; + +template<typename T> +T explicitly_instantiated<T>::member = 54321; + +template int explicitly_instantiated<int>::member; +// CHECK-DAG: cir.global weak_odr comdat @_ZN23explicitly_instantiatedIiE6memberE = #cir.int<54321> : !s32i +// LLVM-DAG: @_ZN23explicitly_instantiatedIiE6memberE = weak_odr global i32 54321, comdat +// OGCG-DAG: @_ZN23explicitly_instantiatedIiE6memberE = weak_odr global i32 54321, comdat void func1(void) { // Should lower default-initialized static vars. @@ -42,6 +73,8 @@ void func2(void) { // LLVM-DAG: $_ZZ4testvE1c = comdat any // LLVM-DAG: @_ZZ4testvE1c = linkonce_odr global i32 0, comdat, align 4 +// OGCG-DAG: $_ZZ4testvE1c = comdat any +// OGCG-DAG: @_ZZ4testvE1c = linkonce_odr global i32 0, comdat, align 4 inline void test() { static int c; } // CHECK-LABEL: @_Z4testv |
