Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / CodeGenCXX / PR24289.cpp
blobe466235674a35b528fbf8b3de4dc807784234b76
1 // RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-pc-linux-gnu -std=c++11 | FileCheck %s
3 namespace std {
4 template <class T>
5 struct initializer_list {
6 const T *Begin;
7 __SIZE_TYPE__ Size;
9 constexpr initializer_list(const T *B, __SIZE_TYPE__ S)
10 : Begin(B), Size(S) {}
14 void f() {
15 static std::initializer_list<std::initializer_list<int>> a{
16 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}};
17 static std::initializer_list<std::initializer_list<int>> b{
18 {0}, {0}, {0}, {0}};
19 static std::initializer_list<std::initializer_list<int>> c{
20 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}};
21 static std::initializer_list<std::initializer_list<int>> d{
22 {0}, {0}, {0}, {0}, {0}};
23 static std::initializer_list<std::initializer_list<int>> e{
24 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}};
27 // CHECK-DAG: @_ZZ1fvE1a = internal global %{{.*}} { ptr @_ZGRZ1fvE1a_, i64 14 }
28 // CHECK-DAG: @_ZGRZ1fvE1a0_ = internal constant [1 x i32] zeroinitializer
29 // CHECK-DAG: @_ZGRZ1fvE1a1_ = internal constant [1 x i32] zeroinitializer
30 // CHECK-DAG: @_ZGRZ1fvE1a2_ = internal constant [1 x i32] zeroinitializer
31 // CHECK-DAG: @_ZGRZ1fvE1a3_ = internal constant [1 x i32] zeroinitializer
32 // CHECK-DAG: @_ZGRZ1fvE1a4_ = internal constant [1 x i32] zeroinitializer
33 // CHECK-DAG: @_ZGRZ1fvE1a5_ = internal constant [1 x i32] zeroinitializer
34 // CHECK-DAG: @_ZGRZ1fvE1a6_ = internal constant [1 x i32] zeroinitializer
35 // CHECK-DAG: @_ZGRZ1fvE1a7_ = internal constant [1 x i32] zeroinitializer
36 // CHECK-DAG: @_ZGRZ1fvE1a8_ = internal constant [1 x i32] zeroinitializer
37 // CHECK-DAG: @_ZGRZ1fvE1a9_ = internal constant [1 x i32] zeroinitializer
38 // CHECK-DAG: @_ZGRZ1fvE1aA_ = internal constant [1 x i32] zeroinitializer
39 // CHECK-DAG: @_ZGRZ1fvE1aB_ = internal constant [1 x i32] zeroinitializer
40 // CHECK-DAG: @_ZGRZ1fvE1aC_ = internal constant [1 x i32] zeroinitializer
41 // CHECK-DAG: @_ZGRZ1fvE1aD_ = internal constant [1 x i32] zeroinitializer
42 // CHECK-DAG: @_ZGRZ1fvE1a_ = internal constant [14 x %{{.*}}] [%{{.*}} { ptr @_ZGRZ1fvE1a0_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1a1_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1a2_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1a3_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1a4_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1a5_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1a6_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1a7_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1a8_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1a9_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1aA_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1aB_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1aC_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1aD_, i64 1 }]
43 // CHECK-DAG: @_ZZ1fvE1b = internal global %{{.*}} { ptr
44 // CHECK-DAG: @_ZGRZ1fvE1b_, i64 4 }
45 // CHECK-DAG: @_ZGRZ1fvE1b0_ = internal constant [1 x i32] zeroinitializer
46 // CHECK-DAG: @_ZGRZ1fvE1b1_ = internal constant [1 x i32] zeroinitializer
47 // CHECK-DAG: @_ZGRZ1fvE1b2_ = internal constant [1 x i32] zeroinitializer
48 // CHECK-DAG: @_ZGRZ1fvE1b3_ = internal constant [1 x i32] zeroinitializer
49 // CHECK-DAG: @_ZGRZ1fvE1b_ = internal constant [4 x %{{.*}}] [%{{.*}} { ptr @_ZGRZ1fvE1b0_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1b1_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1b2_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1b3_, i64 1 }]
50 // CHECK-DAG: @_ZZ1fvE1c = internal global %{{.*}} { ptr
51 // CHECK-DAG: @_ZGRZ1fvE1c_, i64 9 }
52 // CHECK-DAG: @_ZGRZ1fvE1c0_ = internal constant [1 x i32] zeroinitializer
53 // CHECK-DAG: @_ZGRZ1fvE1c1_ = internal constant [1 x i32] zeroinitializer
54 // CHECK-DAG: @_ZGRZ1fvE1c2_ = internal constant [1 x i32] zeroinitializer
55 // CHECK-DAG: @_ZGRZ1fvE1c3_ = internal constant [1 x i32] zeroinitializer
56 // CHECK-DAG: @_ZGRZ1fvE1c4_ = internal constant [1 x i32] zeroinitializer
57 // CHECK-DAG: @_ZGRZ1fvE1c5_ = internal constant [1 x i32] zeroinitializer
58 // CHECK-DAG: @_ZGRZ1fvE1c6_ = internal constant [1 x i32] zeroinitializer
59 // CHECK-DAG: @_ZGRZ1fvE1c7_ = internal constant [1 x i32] zeroinitializer
60 // CHECK-DAG: @_ZGRZ1fvE1c8_ = internal constant [1 x i32] zeroinitializer
61 // CHECK-DAG: @_ZGRZ1fvE1c_ = internal constant [9 x %{{.*}}] [%{{.*}} { ptr @_ZGRZ1fvE1c0_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1c1_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1c2_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1c3_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1c4_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1c5_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1c6_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1c7_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1c8_, i64 1 }]
62 // CHECK-DAG: @_ZZ1fvE1d = internal global %{{.*}} { ptr @_ZGRZ1fvE1d_, i64 5 }
63 // CHECK-DAG: @_ZGRZ1fvE1d0_ = internal constant [1 x i32] zeroinitializer
64 // CHECK-DAG: @_ZGRZ1fvE1d1_ = internal constant [1 x i32] zeroinitializer
65 // CHECK-DAG: @_ZGRZ1fvE1d2_ = internal constant [1 x i32] zeroinitializer
66 // CHECK-DAG: @_ZGRZ1fvE1d3_ = internal constant [1 x i32] zeroinitializer
67 // CHECK-DAG: @_ZGRZ1fvE1d4_ = internal constant [1 x i32] zeroinitializer
68 // CHECK-DAG: @_ZGRZ1fvE1d_ = internal constant [5 x %{{.*}}] [%{{.*}} { ptr @_ZGRZ1fvE1d0_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1d1_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1d2_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1d3_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1d4_, i64 1 }]
69 // CHECK-DAG: @_ZZ1fvE1e = internal global %{{.*}} { ptr @_ZGRZ1fvE1e_, i64 11 }
70 // CHECK-DAG: @_ZGRZ1fvE1e0_ = internal constant [1 x i32] zeroinitializer
71 // CHECK-DAG: @_ZGRZ1fvE1e1_ = internal constant [1 x i32] zeroinitializer
72 // CHECK-DAG: @_ZGRZ1fvE1e2_ = internal constant [1 x i32] zeroinitializer
73 // CHECK-DAG: @_ZGRZ1fvE1e3_ = internal constant [1 x i32] zeroinitializer
74 // CHECK-DAG: @_ZGRZ1fvE1e4_ = internal constant [1 x i32] zeroinitializer
75 // CHECK-DAG: @_ZGRZ1fvE1e5_ = internal constant [1 x i32] zeroinitializer
76 // CHECK-DAG: @_ZGRZ1fvE1e6_ = internal constant [1 x i32] zeroinitializer
77 // CHECK-DAG: @_ZGRZ1fvE1e7_ = internal constant [1 x i32] zeroinitializer
78 // CHECK-DAG: @_ZGRZ1fvE1e8_ = internal constant [1 x i32] zeroinitializer
79 // CHECK-DAG: @_ZGRZ1fvE1e9_ = internal constant [1 x i32] zeroinitializer
80 // CHECK-DAG: @_ZGRZ1fvE1eA_ = internal constant [1 x i32] zeroinitializer
81 // CHECK-DAG: @_ZGRZ1fvE1e_ = internal constant [11 x %{{.*}}] [%{{.*}} { ptr @_ZGRZ1fvE1e0_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1e1_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1e2_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1e3_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1e4_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1e5_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1e6_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1e7_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1e8_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1e9_, i64 1 }, %{{.*}} { ptr @_ZGRZ1fvE1eA_, i64 1 }]