1 // RUN: clang-cc -triple i386-pc-linux-gnu -emit-llvm -o %t %s && 2 // RUN: grep '@g0 = common global i32 0' %t && 3 // RUN: grep '@f1 = alias void ()\* @f0' %t && 4 // RUN: grep '@g1 = alias i32\* @g0' %t && 5 // RUN: grep 'define void @f0() nounwind {' %t && 6 7 void f0(void) { } 8 extern void f1(void); 9 extern void f1(void) __attribute((alias("f0"))); 10 11 int g0; 12 extern int g1; 13 extern int g1 __attribute((alias("g0"))); 14 15 // Make sure that aliases cause referenced values to be emitted. 16 // PR3200 17 // RUN: grep 'define internal i32 @foo1()' %t && 18 static inline int foo1() { return 0; } 19 int foo() __attribute__((alias("foo1"))); 20 21 22 // RUN: grep '@bar1 = internal global i32 42' %t 23 static int bar1 = 42; 24 int bar() __attribute__((alias("bar1"))); 25 26 27 extern int test6(); 28 void test7() { test6(); } // test6 is emitted as extern. 29 30 // test6 changes to alias. 31 int test6() __attribute__((alias("test7"))); 32 33