xref: /llvm-project/clang/test/CodeGen/PowerPC/toc-data-attribute.c (revision 0d501f38f348cf046d40c9baee12f0c5145b6d8c)
1 // 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 // RUN: %clang_cc1 %s -triple powerpc-ibm-aix-xcoff -mtocdata -emit-llvm -o - 2>&1 | FileCheck %s -check-prefixes=COMMON,CHECK32 --match-full-lines
3 
4 // 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 // RUN: %clang_cc1 %s -triple powerpc64-ibm-aix-xcoff -mtocdata -emit-llvm -o - 2>&1 | FileCheck %s -check-prefixes=COMMON,CHECK64 --match-full-lines
6 
7 extern int f;
8 long long g = 5;
9 const char *h = "h";
10 int *i;
11 int __attribute__((aligned(128))) j = 0;
12 float k = 100.00;
13 double l = 2.5;
14 int m __attribute__((section("foo"))) = 10;
15 __thread int n;
16 
17 extern int p[];
18 
19 struct SomeStruct;
20 extern struct SomeStruct o;
21 
func_a()22 static int func_a() {
23   return g+(int)h[0]+*i+j+k+l+m+n+p[0];
24 }
25 
func_b()26 int func_b() {
27   f = 1;
28   return func_a();
29 }
30 
getAddress(void)31 struct SomeStruct* getAddress(void) {
32   return &o;
33 }
34 
35 // CHECK32: @g = global i64 5, align 8
36 // CHECK64: @g = global i64 5, align 8 #0
37 // COMMON: {{.*}}  = private unnamed_addr constant [2 x i8] c"h\00", align 1
38 // COMMON: @h = global {{...*}} #0
39 // COMMON: @j = global i32 0, align 128
40 // COMMON: @k = global float 1.000000e+02, align 4 #0
41 // CHECK32: @l = global double 2.500000e+00, align 8
42 // CHECK64: @l = global double 2.500000e+00, align 8 #0
43 // COMMON: @m = global i32 10, section "foo", align 4
44 // COMMON: @f = external global i32, align 4 #0
45 // COMMON: @o = external global %struct.SomeStruct, align 1
46 // CHECK32: @i = global ptr null, align 4 #0
47 // CHECK64: @i = global ptr null, align 8 #0
48 // COMMON: @n = thread_local global i32 0, align 4
49 // COMMON: @p = external global [0 x i32], align 4
50 // COMMON: attributes #0 = { "toc-data" }
51