@@ -14,33 +14,33 @@ double f1(int n, ...) {
14
14
15
15
// BEFORE: !ty_22__va_list22 = !cir.struct<struct "__va_list" {!cir.ptr<!cir.void>, !cir.ptr<!cir.void>, !cir.ptr<!cir.void>, !cir.int<s, 32>, !cir.int<s, 32>}
16
16
// BEFORE: cir.func @f1(%arg0: !s32i, ...) -> !cir.double
17
- // BEFORE: [[RETP:%.*]] = cir.alloca !cir.double, cir.ptr <!cir.double>, ["__retval"]
18
- // BEFORE: [[RESP:%.*]] = cir.alloca !cir.double, cir.ptr <!cir.double>, ["res", init]
17
+ // BEFORE: [[RETP:%.*]] = cir.alloca !cir.double, ! cir.ptr<!cir.double>, ["__retval"]
18
+ // BEFORE: [[RESP:%.*]] = cir.alloca !cir.double, ! cir.ptr<!cir.double>, ["res", init]
19
19
// BEFORE: cir.va.start [[VARLIST:%.*]] : !cir.ptr<!ty_22__va_list22>
20
20
// BEFORE: [[TMP0:%.*]] = cir.va.arg [[VARLIST]] : (!cir.ptr<!ty_22__va_list22>) -> !cir.double
21
- // BEFORE: cir.store [[TMP0]], [[RESP]] : !cir.double, cir.ptr <!cir.double>
21
+ // BEFORE: cir.store [[TMP0]], [[RESP]] : !cir.double, ! cir.ptr<!cir.double>
22
22
// BEFORE: cir.va.end [[VARLIST]] : !cir.ptr<!ty_22__va_list22>
23
- // BEFORE: [[RES:%.*]] = cir.load [[RESP]] : cir.ptr <!cir.double>, !cir.double
24
- // BEFORE: cir.store [[RES]], [[RETP]] : !cir.double, cir.ptr <!cir.double>
25
- // BEFORE: [[RETV:%.*]] = cir.load [[RETP]] : cir.ptr <!cir.double>, !cir.double
23
+ // BEFORE: [[RES:%.*]] = cir.load [[RESP]] : ! cir.ptr<!cir.double>, !cir.double
24
+ // BEFORE: cir.store [[RES]], [[RETP]] : !cir.double, ! cir.ptr<!cir.double>
25
+ // BEFORE: [[RETV:%.*]] = cir.load [[RETP]] : ! cir.ptr<!cir.double>, !cir.double
26
26
// BEFORE: cir.return [[RETV]] : !cir.double
27
27
28
28
// AFTER: !ty_22__va_list22 = !cir.struct<struct "__va_list" {!cir.ptr<!cir.void>, !cir.ptr<!cir.void>, !cir.ptr<!cir.void>, !cir.int<s, 32>, !cir.int<s, 32>}
29
29
// LLVM: %struct.__va_list = type { ptr, ptr, ptr, i32, i32 }
30
30
// AFTER: cir.func @f1(%arg0: !s32i, ...) -> !cir.double
31
31
// LLVM: define double @f1(i32 %0, ...)
32
32
// LLVM: [[ARGN:%.*]] = alloca i32, i64 1, align 4,
33
- // AFTER: [[RETP:%.*]] = cir.alloca !cir.double, cir.ptr <!cir.double>, ["__retval"]
33
+ // AFTER: [[RETP:%.*]] = cir.alloca !cir.double, ! cir.ptr<!cir.double>, ["__retval"]
34
34
// LLVM: [[RETP:%.*]] = alloca double, i64 1, align 8,
35
- // AFTER: [[RESP:%.*]] = cir.alloca !cir.double, cir.ptr <!cir.double>, ["res", init]
35
+ // AFTER: [[RESP:%.*]] = cir.alloca !cir.double, ! cir.ptr<!cir.double>, ["res", init]
36
36
// LLVM: [[RESP:%.*]] = alloca double, i64 1, align 8,
37
37
// AFTER: cir.va.start [[VARLIST:%.*]] : !cir.ptr<!ty_22__va_list22>
38
38
// LLVM: call void @llvm.va_start.p0(ptr [[VARLIST:%.*]]),
39
39
// AFTER: [[VR_OFFS_P:%.*]] = cir.get_member [[VARLIST]][4] {name = "vr_offs"} : !cir.ptr<!ty_22__va_list22> -> !cir.ptr<!s32i>
40
40
// LLVM: [[VR_OFFS_P:%.*]] = getelementptr %struct.__va_list, ptr [[VARLIST]], i32 0, i32 4
41
- // AFTER: [[VR_OFFS:%.*]] = cir.load [[VR_OFFS_P]] : cir.ptr <!s32i>, !s32i
41
+ // AFTER: [[VR_OFFS:%.*]] = cir.load [[VR_OFFS_P]] : ! cir.ptr<!s32i>, !s32i
42
42
// LLVM: [[VR_OFFS:%.*]] = load i32, ptr [[VR_OFFS_P]], align 4,
43
- // AFTER: [[ZERO:%.*]] = cir.const( #cir.int<0> : !s32i) : !s32i
43
+ // AFTER: [[ZERO:%.*]] = cir.const #cir.int<0> : !s32i
44
44
// AFTER: [[CMP0:%.*]] = cir.cmp(ge, [[VR_OFFS]], [[ZERO]]) : !s32i, !cir.bool
45
45
// LLVM-NEXT: [[CMP0:%.*]] = icmp sge i32 [[VR_OFFS]], 0,
46
46
// AFTER-NEXT: cir.brcond [[CMP0]] [[BB_ON_STACK:\^bb.*]], [[BB_MAY_REG:\^bb.*]]
@@ -50,27 +50,27 @@ double f1(int n, ...) {
50
50
// LLVM: [[BB_END:.*]]: ; preds = %[[BB_ON_STACK]], %[[BB_IN_REG:.*]]
51
51
// AFTER-NEXT: [[TMP0:%.*]] = cir.cast(bitcast, [[BLK_ARG]] : !cir.ptr<!void>), !cir.ptr<!cir.double>
52
52
// LLVM-NEXT: [[PHIP:%.*]] = phi ptr [ [[IN_REG_OUTPUT:%.*]], %[[BB_IN_REG]] ], [ [[STACK_V:%.*]], %[[BB_ON_STACK]] ]
53
- // AFTER-NEXT: [[TMP1:%.*]] = cir.load [[TMP0]] : cir.ptr <!cir.double>, !cir.double
53
+ // AFTER-NEXT: [[TMP1:%.*]] = cir.load [[TMP0]] : ! cir.ptr<!cir.double>, !cir.double
54
54
// LLVM-NEXT: [[PHIV:%.*]] = load double, ptr [[PHIP]], align 8,
55
- // AFTER: cir.store [[TMP1]], [[RESP]] : !cir.double, cir.ptr <!cir.double>
55
+ // AFTER: cir.store [[TMP1]], [[RESP]] : !cir.double, ! cir.ptr<!cir.double>
56
56
// LLVM-NEXT: store double [[PHIV]], ptr [[RESP]], align 8,
57
57
// AFTER: cir.va.end [[VARLIST]] : !cir.ptr<!ty_22__va_list22>
58
58
// LLVM: call void @llvm.va_end.p0(ptr [[VARLIST]]),
59
- // AFTER: [[RES:%.*]] = cir.load [[RESP]] : cir.ptr <!cir.double>, !cir.double
59
+ // AFTER: [[RES:%.*]] = cir.load [[RESP]] : ! cir.ptr<!cir.double>, !cir.double
60
60
// LLVM: [[RES:%.*]] = load double, ptr [[RESP]], align 8,
61
- // AFTER: cir.store [[RES]], [[RETP]] : !cir.double, cir.ptr <!cir.double>
61
+ // AFTER: cir.store [[RES]], [[RETP]] : !cir.double, ! cir.ptr<!cir.double>
62
62
// LLVM: store double [[RES]], ptr [[RETP]], align 8,
63
- // AFTER: [[RETV:%.*]] = cir.load [[RETP]] : cir.ptr <!cir.double>, !cir.double
63
+ // AFTER: [[RETV:%.*]] = cir.load [[RETP]] : ! cir.ptr<!cir.double>, !cir.double
64
64
// LLVM: [[RETV:%.*]] = load double, ptr [[RETP]], align 8,
65
65
// AFTER: cir.return [[RETV]] : !cir.double
66
66
// LLVM-NEXT: ret double [[RETV]],
67
67
68
68
// AFTER: [[BB_MAY_REG]]: // pred: [[BB_BEGIN:\^bb.*]]
69
69
// LLVM: [[BB_MAY_REG]]: ; preds = %[[BB_BEGIN:.*]]
70
- // AFTER-NEXT: [[SIXTEEN:%.*]] = cir.const( #cir.int<16> : !s32i) : !s32i
70
+ // AFTER-NEXT: [[SIXTEEN:%.*]] = cir.const #cir.int<16> : !s32i
71
71
// AFTER-NEXT: [[NEW_REG_OFFS:%.*]] = cir.binop(add, [[VR_OFFS]], [[SIXTEEN]]) : !s32i
72
72
// LLVM-NEXT: [[NEW_REG_OFFS:%.*]] = add i32 [[VR_OFFS]], 16,
73
- // AFTER-NEXT: cir.store [[NEW_REG_OFFS]], [[VR_OFFS_P]] : !s32i, cir.ptr <!s32i>
73
+ // AFTER-NEXT: cir.store [[NEW_REG_OFFS]], [[VR_OFFS_P]] : !s32i, ! cir.ptr<!s32i>
74
74
// LLVM-NEXT: store i32 [[NEW_REG_OFFS]], ptr [[VR_OFFS_P]], align 4,
75
75
// AFTER-NEXT: [[CMP1:%.*]] = cir.cmp(le, [[NEW_REG_OFFS]], [[ZERO]]) : !s32i, !cir.bool
76
76
// LLVM-NEXT: [[CMP1:%.*]] = icmp sle i32 [[NEW_REG_OFFS]], 0,
@@ -81,11 +81,12 @@ double f1(int n, ...) {
81
81
// LLVM: [[BB_IN_REG]]: ; preds = %[[BB_MAY_REG]]
82
82
// AFTER-NEXT: [[VR_TOP_P:%.*]] = cir.get_member [[VARLIST]][2] {name = "vr_top"} : !cir.ptr<!ty_22__va_list22> -> !cir.ptr<!cir.ptr<!void>>
83
83
// LLVM-NEXT: [[VR_TOP_P:%.*]] = getelementptr %struct.__va_list, ptr [[VARLIST]], i32 0, i32 2,
84
- // AFTER-NEXT: [[VR_TOP:%.*]] = cir.load [[VR_TOP_P]] : cir.ptr <!cir.ptr<!void>>, !cir.ptr<!void>
84
+ // AFTER-NEXT: [[VR_TOP:%.*]] = cir.load [[VR_TOP_P]] : ! cir.ptr<!cir.ptr<!void>>, !cir.ptr<!void>
85
85
// LLVM-NEXT: [[VR_TOP:%.*]] = load ptr, ptr [[VR_TOP_P]], align 8,
86
86
// AFTER-NEXT: [[TMP2:%.*]] = cir.cast(bitcast, [[VR_TOP]] : !cir.ptr<!void>), !cir.ptr<i8>
87
87
// AFTER-NEXT: [[TMP3:%.*]] = cir.ptr_stride([[TMP2]] : !cir.ptr<i8>, [[VR_OFFS]] : !s32i), !cir.ptr<i8>
88
- // LLVM-NEXT: [[IN_REG_OUTPUT]] = getelementptr i8, ptr [[VR_TOP]], i32 [[VR_OFFS]],
88
+ // LLVM-NEXT: [[EXT64_VR_OFFS:%.*]] = sext i32 [[VR_OFFS]] to i64,
89
+ // LLVM-NEXT: [[IN_REG_OUTPUT]] = getelementptr i8, ptr [[VR_TOP]], i64 [[EXT64_VR_OFFS]],
89
90
// AFTER-NEXT: [[IN_REG_OUTPUT:%.*]] = cir.cast(bitcast, [[TMP3]] : !cir.ptr<i8>), !cir.ptr<!void>
90
91
// AFTER-NEXT: cir.br [[BB_END]]([[IN_REG_OUTPUT]] : !cir.ptr<!void>)
91
92
// LLVM-NEXT: br label %[[BB_END]],
@@ -94,14 +95,14 @@ double f1(int n, ...) {
94
95
// LLVM: [[BB_ON_STACK]]: ; preds = %[[BB_MAY_REG]], %[[BB_BEGIN]]
95
96
// AFTER-NEXT: [[STACK_P:%.*]] = cir.get_member [[VARLIST]][0] {name = "stack"} : !cir.ptr<!ty_22__va_list22> -> !cir.ptr<!cir.ptr<!void>>
96
97
// LLVM-NEXT: [[STACK_P:%.*]] = getelementptr %struct.__va_list, ptr [[VARLIST]], i32 0, i32 0,
97
- // AFTER-NEXT: [[STACK_V:%.*]] = cir.load [[STACK_P]] : cir.ptr <!cir.ptr<!void>>, !cir.ptr<!void>
98
+ // AFTER-NEXT: [[STACK_V:%.*]] = cir.load [[STACK_P]] : ! cir.ptr<!cir.ptr<!void>>, !cir.ptr<!void>
98
99
// LLVM-NEXT: [[STACK_V]] = load ptr, ptr [[STACK_P]], align 8,
99
- // AFTER-NEXT: [[EIGHT_IN_PTR_ARITH:%.*]] = cir.const( #cir.int<8> : !u64i) : !u64i
100
+ // AFTER-NEXT: [[EIGHT_IN_PTR_ARITH:%.*]] = cir.const #cir.int<8> : !u64i
100
101
// AFTER-NEXT: [[TMP4:%.*]] = cir.cast(bitcast, [[STACK_V]] : !cir.ptr<!void>), !cir.ptr<i8>
101
102
// AFTER-NEXT: [[TMP5:%.*]] = cir.ptr_stride([[TMP4]] : !cir.ptr<i8>, [[EIGHT_IN_PTR_ARITH]] : !u64i), !cir.ptr<i8>
102
103
// LLVM-NEXT: [[NEW_STACK_V:%.*]] = getelementptr i8, ptr [[STACK_V]], i32 8,
103
104
// AFTER-NEXT: [[NEW_STACK_V:%.*]] = cir.cast(bitcast, [[TMP5]] : !cir.ptr<i8>), !cir.ptr<!void>
104
- // AFTER-NEXT: cir.store [[NEW_STACK_V]], [[STACK_P]] : !cir.ptr<!void>, cir.ptr <!cir.ptr<!void>>
105
+ // AFTER-NEXT: cir.store [[NEW_STACK_V]], [[STACK_P]] : !cir.ptr<!void>, ! cir.ptr<!cir.ptr<!void>>
105
106
// LLVM-NEXT: store ptr [[NEW_STACK_V]], ptr [[STACK_P]], align 8,
106
107
// AFTER-NEXT: cir.br [[BB_END]]([[STACK_V]] : !cir.ptr<!void>)
107
108
// LLVM-NEXT: br label %[[BB_END]],
0 commit comments