diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/CodeGen/ms-x86-intrinsics.c | 32 | ||||
-rw-r--r-- | test/CodeGenCXX/atomic-inline.cpp | 61 | ||||
-rw-r--r-- | test/CodeGenCXX/block-byref.cpp | 15 | ||||
-rw-r--r-- | test/CodeGenCXX/cfi-cross-dso.cpp | 2 | ||||
-rw-r--r-- | test/CodeGenCXX/cfi-icall.cpp | 2 | ||||
-rw-r--r-- | test/CodeGenCXX/debug-info-thunk.cpp | 2 | ||||
-rw-r--r-- | test/CodeGenCXX/dllexport.cpp | 2 | ||||
-rw-r--r-- | test/CodeGenCXX/mangle-ms.cpp | 2 | ||||
-rw-r--r-- | test/CodeGenCXX/microsoft-abi-structors.cpp | 4 | ||||
-rw-r--r-- | test/CodeGenCXX/microsoft-abi-throw.cpp | 4 | ||||
-rw-r--r-- | test/CodeGenCXX/microsoft-abi-thunks.cpp | 2 | ||||
-rw-r--r-- | test/CodeGenCXX/microsoft-abi-vftables.cpp | 6 | ||||
-rw-r--r-- | test/CodeGenCXX/microsoft-abi-virtual-member-pointers.cpp | 8 | ||||
-rw-r--r-- | test/CodeGenCXX/msabi-swiftcall-cc.cpp | 8 | ||||
-rw-r--r-- | test/CodeGenCXX/pragma-init_seg.cpp | 4 | ||||
-rw-r--r-- | test/CodeGenCXX/type-metadata.cpp | 14 | ||||
-rw-r--r-- | test/Headers/ms-intrin.cpp | 2 | ||||
-rw-r--r-- | test/OpenMP/declare_target_codegen.cpp | 14 | ||||
-rw-r--r-- | test/Sema/statements.c | 9 |
19 files changed, 101 insertions, 92 deletions
diff --git a/test/CodeGen/ms-x86-intrinsics.c b/test/CodeGen/ms-x86-intrinsics.c index 450a134131bee..bd8f5fce237a1 100644 --- a/test/CodeGen/ms-x86-intrinsics.c +++ b/test/CodeGen/ms-x86-intrinsics.c @@ -130,4 +130,34 @@ unsigned __int64 test_umul128(unsigned __int64 Multiplier, // CHECK-X64: = mul nuw i128 % // CHECK-X64: store i64 % // CHECK-X64: ret i64 % -#endif + +unsigned __int64 test__shiftleft128(unsigned __int64 l, unsigned __int64 h, + unsigned char d) { + return __shiftleft128(l, h, d); +} +// CHECK-X64-LABEL: define dso_local i64 @test__shiftleft128(i64 %l, i64 %h, i8 %d) +// CHECK-X64 = zext i64 %h to i128 +// CHECK-X64 = shl nuw i128 %0, 64 +// CHECK-X64 = zext i64 %l to i128 +// CHECK-X64 = or i128 %1, %2 +// CHECK-X64 = and i8 %d, 63 +// CHECK-X64 = shl i128 % +// CHECK-X64 = lshr i128 % +// CHECK-X64 = trunc i128 % +// CHECK-X64 ret i64 % + +unsigned __int64 test__shiftright128(unsigned __int64 l, unsigned __int64 h, + unsigned char d) { + return __shiftright128(l, h, d); +} +// CHECK-X64-LABEL: define dso_local i64 @test__shiftright128(i64 %l, i64 %h, i8 %d) +// CHECK-X64 = zext i64 %h to i128 +// CHECK-X64 = shl nuw i128 % +// CHECK-X64 = zext i64 %l to i128 +// CHECK-X64 = or i128 % +// CHECK-X64 = and i8 %d, 63 +// CHECK-X64 = lshr i128 % +// CHECK-X64 = trunc i128 % +// CHECK-X64 ret i64 % + +#endif // defined(__x86_64__) diff --git a/test/CodeGenCXX/atomic-inline.cpp b/test/CodeGenCXX/atomic-inline.cpp index 327f85d5667fd..fe727589d2e27 100644 --- a/test/CodeGenCXX/atomic-inline.cpp +++ b/test/CodeGenCXX/atomic-inline.cpp @@ -1,52 +1,6 @@ // RUN: %clang_cc1 %s -std=c++11 -emit-llvm -o - -triple=x86_64-linux-gnu | FileCheck %s // RUN: %clang_cc1 %s -std=c++11 -emit-llvm -o - -triple=x86_64-linux-gnu -target-cpu core2 | FileCheck %s --check-prefix=CORE2 -// RUN: %clang_cc1 %s -std=c++11 -emit-llvm -o - -triple=i386-linux-gnu -target-cpu i386 | FileCheck %s --check-prefix=I386 -// RUN: %clang_cc1 %s -std=c++11 -emit-llvm -o - -triple=i386-linux-gnu -target-cpu i486 | FileCheck %s --check-prefix=I486 -// Check the atomic code generation for cpu targets w/wo cx, cx8 and cx16 support. - -struct alignas(4) AM4 { - short f1, f2; -}; -AM4 m4; -AM4 load4() { - AM4 am; - // CHECK-LABEL: @_Z5load4v - // CHECK: load atomic i32, {{.*}} monotonic - // CORE2-LABEL: @_Z5load4v - // CORE2: load atomic i32, {{.*}} monotonic - // I386-LABEL: @_Z5load4v - // I386: call i32 @__atomic_load_4 - // I486-LABEL: @_Z5load4v - // I486: load atomic i32, {{.*}} monotonic - __atomic_load(&m4, &am, 0); - return am; -} - -AM4 s4; -void store4() { - // CHECK-LABEL: @_Z6store4v - // CHECK: store atomic i32 {{.*}} monotonic - // CORE2-LABEL: @_Z6store4v - // CORE2: store atomic i32 {{.*}} monotonic - // I386-LABEL: @_Z6store4v - // I386: call void @__atomic_store_4 - // I486-LABEL: @_Z6store4v - // I486: store atomic i32 {{.*}} monotonic - __atomic_store(&m4, &s4, 0); -} - -bool cmpxchg4() { - AM4 am; - // CHECK-LABEL: @_Z8cmpxchg4v - // CHECK: cmpxchg i32* {{.*}} monotonic - // CORE2-LABEL: @_Z8cmpxchg4v - // CORE2: cmpxchg i32* {{.*}} monotonic - // I386-LABEL: @_Z8cmpxchg4v - // I386: call zeroext i1 @__atomic_compare_exchange_4 - // I486-LABEL: @_Z8cmpxchg4v - // I486: cmpxchg i32* {{.*}} monotonic - return __atomic_compare_exchange(&m4, &s4, &am, 0, 0, 0); -} +// Check the atomic code generation for cpu targets w/wo cx16 support. struct alignas(8) AM8 { int f1, f2; @@ -58,10 +12,6 @@ AM8 load8() { // CHECK: load atomic i64, {{.*}} monotonic // CORE2-LABEL: @_Z5load8v // CORE2: load atomic i64, {{.*}} monotonic - // I386-LABEL: @_Z5load8v - // I386: call i64 @__atomic_load_8 - // I486-LABEL: @_Z5load8v - // I486: call i64 @__atomic_load_8 __atomic_load(&m8, &am, 0); return am; } @@ -72,10 +22,6 @@ void store8() { // CHECK: store atomic i64 {{.*}} monotonic // CORE2-LABEL: @_Z6store8v // CORE2: store atomic i64 {{.*}} monotonic - // I386-LABEL: @_Z6store8v - // I386: call void @__atomic_store_8 - // I486-LABEL: @_Z6store8v - // I486: call void @__atomic_store_8 __atomic_store(&m8, &s8, 0); } @@ -85,10 +31,6 @@ bool cmpxchg8() { // CHECK: cmpxchg i64* {{.*}} monotonic // CORE2-LABEL: @_Z8cmpxchg8v // CORE2: cmpxchg i64* {{.*}} monotonic - // I386-LABEL: @_Z8cmpxchg8v - // I386: call zeroext i1 @__atomic_compare_exchange_8 - // I486-LABEL: @_Z8cmpxchg8v - // I486: call zeroext i1 @__atomic_compare_exchange_8 return __atomic_compare_exchange(&m8, &s8, &am, 0, 0, 0); } @@ -124,3 +66,4 @@ bool cmpxchg16() { // CORE2: cmpxchg i128* {{.*}} monotonic return __atomic_compare_exchange(&m16, &s16, &am, 0, 0, 0); } + diff --git a/test/CodeGenCXX/block-byref.cpp b/test/CodeGenCXX/block-byref.cpp new file mode 100644 index 0000000000000..1cb86a5475736 --- /dev/null +++ b/test/CodeGenCXX/block-byref.cpp @@ -0,0 +1,15 @@ +// RUN: %clang_cc1 %s -fblocks -triple x86_64-apple-darwin -std=c++11 -emit-llvm -o - | FileCheck %s +// REQUIRES: x86-registered-target + +// CHECK: @b = global i32 0, + +// CHECK: define {{.*}}void @{{.*}}test{{.*}}_block_invoke( +// CHECK: store i32 2, i32* @b, +// CHECK: ret void + +int b; + +void test() { + int &a = b; + ^{ a = 2; }; +} diff --git a/test/CodeGenCXX/cfi-cross-dso.cpp b/test/CodeGenCXX/cfi-cross-dso.cpp index 6d5e0591191cc..4b7b3d70f098c 100644 --- a/test/CodeGenCXX/cfi-cross-dso.cpp +++ b/test/CodeGenCXX/cfi-cross-dso.cpp @@ -26,7 +26,7 @@ void g() { b.f(); } -// MS: @[[B_VTABLE:.*]] = private unnamed_addr constant { [2 x i8*] } {{.*}}@"??_R4B@?A@@6B@"{{.*}}@"?f@B@?A@@UEAAXXZ" +// MS: @[[B_VTABLE:.*]] = private unnamed_addr constant { [2 x i8*] } {{.*}}@"??_R4B@?A0x{{[^@]*}}@@6B@"{{.*}}@"?f@B@?A0x{{[^@]*}}@@UEAAXXZ" // CHECK: %[[VT:.*]] = load void (%struct.A*)**, void (%struct.A*)*** // CHECK: %[[VT2:.*]] = bitcast {{.*}}%[[VT]] to i8*, !nosanitize diff --git a/test/CodeGenCXX/cfi-icall.cpp b/test/CodeGenCXX/cfi-icall.cpp index e53aeefd8a9be..00c9f59700ac2 100644 --- a/test/CodeGenCXX/cfi-icall.cpp +++ b/test/CodeGenCXX/cfi-icall.cpp @@ -21,7 +21,7 @@ void g() { } // ITANIUM: define internal void @_ZN12_GLOBAL__N_11fENS_1SE({{.*}} !type [[TS1:![0-9]+]] !type [[TS2:![0-9]+]] -// MS: define internal void @"?f@?A@@YAXUS@?A@@@Z"({{.*}} !type [[TS1:![0-9]+]] !type [[TS2:![0-9]+]] +// MS: define internal void @"?f@?A0x{{[^@]*}}@@YAXUS@?A0x{{[^@]*}}@@@Z"({{.*}} !type [[TS1:![0-9]+]] !type [[TS2:![0-9]+]] // CHECK: [[VOIDS1]] = distinct !{} // CHECK: [[TS1]] = !{i64 0, [[VOIDS1]]} diff --git a/test/CodeGenCXX/debug-info-thunk.cpp b/test/CodeGenCXX/debug-info-thunk.cpp index 56dec93f6b391..27bbbc683277e 100644 --- a/test/CodeGenCXX/debug-info-thunk.cpp +++ b/test/CodeGenCXX/debug-info-thunk.cpp @@ -86,7 +86,7 @@ namespace Test4 { }; } void C::c() {} -// CHECK-DAG: DISubprogram{{.*}}linkageName: "?f@C@?A@Test4@@W7EAAXXZ"{{.*}} flags: {{.*}}DIFlagThunk +// CHECK-DAG: DISubprogram{{.*}}linkageName: "?f@C@?A0x{{[^@]*}}@Test4@@W7EAAXXZ"{{.*}} flags: {{.*}}DIFlagThunk void C::f() {} // Force C::f to be used. diff --git a/test/CodeGenCXX/dllexport.cpp b/test/CodeGenCXX/dllexport.cpp index a7b6aad357e58..5e4aa013b3c98 100644 --- a/test/CodeGenCXX/dllexport.cpp +++ b/test/CodeGenCXX/dllexport.cpp @@ -797,7 +797,7 @@ struct __declspec(dllexport) PR23308 { }; void PR23308::f(InternalLinkageType*) {} long use(PR23308* p) { p->f(nullptr); } -// M32-DAG: define internal x86_thiscallcc void @"?f@PR23308@@QAEXPAUInternalLinkageType@?A@@@Z" +// M32-DAG: define internal x86_thiscallcc void @"?f@PR23308@@QAEXPAUInternalLinkageType@?A0x{{[^@]*}}@@@Z" template <typename T> struct PR23770BaseTemplate { void f() {} }; template <typename T> struct PR23770DerivedTemplate : PR23770BaseTemplate<int> {}; diff --git a/test/CodeGenCXX/mangle-ms.cpp b/test/CodeGenCXX/mangle-ms.cpp index 3cc1b1645e9ca..e128c94431532 100644 --- a/test/CodeGenCXX/mangle-ms.cpp +++ b/test/CodeGenCXX/mangle-ms.cpp @@ -15,7 +15,7 @@ namespace N { namespace { int anonymous; -// CHECK-DAG: @"?anonymous@?A@N@@3HA" +// CHECK-DAG: @"?anonymous@?A0x{{[^@]*}}@N@@3HA" } } diff --git a/test/CodeGenCXX/microsoft-abi-structors.cpp b/test/CodeGenCXX/microsoft-abi-structors.cpp index 97b90ce6b9eb1..b0d2b56540309 100644 --- a/test/CodeGenCXX/microsoft-abi-structors.cpp +++ b/test/CodeGenCXX/microsoft-abi-structors.cpp @@ -467,9 +467,9 @@ struct A { void *getA() { return (void*)new A(); } -// CHECK: define internal x86_thiscallcc i8* @"??_GA@?A@@UAEPAXI@Z" +// CHECK: define internal x86_thiscallcc i8* @"??_GA@?A0x{{[^@]*}}@@UAEPAXI@Z" // CHECK: (%"struct.(anonymous namespace)::A"* %this, i32 %should_call_delete) -// CHECK: define internal x86_thiscallcc void @"??1A@?A@@UAE@XZ" +// CHECK: define internal x86_thiscallcc void @"??1A@?A0x{{[^@]*}}@@UAE@XZ" // CHECK: (%"struct.(anonymous namespace)::A"* %this) // Check that we correctly transform __stdcall to __thiscall for ctors and diff --git a/test/CodeGenCXX/microsoft-abi-throw.cpp b/test/CodeGenCXX/microsoft-abi-throw.cpp index cbbce2daaad86..f55b94acf1d73 100644 --- a/test/CodeGenCXX/microsoft-abi-throw.cpp +++ b/test/CodeGenCXX/microsoft-abi-throw.cpp @@ -22,7 +22,7 @@ // CHECK-DAG: @_TI1P6AXXZ = linkonce_odr unnamed_addr constant %eh.ThrowInfo { i32 0, i8* null, i8* null, i8* bitcast (%eh.CatchableTypeArray.1* @_CTA1P6AXXZ to i8*) }, section ".xdata", comdat // CHECK-DAG: @_TIU2PAPFAH = linkonce_odr unnamed_addr constant %eh.ThrowInfo { i32 4, i8* null, i8* null, i8* bitcast (%eh.CatchableTypeArray.2* @_CTA2PAPFAH to i8*) }, section ".xdata", comdat // CHECK-DAG: @_CTA2PAPFAH = linkonce_odr unnamed_addr constant %eh.CatchableTypeArray.2 { i32 2, [2 x %eh.CatchableType*] [%eh.CatchableType* @"_CT??_R0PAPFAH@84", %eh.CatchableType* @"_CT??_R0PAX@84"] }, section ".xdata", comdat -// CHECK-DAG: @"_TI1?AUFoo@?A@@" = internal unnamed_addr constant %eh.ThrowInfo { i32 0, i8* null, i8* null, i8* bitcast (%eh.CatchableTypeArray.1* @"_CTA1?AUFoo@?A@@" to i8*) }, section ".xdata" +// CHECK-DAG: @"_TI1?AUFoo@?A0x{{[^@]*}}@@" = internal unnamed_addr constant %eh.ThrowInfo { i32 0, i8* null, i8* null, i8* bitcast (%eh.CatchableTypeArray.1* @"_CTA1?AUFoo@?A0x{{[^@]*}}@@" to i8*) }, section ".xdata" struct N { ~N(); }; @@ -135,6 +135,6 @@ namespace { struct Foo { } foo_exc; } void *GetExceptionInfo_test2() { // CHECK-LABEL: @"?GetExceptionInfo_test2@@YAPAXXZ" -// CHECK: ret i8* bitcast (%eh.ThrowInfo* @"_TI1?AUFoo@?A@@" to i8*) +// CHECK: ret i8* bitcast (%eh.ThrowInfo* @"_TI1?AUFoo@?A0x{{[^@]*}}@@" to i8*) return __GetExceptionInfo(foo_exc); } diff --git a/test/CodeGenCXX/microsoft-abi-thunks.cpp b/test/CodeGenCXX/microsoft-abi-thunks.cpp index c2f64f38417c0..2b0231ffe74e4 100644 --- a/test/CodeGenCXX/microsoft-abi-thunks.cpp +++ b/test/CodeGenCXX/microsoft-abi-thunks.cpp @@ -160,5 +160,5 @@ struct E : D { E::E() {} E e; // Class with internal linkage has internal linkage thunks. -// CODEGEN: define internal x86_thiscallcc %struct.C* @"?goo@E@?A@@QAEPAUB@@XZ" +// CODEGEN: define internal x86_thiscallcc %struct.C* @"?goo@E@?A0x{{[^@]*}}@@QAEPAUB@@XZ" } diff --git a/test/CodeGenCXX/microsoft-abi-vftables.cpp b/test/CodeGenCXX/microsoft-abi-vftables.cpp index 65370ab1ece5a..f8d26f14f91dc 100644 --- a/test/CodeGenCXX/microsoft-abi-vftables.cpp +++ b/test/CodeGenCXX/microsoft-abi-vftables.cpp @@ -36,10 +36,10 @@ struct W { virtual ~W() {} } w; } -// RTTI-DAG: [[VTABLE_W:@.*]] = private unnamed_addr constant { [2 x i8*] } { [2 x i8*] [i8* bitcast ({{.*}} @"??_R4W@?A@@6B@" to i8*), i8* bitcast ({{.*}} @"??_GW@?A@@UAEPAXI@Z" to i8*)] } -// RTTI-DAG: @"??_7W@?A@@6B@" = internal unnamed_addr alias i8*, getelementptr inbounds ({ [2 x i8*] }, { [2 x i8*] }* [[VTABLE_W]], i32 0, i32 0, i32 1) +// RTTI-DAG: [[VTABLE_W:@.*]] = private unnamed_addr constant { [2 x i8*] } { [2 x i8*] [i8* bitcast ({{.*}} @"??_R4W@?A0x{{[^@]*}}@@6B@" to i8*), i8* bitcast ({{.*}} @"??_GW@?A0x{{[^@]*}}@@UAEPAXI@Z" to i8*)] } +// RTTI-DAG: @"??_7W@?A0x{{[^@]*}}@@6B@" = internal unnamed_addr alias i8*, getelementptr inbounds ({ [2 x i8*] }, { [2 x i8*] }* [[VTABLE_W]], i32 0, i32 0, i32 1) -// NO-RTTI-DAG: @"??_7W@?A@@6B@" = internal unnamed_addr constant { [1 x i8*] } { [1 x i8*] [i8* bitcast ({{.*}} @"??_GW@?A@@UAEPAXI@Z" to i8*)] } +// NO-RTTI-DAG: @"??_7W@?A0x{{[^@]*}}@@6B@" = internal unnamed_addr constant { [1 x i8*] } { [1 x i8*] [i8* bitcast ({{.*}} @"??_GW@?A0x{{[^@]*}}@@UAEPAXI@Z" to i8*)] } struct X {}; template <class> struct Y : virtual X { diff --git a/test/CodeGenCXX/microsoft-abi-virtual-member-pointers.cpp b/test/CodeGenCXX/microsoft-abi-virtual-member-pointers.cpp index ef8a5e4868250..5ebe612e00acd 100644 --- a/test/CodeGenCXX/microsoft-abi-virtual-member-pointers.cpp +++ b/test/CodeGenCXX/microsoft-abi-virtual-member-pointers.cpp @@ -57,14 +57,14 @@ void f() { // CHECK32: store i8* bitcast (void (%struct.C*, ...)* @"??_9C@@$BA@AE" to i8*), i8** %ptr // CHECK32: store i8* bitcast (void (%struct.C*, ...)* @"??_9C@@$B3AE" to i8*), i8** %ptr2 // CHECK32: store i8* bitcast (void (%struct.C*, ...)* @"??_9C@@$B7AE" to i8*), i8** %ptr3 -// CHECK32: store i8* bitcast (void (%"struct.(anonymous namespace)::D"*, ...)* @"??_9D@?A@@$BA@AE" to i8*), i8** %ptr4 +// CHECK32: store i8* bitcast (void (%"struct.(anonymous namespace)::D"*, ...)* @"??_9D@?A0x{{[^@]*}}@@$BA@AE" to i8*), i8** %ptr4 // CHECK32: } // // CHECK64-LABEL: define dso_local void @"?f@@YAXXZ"() // CHECK64: store i8* bitcast (void (%struct.C*, ...)* @"??_9C@@$BA@AA" to i8*), i8** %ptr // CHECK64: store i8* bitcast (void (%struct.C*, ...)* @"??_9C@@$B7AA" to i8*), i8** %ptr2 // CHECK64: store i8* bitcast (void (%struct.C*, ...)* @"??_9C@@$BBA@AA" to i8*), i8** %ptr3 -// CHECK64: store i8* bitcast (void (%"struct.(anonymous namespace)::D"*, ...)* @"??_9D@?A@@$BA@AA" to i8*), i8** %ptr +// CHECK64: store i8* bitcast (void (%"struct.(anonymous namespace)::D"*, ...)* @"??_9D@?A0x{{[^@]*}}@@$BA@AA" to i8*), i8** %ptr // CHECK64: } } @@ -125,7 +125,7 @@ void f() { // CHECK64: } // Thunk for calling the virtual function in internal class D. -// CHECK32-LABEL: define internal x86_thiscallcc void @"??_9D@?A@@$BA@AE"(%"struct.(anonymous namespace)::D"* %this, ...) +// CHECK32-LABEL: define internal x86_thiscallcc void @"??_9D@?A0x{{[^@]*}}@@$BA@AE"(%"struct.(anonymous namespace)::D"* %this, ...) // CHECK32: #[[ATTR]] // CHECK32: [[VPTR:%.*]] = getelementptr inbounds void (%"struct.(anonymous namespace)::D"*, ...)*, void (%"struct.(anonymous namespace)::D"*, ...)** %{{.*}}, i64 0 // CHECK32: [[CALLEE:%.*]] = load void (%"struct.(anonymous namespace)::D"*, ...)*, void (%"struct.(anonymous namespace)::D"*, ...)** [[VPTR]] @@ -133,7 +133,7 @@ void f() { // CHECK32-NEXT: ret void // CHECK32: } // -// CHECK64-LABEL: define internal void @"??_9D@?A@@$BA@AA"(%"struct.(anonymous namespace)::D"* %this, ...) +// CHECK64-LABEL: define internal void @"??_9D@?A0x{{[^@]*}}@@$BA@AA"(%"struct.(anonymous namespace)::D"* %this, ...) // CHECK64: #[[ATTR]] // CHECK64: [[VPTR:%.*]] = getelementptr inbounds void (%"struct.(anonymous namespace)::D"*, ...)*, void (%"struct.(anonymous namespace)::D"*, ...)** %{{.*}}, i64 0 // CHECK64: [[CALLEE:%.*]] = load void (%"struct.(anonymous namespace)::D"*, ...)*, void (%"struct.(anonymous namespace)::D"*, ...)** [[VPTR]] diff --git a/test/CodeGenCXX/msabi-swiftcall-cc.cpp b/test/CodeGenCXX/msabi-swiftcall-cc.cpp index d8205ed192a57..3cc90a83fbd1c 100644 --- a/test/CodeGenCXX/msabi-swiftcall-cc.cpp +++ b/test/CodeGenCXX/msabi-swiftcall-cc.cpp @@ -12,8 +12,8 @@ void (__attribute__((__swiftcall__)) *p)(); namespace { void __attribute__((__swiftcall__)) __attribute__((__used__)) f() { } } -// CHECK-DAG: @"?f@?A@@YSXXZ" -// CHECK-64-DAG: @"?f@?A@@YSXXZ" +// CHECK-DAG: @"?f@?A0x{{[^@]*}}@@YSXXZ" +// CHECK-64-DAG: @"?f@?A0x{{[^@]*}}@@YSXXZ" namespace n { void __attribute__((__swiftcall__)) f() {} @@ -44,8 +44,8 @@ void (__attribute__((__preserve_most__)) *q)(); namespace { void __attribute__((__preserve_most__)) __attribute__((__used__)) g() {} } -// CHECK-DAG: @"?g@?A@@YUXXZ" -// CHECK-64-DAG: @"?g@?A@@YUXXZ" +// CHECK-DAG: @"?g@?A0x{{[^@]*}}@@YUXXZ" +// CHECK-64-DAG: @"?g@?A0x{{[^@]*}}@@YUXXZ" namespace n { void __attribute__((__preserve_most__)) g() {} diff --git a/test/CodeGenCXX/pragma-init_seg.cpp b/test/CodeGenCXX/pragma-init_seg.cpp index 8b33b854fd216..67a8bac3682a8 100644 --- a/test/CodeGenCXX/pragma-init_seg.cpp +++ b/test/CodeGenCXX/pragma-init_seg.cpp @@ -28,8 +28,8 @@ int z = f(); namespace internal_init { namespace { int x = f(); -// CHECK: @"?x@?A@internal_init@@3HA" = internal global i32 0, align 4 -// CHECK: @__cxx_init_fn_ptr.2 = private constant void ()* @"??__Ex@?A@internal_init@@YAXXZ", section ".asdf" +// CHECK: @"?x@?A0x{{[^@]*}}@internal_init@@3HA" = internal global i32 0, align 4 +// CHECK: @__cxx_init_fn_ptr.2 = private constant void ()* @"??__Ex@?A0x{{[^@]*}}@internal_init@@YAXXZ", section ".asdf" } } diff --git a/test/CodeGenCXX/type-metadata.cpp b/test/CodeGenCXX/type-metadata.cpp index 8e3e4bd182fe1..a7a34673cdfcb 100644 --- a/test/CodeGenCXX/type-metadata.cpp +++ b/test/CodeGenCXX/type-metadata.cpp @@ -82,8 +82,8 @@ // MS: comdat($"??_7B@@6B0@@"), !type [[B8:![0-9]+]] // MS: comdat($"??_7B@@6BA@@@"), !type [[A8]] // MS: comdat($"??_7C@@6B@"), !type [[A8]] -// MS: comdat($"??_7D@?A@@6BB@@@"), !type [[B8]], !type [[D8:![0-9]+]] -// MS: comdat($"??_7D@?A@@6BA@@@"), !type [[A8]] +// MS: comdat($"??_7D@?A0x{{[^@]*}}@@6BB@@@"), !type [[B8]], !type [[D8:![0-9]+]] +// MS: comdat($"??_7D@?A0x{{[^@]*}}@@6BA@@@"), !type [[A8]] // MS: comdat($"??_7FA@?1??foo@@YAXXZ@6B@"), !type [[A8]], !type [[FA8:![0-9]+]] struct A { @@ -161,7 +161,7 @@ void af(A *a) { } // ITANIUM: define internal void @_Z3df1PN12_GLOBAL__N_11DE -// MS: define internal void @"?df1@@YAXPEAUD@?A@@@Z" +// MS: define internal void @"?df1@@YAXPEAUD@?A0x{{[^@]*}}@@@Z" void df1(D *d) { // TT-ITANIUM: {{%[^ ]*}} = call i1 @llvm.type.test(i8* {{%[^ ]*}}, metadata ![[DTYPE:[0-9]+]]) // TT-MS: {{%[^ ]*}} = call i1 @llvm.type.test(i8* {{%[^ ]*}}, metadata !"?AUA@@") @@ -171,7 +171,7 @@ void df1(D *d) { } // ITANIUM: define internal void @_Z3dg1PN12_GLOBAL__N_11DE -// MS: define internal void @"?dg1@@YAXPEAUD@?A@@@Z" +// MS: define internal void @"?dg1@@YAXPEAUD@?A0x{{[^@]*}}@@@Z" void dg1(D *d) { // TT-ITANIUM: {{%[^ ]*}} = call i1 @llvm.type.test(i8* {{%[^ ]*}}, metadata !"_ZTS1B") // TT-MS: {{%[^ ]*}} = call i1 @llvm.type.test(i8* {{%[^ ]*}}, metadata !"?AUB@@") @@ -181,7 +181,7 @@ void dg1(D *d) { } // ITANIUM: define internal void @_Z3dh1PN12_GLOBAL__N_11DE -// MS: define internal void @"?dh1@@YAXPEAUD@?A@@@Z" +// MS: define internal void @"?dh1@@YAXPEAUD@?A0x{{[^@]*}}@@@Z" void dh1(D *d) { // TT-ITANIUM: {{%[^ ]*}} = call i1 @llvm.type.test(i8* {{%[^ ]*}}, metadata ![[DTYPE]]) // TT-MS: {{%[^ ]*}} = call i1 @llvm.type.test(i8* {{%[^ ]*}}, metadata ![[DTYPE:[0-9]+]]) @@ -191,7 +191,7 @@ void dh1(D *d) { } // ITANIUM: define internal void @_Z3df2PN12_GLOBAL__N_11DE -// MS: define internal void @"?df2@@YAXPEAUD@?A@@@Z" +// MS: define internal void @"?df2@@YAXPEAUD@?A0x{{[^@]*}}@@@Z" __attribute__((no_sanitize("cfi"))) void df2(D *d) { // CFI-NVT-NOT: call i1 @llvm.type.test @@ -201,7 +201,7 @@ void df2(D *d) { } // ITANIUM: define internal void @_Z3df3PN12_GLOBAL__N_11DE -// MS: define internal void @"?df3@@YAXPEAUD@?A@@@Z" +// MS: define internal void @"?df3@@YAXPEAUD@?A0x{{[^@]*}}@@@Z" __attribute__((no_sanitize("address"))) __attribute__((no_sanitize("cfi-vcall"))) void df3(D *d) { // CFI-NVT-NOT: call i1 @llvm.type.test diff --git a/test/Headers/ms-intrin.cpp b/test/Headers/ms-intrin.cpp index d8a4d382eb376..b0fef9cc06a79 100644 --- a/test/Headers/ms-intrin.cpp +++ b/test/Headers/ms-intrin.cpp @@ -42,8 +42,6 @@ void f() { __stosw(0, 0, 0); #ifdef _M_X64 - __shiftleft128(1, 2, 3); - __shiftright128(1, 2, 3); __movsq(0, 0, 0); __stosq(0, 0, 0); #endif diff --git a/test/OpenMP/declare_target_codegen.cpp b/test/OpenMP/declare_target_codegen.cpp index 96bdc874ece26..abd108a6e7841 100644 --- a/test/OpenMP/declare_target_codegen.cpp +++ b/test/OpenMP/declare_target_codegen.cpp @@ -91,5 +91,19 @@ int baz2() { return 2 + baz3(); } +extern int create() throw(); + +static __typeof(create) __t_create __attribute__((__weakref__("__create"))); + +int baz5() { + bool a; +// CHECK-DAG: define weak void @__omp_offloading_{{.*}}baz5{{.*}}_l[[@LINE+1]](i64 {{.*}}) +#pragma omp target + a = __extension__(void *) & __t_create != 0; + return a; +} + +// CHECK-DAG: declare extern_weak signext i32 @__create() + // CHECK-NOT: define {{.*}}{{baz1|baz4|maini1}} #endif // HEADER diff --git a/test/Sema/statements.c b/test/Sema/statements.c index dbb4d56ee1d17..ddaec8d433efd 100644 --- a/test/Sema/statements.c +++ b/test/Sema/statements.c @@ -34,6 +34,15 @@ bar: return &&bar; // expected-warning {{returning address of label, which is local}} } +// PR38569: Don't warn when returning a label from a statement expression. +void test10_logpc(void*); +void test10a() { + test10_logpc(({ + my_pc: + &&my_pc; + })); +} + // PR6034 void test11(int bit) { switch (bit) |