diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2010-03-04 18:17:24 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2010-03-04 18:17:24 +0000 |
commit | 2e42fec3a092692a98865cb264940e9320c42aa0 (patch) | |
tree | 3ad73e79deaacd19dc9bef42463727e396823377 /clang/test/CodeGen/attr-weakref2.c | |
parent | 334db0ce7f2fc39f4644dd50e878f467a2a0f89b (diff) | |
download | bcm5719-llvm-2e42fec3a092692a98865cb264940e9320c42aa0.tar.gz bcm5719-llvm-2e42fec3a092692a98865cb264940e9320c42aa0.zip |
Fix PR6473.
Clang's support for weakref is now better than llvm-gcc's :-)
We don't introduce a new symbol and we correctly mark undefined references weak only if there is no
definition or regular undefined references in the same file.
llvm-svn: 97733
Diffstat (limited to 'clang/test/CodeGen/attr-weakref2.c')
-rw-r--r-- | clang/test/CodeGen/attr-weakref2.c | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/clang/test/CodeGen/attr-weakref2.c b/clang/test/CodeGen/attr-weakref2.c new file mode 100644 index 00000000000..99760635581 --- /dev/null +++ b/clang/test/CodeGen/attr-weakref2.c @@ -0,0 +1,54 @@ +// RUN: %clang_cc1 -emit-llvm -triple i386-linux-gnu -o %t %s +// RUN: FileCheck --input-file=%t %s + +// CHECK: @test1_f = extern_weak global i32 +extern int test1_f; +static int test1_g __attribute__((weakref("test1_f"))); +int test1_h(void) { + return test1_g; +} + +// CHECK: @test2_f = common global i32 0, align 4 +int test2_f; +static int test2_g __attribute__((weakref("test2_f"))); +int test2_h(void) { + return test2_g; +} + +// CHECK: @test3_f = external global i32 +extern int test3_f; +static int test3_g __attribute__((weakref("test3_f"))); +int test3_foo(void) { + return test3_f; +} +int test3_h(void) { + return test3_g; +} + +// CHECK: @test4_f = common global i32 0, align 4 +extern int test4_f; +static int test4_g __attribute__((weakref("test4_f"))); +int test4_h(void) { + return test4_g; +} +int test4_f; + +// CHECK: @test5_f = external global i32 +extern int test5_f; +static int test5_g __attribute__((weakref("test5_f"))); +int test5_h(void) { + return test5_g; +} +int test5_foo(void) { + return test5_f; +} + +// CHECK: @test6_f = extern_weak global i32 +extern int test6_f __attribute__((weak)); +static int test6_g __attribute__((weakref("test6_f"))); +int test6_h(void) { + return test6_g; +} +int test6_foo(void) { + return test6_f; +} |