annotate clang/test/CodeGenCXX/cxx1y-initializer-aggregate.cpp @ 252:1f2b6ac9f198 llvm-original

LLVM16-1
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 18 Aug 2023 09:04:13 +0900
parents c4bab56944e8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
1 // RUN: %clang_cc1 -std=c++1y %s -triple x86_64-linux-gnu -emit-llvm -o - | FileCheck %s
150
anatofuz
parents:
diff changeset
2
anatofuz
parents:
diff changeset
3 struct A {
anatofuz
parents:
diff changeset
4 int n = 0;
anatofuz
parents:
diff changeset
5 const char *p;
anatofuz
parents:
diff changeset
6 char k = p[n];
anatofuz
parents:
diff changeset
7 int f();
anatofuz
parents:
diff changeset
8 int x = f();
anatofuz
parents:
diff changeset
9 union {
anatofuz
parents:
diff changeset
10 char c;
anatofuz
parents:
diff changeset
11 double d = 1.0;
anatofuz
parents:
diff changeset
12 };
anatofuz
parents:
diff changeset
13 };
anatofuz
parents:
diff changeset
14
anatofuz
parents:
diff changeset
15 int f();
anatofuz
parents:
diff changeset
16
anatofuz
parents:
diff changeset
17 union B {
anatofuz
parents:
diff changeset
18 int a;
anatofuz
parents:
diff changeset
19 int f();
anatofuz
parents:
diff changeset
20 int b = f();
anatofuz
parents:
diff changeset
21 };
anatofuz
parents:
diff changeset
22
anatofuz
parents:
diff changeset
23 A a { .p = "foobar" };
anatofuz
parents:
diff changeset
24 A b { 4, "bazquux", .x = 42, .c = 9 };
anatofuz
parents:
diff changeset
25 A c { 1, 0, 'A', f(), { 3 } };
anatofuz
parents:
diff changeset
26
anatofuz
parents:
diff changeset
27 // CHECK: @[[STR_A:.*]] = {{.*}} [7 x i8] c"foobar\00"
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
28 // CHECK: @a ={{.*}} global {{.*}} zeroinitializer
150
anatofuz
parents:
diff changeset
29
anatofuz
parents:
diff changeset
30 // @b has a constant initializer
anatofuz
parents:
diff changeset
31 // CHECK: @[[STR_B:.*]] = {{.*}} [8 x i8] c"bazquux\00"
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
32 // CHECK: @b ={{.*}} global {{.*}} i32 4, {{.*}} @[[STR_B]], i8 117, i32 42, {{.*}} i8 9
150
anatofuz
parents:
diff changeset
33
anatofuz
parents:
diff changeset
34 B x;
anatofuz
parents:
diff changeset
35 B y {};
anatofuz
parents:
diff changeset
36 B z { 1 };
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
37 // CHECK: @z ={{.*}} global {{.*}} { i32 1 }
150
anatofuz
parents:
diff changeset
38
anatofuz
parents:
diff changeset
39 // Brace initialization should initialize the first field even though it is
anatofuz
parents:
diff changeset
40 // unnamed.
anatofuz
parents:
diff changeset
41 union C {
anatofuz
parents:
diff changeset
42 struct {
anatofuz
parents:
diff changeset
43 int C::*memptr;
anatofuz
parents:
diff changeset
44 };
anatofuz
parents:
diff changeset
45 };
anatofuz
parents:
diff changeset
46
anatofuz
parents:
diff changeset
47 C n{};
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
48 // CHECK: @n ={{.*}} global %union.C { %struct.anon { i64 -1 } }, align 8
150
anatofuz
parents:
diff changeset
49
anatofuz
parents:
diff changeset
50 // Initialization of 'a':
anatofuz
parents:
diff changeset
51
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
52 // CHECK: store i32 0, ptr @a
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
53 // CHECK: store ptr @[[STR_A]], ptr getelementptr inbounds ({{.*}} @a, i32 0, i32 1)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
54 // CHECK: load ptr, ptr getelementptr inbounds ({{.*}} @a, i32 0, i32 1)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
55 // CHECK: load i32, ptr @a
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
56 // CHECK: getelementptr inbounds i8, ptr %{{.*}}, {{.*}} %{{.*}}
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
57 // CHECK: store i8 %{{.*}}, ptr getelementptr inbounds ({{.*}} @a, i32 0, i32 2)
236
c4bab56944e8 LLVM 16
kono
parents: 221
diff changeset
58 // CHECK: call noundef i32 @_ZN1A1fEv({{.*}} @a)
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
59 // CHECK: store i32 %{{.*}}, ptr getelementptr inbounds ({{.*}}, ptr @a, i32 0, i32 3)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
60 // CHECK: store double 1.000000e+00, ptr getelementptr inbounds ({{.*}} @a, i32 0, i32 4)
150
anatofuz
parents:
diff changeset
61
anatofuz
parents:
diff changeset
62 // No dynamic initialization of 'b':
anatofuz
parents:
diff changeset
63
anatofuz
parents:
diff changeset
64 // CHECK-NOT: @b
anatofuz
parents:
diff changeset
65
anatofuz
parents:
diff changeset
66 // Initialization of 'c':
anatofuz
parents:
diff changeset
67
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
68 // CHECK: store i32 1, ptr @c
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
69 // CHECK: store ptr null, ptr getelementptr inbounds ({{.*}} @c, i32 0, i32 1)
150
anatofuz
parents:
diff changeset
70 // CHECK-NOT: load
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
71 // CHECK: store i8 65, ptr getelementptr inbounds ({{.*}} @c, i32 0, i32 2)
236
c4bab56944e8 LLVM 16
kono
parents: 221
diff changeset
72 // CHECK: call noundef i32 @_Z1fv()
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
73 // CHECK: store i32 %{{.*}}, ptr getelementptr inbounds ({{.*}}, ptr @c, i32 0, i32 3)
150
anatofuz
parents:
diff changeset
74 // CHECK-NOT: C1Ev
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
75 // CHECK: store i8 3, ptr {{.*}} @c, i32 0, i32 4)
150
anatofuz
parents:
diff changeset
76
anatofuz
parents:
diff changeset
77 // CHECK: call void @_ZN1BC1Ev({{.*}} @x)
anatofuz
parents:
diff changeset
78
236
c4bab56944e8 LLVM 16
kono
parents: 221
diff changeset
79 // CHECK: call noundef i32 @_ZN1B1fEv({{.*}} @y)
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
80 // CHECK: store i32 %{{.*}}, ptr @y