diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-08-04 04:38:31 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-08-04 04:38:31 +0000 |
commit | e9863976b33a6da453aed83dcff90946f0d04401 (patch) | |
tree | f1152d33f5adf3f2cb7a90fe7cb861ef29cff958 /clang/test/Sema/pragma-weak.c | |
parent | 59c08e76caf44901535720b6188539e8a8bd8bab (diff) | |
download | bcm5719-llvm-e9863976b33a6da453aed83dcff90946f0d04401.tar.gz bcm5719-llvm-e9863976b33a6da453aed83dcff90946f0d04401.zip |
Fix test case for Darwin10 (which sets ssp), and move to CodeGen/
llvm-svn: 78049
Diffstat (limited to 'clang/test/Sema/pragma-weak.c')
-rw-r--r-- | clang/test/Sema/pragma-weak.c | 158 |
1 files changed, 0 insertions, 158 deletions
diff --git a/clang/test/Sema/pragma-weak.c b/clang/test/Sema/pragma-weak.c deleted file mode 100644 index 9c3e3998710..00000000000 --- a/clang/test/Sema/pragma-weak.c +++ /dev/null @@ -1,158 +0,0 @@ -// RUN: clang-cc -emit-llvm -o %t %s && - -#pragma weak weakvar -int weakvar; -// RUN: grep '@weakvar = weak global' %t | count 1 && - -#pragma weak weakdef -void weakdef(void) {} -// RUN: grep 'define weak void @weakdef() nounwind {' %t | count 1 && - -#pragma weak param // expected-warning {{weak identifier 'param' never declared}} -#pragma weak correct_linkage -void f(int param) { - int correct_linkage; -} -int correct_linkage; -// RUN: grep '@correct_linkage = weak global' %t | count 1 && - -#pragma weak weakvar_alias = __weakvar_alias -int __weakvar_alias; -// RUN: grep '@__weakvar_alias = common global' %t | count 1 && -// RUN: grep '@weakvar_alias = alias weak i32\* @__weakvar_alias' %t | count 1 && -//@weakvar_alias = alias weak i32* @__weakvar_alias - -#pragma weak foo = __foo -void __foo(void) {} -// RUN: grep '@foo = alias weak void ()\* @__foo\>' %t | count 1 && -// RUN: grep 'define void @__foo() nounwind {' %t | count 1 && - - -void __foo2(void) {} -#pragma weak foo2 = __foo2 -// RUN: grep '@foo2 = alias weak void ()\* @__foo2\>' %t | count 1 && -// RUN: grep 'define void @__foo2() nounwind {' %t | count 1 && - - -///// test errors - -#pragma weak unused // expected-warning {{weak identifier 'unused' never declared}} -#pragma weak unused_alias = __unused_alias // expected-warning {{weak identifier '__unused_alias' never declared}} - -#pragma weak td // expected-warning {{weak identifier 'td' never declared}} -typedef int td; - -#pragma weak td2 = __td2 // expected-warning {{weak identifier '__td2' never declared}} -typedef int __td2; - - -///// test weird cases - -// test repeats - -#pragma weak stutter = __stutter -#pragma weak stutter = __stutter -void __stutter(void) {} -// RUN: grep '@stutter = alias weak void ()\* @__stutter\>' %t | count 1 && -// RUN: grep 'define void @__stutter() nounwind {' %t | count 1 && - -void __stutter2(void) {} -#pragma weak stutter2 = __stutter2 -#pragma weak stutter2 = __stutter2 -// RUN: grep '@stutter2 = alias weak void ()\* @__stutter2\>' %t | count 1 && -// RUN: grep 'define void @__stutter2() nounwind {' %t | count 1 && - - -// test decl/pragma weak order - -void __declfirst(void); -#pragma weak declfirst = __declfirst -void __declfirst(void) {} -// RUN: grep '@declfirst = alias weak void ()\* @__declfirst\>' %t | count 1 && -// RUN: grep 'define void @__declfirst() nounwind {' %t | count 1 && - -void __declfirstattr(void) __attribute((noinline)); -#pragma weak declfirstattr = __declfirstattr -void __declfirstattr(void) {} -// RUN: grep '@declfirstattr = alias weak void ()\* @__declfirstattr\>' %t | count 1 && -// RUN: grep 'define void @__declfirstattr() nounwind noinline {' %t | count 1 && - -//// test that other attributes are preserved - -//// ensure that pragma weak/__attribute((weak)) play nice - -void mix(void); -#pragma weak mix -__attribute((weak)) void mix(void) { } -// RUN: grep 'define weak void @mix() nounwind {' %t | count 1 && - -// ensure following __attributes are preserved and that only a single -// alias is generated -#pragma weak mix2 = __mix2 -void __mix2(void) __attribute((noinline)); -void __mix2(void) __attribute((noinline)); -void __mix2(void) {} -// RUN: grep '@mix2 = alias weak void ()\* @__mix2\>' %t | count 1 && -// RUN: grep 'define void @__mix2() nounwind noinline {' %t | count 1 && - -////////////// test #pragma weak/__attribute combinations - -// if the SAME ALIAS is already declared then it overrides #pragma weak -// resulting in a non-weak alias in this case -void both(void) __attribute((alias("__both"))); -#pragma weak both = __both -void __both(void) {} -// RUN: grep '@both = alias void ()\* @__both\>' %t | count 1 && -// RUN: grep 'define void @__both() nounwind {' %t | count 1 && - -// if the TARGET is previously declared then whichever aliasing method -// comes first applies and subsequent aliases are discarded. -// TODO: warn about this - -void __both2(void); -void both2(void) __attribute((alias("__both2"))); // first, wins -#pragma weak both2 = __both2 -void __both2(void) {} -// RUN: grep '@both2 = alias void ()\* @__both2\>' %t | count 1 && -// RUN: grep 'define void @__both2() nounwind {' %t | count 1 && - -void __both3(void); -#pragma weak both3 = __both3 // first, wins -void both3(void) __attribute((alias("__both3"))); -void __both3(void) {} -// RUN: grep '@both3 = alias weak void ()\* @__both3\>' %t | count 1 && -// RUN: grep 'define void @__both3() nounwind {' %t | count 1 && - -///////////// ensure that #pragma weak does not alter existing __attributes() - -void __a1(void) __attribute((noinline)); -#pragma weak a1 = __a1 -void __a1(void) {} -// RUN: grep '@a1 = alias weak void ()\* @__a1\>' %t | count 1 && -// RUN: grep 'define void @__a1() nounwind noinline {' %t | count 1 && - -// attributes introduced BEFORE a combination of #pragma weak and alias() -// hold... -void __a3(void) __attribute((noinline)); -#pragma weak a3 = __a3 -void a3(void) __attribute((alias("__a3"))); -void __a3(void) {} -// RUN: grep '@a3 = alias weak void ()\* @__a3\>' %t | count 1 && -// RUN: grep 'define void @__a3() nounwind noinline {' %t | count 1 && - -#pragma weak xxx = __xxx -__attribute((pure,noinline,const,fastcall)) void __xxx(void) { } -// RUN: grep '@xxx = alias weak void ()\* @__xxx\>' %t | count 1 && -// RUN: grep 'define .*fastcall.* void @__xxx() nounwind readnone noinline {' %t | count 1 && - -/// TODO: stuff that still doesn't work - -// due to the fact that disparate TopLevelDecls cannot affect each other -// (due to clang's Parser and ASTConsumer behavior, and quite reasonable) -// #pragma weak must appear before or within the same TopLevelDecl as it -// references. -void yyy(void){} -void zzz(void){} -#pragma weak yyy -// NOTE: weak doesn't apply, not before or in same TopLevelDec(!) -// RUN: grep 'define void @yyy() nounwind {' %t | count 1 |