diff options
Diffstat (limited to 'test/Misc')
22 files changed, 780 insertions, 66 deletions
diff --git a/test/Misc/amdgcn.languageOptsOpenCL.cl b/test/Misc/amdgcn.languageOptsOpenCL.cl new file mode 100644 index 000000000000..3d1f9b4d9826 --- /dev/null +++ b/test/Misc/amdgcn.languageOptsOpenCL.cl @@ -0,0 +1,200 @@ +// REQUIRES: amdgpu-registered-target +// RUN: %clang_cc1 -x cl -cl-std=CL %s -verify -triple amdgcn-unknown-unknown +// RUN: %clang_cc1 -x cl -cl-std=CL1.1 %s -verify -triple amdgcn-unknown-unknown +// RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple amdgcn-unknown-unknown +// RUN: %clang_cc1 -x cl -cl-std=CL2.0 %s -verify -triple amdgcn-unknown-unknown +// RUN: %clang_cc1 -x cl -cl-std=CL %s -verify -triple amdgcn-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES +// RUN: %clang_cc1 -x cl -cl-std=CL1.1 %s -verify -triple amdgcn-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES +// RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple amdgcn-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES +// RUN: %clang_cc1 -x cl -cl-std=CL2.0 %s -verify -triple amdgcn-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES + +// Extensions in all versions +#ifndef cl_clang_storage_class_specifiers +#error "Missing cl_clang_storage_class_specifiers define" +#endif +#pragma OPENCL EXTENSION cl_clang_storage_class_specifiers: enable + +#ifndef cl_khr_fp16 +#error "Missing cl_khr_fp16 define" +#endif +#pragma OPENCL EXTENSION cl_khr_fp16: enable + +#ifndef cl_khr_int64_base_atomics +#error "Missing cl_khr_int64_base_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_int64_base_atomics: enable + +#ifndef cl_khr_int64_extended_atomics +#error "Missing cl_khr_int64_extended_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_int64_extended_atomics: enable + +#ifdef cl_khr_gl_sharing +#error "Incorrect cl_khr_gl_sharing define" +#endif +#pragma OPENCL EXTENSION cl_khr_gl_sharing: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_sharing' - ignoring}} + +#ifndef cl_khr_icd +#error "Missing cl_khr_icd define" +#endif +#pragma OPENCL EXTENSION cl_khr_icd: enable + +// Core features in CL 1.1 + +#ifndef cl_khr_byte_addressable_store +#error "Missing cl_khr_byte_addressable_store define" +#endif +#pragma OPENCL EXTENSION cl_khr_byte_addressable_store: enable +#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES +// expected-warning@-2{{OpenCL extension 'cl_khr_byte_addressable_store' is core feature or supported optional core feature - ignoring}} +#endif + +#ifndef cl_khr_global_int32_base_atomics +#error "Missing cl_khr_global_int32_base_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics: enable +#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES +// expected-warning@-2{{OpenCL extension 'cl_khr_global_int32_base_atomics' is core feature or supported optional core feature - ignoring}} +#endif + +#ifndef cl_khr_global_int32_extended_atomics +#error "Missing cl_khr_global_int32_extended_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_global_int32_extended_atomics: enable +#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES +// expected-warning@-2{{OpenCL extension 'cl_khr_global_int32_extended_atomics' is core feature or supported optional core feature - ignoring}} +#endif + +#ifndef cl_khr_local_int32_base_atomics +#error "Missing cl_khr_local_int32_base_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_local_int32_base_atomics: enable +#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES +// expected-warning@-2{{OpenCL extension 'cl_khr_local_int32_base_atomics' is core feature or supported optional core feature - ignoring}} +#endif + +#ifndef cl_khr_local_int32_extended_atomics +#error "Missing cl_khr_local_int32_extended_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_local_int32_extended_atomics: enable +#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES +// expected-warning@-2{{OpenCL extension 'cl_khr_local_int32_extended_atomics' is core feature or supported optional core feature - ignoring}} +#endif + +#ifdef cl_khr_select_fprounding_mode +#error "Incorrect cl_khr_select_fprounding_mode define" +#endif +#pragma OPENCL EXTENSION cl_khr_select_fprounding_mode: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_select_fprounding_mode' - ignoring}} + + +// Core feature in CL 1.2 +#ifndef cl_khr_fp64 +#error "Missing cl_khr_fp64 define" +#endif +#pragma OPENCL EXTENSION cl_khr_fp64: enable +#if (__OPENCL_C_VERSION__ >= 120) && defined TEST_CORE_FEATURES +// expected-warning@-2{{OpenCL extension 'cl_khr_fp64' is core feature or supported optional core feature - ignoring}} +#endif + +//Core feature in CL 2.0 +#ifndef cl_khr_3d_image_writes +#error "Missing cl_khr_3d_image_writes define" +#endif +#pragma OPENCL EXTENSION cl_khr_3d_image_writes: enable +#if (__OPENCL_C_VERSION__ >= 200) && defined TEST_CORE_FEATURES +// expected-warning@-2{{OpenCL extension 'cl_khr_3d_image_writes' is core feature or supported optional core feature - ignoring}} +#endif + + + +#ifdef cl_khr_gl_event +#error "Incorrect cl_khr_gl_event define" +#endif +#pragma OPENCL EXTENSION cl_khr_gl_event: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_event' - ignoring}} + +#ifdef cl_khr_d3d10_sharing +#error "Incorrect cl_khr_d3d10_sharing define" +#endif +#pragma OPENCL EXTENSION cl_khr_d3d10_sharing: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_d3d10_sharing' - ignoring}} + +#ifdef cl_khr_context_abort +#error "Incorrect cl_context_abort define" +#endif +#pragma OPENCL EXTENSION cl_khr_context_abort: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_context_abort' - ignoring}} + +#ifdef cl_khr_d3d11_sharing +#error "Incorrect cl_khr_d3d11_sharing define" +#endif +#pragma OPENCL EXTENSION cl_khr_d3d11_sharing: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_d3d11_sharing' - ignoring}} + +#ifdef cl_khr_dx9_media_sharing +#error "Incorrect cl_khr_dx9_media_sharing define" +#endif +#pragma OPENCL EXTENSION cl_khr_dx9_media_sharing: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_dx9_media_sharing' - ignoring}} + +#ifdef cl_khr_image2d_from_buffer +#error "Incorrect cl_khr_image2d_from_buffer define" +#endif +#pragma OPENCL EXTENSION cl_khr_image2d_from_buffer: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_image2d_from_buffer' - ignoring}} + +#ifdef cl_khr_initialize_memory +#error "Incorrect cl_khr_initialize_memory define" +#endif +#pragma OPENCL EXTENSION cl_khr_initialize_memory: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_initialize_memory' - ignoring}} + +#ifdef cl_khr_gl_depth_images +#error "Incorrect cl_khr_gl_depth_images define" +#endif +#pragma OPENCL EXTENSION cl_khr_gl_depth_images: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_depth_images' - ignoring}} + +#ifdef cl_khr_gl_msaa_sharing +#error "Incorrect cl_khr_gl_msaa_sharing define" +#endif +#pragma OPENCL EXTENSION cl_khr_gl_msaa_sharing: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_msaa_sharing' - ignoring}} + +#ifdef cl_khr_spir +#error "Incorrect cl_khr_spir define" +#endif +#pragma OPENCL EXTENSION cl_khr_spir: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_spir' - ignoring}} + +#ifdef cl_khr_egl_event +#error "Incorrect cl_khr_egl_event define" +#endif +#pragma OPENCL EXTENSION cl_khr_egl_event: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_egl_event' - ignoring}} + +#ifdef cl_khr_egl_image +#error "Incorrect cl_khr_egl_image define" +#endif +#pragma OPENCL EXTENSION cl_khr_egl_image: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_egl_image' - ignoring}} + +#ifdef cl_khr_srgb_image_writes +#error "Incorrect cl_khr_srgb_image_writes define" +#endif +#pragma OPENCL EXTENSION cl_khr_srgb_image_writes: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_srgb_image_writes' - ignoring}} + +#ifdef cl_khr_subgroups +#error "Incorrect cl_khr_subgroups define" +#endif +#pragma OPENCL EXTENSION cl_khr_subgroups: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_subgroups' - ignoring}} + +#ifdef cl_khr_terminate_context +#error "Incorrect cl_khr_terminate_context define" +#endif +#pragma OPENCL EXTENSION cl_khr_terminate_context: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_terminate_context' - ignoring}} diff --git a/test/Misc/ast-dump-color.cpp b/test/Misc/ast-dump-color.cpp index e93274e33acb..852d68979400 100644 --- a/test/Misc/ast-dump-color.cpp +++ b/test/Misc/ast-dump-color.cpp @@ -34,7 +34,7 @@ struct Invalid { //CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]TypedefDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]<invalid sloc>[[RESET]]> [[Yellow]]<invalid sloc>[[RESET]] implicit[[CYAN]] __uint128_t[[RESET]] [[Green]]'unsigned __int128'[[RESET]]{{$}} //CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]TypedefDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]<invalid sloc>[[RESET]]> [[Yellow]]<invalid sloc>[[RESET]] implicit[[CYAN]] __builtin_va_list[[RESET]] [[Green]]'struct __va_list_tag [1]'[[RESET]]{{$}} //CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]VarDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]{{.*}}ast-dump-color.cpp:6:1[[RESET]], [[Yellow]]col:5[[RESET]]> [[Yellow]]col:5[[RESET]][[CYAN]] Test[[RESET]] [[Green]]'int'[[RESET]] -//CHECK: {{^}}[[Blue]]| |-[[RESET]][[BLUE:.\[0;1;34m]]UnusedAttr[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:25[[RESET]]>{{$}} +//CHECK: {{^}}[[Blue]]| |-[[RESET]][[BLUE:.\[0;1;34m]]UnusedAttr[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:25[[RESET]]> unused{{$}} //CHECK: {{^}}[[Blue]]| `-[[RESET]][[Blue]]FullComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:4:4[[RESET]], [[Yellow]]line:5:8[[RESET]]>{{$}} //CHECK: {{^}}[[Blue]]| `-[[RESET]][[Blue]]ParagraphComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:4:4[[RESET]], [[Yellow]]line:5:8[[RESET]]>{{$}} //CHECK: {{^}}[[Blue]]| |-[[RESET]][[Blue]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:4:4[[RESET]]> Text=" "{{$}} diff --git a/test/Misc/ast-dump-decl.mm b/test/Misc/ast-dump-decl.mm index 06ab5155110c..be245f7ef5cd 100644 --- a/test/Misc/ast-dump-decl.mm +++ b/test/Misc/ast-dump-decl.mm @@ -21,3 +21,13 @@ // CHECK-NEXT: CXXConstructExpr // CHECK-NEXT: ObjCIvarDecl{{.*}} X // CHECK-NEXT: ObjCMethodDecl{{.*}} foo + +// @() boxing expressions. +template <typename T> +struct BoxingTest { + static id box(T value) { + return @(value); + } +}; + +// CHECK: ObjCBoxedExpr{{.*}} '<dependent type>'{{$}} diff --git a/test/Misc/ast-dump-invalid.cpp b/test/Misc/ast-dump-invalid.cpp index 7b02ba111339..aa6cd526929f 100644 --- a/test/Misc/ast-dump-invalid.cpp +++ b/test/Misc/ast-dump-invalid.cpp @@ -34,6 +34,7 @@ int g(int i) { // CHECK-NEXT: `-CompoundStmt // CHECK-NEXT: `-IfStmt {{.*}} <line:25:3, line:28:12> // CHECK-NEXT: |-<<<NULL>>> +// CHECK-NEXT: |-<<<NULL>>> // CHECK-NEXT: |-OpaqueValueExpr {{.*}} <<invalid sloc>> '_Bool' // CHECK-NEXT: |-ReturnStmt {{.*}} <line:26:5, col:12> // CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:12> 'int' 4 @@ -41,3 +42,23 @@ int g(int i) { // CHECK-NEXT: `-ImplicitCastExpr {{.*}} <col:12> 'int' <LValueToRValue> // CHECK-NEXT: `-DeclRefExpr {{.*}} <col:12> 'int' lvalue ParmVar {{.*}} 'i' 'int' +namespace TestInvalidFunctionDecl { +struct Str { + double foo1(double, invalid_type); +}; +double Str::foo1(double, invalid_type) +{ return 45; } +} +// CHECK: NamespaceDecl {{.*}} <{{.*}}> {{.*}} TestInvalidFunctionDecl +// CHECK-NEXT: |-CXXRecordDecl {{.*}} <line:46:1, line:48:1> line:46:8 struct Str definition +// CHECK-NEXT: | |-CXXRecordDecl {{.*}} <col:1, col:8> col:8 implicit struct Str +// CHECK-NEXT: | `-CXXMethodDecl {{.*}} <line:47:4, col:36> col:11 invalid foo1 'double (double, int)' +// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16> col:22 'double' +// CHECK-NEXT: | `-ParmVarDecl {{.*}} <col:24, <invalid sloc>> col:36 invalid 'int' +// CHECK-NEXT: `-CXXMethodDecl {{.*}} parent {{.*}} <line:49:1, line:50:14> line:49:13 invalid foo1 'double (double, int)' +// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:18> col:24 'double' +// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:26, <invalid sloc>> col:38 invalid 'int' +// CHECK-NEXT: `-CompoundStmt {{.*}} <line:50:1, col:14> +// CHECK-NEXT: `-ReturnStmt {{.*}} <col:3, col:10> +// CHECK-NEXT: `-ImplicitCastExpr {{.*}} <col:10> 'double' <IntegralToFloating> +// CHECK-NEXT: `-IntegerLiteral {{.*}} <col:10> 'int' 45 diff --git a/test/Misc/ast-dump-pipe.cl b/test/Misc/ast-dump-pipe.cl new file mode 100644 index 000000000000..1690e5c17a05 --- /dev/null +++ b/test/Misc/ast-dump-pipe.cl @@ -0,0 +1,4 @@ +// RUN: %clang_cc1 -triple spir64 -cl-std=CL2.0 -ast-dump -ast-dump-filter pipetype %s | FileCheck -strict-whitespace %s +typedef pipe int pipetype; +// CHECK: PipeType {{.*}} 'pipe int' +// CHECK-NEXT: BuiltinType {{.*}} 'int' diff --git a/test/Misc/ast-print-char-literal.cpp b/test/Misc/ast-print-char-literal.cpp index bb5daa2444da..614b3ca9d73c 100644 --- a/test/Misc/ast-print-char-literal.cpp +++ b/test/Misc/ast-print-char-literal.cpp @@ -13,6 +13,8 @@ void i() { h<u8'2'>(); } +char j = '\xFF'; + // CHECK: char c = u8'1'; // CHECK-NEXT: char d = '1'; // CHECK-NEXT: char e = U'1'; @@ -22,3 +24,4 @@ void i() { // CHECK: template <char c = u8'1'> // CHECK: h<u8'2'>(); +// CHECK: char j = '\xff'; diff --git a/test/Misc/ast-print-objectivec.m b/test/Misc/ast-print-objectivec.m index ef0fcaa9e32f..6293b43f55e4 100644 --- a/test/Misc/ast-print-objectivec.m +++ b/test/Misc/ast-print-objectivec.m @@ -20,22 +20,22 @@ @end // CHECK: @protocol P -// CHECK: - (void) MethP __attribute__((availability(macosx, introduced=10.1.0, deprecated=10.2))); +// CHECK: - (void) MethP __attribute__((availability(macos, introduced=10.1.0, deprecated=10.2))); // CHECK: @end // CHECK: @interface I : NSObject<P> -// CHECK: - (void) MethI __attribute__((availability(macosx, introduced=10.1.0, deprecated=10.2))); +// CHECK: - (void) MethI __attribute__((availability(macos, introduced=10.1.0, deprecated=10.2))); // CHECK: @end // CHECK: @interface I(CAT) -// CHECK: - (void) MethCAT __attribute__((availability(macosx, introduced=10_1_0, deprecated=10_2))); +// CHECK: - (void) MethCAT __attribute__((availability(macos, introduced=10_1_0, deprecated=10_2))); // CHECK: @end // CHECK: @implementation I -// CHECK: - (void) MethP __attribute__((availability(macosx, introduced=10.1.0, deprecated=10.2))) { +// CHECK: - (void) MethP __attribute__((availability(macos, introduced=10.1.0, deprecated=10.2))) { // CHECK: } -// CHECK: - (void) MethI __attribute__((availability(macosx, introduced=10.1.0, deprecated=10.2))) { +// CHECK: - (void) MethI __attribute__((availability(macos, introduced=10.1.0, deprecated=10.2))) { // CHECK: } // CHECK: @end diff --git a/test/Misc/ast-print-pragmas.cpp b/test/Misc/ast-print-pragmas.cpp index c4fe1e23b1e6..5840c1a2c3be 100644 --- a/test/Misc/ast-print-pragmas.cpp +++ b/test/Misc/ast-print-pragmas.cpp @@ -19,7 +19,9 @@ void test(int *List, int Length) { // CHECK: #pragma clang loop interleave(disable) // CHECK-NEXT: #pragma clang loop vectorize(enable) +// CHECK-NEXT: #pragma clang loop distribute(disable) +#pragma clang loop distribute(disable) #pragma clang loop vectorize(enable) #pragma clang loop interleave(disable) // CHECK-NEXT: while (i - 1 < Length) @@ -30,7 +32,9 @@ void test(int *List, int Length) { // CHECK: #pragma clang loop interleave(enable) // CHECK-NEXT: #pragma clang loop vectorize(disable) +// CHECK-NEXT: #pragma clang loop distribute(enable) +#pragma clang loop distribute(enable) #pragma clang loop vectorize(disable) #pragma clang loop interleave(enable) // CHECK-NEXT: while (i - 2 < Length) diff --git a/test/Misc/backend-optimization-failure-nodbg.cpp b/test/Misc/backend-optimization-failure-nodbg.cpp index 3c3264601424..1e847185e81c 100644 --- a/test/Misc/backend-optimization-failure-nodbg.cpp +++ b/test/Misc/backend-optimization-failure-nodbg.cpp @@ -4,7 +4,7 @@ // Test verifies optimization failures generated by the backend are handled // correctly by clang. LLVM tests verify all of the failure conditions. -void test_switch(int *A, int *B, int Length) { +void test_switch(int *A, int *B, int Length) { /* expected-warning {{loop not vectorized: failed explicitly specified loop vectorization}} */ #pragma clang loop vectorize(enable) unroll(disable) for (int i = 0; i < Length; i++) { switch (A[i]) { @@ -18,4 +18,4 @@ void test_switch(int *A, int *B, int Length) { B[i] = 3; } } -/* expected-warning {{loop not vectorized: failed explicitly specified loop vectorization}} */ } +} diff --git a/test/Misc/backend-optimization-failure.cpp b/test/Misc/backend-optimization-failure.cpp index c0f3bf46f081..bb50e96aaa57 100644 --- a/test/Misc/backend-optimization-failure.cpp +++ b/test/Misc/backend-optimization-failure.cpp @@ -7,7 +7,7 @@ void test_switch(int *A, int *B, int Length) { #pragma clang loop vectorize(enable) unroll(disable) for (int i = 0; i < Length; i++) { -/* expected-warning {{loop not vectorized: failed explicitly specified loop vectorization}} */ switch (A[i]) { +/* expected-warning@-1 {{loop not vectorized: failed explicitly specified loop vectorization}} */ switch (A[i]) { case 0: B[i] = 1; break; diff --git a/test/Misc/backend-resource-limit-diagnostics.cl b/test/Misc/backend-resource-limit-diagnostics.cl new file mode 100644 index 000000000000..6e7619babe83 --- /dev/null +++ b/test/Misc/backend-resource-limit-diagnostics.cl @@ -0,0 +1,9 @@ +// REQUIRES: amdgpu-registered-target +// RUN: not %clang_cc1 -emit-codegen-only -triple=amdgcn-- %s 2>&1 | FileCheck %s + +// CHECK: error: local memory limit exceeded (480000) in use_huge_lds +kernel void use_huge_lds() +{ + volatile local int huge[120000]; + huge[0] = 2; +} diff --git a/test/Misc/diag-format.c b/test/Misc/diag-format.c index 8e30cf76afd2..d34d25a3cf94 100644 --- a/test/Misc/diag-format.c +++ b/test/Misc/diag-format.c @@ -4,27 +4,27 @@ // // RUN: %clang -fsyntax-only -fdiagnostics-format=msvc -fmsc-version=1300 %s 2>&1 | FileCheck %s -check-prefix=MSVC2010 // RUN: %clang -fsyntax-only -fdiagnostics-format=msvc -fms-compatibility-version=13.00 %s 2>&1 | FileCheck %s -check-prefix=MSVC2010 -// RUN: %clang -fsyntax-only -fdiagnostics-format=msvc %s 2>&1 | FileCheck %s -check-prefix=MSVC // RUN: %clang -fsyntax-only -fdiagnostics-format=msvc -fmsc-version=1300 -target x86_64-pc-win32 %s 2>&1 | FileCheck %s -check-prefix=MSVC2010 // RUN: %clang -fsyntax-only -fdiagnostics-format=msvc -fms-compatibility-version=13.00 -target x86_64-pc-win32 %s 2>&1 | FileCheck %s -check-prefix=MSVC2010 -// RUN: %clang -fsyntax-only -fdiagnostics-format=msvc -target x86_64-pc-win32 %s 2>&1 | FileCheck %s -check-prefix=MSVC // RUN: %clang -fsyntax-only -fdiagnostics-format=msvc -fmsc-version=1300 -target x86_64-pc-win32 -fshow-column %s 2>&1 | FileCheck %s -check-prefix=MSVC2010 +// RUN: %clang -fsyntax-only -fdiagnostics-format=msvc -fmsc-version=1800 -target x86_64-pc-win32 %s 2>&1 | FileCheck %s -check-prefix=MSVC2013 +// RUN: %clang -fsyntax-only -fdiagnostics-format=msvc -target x86_64-pc-win32 %s 2>&1 | FileCheck %s -check-prefix=MSVC +// RUN: %clang -fsyntax-only -fdiagnostics-format=msvc -fmsc-version=1900 -target x86_64-pc-win32 %s 2>&1 | FileCheck %s -check-prefix=MSVC2015 // RUN: %clang -fsyntax-only -fdiagnostics-format=msvc -fms-compatibility-version=13.00 -target x86_64-pc-win32 -fshow-column %s 2>&1 | FileCheck %s -check-prefix=MSVC2010 +// RUN: %clang -fsyntax-only -fdiagnostics-format=msvc -fmsc-version=1800 -target x86_64-pc-win32 -fshow-column %s 2>&1 | FileCheck %s -check-prefix=MSVC2013 // RUN: %clang -fsyntax-only -fdiagnostics-format=msvc -target x86_64-pc-win32 -fshow-column %s 2>&1 | FileCheck %s -check-prefix=MSVC +// RUN: %clang -fsyntax-only -fdiagnostics-format=msvc -fmsc-version=1900 -target x86_64-pc-win32 -fshow-column %s 2>&1 | FileCheck %s -check-prefix=MSVC2015 // // RUN: %clang -fsyntax-only -fdiagnostics-format=vi %s 2>&1 | FileCheck %s -check-prefix=VI // -// RUN: %clang -fsyntax-only -fdiagnostics-format=msvc -fno-show-column %s 2>&1 | FileCheck %s -check-prefix=MSVC_ORIG +// RUN: %clang -fsyntax-only -fdiagnostics-format=msvc -fno-show-column -fmsc-version=1900 %s 2>&1 | FileCheck %s -check-prefix=MSVC2015_ORIG // // RUN: %clang -fsyntax-only -fno-show-column %s 2>&1 | FileCheck %s -check-prefix=NO_COLUMN // // RUN: not %clang -fsyntax-only -Werror -fdiagnostics-format=msvc-fallback -fmsc-version=1300 %s 2>&1 | FileCheck %s -check-prefix=MSVC2010-FALLBACK // RUN: not %clang -fsyntax-only -Werror -fdiagnostics-format=msvc-fallback -fms-compatibility-version=13.00 %s 2>&1 | FileCheck %s -check-prefix=MSVC2010-FALLBACK -// RUN: not %clang -fsyntax-only -Werror -fdiagnostics-format=msvc-fallback %s 2>&1 | FileCheck %s -check-prefix=MSVC-FALLBACK - - - - +// RUN: not %clang -fsyntax-only -Werror -fdiagnostics-format=msvc-fallback -fmsc-version=1800 %s 2>&1 | FileCheck %s -check-prefix=MSVC2013-FALLBACK +// RUN: not %clang -fsyntax-only -Werror -fdiagnostics-format=msvc-fallback -fmsc-version=1900 %s 2>&1 | FileCheck %s -check-prefix=MSVC2015-FALLBACK @@ -36,10 +36,13 @@ #endif bad // extension! // DEFAULT: {{.*}}:36:8: warning: extra tokens at end of #endif directive [-Wextra-tokens] // MSVC2010: {{.*}}(36,7) : warning: extra tokens at end of #endif directive [-Wextra-tokens] -// MSVC: {{.*}}(36,8) : warning: extra tokens at end of #endif directive [-Wextra-tokens] +// MSVC2013: {{.*}}(36,8) : warning: extra tokens at end of #endif directive [-Wextra-tokens] +// MSVC: {{.*}}(36,8){{ ?}}: warning: extra tokens at end of #endif directive [-Wextra-tokens] +// MSVC2015: {{.*}}(36,8): warning: extra tokens at end of #endif directive [-Wextra-tokens] // VI: {{.*}} +36:8: warning: extra tokens at end of #endif directive [-Wextra-tokens] -// MSVC_ORIG: {{.*}}(36) : warning: extra tokens at end of #endif directive [-Wextra-tokens] +// MSVC2015_ORIG: {{.*}}(36): warning: extra tokens at end of #endif directive [-Wextra-tokens] // NO_COLUMN: {{.*}}:36: warning: extra tokens at end of #endif directive [-Wextra-tokens] // MSVC2010-FALLBACK: {{.*}}(36,7) : error(clang): extra tokens at end of #endif directive -// MSVC-FALLBACK: {{.*}}(36,8) : error(clang): extra tokens at end of #endif directive +// MSVC2013-FALLBACK: {{.*}}(36,8) : error(clang): extra tokens at end of #endif directive +// MSVC2015-FALLBACK: {{.*}}(36,8): error(clang): extra tokens at end of #endif directive int x; diff --git a/test/Misc/diag-null-bytes-in-line.cpp b/test/Misc/diag-null-bytes-in-line.cpp Binary files differnew file mode 100644 index 000000000000..1eba91f6b239 --- /dev/null +++ b/test/Misc/diag-null-bytes-in-line.cpp diff --git a/test/Misc/diag-template-diffing-color.cpp b/test/Misc/diag-template-diffing-color.cpp index bf203153d8d4..2010344e7910 100644 --- a/test/Misc/diag-template-diffing-color.cpp +++ b/test/Misc/diag-template-diffing-color.cpp @@ -34,42 +34,38 @@ void set16(vector<vector<int> >) {} void test16() { set16(vector<const vector<int> >()); } -// CHECK: {{.*}}candidate function not viable: no known conversion from 'vector<[[CYAN]]const{{ ?}}[[RESET]]{{ ?}}vector<[...]>>' to 'vector<vector<[...]>>' for 1st argument +// CHECK: {{.*}}candidate function not viable: no known conversion from 'vector<[[CYAN]]const{{ ?}}[[RESET]]{{ ?}}vector<...>>' to 'vector<vector<...>>' for 1st argument // TREE: {{.*}}candidate function not viable: no known conversion from argument type to parameter type for 1st argument // TREE: vector< -// TREE: {{\[}}[[CYAN]]const{{ ?}}[[RESET]]{{ ?}}!= [[CYAN]](no qualifiers){{ ?}}[[RESET]]]{{ ?}}vector< -// TREE: [...]>> +// TREE: {{\[}}[[CYAN]]const{{ ?}}[[RESET]]{{ ?}}!= [[CYAN]](no qualifiers){{ ?}}[[RESET]]]{{ ?}}vector<...>> void set17(vector<const vector<int> >) {} void test17() { set17(vector<vector<int> >()); } -// CHECK: candidate function not viable: no known conversion from 'vector<vector<[...]>>' to 'vector<[[CYAN]]const{{ ?}}[[RESET]]{{ ?}}vector<[...]>>' for 1st argument +// CHECK: candidate function not viable: no known conversion from 'vector<vector<...>>' to 'vector<[[CYAN]]const{{ ?}}[[RESET]]{{ ?}}vector<...>>' for 1st argument // TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument // TREE: vector< -// TREE: {{\[}}[[CYAN]](no qualifiers){{ ?}}[[RESET]]{{ ?}}!= [[CYAN]]const[[RESET]]] vector< -// TREE: [...]>> +// TREE: {{\[}}[[CYAN]](no qualifiers){{ ?}}[[RESET]]{{ ?}}!= [[CYAN]]const[[RESET]]] vector<...>> void set18(vector<volatile vector<int> >) {} void test18() { set18(vector<const vector<int> >()); } -// CHECK: candidate function not viable: no known conversion from 'vector<[[CYAN]]const{{ ?}}[[RESET]]{{ ?}}vector<[...]>>' to 'vector<[[CYAN]]volatile{{ ?}}[[RESET]]{{ ?}}vector<[...]>>' for 1st argument +// CHECK: candidate function not viable: no known conversion from 'vector<[[CYAN]]const{{ ?}}[[RESET]]{{ ?}}vector<...>>' to 'vector<[[CYAN]]volatile{{ ?}}[[RESET]]{{ ?}}vector<...>>' for 1st argument // TREE: no matching function for call to 'set18' // TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument // TREE: vector< -// TREE: {{\[}}[[CYAN]]const{{ ?}}[[RESET]]{{ ?}}!= [[CYAN]]volatile[[RESET]]] vector< -// TREE: [...]>> +// TREE: {{\[}}[[CYAN]]const{{ ?}}[[RESET]]{{ ?}}!= [[CYAN]]volatile[[RESET]]] vector<...>> void set19(vector<const volatile vector<int> >) {} void test19() { set19(vector<const vector<int> >()); } -// CHECK: candidate function not viable: no known conversion from 'vector<const vector<[...]>>' to 'vector<const [[CYAN]]volatile{{ ?}}[[RESET]]{{ ?}}vector<[...]>>' for 1st argument +// CHECK: candidate function not viable: no known conversion from 'vector<const vector<...>>' to 'vector<const [[CYAN]]volatile{{ ?}}[[RESET]]{{ ?}}vector<...>>' for 1st argument // TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument // TREE: vector< -// TREE: [const != const [[CYAN]]volatile[[RESET]]] vector< -// TREE: [...]>> +// TREE: [const != const [[CYAN]]volatile[[RESET]]] vector<...>> namespace default_args { template <int x, int y = 1+1, int z = 2> diff --git a/test/Misc/diag-template-diffing-cxx98.cpp b/test/Misc/diag-template-diffing-cxx98.cpp index 9fa46127920c..7b1a08c6b869 100644 --- a/test/Misc/diag-template-diffing-cxx98.cpp +++ b/test/Misc/diag-template-diffing-cxx98.cpp @@ -45,5 +45,5 @@ namespace qualifiers { foo(bar, V); } - // CHECK: candidate template ignored: deduced conflicting types for parameter 'T' ('const vector<[...]>' vs. 'volatile vector<[...]>') + // CHECK: candidate template ignored: deduced conflicting types for parameter 'T' ('const vector<...>' vs. 'volatile vector<...>') } diff --git a/test/Misc/diag-template-diffing.cpp b/test/Misc/diag-template-diffing.cpp index 70d5e7c87091..90bcf6b2d17e 100644 --- a/test/Misc/diag-template-diffing.cpp +++ b/test/Misc/diag-template-diffing.cpp @@ -479,14 +479,13 @@ void test17() { set17(vector<const vector<int>>()); } // CHECK-ELIDE-NOTREE: no matching function for call to 'set17' -// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<const vector<[...]>>' to 'vector<vector<[...]>>' for 1st argument +// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<const vector<...>>' to 'vector<vector<...>>' for 1st argument // CHECK-NOELIDE-NOTREE: no matching function for call to 'set17' // CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<const vector<int>>' to 'vector<vector<int>>' for 1st argument // CHECK-ELIDE-TREE: no matching function for call to 'set17' // CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument // CHECK-ELIDE-TREE: vector< -// CHECK-ELIDE-TREE: [const != (no qualifiers)] vector< -// CHECK-ELIDE-TREE: [...]>> +// CHECK-ELIDE-TREE: [const != (no qualifiers)] vector<...>> // CHECK-NOELIDE-TREE: no matching function for call to 'set17' // CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument // CHECK-NOELIDE-TREE: vector< @@ -498,14 +497,13 @@ void test18() { set18(vector<vector<int>>()); } // CHECK-ELIDE-NOTREE: no matching function for call to 'set18' -// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<vector<[...]>>' to 'vector<const vector<[...]>>' for 1st argument +// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<vector<...>>' to 'vector<const vector<...>>' for 1st argument // CHECK-NOELIDE-NOTREE: no matching function for call to 'set18' // CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<vector<int>>' to 'vector<const vector<int>>' for 1st argument // CHECK-ELIDE-TREE: no matching function for call to 'set18' // CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument // CHECK-ELIDE-TREE: vector< -// CHECK-ELIDE-TREE: [(no qualifiers) != const] vector< -// CHECK-ELIDE-TREE: [...]>> +// CHECK-ELIDE-TREE: [(no qualifiers) != const] vector<...>> // CHECK-NOELIDE-TREE: no matching function for call to 'set18' // CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument // CHECK-NOELIDE-TREE: vector< @@ -517,14 +515,13 @@ void test19() { set19(vector<const vector<int>>()); } // CHECK-ELIDE-NOTREE: no matching function for call to 'set19' -// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<const vector<[...]>>' to 'vector<volatile vector<[...]>>' for 1st argument +// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<const vector<...>>' to 'vector<volatile vector<...>>' for 1st argument // CHECK-NOELIDE-NOTREE: no matching function for call to 'set19' // CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<const vector<int>>' to 'vector<volatile vector<int>>' for 1st argument // CHECK-ELIDE-TREE: no matching function for call to 'set19' // CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument // CHECK-ELIDE-TREE: vector< -// CHECK-ELIDE-TREE: [const != volatile] vector< -// CHECK-ELIDE-TREE: [...]>> +// CHECK-ELIDE-TREE: [const != volatile] vector<...>> // CHECK-NOELIDE-TREE: no matching function for call to 'set19' // CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument // CHECK-NOELIDE-TREE: vector< @@ -536,14 +533,13 @@ void test20() { set20(vector<const vector<int>>()); } // CHECK-ELIDE-NOTREE: no matching function for call to 'set20' -// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<const vector<[...]>>' to 'vector<const volatile vector<[...]>>' for 1st argument +// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<const vector<...>>' to 'vector<const volatile vector<...>>' for 1st argument // CHECK-NOELIDE-NOTREE: no matching function for call to 'set20' // CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<const vector<int>>' to 'vector<const volatile vector<int>>' for 1st argument // CHECK-ELIDE-TREE: no matching function for call to 'set20' // CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument // CHECK-ELIDE-TREE: vector< -// CHECK-ELIDE-TREE: [const != const volatile] vector< -// CHECK-ELIDE-TREE: [...]>> +// CHECK-ELIDE-TREE: [const != const volatile] vector<...>> // CHECK-NOELIDE-TREE: no matching function for call to 'set20' // CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument // CHECK-NOELIDE-TREE: vector< @@ -557,14 +553,13 @@ template<typename T> using U21 = volatile S21<T>; int f21(vector<const U21<int>>); int k21 = f21(vector<U21<int>>()); // CHECK-ELIDE-NOTREE: no matching function for call to 'f21' -// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<U21<[...]>>' to 'vector<const U21<[...]>>' for 1st argument +// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<U21<...>>' to 'vector<const U21<...>>' for 1st argument // CHECK-NOELIDE-NOTREE: no matching function for call to 'f21' // CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<U21<int>>' to 'vector<const U21<int>>' for 1st argument // CHECK-ELIDE-TREE: no matching function for call to 'f21' // CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument // CHECK-ELIDE-TREE: vector< -// CHECK-ELIDE-TREE: [(no qualifiers) != const] U21< -// CHECK-ELIDE-TREE: [...]>> +// CHECK-ELIDE-TREE: [(no qualifiers) != const] U21<...>> // CHECK-NOELIDE-TREE: no matching function for call to 'f21' // CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument // CHECK-NOELIDE-TREE: vector< @@ -577,14 +572,13 @@ template<typename T> using U22 = volatile S22<T>; int f22(vector<volatile const U22<int>>); int k22 = f22(vector<volatile U22<int>>()); // CHECK-ELIDE-NOTREE: no matching function for call to 'f22' -// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<U22<[...]>>' to 'vector<const U22<[...]>>' for 1st argument +// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<U22<...>>' to 'vector<const U22<...>>' for 1st argument // CHECK-NOELIDE-NOTREE: no matching function for call to 'f22' // CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<U22<int>>' to 'vector<const U22<int>>' for 1st argument // CHECK-ELIDE-TREE: no matching function for call to 'f22' // CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument // CHECK-ELIDE-TREE: vector< -// CHECK-ELIDE-TREE: [(no qualifiers) != const] U22< -// CHECK-ELIDE-TREE: [...]>> +// CHECK-ELIDE-TREE: [(no qualifiers) != const] U22<...>> // CHECK-NOELIDE-TREE: no matching function for call to 'f22' // CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument // CHECK-NOELIDE-TREE: vector< @@ -1258,7 +1252,7 @@ using T = condition<(is_const())>; void foo(const T &t) { T &t2 = t; } -// CHECK-ELIDE-NOTREE: binding value of type 'const condition<[...]>' to reference to type 'condition<[...]>' drops 'const' qualifier +// CHECK-ELIDE-NOTREE: binding value of type 'const condition<...>' to reference to type 'condition<...>' drops 'const' qualifier } namespace BoolArgumentBitExtended { @@ -1390,7 +1384,7 @@ namespace DefaultNonTypeArgWithDependentType { template <typename SizeType = int, SizeType = 0> struct A {}; template <typename R = A<>> R bar(); A<> &foo() { return bar(); } -// CHECK-ELIDE-NOTREE: error: non-const lvalue reference to type 'A<[2 * ...]>' cannot bind to a temporary of type 'A<[2 * ...]>' +// CHECK-ELIDE-NOTREE: error: non-const lvalue reference to type 'A<...>' cannot bind to a temporary of type 'A<...>' // CHECK-NOELIDE-NOTREE: error: non-const lvalue reference to type 'A<int, 0>' cannot bind to a temporary of type 'A<int, 0>' } @@ -1423,8 +1417,45 @@ B<const A<>> b4 = B<>(); // CHECK-ELIDE-NOTREE: error: no viable conversion from 'A<1>' to 'A<(default) 0>' // CHECK-ELIDE-NOTREE: error: no viable conversion from 'B<int>' to 'B<(default) ZeroArgs::A<0>>' // CHECK-ELIDE-NOTREE: error: no viable conversion from 'B<(default) ZeroArgs::A<0>>' to 'B<int>' -// CHECK-ELIDE-NOTREE: error: no viable conversion from 'B<const A<[...]>>' to 'B<A<[...]>>' -// CHECK-ELIDE-NOTREE: error: no viable conversion from 'B<A<[...]>>' to 'B<const A<[...]>>' +// CHECK-ELIDE-NOTREE: error: no viable conversion from 'B<const A<...>>' to 'B<A<...>>' +// CHECK-ELIDE-NOTREE: error: no viable conversion from 'B<A<...>>' to 'B<const A<...>>' +} + +namespace TypeAlias { + +template <typename T> class vector {}; + +template <int Dimension> class Point; +template <int dimension, typename T> using Polygon = vector<Point<dimension>>; + +void foo(Polygon<3, float>); +void bar() { foo(Polygon<2, float>()); } + +// CHECK-ELIDE-NOTREE: error: no matching function for call to 'foo' +// CHECK-ELIDE-NOTREE: note: candidate function not viable: no known conversion from 'Polygon<2, [...]>' to 'Polygon<3, [...]>' for 1st argument + +enum class X { + X1, + X2, +}; + +template<X x> struct EnumToType; + +template <> struct EnumToType<X::X1> { using type = int; }; + +template <> struct EnumToType<X::X2> { using type = double; }; + + +template <X x> using VectorType = vector<typename EnumToType<x>::type>; + +template <X x> void D(const VectorType<x>&); + +void run() { + D<X::X1>(VectorType<X::X2>()); +} +// CHECK-ELIDE-NOTREE: error: no matching function for call to 'D' +// CHECK-ELIDE-NOTREE: note: candidate function [with x = TypeAlias::X::X1] not viable: no known conversion from 'VectorType<X::X2>' to 'const VectorType<(TypeAlias::X)0>' for 1st argument + } // CHECK-ELIDE-NOTREE: {{[0-9]*}} errors generated. diff --git a/test/Misc/languageOptsOpenCL.cl b/test/Misc/languageOptsOpenCL.cl index 82a8f3614f37..9651f01a7dc5 100644 --- a/test/Misc/languageOptsOpenCL.cl +++ b/test/Misc/languageOptsOpenCL.cl @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -x cl %s -verify +// RUN: %clang_cc1 -x cl %s -verify -triple spir-unknown-unknown // expected-no-diagnostics // Test the forced language options for OpenCL are set correctly. diff --git a/test/Misc/nvptx.languageOptsOpenCL.cl b/test/Misc/nvptx.languageOptsOpenCL.cl new file mode 100644 index 000000000000..4c7e1539aa3a --- /dev/null +++ b/test/Misc/nvptx.languageOptsOpenCL.cl @@ -0,0 +1,211 @@ +// REQUIRES: nvptx-registered-target +// RUN: %clang_cc1 -x cl -cl-std=CL %s -verify -triple nvptx-unknown-unknown +// RUN: %clang_cc1 -x cl -cl-std=CL1.1 %s -verify -triple nvptx-unknown-unknown +// RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple nvptx-unknown-unknown +// RUN: %clang_cc1 -x cl -cl-std=CL2.0 %s -verify -triple nvptx-unknown-unknown +// RUN: %clang_cc1 -x cl -cl-std=CL %s -verify -triple nvptx-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES +// RUN: %clang_cc1 -x cl -cl-std=CL1.1 %s -verify -triple nvptx-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES +// RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple nvptx-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES +// RUN: %clang_cc1 -x cl -cl-std=CL2.0 %s -verify -triple nvptx-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES +// RUN: %clang_cc1 -x cl -cl-std=CL %s -verify -triple nvptx64-unknown-unknown +// RUN: %clang_cc1 -x cl -cl-std=CL1.1 %s -verify -triple nvptx64-unknown-unknown +// RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple nvptx64-unknown-unknown +// RUN: %clang_cc1 -x cl -cl-std=CL2.0 %s -verify -triple nvptx64-unknown-unknown +// RUN: %clang_cc1 -x cl -cl-std=CL %s -verify -triple nvptx64-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES +// RUN: %clang_cc1 -x cl -cl-std=CL1.1 %s -verify -triple nvptx64-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES +// RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple nvptx64-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES +// RUN: %clang_cc1 -x cl -cl-std=CL2.0 %s -verify -triple nvptx64-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES + +// Extensions in all versions +#ifndef cl_clang_storage_class_specifiers +#error "Missing cl_clang_storage_class_specifiers define" +#endif +#pragma OPENCL EXTENSION cl_clang_storage_class_specifiers: enable + +#ifdef cl_khr_fp16 +#error "Incorrect cl_khr_fp16 define" +#endif +#pragma OPENCL EXTENSION cl_khr_fp16: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_fp16' - ignoring}} + +#ifdef cl_khr_int64_base_atomics +#error "Incorrect cl_khr_int64_base_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_int64_base_atomics: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_int64_base_atomics' - ignoring}} + +#ifdef cl_khr_int64_extended_atomics +#error "Incorrect cl_khr_int64_extended_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_int64_extended_atomics: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_int64_extended_atomics' - ignoring}} + +#ifndef cl_khr_gl_sharing +#error "Missing cl_khr_gl_sharing define" +#endif +#pragma OPENCL EXTENSION cl_khr_gl_sharing: enable + +#ifndef cl_khr_icd +#error "Missing cl_khr_icd define" +#endif +#pragma OPENCL EXTENSION cl_khr_icd: enable + +// Core features in CL 1.1 + +#ifndef cl_khr_byte_addressable_store +#error "Missing cl_khr_byte_addressable_store define" +#endif +#pragma OPENCL EXTENSION cl_khr_byte_addressable_store: enable +#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES +// expected-warning@-2{{OpenCL extension 'cl_khr_byte_addressable_store' is core feature or supported optional core feature - ignoring}} +#endif + +#ifndef cl_khr_global_int32_base_atomics +#error "Missing cl_khr_global_int32_base_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics: enable +#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES +// expected-warning@-2{{OpenCL extension 'cl_khr_global_int32_base_atomics' is core feature or supported optional core feature - ignoring}} +#endif + +#ifndef cl_khr_global_int32_extended_atomics +#error "Missing cl_khr_global_int32_extended_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_global_int32_extended_atomics: enable +#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES +// expected-warning@-2{{OpenCL extension 'cl_khr_global_int32_extended_atomics' is core feature or supported optional core feature - ignoring}} +#endif + +#ifndef cl_khr_local_int32_base_atomics +#error "Missing cl_khr_local_int32_base_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_local_int32_base_atomics: enable +#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES +// expected-warning@-2{{OpenCL extension 'cl_khr_local_int32_base_atomics' is core feature or supported optional core feature - ignoring}} +#endif + +#ifndef cl_khr_local_int32_extended_atomics +#error "Missing cl_khr_local_int32_extended_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_local_int32_extended_atomics: enable +#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES +// expected-warning@-2{{OpenCL extension 'cl_khr_local_int32_extended_atomics' is core feature or supported optional core feature - ignoring}} +#endif + +#if (__OPENCL_C_VERSION__ < 110) +// Deprecated above 1.0 +#ifdef cl_khr_select_fprounding_mode +#error "Incorrect cl_khr_select_fprounding_mode define" +#endif +#pragma OPENCL EXTENSION cl_khr_select_fprounding_mode: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_select_fprounding_mode' - ignoring}} +#endif + + +// Core feature in CL 1.2 +#ifndef cl_khr_fp64 +#error "Missing cl_khr_fp64 define" +#endif +#pragma OPENCL EXTENSION cl_khr_fp64: enable +#if (__OPENCL_C_VERSION__ >= 120) && defined TEST_CORE_FEATURES +// expected-warning@-2{{OpenCL extension 'cl_khr_fp64' is core feature or supported optional core feature - ignoring}} +#endif + +// Core feature in CL 2.0, but not supported on nvptx +#ifdef cl_khr_3d_image_writes +#error "Incorrect cl_khr_3d_image_writes define" +#endif +#pragma OPENCL EXTENSION cl_khr_3d_image_writes: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_3d_image_writes' - ignoring}} + + + +#ifdef cl_khr_gl_event +#error "Incorrect cl_khr_gl_event define" +#endif +#pragma OPENCL EXTENSION cl_khr_gl_event: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_event' - ignoring}} + +#ifdef cl_khr_d3d10_sharing +#error "Incorrect cl_khr_d3d10_sharing define" +#endif +#pragma OPENCL EXTENSION cl_khr_d3d10_sharing: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_d3d10_sharing' - ignoring}} + +#ifdef cl_khr_context_abort +#error "Incorrect cl_context_abort define" +#endif +#pragma OPENCL EXTENSION cl_khr_context_abort: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_context_abort' - ignoring}} + +#ifdef cl_khr_d3d11_sharing +#error "Incorrect cl_khr_d3d11_sharing define" +#endif +#pragma OPENCL EXTENSION cl_khr_d3d11_sharing: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_d3d11_sharing' - ignoring}} + +#ifdef cl_khr_dx9_media_sharing +#error "Incorrect cl_khr_dx9_media_sharing define" +#endif +#pragma OPENCL EXTENSION cl_khr_dx9_media_sharing: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_dx9_media_sharing' - ignoring}} + +#ifdef cl_khr_image2d_from_buffer +#error "Incorrect cl_khr_image2d_from_buffer define" +#endif +#pragma OPENCL EXTENSION cl_khr_image2d_from_buffer: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_image2d_from_buffer' - ignoring}} + +#ifdef cl_khr_initialize_memory +#error "Incorrect cl_khr_initialize_memory define" +#endif +#pragma OPENCL EXTENSION cl_khr_initialize_memory: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_initialize_memory' - ignoring}} + +#ifdef cl_khr_gl_depth_images +#error "Incorrect cl_khr_gl_depth_images define" +#endif +#pragma OPENCL EXTENSION cl_khr_gl_depth_images: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_depth_images' - ignoring}} + +#ifdef cl_khr_gl_msaa_sharing +#error "Incorrect cl_khr_gl_msaa_sharing define" +#endif +#pragma OPENCL EXTENSION cl_khr_gl_msaa_sharing: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_msaa_sharing' - ignoring}} + +#ifdef cl_khr_spir +#error "Incorrect cl_khr_spir define" +#endif +#pragma OPENCL EXTENSION cl_khr_spir: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_spir' - ignoring}} + +#ifdef cl_khr_egl_event +#error "Incorrect cl_khr_egl_event define" +#endif +#pragma OPENCL EXTENSION cl_khr_egl_event: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_egl_event' - ignoring}} + +#ifdef cl_khr_egl_image +#error "Missing cl_khr_egl_image define" +#endif +#pragma OPENCL EXTENSION cl_khr_egl_image: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_egl_image' - ignoring}} + +#ifdef cl_khr_srgb_image_writes +#error "Incorrect cl_khr_srgb_image_writes define" +#endif +#pragma OPENCL EXTENSION cl_khr_srgb_image_writes: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_srgb_image_writes' - ignoring}} + +#ifdef cl_khr_subgroups +#error "Incorrect cl_khr_subgroups define" +#endif +#pragma OPENCL EXTENSION cl_khr_subgroups: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_subgroups' - ignoring}} + +#ifdef cl_khr_terminate_context +#error "Incorrect cl_khr_terminate_context define" +#endif +#pragma OPENCL EXTENSION cl_khr_terminate_context: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_terminate_context' - ignoring}} diff --git a/test/Misc/r600.languageOptsOpenCL.cl b/test/Misc/r600.languageOptsOpenCL.cl new file mode 100644 index 000000000000..58444cf7688a --- /dev/null +++ b/test/Misc/r600.languageOptsOpenCL.cl @@ -0,0 +1,225 @@ +// REQUIRES: amdgpu-registered-target +// RUN: %clang_cc1 -x cl -cl-std=CL %s -verify -triple r600-unknown-unknown -target-cpu cayman +// RUN: %clang_cc1 -x cl -cl-std=CL1.1 %s -verify -triple r600-unknown-unknown -target-cpu cayman +// RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple r600-unknown-unknown -target-cpu cayman +// RUN: %clang_cc1 -x cl -cl-std=CL2.0 %s -verify -triple r600-unknown-unknown -target-cpu cayman +// RUN: %clang_cc1 -x cl -cl-std=CL %s -verify -triple r600-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES -target-cpu cayman +// RUN: %clang_cc1 -x cl -cl-std=CL1.1 %s -verify -triple r600-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES -target-cpu cayman +// RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple r600-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES -target-cpu cayman +// RUN: %clang_cc1 -x cl -cl-std=CL2.0 %s -verify -triple r600-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES -target-cpu cayman +// RUN: %clang_cc1 -x cl -cl-std=CL %s -verify -triple r600-unknown-unknown -target-cpu cypress +// RUN: %clang_cc1 -x cl -cl-std=CL1.1 %s -verify -triple r600-unknown-unknown -target-cpu cypress +// RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple r600-unknown-unknown -target-cpu cypress +// RUN: %clang_cc1 -x cl -cl-std=CL2.0 %s -verify -triple r600-unknown-unknown -target-cpu cypress +// RUN: %clang_cc1 -x cl -cl-std=CL %s -verify -triple r600-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES -target-cpu cypress +// RUN: %clang_cc1 -x cl -cl-std=CL1.1 %s -verify -triple r600-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES -target-cpu cypress +// RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple r600-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES -target-cpu cypress +// RUN: %clang_cc1 -x cl -cl-std=CL2.0 %s -verify -triple r600-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES -target-cpu cypress +// RUN: %clang_cc1 -x cl -cl-std=CL %s -verify -triple r600-unknown-unknown -target-cpu turks +// RUN: %clang_cc1 -x cl -cl-std=CL1.1 %s -verify -triple r600-unknown-unknown -target-cpu turks +// RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple r600-unknown-unknown -target-cpu turks +// RUN: %clang_cc1 -x cl -cl-std=CL2.0 %s -verify -triple r600-unknown-unknown -target-cpu turks +// RUN: %clang_cc1 -x cl -cl-std=CL %s -verify -triple r600-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES -target-cpu turks +// RUN: %clang_cc1 -x cl -cl-std=CL1.1 %s -verify -triple r600-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES -target-cpu turks +// RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple r600-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES -target-cpu turks +// RUN: %clang_cc1 -x cl -cl-std=CL2.0 %s -verify -triple r600-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES -target-cpu turks + +// Extensions in all versions +#ifndef cl_clang_storage_class_specifiers +#error "Missing cl_clang_storage_class_specifiers define" +#endif +#pragma OPENCL EXTENSION cl_clang_storage_class_specifiers: enable + +#ifdef cl_khr_fp16 +#error "Incorrect cl_khr_fp16 define" +#endif +#pragma OPENCL EXTENSION cl_khr_fp16: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_fp16' - ignoring}} + +#ifdef cl_khr_int64_base_atomics +#error "Incorrect cl_khr_int64_base_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_int64_base_atomics: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_int64_base_atomics' - ignoring}} + +#ifdef cl_khr_int64_extended_atomics +#error "Incorrect cl_khr_int64_extended_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_int64_extended_atomics: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_int64_extended_atomics' - ignoring}} + +#ifdef cl_khr_gl_sharing +#error "Incorrect cl_khr_gl_sharing define" +#endif +#pragma OPENCL EXTENSION cl_khr_gl_sharing: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_sharing' - ignoring}} + +#ifndef cl_khr_icd +#error "Missing cl_khr_icd define" +#endif +#pragma OPENCL EXTENSION cl_khr_icd: enable + +// Core features in CL 1.1 + +#ifndef cl_khr_byte_addressable_store +#error "Missing cl_khr_byte_addressable_store define" +#endif +#pragma OPENCL EXTENSION cl_khr_byte_addressable_store: enable +#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES +// expected-warning@-2{{OpenCL extension 'cl_khr_byte_addressable_store' is core feature or supported optional core feature - ignoring}} +#endif + +#ifndef cl_khr_global_int32_base_atomics +#error "Missing cl_khr_global_int32_base_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics: enable +#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES +// expected-warning@-2{{OpenCL extension 'cl_khr_global_int32_base_atomics' is core feature or supported optional core feature - ignoring}} +#endif + +#ifndef cl_khr_global_int32_extended_atomics +#error "Missing cl_khr_global_int32_extended_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_global_int32_extended_atomics: enable +#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES +// expected-warning@-2{{OpenCL extension 'cl_khr_global_int32_extended_atomics' is core feature or supported optional core feature - ignoring}} +#endif + +#ifndef cl_khr_local_int32_base_atomics +#error "Missing cl_khr_local_int32_base_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_local_int32_base_atomics: enable +#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES +// expected-warning@-2{{OpenCL extension 'cl_khr_local_int32_base_atomics' is core feature or supported optional core feature - ignoring}} +#endif + +#ifndef cl_khr_local_int32_extended_atomics +#error "Missing cl_khr_local_int32_extended_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_local_int32_extended_atomics: enable +#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES +// expected-warning@-2{{OpenCL extension 'cl_khr_local_int32_extended_atomics' is core feature or supported optional core feature - ignoring}} +#endif + +// Deprecated abvoe 1.0 +#ifdef cl_khr_select_fprounding_mode +#error "Incorrect cl_khr_select_fprounding_mode define" +#endif +#pragma OPENCL EXTENSION cl_khr_select_fprounding_mode: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_select_fprounding_mode' - ignoring}} + + +// Core feature in CL 1.2 +#ifdef __HAS_FP64__ +#ifndef cl_khr_fp64 +#error "Missing cl_khr_fp64 define" +#endif +#pragma OPENCL EXTENSION cl_khr_fp64: enable +#if (__OPENCL_C_VERSION__ >= 120) && defined TEST_CORE_FEATURES +// expected-warning@-2{{OpenCL extension 'cl_khr_fp64' is core feature or supported optional core feature - ignoring}} +#endif +#else +#ifdef cl_khr_fp64 +#error "Incorrect cl_khr_fp64 define" +#endif +#pragma OPENCL EXTENSION cl_khr_fp64: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_fp64' - ignoring}} +#endif // __HAS_FP64__ + +//Core feature in CL 2.0 +#ifdef cl_khr_3d_image_writes +#error "Incorrect cl_khr_3d_image_writes define" +#endif +#pragma OPENCL EXTENSION cl_khr_3d_image_writes: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_3d_image_writes' - ignoring}} + + +#ifdef cl_khr_gl_event +#error "Incorrect cl_khr_gl_event define" +#endif +#pragma OPENCL EXTENSION cl_khr_gl_event: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_event' - ignoring}} + +#ifdef cl_khr_d3d10_sharing +#error "Incorrect cl_khr_d3d10_sharing define" +#endif +#pragma OPENCL EXTENSION cl_khr_d3d10_sharing: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_d3d10_sharing' - ignoring}} + +#ifdef cl_khr_context_abort +#error "Incorrect cl_context_abort define" +#endif +#pragma OPENCL EXTENSION cl_khr_context_abort: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_context_abort' - ignoring}} + +#ifdef cl_khr_d3d11_sharing +#error "Incorrect cl_khr_d3d11_sharing define" +#endif +#pragma OPENCL EXTENSION cl_khr_d3d11_sharing: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_d3d11_sharing' - ignoring}} + +#ifdef cl_khr_dx9_media_sharing +#error "Incorrect cl_khr_dx9_media_sharing define" +#endif +#pragma OPENCL EXTENSION cl_khr_dx9_media_sharing: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_dx9_media_sharing' - ignoring}} + +#ifdef cl_khr_image2d_from_buffer +#error "Incorrect cl_khr_image2d_from_buffer define" +#endif +#pragma OPENCL EXTENSION cl_khr_image2d_from_buffer: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_image2d_from_buffer' - ignoring}} + +#ifdef cl_khr_initialize_memory +#error "Incorrect cl_khr_initialize_memory define" +#endif +#pragma OPENCL EXTENSION cl_khr_initialize_memory: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_initialize_memory' - ignoring}} + +#ifdef cl_khr_gl_depth_images +#error "Incorrect cl_khr_gl_depth_images define" +#endif +#pragma OPENCL EXTENSION cl_khr_gl_depth_images: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_depth_images' - ignoring}} + +#ifdef cl_khr_gl_msaa_sharing +#error "Incorrect cl_khr_gl_msaa_sharing define" +#endif +#pragma OPENCL EXTENSION cl_khr_gl_msaa_sharing: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_msaa_sharing' - ignoring}} + +#ifdef cl_khr_spir +#error "Incorrect cl_khr_spir define" +#endif +#pragma OPENCL EXTENSION cl_khr_spir: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_spir' - ignoring}} + +#ifdef cl_khr_egl_event +#error "Incorrect cl_khr_egl_event define" +#endif +#pragma OPENCL EXTENSION cl_khr_egl_event: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_egl_event' - ignoring}} + +#ifdef cl_khr_egl_image +#error "Incorrect cl_khr_egl_image define" +#endif +#pragma OPENCL EXTENSION cl_khr_egl_image: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_egl_image' - ignoring}} + +#ifdef cl_khr_srgb_image_writes +#error "Incorrect cl_khr_srgb_image_writes define" +#endif +#pragma OPENCL EXTENSION cl_khr_srgb_image_writes: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_srgb_image_writes' - ignoring}} + +#ifdef cl_khr_subgroups +#error "Incorrect cl_khr_subgroups define" +#endif +#pragma OPENCL EXTENSION cl_khr_subgroups: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_subgroups' - ignoring}} + +#ifdef cl_khr_terminate_context +#error "Incorrect cl_khr_terminate_context define" +#endif +#pragma OPENCL EXTENSION cl_khr_terminate_context: enable +// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_terminate_context' - ignoring}} diff --git a/test/Misc/serialized-diags-driver.c b/test/Misc/serialized-diags-driver.c index ad07d666c8c1..617ac8c6ef92 100644 --- a/test/Misc/serialized-diags-driver.c +++ b/test/Misc/serialized-diags-driver.c @@ -5,10 +5,10 @@ // doesn't litter the user's system with preprocessed output. // RUN: rm -f %t -// RUN: %clang -Wx-unknown-warning -Wall -fsyntax-only --serialize-diagnostics %t.diag %s +// RUN: %clang -Wx-typoed-warning -Wall -fsyntax-only --serialize-diagnostics %t.diag %s // RUN: c-index-test -read-diagnostics %t.diag 2>&1 | FileCheck %s -// CHECK: warning: unknown warning option '-Wx-unknown-warning' [-Wunknown-warning-option] [] +// CHECK: warning: unknown warning option '-Wx-typoed-warning' [-Wunknown-warning-option] [] // CHECK: warning: variable 'voodoo' is uninitialized when used here [-Wuninitialized] // CHECK: note: initialize the variable 'voodoo' to silence this warning [] diff --git a/test/Misc/target-parser.c b/test/Misc/target-parser.c new file mode 100644 index 000000000000..fb1c8300d736 --- /dev/null +++ b/test/Misc/target-parser.c @@ -0,0 +1,2 @@ +// RUN: not %clang_cc1 -triple armv7--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s +// CHECK: error: unknown target CPU 'not-a-cpu' diff --git a/test/Misc/thinlto.c b/test/Misc/thinlto.c index 9134cbe5c5ee..ec0f03f5a2af 100644 --- a/test/Misc/thinlto.c +++ b/test/Misc/thinlto.c @@ -1,9 +1,4 @@ // RUN: %clang_cc1 -flto=thin -emit-llvm-bc < %s | llvm-bcanalyzer -dump | FileCheck %s -// CHECK: <FUNCTION_SUMMARY_BLOCK -// CHECK-NEXT: <PERMODULE_ENTRY -// CHECK-NEXT: <PERMODULE_ENTRY -// CHECK-NEXT: </FUNCTION_SUMMARY_BLOCK - -__attribute__((noinline)) void foo() {} - -int main() { foo(); } +// ; Check that the -flto=thin option emits a summary +// CHECK: <GLOBALVAL_SUMMARY_BLOCK +int main() {} |