@@ -23,7 +23,8 @@ define void @test1(ptr %a, ptr %b) {
23
23
;
24
24
; CHECK-DEBUGLOC-LABEL: @test1(
25
25
; CHECK-DEBUGLOC-NEXT: entry:
26
- ; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr undef, [[META9:![0-9]+]], !DIExpression(), [[META14:![0-9]+]])
26
+ ; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr undef, [[META9:![0-9]+]], !DIExpression(DW_OP_LLVM_fragment, 0, 8), [[META14:![0-9]+]])
27
+ ; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr undef, [[META9]], !DIExpression(DW_OP_LLVM_fragment, 8, 8), [[META14]])
27
28
; CHECK-DEBUGLOC-NEXT: [[GEP_A:%.*]] = getelementptr { i8, i8 }, ptr [[A:%.*]], i32 0, i32 0, !dbg [[DBG15:![0-9]+]]
28
29
; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr [[GEP_A]], [[META11:![0-9]+]], !DIExpression(), [[DBG15]])
29
30
; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr undef, [[META12:![0-9]+]], !DIExpression(), [[META16:![0-9]+]])
@@ -57,24 +58,24 @@ define void @test2() {
57
58
; CHECK-NEXT: entry:
58
59
; CHECK-NEXT: [[A_SROA_0:%.*]] = alloca i16, align 2
59
60
; CHECK-NEXT: store volatile i16 0, ptr [[A_SROA_0]], align 2
60
- ; CHECK-NEXT: [[A_SROA_0_1_SROA_IDX :%.*]] = getelementptr inbounds i8, ptr [[A_SROA_0]], i64 1
61
- ; CHECK-NEXT: [[A_SROA_0_1_A_SROA_0_2_RESULT:%.*]] = load i8, ptr [[A_SROA_0_1_SROA_IDX ]], align 1
62
- ; CHECK-NEXT: [[A_SROA_0_1_SROA_IDX2 :%.*]] = getelementptr inbounds i8, ptr [[A_SROA_0]], i64 1
63
- ; CHECK-NEXT: store i8 42, ptr [[A_SROA_0_1_SROA_IDX2 ]], align 1
61
+ ; CHECK-NEXT: [[A_SROA_0_1_GEP2_SROA_IDX :%.*]] = getelementptr inbounds i8, ptr [[A_SROA_0]], i64 1
62
+ ; CHECK-NEXT: [[A_SROA_0_1_A_SROA_0_2_RESULT:%.*]] = load i8, ptr [[A_SROA_0_1_GEP2_SROA_IDX ]], align 1
63
+ ; CHECK-NEXT: [[A_SROA_0_1_GEP2_SROA_IDX2 :%.*]] = getelementptr inbounds i8, ptr [[A_SROA_0]], i64 1
64
+ ; CHECK-NEXT: store i8 42, ptr [[A_SROA_0_1_GEP2_SROA_IDX2 ]], align 1
64
65
; CHECK-NEXT: ret void
65
66
;
66
67
; CHECK-DEBUGLOC-LABEL: @test2(
67
68
; CHECK-DEBUGLOC-NEXT: entry:
68
69
; CHECK-DEBUGLOC-NEXT: [[A_SROA_0:%.*]] = alloca i16, align 2, !dbg [[DBG28:![0-9]+]]
69
- ; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr undef , [[META23:![0-9]+]], !DIExpression(), [[DBG28]])
70
+ ; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr [[A_SROA_0]] , [[META23:![0-9]+]], !DIExpression(DW_OP_LLVM_fragment, 8, 16 ), [[DBG28]])
70
71
; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr undef, [[META24:![0-9]+]], !DIExpression(), [[META29:![0-9]+]])
71
72
; CHECK-DEBUGLOC-NEXT: store volatile i16 0, ptr [[A_SROA_0]], align 2, !dbg [[DBG30:![0-9]+]]
72
73
; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr undef, [[META25:![0-9]+]], !DIExpression(), [[META31:![0-9]+]])
73
- ; CHECK-DEBUGLOC-NEXT: [[A_SROA_0_1_SROA_IDX :%.*]] = getelementptr inbounds i8, ptr [[A_SROA_0]], i64 1, !dbg [[DBG32:![0-9]+]]
74
- ; CHECK-DEBUGLOC-NEXT: [[A_SROA_0_1_A_SROA_0_2_RESULT:%.*]] = load i8, ptr [[A_SROA_0_1_SROA_IDX ]], align 1, !dbg [[DBG32]]
74
+ ; CHECK-DEBUGLOC-NEXT: [[A_SROA_0_1_GEP2_SROA_IDX :%.*]] = getelementptr inbounds i8, ptr [[A_SROA_0]], i64 1, !dbg [[DBG32:![0-9]+]]
75
+ ; CHECK-DEBUGLOC-NEXT: [[A_SROA_0_1_A_SROA_0_2_RESULT:%.*]] = load i8, ptr [[A_SROA_0_1_GEP2_SROA_IDX ]], align 1, !dbg [[DBG32]]
75
76
; CHECK-DEBUGLOC-NEXT: #dbg_value(i8 [[A_SROA_0_1_A_SROA_0_2_RESULT]], [[META26:![0-9]+]], !DIExpression(), [[DBG32]])
76
- ; CHECK-DEBUGLOC-NEXT: [[A_SROA_0_1_SROA_IDX2 :%.*]] = getelementptr inbounds i8, ptr [[A_SROA_0]], i64 1, !dbg [[DBG33:![0-9]+]]
77
- ; CHECK-DEBUGLOC-NEXT: store i8 42, ptr [[A_SROA_0_1_SROA_IDX2 ]], align 1, !dbg [[DBG33]]
77
+ ; CHECK-DEBUGLOC-NEXT: [[A_SROA_0_1_GEP2_SROA_IDX2 :%.*]] = getelementptr inbounds i8, ptr [[A_SROA_0]], i64 1, !dbg [[DBG33:![0-9]+]]
78
+ ; CHECK-DEBUGLOC-NEXT: store i8 42, ptr [[A_SROA_0_1_GEP2_SROA_IDX2 ]], align 1, !dbg [[DBG33]]
78
79
; CHECK-DEBUGLOC-NEXT: ret void, !dbg [[DBG34:![0-9]+]]
79
80
;
80
81
entry:
@@ -117,7 +118,6 @@ define void @test3(ptr %x) {
117
118
; expecting. However, also check that any offset within an alloca can in turn
118
119
; reduce the alignment.
119
120
;
120
- ;
121
121
; CHECK-LABEL: @test3(
122
122
; CHECK-NEXT: entry:
123
123
; CHECK-NEXT: [[A_SROA_0:%.*]] = alloca [22 x i8], align 8
@@ -129,9 +129,8 @@ define void @test3(ptr %x) {
129
129
; CHECK-DEBUGLOC-LABEL: @test3(
130
130
; CHECK-DEBUGLOC-NEXT: entry:
131
131
; CHECK-DEBUGLOC-NEXT: [[A_SROA_0:%.*]] = alloca [22 x i8], align 8, !dbg [[DBG47:![0-9]+]]
132
- ; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr undef , [[META44:![0-9]+]], !DIExpression(), [[DBG47]])
132
+ ; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr [[A_SROA_0]] , [[META44:![0-9]+]], !DIExpression(), [[DBG47]])
133
133
; CHECK-DEBUGLOC-NEXT: [[B_SROA_0:%.*]] = alloca [18 x i8], align 2, !dbg [[DBG48:![0-9]+]]
134
- ; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr undef, [[META45:![0-9]+]], !DIExpression(), [[DBG48]])
135
134
; CHECK-DEBUGLOC-NEXT: call void @llvm.memcpy.p0.p0.i32(ptr align 8 [[A_SROA_0]], ptr align 8 [[X:%.*]], i32 22, i1 false), !dbg [[DBG49:![0-9]+]]
136
135
; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr undef, [[META46:![0-9]+]], !DIExpression(), [[META50:![0-9]+]])
137
136
; CHECK-DEBUGLOC-NEXT: call void @llvm.memcpy.p0.p0.i32(ptr align 2 [[B_SROA_0]], ptr align 2 [[X]], i32 18, i1 false), !dbg [[DBG51:![0-9]+]]
@@ -158,31 +157,31 @@ define void @test5() {
158
157
; CHECK-NEXT: [[A_SROA_0:%.*]] = alloca [9 x i8], align 1
159
158
; CHECK-NEXT: [[A_SROA_3:%.*]] = alloca [9 x i8], align 1
160
159
; CHECK-NEXT: store volatile double 0.000000e+00, ptr [[A_SROA_0]], align 1
161
- ; CHECK-NEXT: [[A_SROA_0_7_SROA_IDX1 :%.*]] = getelementptr inbounds i8, ptr [[A_SROA_0]], i64 7
162
- ; CHECK-NEXT: [[A_SROA_0_7_A_SROA_0_7_WEIRD_LOAD1:%.*]] = load volatile i16, ptr [[A_SROA_0_7_SROA_IDX1 ]], align 1
160
+ ; CHECK-NEXT: [[A_SROA_0_7_WEIRD_GEP1_SROA_IDX1 :%.*]] = getelementptr inbounds i8, ptr [[A_SROA_0]], i64 7
161
+ ; CHECK-NEXT: [[A_SROA_0_7_A_SROA_0_7_WEIRD_LOAD1:%.*]] = load volatile i16, ptr [[A_SROA_0_7_WEIRD_GEP1_SROA_IDX1 ]], align 1
163
162
; CHECK-NEXT: [[A_SROA_0_0_A_SROA_0_0_D1:%.*]] = load double, ptr [[A_SROA_0]], align 1
164
163
; CHECK-NEXT: store volatile double [[A_SROA_0_0_A_SROA_0_0_D1]], ptr [[A_SROA_3]], align 1
165
- ; CHECK-NEXT: [[A_SROA_3_7_SROA_IDX :%.*]] = getelementptr inbounds i8, ptr [[A_SROA_3]], i64 7
166
- ; CHECK-NEXT: [[A_SROA_3_7_A_SROA_3_16_WEIRD_LOAD2:%.*]] = load volatile i16, ptr [[A_SROA_3_7_SROA_IDX ]], align 1
164
+ ; CHECK-NEXT: [[A_SROA_3_7_WEIRD_GEP2_SROA_IDX :%.*]] = getelementptr inbounds i8, ptr [[A_SROA_3]], i64 7
165
+ ; CHECK-NEXT: [[A_SROA_3_7_A_SROA_3_16_WEIRD_LOAD2:%.*]] = load volatile i16, ptr [[A_SROA_3_7_WEIRD_GEP2_SROA_IDX ]], align 1
167
166
; CHECK-NEXT: ret void
168
167
;
169
168
; CHECK-DEBUGLOC-LABEL: @test5(
170
169
; CHECK-DEBUGLOC-NEXT: entry:
171
170
; CHECK-DEBUGLOC-NEXT: [[A_SROA_0:%.*]] = alloca [9 x i8], align 1, !dbg [[DBG63:![0-9]+]]
172
171
; CHECK-DEBUGLOC-NEXT: [[A_SROA_3:%.*]] = alloca [9 x i8], align 1, !dbg [[DBG63]]
173
- ; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr undef , [[META55:![0-9]+]], !DIExpression(), [[DBG63]])
172
+ ; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr [[A_SROA_0]] , [[META55:![0-9]+]], !DIExpression(), [[DBG63]])
174
173
; CHECK-DEBUGLOC-NEXT: store volatile double 0.000000e+00, ptr [[A_SROA_0]], align 1, !dbg [[DBG64:![0-9]+]]
175
174
; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr undef, [[META56:![0-9]+]], !DIExpression(), [[META65:![0-9]+]])
176
- ; CHECK-DEBUGLOC-NEXT: [[A_SROA_0_7_SROA_IDX1 :%.*]] = getelementptr inbounds i8, ptr [[A_SROA_0]], i64 7, !dbg [[DBG66:![0-9]+]]
177
- ; CHECK-DEBUGLOC-NEXT: [[A_SROA_0_7_A_SROA_0_7_WEIRD_LOAD1:%.*]] = load volatile i16, ptr [[A_SROA_0_7_SROA_IDX1 ]], align 1, !dbg [[DBG66]]
175
+ ; CHECK-DEBUGLOC-NEXT: [[A_SROA_0_7_WEIRD_GEP1_SROA_IDX1 :%.*]] = getelementptr inbounds i8, ptr [[A_SROA_0]], i64 7, !dbg [[DBG66:![0-9]+]]
176
+ ; CHECK-DEBUGLOC-NEXT: [[A_SROA_0_7_A_SROA_0_7_WEIRD_LOAD1:%.*]] = load volatile i16, ptr [[A_SROA_0_7_WEIRD_GEP1_SROA_IDX1 ]], align 1, !dbg [[DBG66]]
178
177
; CHECK-DEBUGLOC-NEXT: #dbg_value(i16 [[A_SROA_0_7_A_SROA_0_7_WEIRD_LOAD1]], [[META57:![0-9]+]], !DIExpression(), [[DBG66]])
179
178
; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr undef, [[META59:![0-9]+]], !DIExpression(), [[META67:![0-9]+]])
180
179
; CHECK-DEBUGLOC-NEXT: [[A_SROA_0_0_A_SROA_0_0_D1:%.*]] = load double, ptr [[A_SROA_0]], align 1, !dbg [[DBG68:![0-9]+]]
181
180
; CHECK-DEBUGLOC-NEXT: #dbg_value(double [[A_SROA_0_0_A_SROA_0_0_D1]], [[META60:![0-9]+]], !DIExpression(), [[DBG68]])
182
181
; CHECK-DEBUGLOC-NEXT: store volatile double [[A_SROA_0_0_A_SROA_0_0_D1]], ptr [[A_SROA_3]], align 1, !dbg [[DBG69:![0-9]+]]
183
182
; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr undef, [[META61:![0-9]+]], !DIExpression(), [[META70:![0-9]+]])
184
- ; CHECK-DEBUGLOC-NEXT: [[A_SROA_3_7_SROA_IDX :%.*]] = getelementptr inbounds i8, ptr [[A_SROA_3]], i64 7, !dbg [[DBG71:![0-9]+]]
185
- ; CHECK-DEBUGLOC-NEXT: [[A_SROA_3_7_A_SROA_3_16_WEIRD_LOAD2:%.*]] = load volatile i16, ptr [[A_SROA_3_7_SROA_IDX ]], align 1, !dbg [[DBG71]]
183
+ ; CHECK-DEBUGLOC-NEXT: [[A_SROA_3_7_WEIRD_GEP2_SROA_IDX :%.*]] = getelementptr inbounds i8, ptr [[A_SROA_3]], i64 7, !dbg [[DBG71:![0-9]+]]
184
+ ; CHECK-DEBUGLOC-NEXT: [[A_SROA_3_7_A_SROA_3_16_WEIRD_LOAD2:%.*]] = load volatile i16, ptr [[A_SROA_3_7_WEIRD_GEP2_SROA_IDX ]], align 1, !dbg [[DBG71]]
186
185
; CHECK-DEBUGLOC-NEXT: #dbg_value(i16 [[A_SROA_3_7_A_SROA_3_16_WEIRD_LOAD2]], [[META62:![0-9]+]], !DIExpression(), [[DBG71]])
187
186
; CHECK-DEBUGLOC-NEXT: ret void, !dbg [[DBG72:![0-9]+]]
188
187
;
@@ -219,7 +218,7 @@ define void @test6() {
219
218
; CHECK-DEBUGLOC-NEXT: entry:
220
219
; CHECK-DEBUGLOC-NEXT: [[A_SROA_0:%.*]] = alloca double, align 8, !dbg [[DBG78:![0-9]+]]
221
220
; CHECK-DEBUGLOC-NEXT: [[A_SROA_2:%.*]] = alloca double, align 8, !dbg [[DBG78]]
222
- ; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr undef , [[META75:![0-9]+]], !DIExpression(), [[DBG78]])
221
+ ; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr [[A_SROA_0]] , [[META75:![0-9]+]], !DIExpression(), [[DBG78]])
223
222
; CHECK-DEBUGLOC-NEXT: store volatile double 0.000000e+00, ptr [[A_SROA_0]], align 8, !dbg [[DBG79:![0-9]+]]
224
223
; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr undef, [[META76:![0-9]+]], !DIExpression(), [[META80:![0-9]+]])
225
224
; CHECK-DEBUGLOC-NEXT: [[A_SROA_0_0_A_SROA_0_0_VAL:%.*]] = load double, ptr [[A_SROA_0]], align 8, !dbg [[DBG81:![0-9]+]]
@@ -442,7 +441,7 @@ define dso_local i32 @pr45010(ptr %A) {
442
441
;
443
442
; CHECK-DEBUGLOC-LABEL: @pr45010(
444
443
; CHECK-DEBUGLOC-NEXT: [[B_SROA_0:%.*]] = alloca i32, align 4, !dbg [[DBG129:![0-9]+]]
445
- ; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr undef , [[META125:![0-9]+]], !DIExpression(), [[DBG129]])
444
+ ; CHECK-DEBUGLOC-NEXT: #dbg_value(ptr [[B_SROA_0]] , [[META125:![0-9]+]], !DIExpression(DW_OP_LLVM_fragment, 0, 32 ), [[DBG129]])
446
445
; CHECK-DEBUGLOC-NEXT: [[TMP1:%.*]] = load i32, ptr [[A:%.*]], align 4, !dbg [[DBG130:![0-9]+]]
447
446
; CHECK-DEBUGLOC-NEXT: #dbg_value(i32 [[TMP1]], [[META126:![0-9]+]], !DIExpression(), [[DBG130]])
448
447
; CHECK-DEBUGLOC-NEXT: store atomic volatile i32 [[TMP1]], ptr [[B_SROA_0]] release, align 4, !dbg [[DBG131:![0-9]+]]
0 commit comments