@@ -7,6 +7,7 @@ target triple = "x86_64--linux"
7
7
@main.exportedValue = global [1 x i16* ] [i16* @main.exposedValue1 ]
8
8
@main.exposedValue1 = global i16 0
9
9
@main.exposedValue2 = local_unnamed_addr global i16 0
10
+ @main.insertedValue = local_unnamed_addr global { i8 , i32 , { float , { i64 , i16 } } } zeroinitializer
10
11
11
12
declare void @runtime.printint64 (i64 ) unnamed_addr
12
13
@@ -27,6 +28,17 @@ entry:
27
28
store i16 7 , i16* @main.exposedValue2
28
29
call void @runtime.printint64 (i64 6 )
29
30
call void @runtime.printint64 (i64 -1 )
31
+ %agg = call { i8 , i32 , { float , { i64 , i16 } } } @nestedStruct ()
32
+ %elt.agg = extractvalue { i8 , i32 , { float , { i64 , i16 } } } %agg , 2
33
+ %elt.agg1 = extractvalue { float , { i64 , i16 } } %elt.agg , 1
34
+ %elt = extractvalue { i64 , i16 } %elt.agg1 , 0
35
+ call void @runtime.printint64 (i64 %elt )
36
+ %agg2.agg0 = extractvalue { i8 , i32 , { float , { i64 , i16 } } } %agg , 2
37
+ %agg2.agg1 = extractvalue { float , { i64 , i16 } } %agg2.agg0 , 1
38
+ %agg2.insertvalue2 = insertvalue { i64 , i16 } %agg2.agg1 , i64 5 , 0
39
+ %agg2.insertvalue1 = insertvalue { float , { i64 , i16 } } %agg2.agg0 , { i64 , i16 } %agg2.insertvalue2 , 1
40
+ %agg2.insertvalue0 = insertvalue { i8 , i32 , { float , { i64 , i16 } } } %agg , { float , { i64 , i16 } } %agg2.insertvalue1 , 2
41
+ store { i8 , i32 , { float , { i64 , i16 } } } %agg2.insertvalue0 , { i8 , i32 , { float , { i64 , i16 } } }* @main.insertedValue
30
42
ret void
31
43
}
32
44
@@ -67,3 +79,5 @@ two: ; preds = %entry
67
79
otherwise: ; preds = %entry
68
80
ret i64 -1
69
81
}
82
+
83
+ declare { i8 , i32 , { float , { i64 , i16 } } } @nestedStruct () local_unnamed_addr
0 commit comments