Skip to content

Commit 8923e75

Browse files
author
git apple-llvm automerger
committed
Merge commit 'a9021e5373f8' from llvm.org/main into next
2 parents 5cb9f31 + a9021e5 commit 8923e75

File tree

3 files changed

+49
-49
lines changed

3 files changed

+49
-49
lines changed

llvm/lib/Target/DirectX/DXILLegalizePass.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,6 @@ static void emitMemcpyExpansion(IRBuilder<> &Builder, Value *Dst, Value *Src,
347347
if (ByteLength == 0)
348348
return;
349349

350-
LLVMContext &Ctx = Builder.getContext();
351350
const DataLayout &DL = Builder.GetInsertBlock()->getModule()->getDataLayout();
352351

353352
auto GetArrTyFromVal = [](Value *Val) -> ArrayType * {
@@ -392,18 +391,18 @@ static void emitMemcpyExpansion(IRBuilder<> &Builder, Value *Dst, Value *Src,
392391
assert(ByteLength % DstElemByteSize == 0 &&
393392
"memcpy length must be divisible by array element type");
394393
for (uint64_t I = 0; I < NumElemsToCopy; ++I) {
395-
Value *Offset = ConstantInt::get(Type::getInt32Ty(Ctx), I);
396-
Value *SrcPtr = Builder.CreateInBoundsGEP(SrcElemTy, Src, Offset, "gep");
394+
SmallVector<Value *, 2> Indices = {Builder.getInt32(0),
395+
Builder.getInt32(I)};
396+
Value *SrcPtr = Builder.CreateInBoundsGEP(SrcArrTy, Src, Indices, "gep");
397397
Value *SrcVal = Builder.CreateLoad(SrcElemTy, SrcPtr);
398-
Value *DstPtr = Builder.CreateInBoundsGEP(DstElemTy, Dst, Offset, "gep");
398+
Value *DstPtr = Builder.CreateInBoundsGEP(DstArrTy, Dst, Indices, "gep");
399399
Builder.CreateStore(SrcVal, DstPtr);
400400
}
401401
}
402402

403403
static void emitMemsetExpansion(IRBuilder<> &Builder, Value *Dst, Value *Val,
404404
ConstantInt *SizeCI,
405405
DenseMap<Value *, Value *> &ReplacedValues) {
406-
LLVMContext &Ctx = Builder.getContext();
407406
[[maybe_unused]] const DataLayout &DL =
408407
Builder.GetInsertBlock()->getModule()->getDataLayout();
409408
[[maybe_unused]] uint64_t OrigSize = SizeCI->getZExtValue();
@@ -444,8 +443,9 @@ static void emitMemsetExpansion(IRBuilder<> &Builder, Value *Dst, Value *Val,
444443
}
445444

446445
for (uint64_t I = 0; I < Size; ++I) {
447-
Value *Offset = ConstantInt::get(Type::getInt32Ty(Ctx), I);
448-
Value *Ptr = Builder.CreateGEP(ElemTy, Dst, Offset, "gep");
446+
Value *Zero = Builder.getInt32(0);
447+
Value *Offset = Builder.getInt32(I);
448+
Value *Ptr = Builder.CreateGEP(ArrTy, Dst, {Zero, Offset}, "gep");
449449
Builder.CreateStore(TypedVal, Ptr);
450450
}
451451
}
@@ -478,9 +478,9 @@ static void legalizeMemCpy(Instruction &I,
478478
ToRemove.push_back(CI);
479479
}
480480

481-
static void removeMemSet(Instruction &I,
482-
SmallVectorImpl<Instruction *> &ToRemove,
483-
DenseMap<Value *, Value *> &ReplacedValues) {
481+
static void legalizeMemSet(Instruction &I,
482+
SmallVectorImpl<Instruction *> &ToRemove,
483+
DenseMap<Value *, Value *> &ReplacedValues) {
484484

485485
CallInst *CI = dyn_cast<CallInst>(&I);
486486
if (!CI)
@@ -642,7 +642,7 @@ class DXILLegalizationPipeline {
642642
LegalizationPipeline[Stage1].push_back(legalizeGetHighLowi64Bytes);
643643
LegalizationPipeline[Stage1].push_back(legalizeFreeze);
644644
LegalizationPipeline[Stage1].push_back(legalizeMemCpy);
645-
LegalizationPipeline[Stage1].push_back(removeMemSet);
645+
LegalizationPipeline[Stage1].push_back(legalizeMemSet);
646646
LegalizationPipeline[Stage1].push_back(updateFnegToFsub);
647647
// Note: legalizeGetHighLowi64Bytes and
648648
// downcastI64toI32InsertExtractElements both modify extractelement, so they

llvm/test/CodeGen/DirectX/legalize-memcpy.ll

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ define void @replace_int_memcpy_test() #0 {
66
; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
77
; CHECK-NEXT: [[TMP1:%.*]] = alloca [1 x i32], align 4
88
; CHECK-NEXT: [[TMP2:%.*]] = alloca [1 x i32], align 4
9-
; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i32 0
9+
; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds [1 x i32], ptr [[TMP1]], i32 0, i32 0
1010
; CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr [[GEP]], align 4
11-
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 0
11+
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds [1 x i32], ptr [[TMP2]], i32 0, i32 0
1212
; CHECK-NEXT: store i32 [[TMP3]], ptr [[GEP1]], align 4
1313
; CHECK-NEXT: ret void
1414
;
@@ -23,17 +23,17 @@ define void @replace_3int_memcpy_test() #0 {
2323
; CHECK-SAME: ) #[[ATTR0]] {
2424
; CHECK-NEXT: [[TMP1:%.*]] = alloca [3 x i32], align 4
2525
; CHECK-NEXT: [[TMP2:%.*]] = alloca [3 x i32], align 4
26-
; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i32 0
26+
; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds [3 x i32], ptr [[TMP1]], i32 0, i32 0
2727
; CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr [[GEP]], align 4
28-
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 0
28+
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds [3 x i32], ptr [[TMP2]], i32 0, i32 0
2929
; CHECK-NEXT: store i32 [[TMP3]], ptr [[GEP1]], align 4
30-
; CHECK-NEXT: [[GEP2:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i32 1
30+
; CHECK-NEXT: [[GEP2:%.*]] = getelementptr inbounds [3 x i32], ptr [[TMP1]], i32 0, i32 1
3131
; CHECK-NEXT: [[TMP4:%.*]] = load i32, ptr [[GEP2]], align 4
32-
; CHECK-NEXT: [[GEP3:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 1
32+
; CHECK-NEXT: [[GEP3:%.*]] = getelementptr inbounds [3 x i32], ptr [[TMP2]], i32 0, i32 1
3333
; CHECK-NEXT: store i32 [[TMP4]], ptr [[GEP3]], align 4
34-
; CHECK-NEXT: [[GEP4:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i32 2
34+
; CHECK-NEXT: [[GEP4:%.*]] = getelementptr inbounds [3 x i32], ptr [[TMP1]], i32 0, i32 2
3535
; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[GEP4]], align 4
36-
; CHECK-NEXT: [[GEP5:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 2
36+
; CHECK-NEXT: [[GEP5:%.*]] = getelementptr inbounds [3 x i32], ptr [[TMP2]], i32 0, i32 2
3737
; CHECK-NEXT: store i32 [[TMP5]], ptr [[GEP5]], align 4
3838
; CHECK-NEXT: ret void
3939
;
@@ -48,13 +48,13 @@ define void @replace_mismatched_size_int_memcpy_test() #0 {
4848
; CHECK-SAME: ) #[[ATTR0]] {
4949
; CHECK-NEXT: [[TMP1:%.*]] = alloca [2 x i32], align 4
5050
; CHECK-NEXT: [[TMP2:%.*]] = alloca [3 x i32], align 4
51-
; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i32 0
51+
; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds [2 x i32], ptr [[TMP1]], i32 0, i32 0
5252
; CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr [[GEP]], align 4
53-
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 0
53+
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds [3 x i32], ptr [[TMP2]], i32 0, i32 0
5454
; CHECK-NEXT: store i32 [[TMP3]], ptr [[GEP1]], align 4
55-
; CHECK-NEXT: [[GEP2:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i32 1
55+
; CHECK-NEXT: [[GEP2:%.*]] = getelementptr inbounds [2 x i32], ptr [[TMP1]], i32 0, i32 1
5656
; CHECK-NEXT: [[TMP4:%.*]] = load i32, ptr [[GEP2]], align 4
57-
; CHECK-NEXT: [[GEP3:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 1
57+
; CHECK-NEXT: [[GEP3:%.*]] = getelementptr inbounds [3 x i32], ptr [[TMP2]], i32 0, i32 1
5858
; CHECK-NEXT: store i32 [[TMP4]], ptr [[GEP3]], align 4
5959
; CHECK-NEXT: ret void
6060
;
@@ -69,13 +69,13 @@ define void @replace_int16_memcpy_test() #0 {
6969
; CHECK-SAME: ) #[[ATTR0]] {
7070
; CHECK-NEXT: [[TMP1:%.*]] = alloca [2 x i16], align 2
7171
; CHECK-NEXT: [[TMP2:%.*]] = alloca [2 x i16], align 2
72-
; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds i16, ptr [[TMP1]], i32 0
72+
; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds [2 x i16], ptr [[TMP1]], i32 0, i32 0
7373
; CHECK-NEXT: [[TMP3:%.*]] = load i16, ptr [[GEP]], align 2
74-
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds i16, ptr [[TMP2]], i32 0
74+
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds [2 x i16], ptr [[TMP2]], i32 0, i32 0
7575
; CHECK-NEXT: store i16 [[TMP3]], ptr [[GEP1]], align 2
76-
; CHECK-NEXT: [[GEP2:%.*]] = getelementptr inbounds i16, ptr [[TMP1]], i32 1
76+
; CHECK-NEXT: [[GEP2:%.*]] = getelementptr inbounds [2 x i16], ptr [[TMP1]], i32 0, i32 1
7777
; CHECK-NEXT: [[TMP4:%.*]] = load i16, ptr [[GEP2]], align 2
78-
; CHECK-NEXT: [[GEP3:%.*]] = getelementptr inbounds i16, ptr [[TMP2]], i32 1
78+
; CHECK-NEXT: [[GEP3:%.*]] = getelementptr inbounds [2 x i16], ptr [[TMP2]], i32 0, i32 1
7979
; CHECK-NEXT: store i16 [[TMP4]], ptr [[GEP3]], align 2
8080
; CHECK-NEXT: ret void
8181
;
@@ -90,13 +90,13 @@ define void @replace_float_memcpy_test() #0 {
9090
; CHECK-SAME: ) #[[ATTR0]] {
9191
; CHECK-NEXT: [[TMP1:%.*]] = alloca [2 x float], align 4
9292
; CHECK-NEXT: [[TMP2:%.*]] = alloca [2 x float], align 4
93-
; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds float, ptr [[TMP1]], i32 0
93+
; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds [2 x float], ptr [[TMP1]], i32 0, i32 0
9494
; CHECK-NEXT: [[TMP3:%.*]] = load float, ptr [[GEP]], align 4
95-
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds float, ptr [[TMP2]], i32 0
95+
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds [2 x float], ptr [[TMP2]], i32 0, i32 0
9696
; CHECK-NEXT: store float [[TMP3]], ptr [[GEP1]], align 4
97-
; CHECK-NEXT: [[GEP2:%.*]] = getelementptr inbounds float, ptr [[TMP1]], i32 1
97+
; CHECK-NEXT: [[GEP2:%.*]] = getelementptr inbounds [2 x float], ptr [[TMP1]], i32 0, i32 1
9898
; CHECK-NEXT: [[TMP4:%.*]] = load float, ptr [[GEP2]], align 4
99-
; CHECK-NEXT: [[GEP3:%.*]] = getelementptr inbounds float, ptr [[TMP2]], i32 1
99+
; CHECK-NEXT: [[GEP3:%.*]] = getelementptr inbounds [2 x float], ptr [[TMP2]], i32 0, i32 1
100100
; CHECK-NEXT: store float [[TMP4]], ptr [[GEP3]], align 4
101101
; CHECK-NEXT: ret void
102102
;
@@ -111,13 +111,13 @@ define void @replace_double_memcpy_test() #0 {
111111
; CHECK-SAME: ) #[[ATTR0]] {
112112
; CHECK-NEXT: [[TMP1:%.*]] = alloca [2 x double], align 4
113113
; CHECK-NEXT: [[TMP2:%.*]] = alloca [2 x double], align 4
114-
; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds double, ptr [[TMP1]], i32 0
114+
; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds [2 x double], ptr [[TMP1]], i32 0, i32 0
115115
; CHECK-NEXT: [[TMP3:%.*]] = load double, ptr [[GEP]], align 8
116-
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds double, ptr [[TMP2]], i32 0
116+
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds [2 x double], ptr [[TMP2]], i32 0, i32 0
117117
; CHECK-NEXT: store double [[TMP3]], ptr [[GEP1]], align 8
118-
; CHECK-NEXT: [[GEP2:%.*]] = getelementptr inbounds double, ptr [[TMP1]], i32 1
118+
; CHECK-NEXT: [[GEP2:%.*]] = getelementptr inbounds [2 x double], ptr [[TMP1]], i32 0, i32 1
119119
; CHECK-NEXT: [[TMP4:%.*]] = load double, ptr [[GEP2]], align 8
120-
; CHECK-NEXT: [[GEP3:%.*]] = getelementptr inbounds double, ptr [[TMP2]], i32 1
120+
; CHECK-NEXT: [[GEP3:%.*]] = getelementptr inbounds [2 x double], ptr [[TMP2]], i32 0, i32 1
121121
; CHECK-NEXT: store double [[TMP4]], ptr [[GEP3]], align 8
122122
; CHECK-NEXT: ret void
123123
;
@@ -132,13 +132,13 @@ define void @replace_half_memcpy_test() #0 {
132132
; CHECK-SAME: ) #[[ATTR0]] {
133133
; CHECK-NEXT: [[TMP1:%.*]] = alloca [2 x half], align 2
134134
; CHECK-NEXT: [[TMP2:%.*]] = alloca [2 x half], align 2
135-
; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds half, ptr [[TMP1]], i32 0
135+
; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds [2 x half], ptr [[TMP1]], i32 0, i32 0
136136
; CHECK-NEXT: [[TMP3:%.*]] = load half, ptr [[GEP]], align 2
137-
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds half, ptr [[TMP2]], i32 0
137+
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds [2 x half], ptr [[TMP2]], i32 0, i32 0
138138
; CHECK-NEXT: store half [[TMP3]], ptr [[GEP1]], align 2
139-
; CHECK-NEXT: [[GEP2:%.*]] = getelementptr inbounds half, ptr [[TMP1]], i32 1
139+
; CHECK-NEXT: [[GEP2:%.*]] = getelementptr inbounds [2 x half], ptr [[TMP1]], i32 0, i32 1
140140
; CHECK-NEXT: [[TMP4:%.*]] = load half, ptr [[GEP2]], align 2
141-
; CHECK-NEXT: [[GEP3:%.*]] = getelementptr inbounds half, ptr [[TMP2]], i32 1
141+
; CHECK-NEXT: [[GEP3:%.*]] = getelementptr inbounds [2 x half], ptr [[TMP2]], i32 0, i32 1
142142
; CHECK-NEXT: store half [[TMP4]], ptr [[GEP3]], align 2
143143
; CHECK-NEXT: ret void
144144
;

llvm/test/CodeGen/DirectX/legalize-memset.ll

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ define void @replace_float_memset_test() #0 {
66
; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
77
; CHECK-NEXT: [[ACCUM_I_FLAT:%.*]] = alloca [2 x float], align 4
88
; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr nonnull [[ACCUM_I_FLAT]])
9-
; CHECK-NEXT: [[GEP:%.*]] = getelementptr float, ptr [[ACCUM_I_FLAT]], i32 0
9+
; CHECK-NEXT: [[GEP:%.*]] = getelementptr [2 x float], ptr [[ACCUM_I_FLAT]], i32 0, i32 0
1010
; CHECK-NEXT: store float 0.000000e+00, ptr [[GEP]], align 4
11-
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr float, ptr [[ACCUM_I_FLAT]], i32 1
11+
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr [2 x float], ptr [[ACCUM_I_FLAT]], i32 0, i32 1
1212
; CHECK-NEXT: store float 0.000000e+00, ptr [[GEP1]], align 4
1313
; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr nonnull [[ACCUM_I_FLAT]])
1414
; CHECK-NEXT: ret void
@@ -25,9 +25,9 @@ define void @replace_half_memset_test() #0 {
2525
; CHECK-SAME: ) #[[ATTR0]] {
2626
; CHECK-NEXT: [[ACCUM_I_FLAT:%.*]] = alloca [2 x half], align 4
2727
; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[ACCUM_I_FLAT]])
28-
; CHECK-NEXT: [[GEP:%.*]] = getelementptr half, ptr [[ACCUM_I_FLAT]], i32 0
28+
; CHECK-NEXT: [[GEP:%.*]] = getelementptr [2 x half], ptr [[ACCUM_I_FLAT]], i32 0, i32 0
2929
; CHECK-NEXT: store half 0xH0000, ptr [[GEP]], align 2
30-
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr half, ptr [[ACCUM_I_FLAT]], i32 1
30+
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr [2 x half], ptr [[ACCUM_I_FLAT]], i32 0, i32 1
3131
; CHECK-NEXT: store half 0xH0000, ptr [[GEP1]], align 2
3232
; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[ACCUM_I_FLAT]])
3333
; CHECK-NEXT: ret void
@@ -44,9 +44,9 @@ define void @replace_double_memset_test() #0 {
4444
; CHECK-SAME: ) #[[ATTR0]] {
4545
; CHECK-NEXT: [[ACCUM_I_FLAT:%.*]] = alloca [2 x double], align 4
4646
; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[ACCUM_I_FLAT]])
47-
; CHECK-NEXT: [[GEP:%.*]] = getelementptr double, ptr [[ACCUM_I_FLAT]], i32 0
47+
; CHECK-NEXT: [[GEP:%.*]] = getelementptr [2 x double], ptr [[ACCUM_I_FLAT]], i32 0, i32 0
4848
; CHECK-NEXT: store double 0.000000e+00, ptr [[GEP]], align 8
49-
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr double, ptr [[ACCUM_I_FLAT]], i32 1
49+
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr [2 x double], ptr [[ACCUM_I_FLAT]], i32 0, i32 1
5050
; CHECK-NEXT: store double 0.000000e+00, ptr [[GEP1]], align 8
5151
; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[ACCUM_I_FLAT]])
5252
; CHECK-NEXT: ret void
@@ -63,9 +63,9 @@ define void @replace_int16_memset_test() #0 {
6363
; CHECK-SAME: ) #[[ATTR0]] {
6464
; CHECK-NEXT: [[CACHE_I:%.*]] = alloca [2 x i16], align 2
6565
; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[CACHE_I]])
66-
; CHECK-NEXT: [[GEP:%.*]] = getelementptr i16, ptr [[CACHE_I]], i32 0
66+
; CHECK-NEXT: [[GEP:%.*]] = getelementptr [2 x i16], ptr [[CACHE_I]], i32 0, i32 0
6767
; CHECK-NEXT: store i16 0, ptr [[GEP]], align 2
68-
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr i16, ptr [[CACHE_I]], i32 1
68+
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr [2 x i16], ptr [[CACHE_I]], i32 0, i32 1
6969
; CHECK-NEXT: store i16 0, ptr [[GEP1]], align 2
7070
; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[CACHE_I]])
7171
; CHECK-NEXT: ret void
@@ -82,7 +82,7 @@ define void @replace_int_memset_test() #0 {
8282
; CHECK-SAME: ) #[[ATTR0]] {
8383
; CHECK-NEXT: [[ACCUM_I_FLAT:%.*]] = alloca [1 x i32], align 4
8484
; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[ACCUM_I_FLAT]])
85-
; CHECK-NEXT: [[GEP:%.*]] = getelementptr i32, ptr [[ACCUM_I_FLAT]], i32 0
85+
; CHECK-NEXT: [[GEP:%.*]] = getelementptr [1 x i32], ptr [[ACCUM_I_FLAT]], i32 0, i32 0
8686
; CHECK-NEXT: store i32 0, ptr [[GEP]], align 4
8787
; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[ACCUM_I_FLAT]])
8888
; CHECK-NEXT: ret void
@@ -102,7 +102,7 @@ define void @replace_int_memset_to_var_test() #0 {
102102
; CHECK-NEXT: store i32 1, ptr [[I]], align 4
103103
; CHECK-NEXT: [[I8_LOAD:%.*]] = load i32, ptr [[I]], align 4
104104
; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[ACCUM_I_FLAT]])
105-
; CHECK-NEXT: [[GEP:%.*]] = getelementptr i32, ptr [[ACCUM_I_FLAT]], i32 0
105+
; CHECK-NEXT: [[GEP:%.*]] = getelementptr [1 x i32], ptr [[ACCUM_I_FLAT]], i32 0, i32 0
106106
; CHECK-NEXT: store i32 [[I8_LOAD]], ptr [[GEP]], align 4
107107
; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[ACCUM_I_FLAT]])
108108
; CHECK-NEXT: ret void

0 commit comments

Comments
 (0)