1 | // RUN: %clang_cc1 -emit-llvm -w -o - %s | FileCheck %s |
2 | |
3 | // CHECK-DAG: @r = common {{(dso_local )?}}global [1 x {{.*}}] zeroinitializer |
4 | |
5 | int r[]; |
6 | int (*a)[] = &r; |
7 | |
8 | struct s0; |
9 | struct s0 x; |
10 | // CHECK-DAG: @x = common {{(dso_local )?}}global %struct.s0 zeroinitializer |
11 | |
12 | struct s0 y; |
13 | // CHECK-DAG: @y = common {{(dso_local )?}}global %struct.s0 zeroinitializer |
14 | struct s0 *f0() { |
15 | return &y; |
16 | } |
17 | |
18 | struct s0 { |
19 | int x; |
20 | }; |
21 | |
22 | // CHECK-DAG: @b = common {{(dso_local )?}}global [1 x {{.*}}] zeroinitializer |
23 | int b[]; |
24 | int *f1() { |
25 | return b; |
26 | } |
27 | |
28 | // Check that the most recent tentative definition wins. |
29 | // CHECK-DAG: @c = common {{(dso_local )?}}global [4 x {{.*}}] zeroinitializer |
30 | int c[]; |
31 | int c[4]; |
32 | |
33 | // Check that we emit static tentative definitions |
34 | // CHECK-DAG: @c5 = internal global [1 x {{.*}}] zeroinitializer |
35 | static int c5[]; |
36 | static int func() { return c5[0]; } |
37 | int callfunc() { return func(); } |
38 | |
39 | |