summaryrefslogtreecommitdiffstats
path: root/clang/test/OpenMP/declare_target_codegen.cpp
diff options
context:
space:
mode:
authorAlexey Bataev <a.bataev@hotmail.com>2018-08-20 18:03:40 +0000
committerAlexey Bataev <a.bataev@hotmail.com>2018-08-20 18:03:40 +0000
commit7f792cab1230096fd420c3bbe3cdf32024d477f3 (patch)
treeae978c994c0f093d08b5fc21514f3b50eccb8b89 /clang/test/OpenMP/declare_target_codegen.cpp
parent7ff7bd9b3c7b6b15399b9f03799baceb300e7888 (diff)
downloadbcm5719-llvm-7f792cab1230096fd420c3bbe3cdf32024d477f3.tar.gz
bcm5719-llvm-7f792cab1230096fd420c3bbe3cdf32024d477f3.zip
[OPENMP] Fix crash on the emission of the weak function declaration.
If the function is actually a weak reference, it should not be marked as deferred definition as this is only a declaration. Patch adds checks for the definitions if they must be emitted. Otherwise, only declaration is emitted. llvm-svn: 340191
Diffstat (limited to 'clang/test/OpenMP/declare_target_codegen.cpp')
-rw-r--r--clang/test/OpenMP/declare_target_codegen.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/clang/test/OpenMP/declare_target_codegen.cpp b/clang/test/OpenMP/declare_target_codegen.cpp
index f4ef4225526..0cd611b06f9 100644
--- a/clang/test/OpenMP/declare_target_codegen.cpp
+++ b/clang/test/OpenMP/declare_target_codegen.cpp
@@ -128,5 +128,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
OpenPOWER on IntegriCloud