1*0d501f38SFangrui Song // RUN: %clang_cc1 %s -triple powerpc-ibm-aix-xcoff -mtocdata=f,g,h,i,j,k,l,m,n,o,p -emit-llvm -o - 2>&1 | FileCheck %s -check-prefixes=COMMON,CHECK32 --match-full-lines
2*0d501f38SFangrui Song // RUN: %clang_cc1 %s -triple powerpc-ibm-aix-xcoff -mtocdata -emit-llvm -o - 2>&1 | FileCheck %s -check-prefixes=COMMON,CHECK32 --match-full-lines
337b5eb0aSZaara Syeda
4*0d501f38SFangrui Song // RUN: %clang_cc1 %s -triple powerpc64-ibm-aix-xcoff -mtocdata=f,g,h,i,j,k,l,m,n,o,p -emit-llvm -o - 2>&1 | FileCheck %s -check-prefixes=COMMON,CHECK64 --match-full-lines
5*0d501f38SFangrui Song // RUN: %clang_cc1 %s -triple powerpc64-ibm-aix-xcoff -mtocdata -emit-llvm -o - 2>&1 | FileCheck %s -check-prefixes=COMMON,CHECK64 --match-full-lines
637b5eb0aSZaara Syeda
737b5eb0aSZaara Syeda extern int f;
837b5eb0aSZaara Syeda long long g = 5;
937b5eb0aSZaara Syeda const char *h = "h";
1037b5eb0aSZaara Syeda int *i;
1137b5eb0aSZaara Syeda int __attribute__((aligned(128))) j = 0;
1237b5eb0aSZaara Syeda float k = 100.00;
1337b5eb0aSZaara Syeda double l = 2.5;
1437b5eb0aSZaara Syeda int m __attribute__((section("foo"))) = 10;
1537b5eb0aSZaara Syeda __thread int n;
1637b5eb0aSZaara Syeda
1737b5eb0aSZaara Syeda extern int p[];
1837b5eb0aSZaara Syeda
1937b5eb0aSZaara Syeda struct SomeStruct;
2037b5eb0aSZaara Syeda extern struct SomeStruct o;
2137b5eb0aSZaara Syeda
func_a()2237b5eb0aSZaara Syeda static int func_a() {
2337b5eb0aSZaara Syeda return g+(int)h[0]+*i+j+k+l+m+n+p[0];
2437b5eb0aSZaara Syeda }
2537b5eb0aSZaara Syeda
func_b()2637b5eb0aSZaara Syeda int func_b() {
2737b5eb0aSZaara Syeda f = 1;
2837b5eb0aSZaara Syeda return func_a();
2937b5eb0aSZaara Syeda }
3037b5eb0aSZaara Syeda
getAddress(void)3137b5eb0aSZaara Syeda struct SomeStruct* getAddress(void) {
3237b5eb0aSZaara Syeda return &o;
3337b5eb0aSZaara Syeda }
3437b5eb0aSZaara Syeda
3537b5eb0aSZaara Syeda // CHECK32: @g = global i64 5, align 8
3637b5eb0aSZaara Syeda // CHECK64: @g = global i64 5, align 8 #0
3737b5eb0aSZaara Syeda // COMMON: {{.*}} = private unnamed_addr constant [2 x i8] c"h\00", align 1
3837b5eb0aSZaara Syeda // COMMON: @h = global {{...*}} #0
3937b5eb0aSZaara Syeda // COMMON: @j = global i32 0, align 128
4037b5eb0aSZaara Syeda // COMMON: @k = global float 1.000000e+02, align 4 #0
4137b5eb0aSZaara Syeda // CHECK32: @l = global double 2.500000e+00, align 8
4237b5eb0aSZaara Syeda // CHECK64: @l = global double 2.500000e+00, align 8 #0
4337b5eb0aSZaara Syeda // COMMON: @m = global i32 10, section "foo", align 4
4437b5eb0aSZaara Syeda // COMMON: @f = external global i32, align 4 #0
4537b5eb0aSZaara Syeda // COMMON: @o = external global %struct.SomeStruct, align 1
4637b5eb0aSZaara Syeda // CHECK32: @i = global ptr null, align 4 #0
4737b5eb0aSZaara Syeda // CHECK64: @i = global ptr null, align 8 #0
4837b5eb0aSZaara Syeda // COMMON: @n = thread_local global i32 0, align 4
4937b5eb0aSZaara Syeda // COMMON: @p = external global [0 x i32], align 4
5037b5eb0aSZaara Syeda // COMMON: attributes #0 = { "toc-data" }
51