1 ; RUN: llvm-upgrade < %s | llvm-as | opt -globalopt | llvm-dis | not grep CTOR
3 %llvm.global_ctors = appending global [10 x { int, void ()* }] [
4 { int, void ()* } { int 65535, void ()* %CTOR1 },
5 { int, void ()* } { int 65535, void ()* %CTOR1 },
6 { int, void ()* } { int 65535, void ()* %CTOR2 },
7 { int, void ()* } { int 65535, void ()* %CTOR3 },
8 { int, void ()* } { int 65535, void ()* %CTOR4 },
9 { int, void ()* } { int 65535, void ()* %CTOR5 },
10 { int, void ()* } { int 65535, void ()* %CTOR6 },
11 { int, void ()* } { int 65535, void ()* %CTOR7 },
12 { int, void ()* } { int 65535, void ()* %CTOR8 },
13 { int, void ()* } { int 2147483647, void ()* null }
19 %X = global {int, [2 x int]} { int 0, [2 x int] [ int 17, int 21] }
22 %D = global double 0.0
24 %CTORGV = internal global bool false ;; Should become constant after eval
28 internal void %CTOR1() { ;; noop ctor, remove.
32 internal void %CTOR2() { ;; evaluate the store
35 store bool true, bool* %CTORGV
39 internal void %CTOR3() {
40 %X = or bool true, false
43 br bool %X, label %S, label %T
45 store int 24, int* %G2
51 internal void %CTOR4() {
54 store int %Y, int* %G3
58 internal void %CTOR5() {
59 %X.2p = getelementptr {int,[2 x int]}* %X, int 0, uint 1, int 0
60 %X.2 = load int* %X.2p
61 %X.1p = getelementptr {int,[2 x int]}* %X, int 0, uint 0
62 store int %X.2, int* %X.1p
63 store int 42, int* %X.2p
67 internal void %CTOR6() {
73 store int %Av1, int* %Y
77 internal void %CTOR7() {
78 call void %setto(int* %Z, int 0)
82 void %setto(int* %P, int %V) {
87 declare double %cos(double)
89 internal void %CTOR8() {
90 %X = call double %cos(double 1.0)
91 store double %X, double* %D
95 %V = load bool* %CTORGV ;; constant true