diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-05-29 16:25:46 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-05-29 16:25:46 +0000 |
| commit | b5aee35cc5d62f11d98539f62e4fe63f0ac9edc6 (patch) | |
| tree | 3e6ab962dbc73cfe1445a60d2eb4dfba7c939a22 /test/CodeGenCXX | |
| parent | aa803409c3bd3930126db630c29f63d42f255153 (diff) | |
Diffstat (limited to 'test/CodeGenCXX')
| -rw-r--r-- | test/CodeGenCXX/apple-kext-indirect-virtual-dtor-call.cpp | 2 | ||||
| -rw-r--r-- | test/CodeGenCXX/apple-kext-no-staticinit-section.cpp | 2 | ||||
| -rw-r--r-- | test/CodeGenCXX/debug-info-global-ctor-dtor.cpp | 4 | ||||
| -rw-r--r-- | test/CodeGenCXX/optnone-templates.cpp | 2 | ||||
| -rw-r--r-- | test/CodeGenCXX/static-init-wasm.cpp | 8 | ||||
| -rw-r--r-- | test/CodeGenCXX/thunks.cpp | 2 | ||||
| -rw-r--r-- | test/CodeGenCXX/union-tbaa2.cpp | 45 |
7 files changed, 55 insertions, 10 deletions
diff --git a/test/CodeGenCXX/apple-kext-indirect-virtual-dtor-call.cpp b/test/CodeGenCXX/apple-kext-indirect-virtual-dtor-call.cpp index 4cfa88d99455..3f26cb406742 100644 --- a/test/CodeGenCXX/apple-kext-indirect-virtual-dtor-call.cpp +++ b/test/CodeGenCXX/apple-kext-indirect-virtual-dtor-call.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fapple-kext -fno-rtti -emit-llvm -o - %s | FileCheck %s +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fapple-kext -fno-rtti -disable-O0-optnone -emit-llvm -o - %s | FileCheck %s // CHECK: @_ZTV5TemplIiE = internal unnamed_addr constant { [7 x i8*] } { [7 x i8*] [i8* null, i8* null, i8* bitcast (void (%struct.Templ*)* @_ZN5TemplIiED1Ev to i8*), i8* bitcast (void (%struct.Templ*)* @_ZN5TemplIiED0Ev to i8*), i8* bitcast (void (%struct.Templ*)* @_ZN5TemplIiE1fEv to i8*), i8* bitcast (void (%struct.Templ*)* @_ZN5TemplIiE1gEv to i8*), i8* null] } diff --git a/test/CodeGenCXX/apple-kext-no-staticinit-section.cpp b/test/CodeGenCXX/apple-kext-no-staticinit-section.cpp index 0401d4917902..5d258f6a6175 100644 --- a/test/CodeGenCXX/apple-kext-no-staticinit-section.cpp +++ b/test/CodeGenCXX/apple-kext-no-staticinit-section.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fapple-kext -fno-rtti -emit-llvm -o - %s | FileCheck %s +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fapple-kext -fno-rtti -disable-O0-optnone -emit-llvm -o - %s | FileCheck %s // rdar://8825235 /** 1) Normally, global object construction code ends up in __StaticInit segment of text section diff --git a/test/CodeGenCXX/debug-info-global-ctor-dtor.cpp b/test/CodeGenCXX/debug-info-global-ctor-dtor.cpp index 4c61cf78cccb..7b57c08a1097 100644 --- a/test/CodeGenCXX/debug-info-global-ctor-dtor.cpp +++ b/test/CodeGenCXX/debug-info-global-ctor-dtor.cpp @@ -1,6 +1,6 @@ -// RUN: %clang_cc1 %s -debug-info-kind=limited -triple %itanium_abi_triple -fno-use-cxa-atexit -S -emit-llvm -o - \ +// RUN: %clang_cc1 %s -debug-info-kind=limited -triple %itanium_abi_triple -fno-use-cxa-atexit -S -disable-O0-optnone -emit-llvm -o - \ // RUN: | FileCheck %s --check-prefix=CHECK-NOKEXT -// RUN: %clang_cc1 %s -debug-info-kind=limited -triple %itanium_abi_triple -fno-use-cxa-atexit -fapple-kext -S -emit-llvm -o - \ +// RUN: %clang_cc1 %s -debug-info-kind=limited -triple %itanium_abi_triple -fno-use-cxa-atexit -fapple-kext -S -disable-O0-optnone -emit-llvm -o - \ // RUN: | FileCheck %s --check-prefix=CHECK-KEXT class A { diff --git a/test/CodeGenCXX/optnone-templates.cpp b/test/CodeGenCXX/optnone-templates.cpp index 9f97d832c1e2..7884fa39890d 100644 --- a/test/CodeGenCXX/optnone-templates.cpp +++ b/test/CodeGenCXX/optnone-templates.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 %s -triple %itanium_abi_triple -std=c++11 -emit-llvm -o - | FileCheck %s +// RUN: %clang_cc1 %s -triple %itanium_abi_triple -std=c++11 -disable-O0-optnone -emit-llvm -o - | FileCheck %s // Test optnone on template instantiations. diff --git a/test/CodeGenCXX/static-init-wasm.cpp b/test/CodeGenCXX/static-init-wasm.cpp index 2d187b5c05fc..289c3ea6024d 100644 --- a/test/CodeGenCXX/static-init-wasm.cpp +++ b/test/CodeGenCXX/static-init-wasm.cpp @@ -43,12 +43,12 @@ struct A { A theA; -// WEBASSEMBLY32: define internal void @__cxx_global_var_init() #0 section ".text.__startup" { +// WEBASSEMBLY32: define internal void @__cxx_global_var_init() #3 section ".text.__startup" { // WEBASSEMBLY32: call %struct.A* @_ZN1AC1Ev(%struct.A* @theA) -// WEBASSEMBLY32: define internal void @_GLOBAL__sub_I_static_init_wasm.cpp() #0 section ".text.__startup" { +// WEBASSEMBLY32: define internal void @_GLOBAL__sub_I_static_init_wasm.cpp() #3 section ".text.__startup" { // WEBASSEMBLY32: call void @__cxx_global_var_init() // -// WEBASSEMBLY64: define internal void @__cxx_global_var_init() #0 section ".text.__startup" { +// WEBASSEMBLY64: define internal void @__cxx_global_var_init() #3 section ".text.__startup" { // WEBASSEMBLY64: call %struct.A* @_ZN1AC1Ev(%struct.A* @theA) -// WEBASSEMBLY64: define internal void @_GLOBAL__sub_I_static_init_wasm.cpp() #0 section ".text.__startup" { +// WEBASSEMBLY64: define internal void @_GLOBAL__sub_I_static_init_wasm.cpp() #3 section ".text.__startup" { // WEBASSEMBLY64: call void @__cxx_global_var_init() diff --git a/test/CodeGenCXX/thunks.cpp b/test/CodeGenCXX/thunks.cpp index 26e166c7bf4c..b4a0f9072e6c 100644 --- a/test/CodeGenCXX/thunks.cpp +++ b/test/CodeGenCXX/thunks.cpp @@ -401,5 +401,5 @@ D::~D() {} // CHECK-OPT-LABEL: define linkonce_odr void @_ZN6Test101C3fooEv // CHECK-OPT-LABEL: define linkonce_odr void @_ZThn8_N6Test101C3fooEv -// CHECK-NONOPT: attributes [[NUW]] = { noinline nounwind uwtable{{.*}} } +// CHECK-NONOPT: attributes [[NUW]] = { noinline nounwind optnone uwtable{{.*}} } // CHECK-OPT: attributes [[NUW]] = { nounwind uwtable{{.*}} } diff --git a/test/CodeGenCXX/union-tbaa2.cpp b/test/CodeGenCXX/union-tbaa2.cpp new file mode 100644 index 000000000000..d3e37408c4a7 --- /dev/null +++ b/test/CodeGenCXX/union-tbaa2.cpp @@ -0,0 +1,45 @@ +// RUN: %clang_cc1 %s -O2 -std=c++11 -triple x86_64-unknown-linux-gnu -target-cpu x86-64 -target-feature +sse4.2 -target-feature +avx -emit-llvm -o - | FileCheck %s + +// Testcase from llvm.org/PR32056 + +extern "C" int printf (const char *__restrict __format, ...); + +typedef double __m256d __attribute__((__vector_size__(32))); + +static __inline __m256d __attribute__((__always_inline__, __nodebug__, + __target__("avx"))) +_mm256_setr_pd(double __a, double __b, double __c, double __d) { + return (__m256d){ __a, __b, __c, __d }; +} + +struct A { + A () { +// Check that the TBAA information generated for the stores to the +// union members is based on the omnipotent char. +// CHECK: store <4 x double> +// CHECK: tbaa ![[OCPATH:[0-9]+]] +// CHECK: store <4 x double> +// CHECK: tbaa ![[OCPATH]] +// CHECK: call + a = _mm256_setr_pd(0.0, 1.0, 2.0, 3.0); + b = _mm256_setr_pd(4.0, 5.0, 6.0, 7.0); + } + + const double *begin() { return c; } + const double *end() { return c+8; } + + union { + struct { __m256d a, b; }; + double c[8]; + }; +}; + +int main(int argc, char *argv[]) { + A a; + for (double value : a) + printf("%f ", value); + return 0; +} + +// CHECK-DAG: ![[CHAR:[0-9]+]] = !{!"omnipotent char" +// CHECK-DAG: ![[OCPATH]] = !{![[CHAR]], ![[CHAR]], i64 0} |
