diff options
| author | Alexey Bataev <a.bataev@hotmail.com> | 2018-08-20 18:03:40 +0000 |
|---|---|---|
| committer | Alexey Bataev <a.bataev@hotmail.com> | 2018-08-20 18:03:40 +0000 |
| commit | 7f792cab1230096fd420c3bbe3cdf32024d477f3 (patch) | |
| tree | ae978c994c0f093d08b5fc21514f3b50eccb8b89 /clang/test/OpenMP/declare_target_codegen.cpp | |
| parent | 7ff7bd9b3c7b6b15399b9f03799baceb300e7888 (diff) | |
| download | bcm5719-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.cpp | 14 |
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 |

