summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAlexey Bataev <a.bataev@hotmail.com>2019-10-08 19:44:16 +0000
committerAlexey Bataev <a.bataev@hotmail.com>2019-10-08 19:44:16 +0000
commit1d45d5ea2ab93d16f72d3f68c4092e31a1796f75 (patch)
treec386b008fb7d01a6c73cd83820211de2d32e45c3 /test
parentb9ffe7a90f9e93654e4a20ddb36f75353808b7a0 (diff)
downloadclang-1d45d5ea2ab93d16f72d3f68c4092e31a1796f75.tar.gz
[OPENMP50]Multiple vendors in vendor context must be treated as logical
and of vendors, not or. If several vendors are provided in the same vendor context trait, the context shall match only if all vendors are matching, not one of them. This is per OpenMP 5.0, 2.3.3 Matching and Scoring Context Selectors, all selectors in the construct, device, and implementation sets of the context selector appear in the corresponding trait set of the OpenMP context. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@374107 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/OpenMP/declare_variant_ast_print.c3
-rw-r--r--test/OpenMP/declare_variant_ast_print.cpp6
-rw-r--r--test/OpenMP/declare_variant_implementation_vendor_codegen.cpp7
3 files changed, 10 insertions, 6 deletions
diff --git a/test/OpenMP/declare_variant_ast_print.c b/test/OpenMP/declare_variant_ast_print.c
index 7f359e07b7..a8a11bc53d 100644
--- a/test/OpenMP/declare_variant_ast_print.c
+++ b/test/OpenMP/declare_variant_ast_print.c
@@ -15,8 +15,7 @@ int foo(void);
int bar(void);
// CHECK: int foo();
-// CHECK-NEXT: #pragma omp declare variant(foo) match(implementation={vendor(score(5):ibm)})
-// CHECK-NEXT: #pragma omp declare variant(foo) match(implementation={vendor(score(5):xxx)})
+// CHECK-NEXT: #pragma omp declare variant(foo) match(implementation={vendor(score(5):ibm, xxx)})
// CHECK-NEXT: #pragma omp declare variant(foo) match(implementation={vendor(unknown)})
// CHECK-NEXT: #pragma omp declare variant(foo) match(implementation={vendor(llvm)})
// CHECK-NEXT: #pragma omp declare variant(foo) match(implementation={vendor(llvm)})
diff --git a/test/OpenMP/declare_variant_ast_print.cpp b/test/OpenMP/declare_variant_ast_print.cpp
index 7b3b9ccd7b..ce67b818f3 100644
--- a/test/OpenMP/declare_variant_ast_print.cpp
+++ b/test/OpenMP/declare_variant_ast_print.cpp
@@ -28,8 +28,7 @@ T foofoo() { return T(); }
#pragma omp declare variant(foofoo <int>) match(implementation={vendor(score(5): ibm)})
int bar();
-// CHECK: #pragma omp declare variant(foofoo<T>) match(implementation={vendor(score(C + 5):ibm)})
-// CHECK: #pragma omp declare variant(foofoo<T>) match(implementation={vendor(score(C + 5):xxx)})
+// CHECK: #pragma omp declare variant(foofoo<T>) match(implementation={vendor(score(C + 5):ibm, xxx)})
// CHECK-NEXT: #pragma omp declare variant(foofoo<T>) match(implementation={vendor(unknown)})
// CHECK-NEXT: #pragma omp declare variant(foofoo<T>) match(implementation={vendor(llvm)})
// CHECK-NEXT: template <typename T, int C> T barbar();
@@ -45,8 +44,7 @@ int bar();
template <typename T, int C>
T barbar();
-// CHECK: #pragma omp declare variant(foofoo<int>) match(implementation={vendor(score(3 + 5):ibm)})
-// CHECK: #pragma omp declare variant(foofoo<int>) match(implementation={vendor(score(3 + 5):xxx)})
+// CHECK: #pragma omp declare variant(foofoo<int>) match(implementation={vendor(score(3 + 5):ibm, xxx)})
// CHECK-NEXT: #pragma omp declare variant(foofoo<int>) match(implementation={vendor(unknown)})
// CHECK-NEXT: #pragma omp declare variant(foofoo<int>) match(implementation={vendor(llvm)})
// CHECK-NEXT: template<> int barbar<int, 3>();
diff --git a/test/OpenMP/declare_variant_implementation_vendor_codegen.cpp b/test/OpenMP/declare_variant_implementation_vendor_codegen.cpp
index 1c200cca90..cf72e4c68b 100644
--- a/test/OpenMP/declare_variant_implementation_vendor_codegen.cpp
+++ b/test/OpenMP/declare_variant_implementation_vendor_codegen.cpp
@@ -13,6 +13,8 @@
// CHECK-DAG: @_Z4callv = {{.*}}alias i32 (), i32 ()* @_Z4testv
// CHECK-DAG: @_ZL9stat_usedv = internal alias i32 (), i32 ()* @_ZL10stat_used_v
// CHECK-DAG: @_ZN12SpecialFuncs6MethodEv = {{.*}}alias i32 (%struct.SpecialFuncs*), i32 (%struct.SpecialFuncs*)* @_ZN12SpecialFuncs7method_Ev
+// CHECK-DAG: @fn_linkage = {{.*}}alias i32 (), i32 ()* @_Z18fn_linkage_variantv
+// CHECK-DAG: @_Z11fn_linkage1v = {{.*}}alias i32 (), i32 ()* @fn_linkage_variant1
// CHECK-DAG: declare {{.*}}i32 @_Z5bazzzv()
// CHECK-DAG: declare {{.*}}i32 @_Z3bazv()
// CHECK-DAG: ret i32 2
@@ -24,6 +26,7 @@
// CHECK-DAG: ret i32 83
// CHECK-DAG: ret i32 85
// CHECK-DAG: ret i32 86
+// CHECK-DAG: ret i32 87
// CHECK-NOT: ret i32 {{1|4|81|84}}
#ifndef HEADER
@@ -122,4 +125,8 @@ extern "C" int fn_linkage_variant1() { return 86; }
#pragma omp declare variant(fn_linkage_variant1) match(implementation = {vendor(llvm)})
int fn_linkage1() { return 1; }
+int fn_variant2() { return 1; }
+#pragma omp declare variant(fn_variant2) match(implementation = {vendor(llvm, ibm)})
+int fn2() { return 87; }
+
#endif // HEADER