Author: Tom Honermann
Date: 2022-03-21T13:39:44-04:00
New Revision: 8ff8c3ac0dd675319d779a1aa0087e8a0d5a81b2

URL: 
https://github.com/llvm/llvm-project/commit/8ff8c3ac0dd675319d779a1aa0087e8a0d5a81b2
DIFF: 
https://github.com/llvm/llvm-project/commit/8ff8c3ac0dd675319d779a1aa0087e8a0d5a81b2.diff

LOG: [clang] [OpenMP] Extend OpenMP variant declaration tests.

This change extends the existing diagnostic tests for OpenMP variant
declarations to cover diagnostics for declarations that include
multiversion function attributes. The new tests demonstrate a missing
check for the 'target_clones' attribute.

Reviewed By: erichkeane, jdoerfert

Differential Revision: https://reviews.llvm.org/D121962

Added: 
    

Modified: 
    clang/test/OpenMP/declare_variant_messages.c

Removed: 
    


################################################################################
diff  --git a/clang/test/OpenMP/declare_variant_messages.c 
b/clang/test/OpenMP/declare_variant_messages.c
index 5618e1bbe1d3d..e00d1615ef61a 100644
--- a/clang/test/OpenMP/declare_variant_messages.c
+++ b/clang/test/OpenMP/declare_variant_messages.c
@@ -142,6 +142,30 @@ int 
diff _ret_variant(void);
 #pragma omp declare variant(
diff _ret_variant) match(xxx={}) // expected-error {{variant in '#pragma omp 
declare variant' with type 'int (void)' is incompatible with type 'void 
(void)'}} expected-warning {{'xxx' is not a valid context set in a `declare 
variant`; set ignored}} expected-note {{context set options are: 'construct' 
'device' 'implementation' 'user'}} expected-note {{the ignored set spans until 
here}}
 void 
diff _ret(void);
 
+void incompat_attr_variant(void);
+
+#pragma omp declare variant(incompat_attr_variant) 
match(implementation={vendor(llvm)})
+__attribute__((cpu_dispatch(generic))) void incompat_attr_cpu_dispatch(void); 
// expected-error {{'#pragma omp declare variant' is not compatible with any 
target-specific attributes}}
+
+#pragma omp declare variant(incompat_attr_variant) 
match(implementation={vendor(llvm)})
+__attribute__((cpu_specific(generic))) void incompat_attr_cpu_specific(void); 
// expected-error {{'#pragma omp declare variant' is not compatible with any 
target-specific attributes}}
+
+// 'incompat_attr_target' is not a multiversion function until...
+#pragma omp declare variant(incompat_attr_variant) 
match(implementation={vendor(llvm)})
+__attribute__((target("mmx"))) void incompat_attr_target(void); // 
expected-error {{'#pragma omp declare variant' is not compatible with any 
target-specific attributes}}
+
+// This declaration makes it one.
+#pragma omp declare variant(incompat_attr_variant) 
match(implementation={vendor(llvm)})
+__attribute__((target("sse"))) void incompat_attr_target(void); // 
expected-error {{'#pragma omp declare variant' is not compatible with any 
target-specific attributes}}
+
+// 'incompat_attr_target_default' is always a multiversion function.
+#pragma omp declare variant(incompat_attr_variant) 
match(implementation={vendor(llvm)})
+__attribute__((target("default"))) void incompat_attr_target_default(void); // 
expected-error {{'#pragma omp declare variant' is not compatible with any 
target-specific attributes}}
+
+// FIXME: No diagnostics are produced for use of the 'target_clones' attribute 
in an OMP variant declaration.
+#pragma omp declare variant(incompat_attr_variant) 
match(implementation={vendor(llvm)})
+__attribute__((target_clones("sse,default"))) void 
incompat_attr_target_clones(void);
+
 void marked(void);
 void not_marked(void);
 


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to