Skip to content

Commit cdcb662

Browse files
committed
Directly use pointer operand of store
1 parent 3879726 commit cdcb662

File tree

2 files changed

+4
-7
lines changed

2 files changed

+4
-7
lines changed

llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -926,11 +926,8 @@ static bool mergePartStores(SmallVectorImpl<PartStore> &Parts,
926926
if (First.ValOffset != 0)
927927
Val = Builder.CreateLShr(Val, First.ValOffset);
928928
Val = Builder.CreateTrunc(Val, NewTy);
929-
Value *Ptr = First.PtrBase;
930-
if (First.PtrOffset != 0)
931-
Ptr = Builder.CreateInBoundsPtrAdd(Ptr, Builder.getInt(First.PtrOffset));
932-
StoreInst *Store =
933-
Builder.CreateAlignedStore(Val, Ptr, First.Store->getAlign());
929+
StoreInst *Store = Builder.CreateAlignedStore(
930+
Val, First.Store->getPointerOperand(), First.Store->getAlign());
934931

935932
AAMDNodes AATags = First.Store->getAAMetadata();
936933
for (const PartStore &Part : drop_begin(Parts))

llvm/test/Transforms/AggressiveInstCombine/X86/store-merge.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ define void @test_i32_shift_in_zeros(i32 %x, ptr %p) {
322322
define void @test_base_ptr_with_offset(i32 %x, ptr %p) {
323323
; CHECK-LABEL: define void @test_base_ptr_with_offset(
324324
; CHECK-SAME: i32 [[X:%.*]], ptr [[P:%.*]]) {
325-
; CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds i8, ptr [[P]], i64 7
325+
; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[P]], i64 7
326326
; CHECK-NEXT: store i32 [[X]], ptr [[TMP1]], align 2
327327
; CHECK-NEXT: ret void
328328
;
@@ -430,9 +430,9 @@ define i8 @test_aliasing_load_partially_mergeable(i32 %x, ptr %p, ptr %p2) {
430430
; CHECK-NEXT: [[TMP1:%.*]] = trunc i32 [[X]] to i16
431431
; CHECK-NEXT: store i16 [[TMP1]], ptr [[P]], align 1
432432
; CHECK-NEXT: [[V:%.*]] = load i8, ptr [[P2]], align 1
433+
; CHECK-NEXT: [[TMP4:%.*]] = getelementptr i8, ptr [[P]], i64 2
433434
; CHECK-NEXT: [[TMP2:%.*]] = lshr i32 [[X]], 16
434435
; CHECK-NEXT: [[TMP3:%.*]] = trunc i32 [[TMP2]] to i16
435-
; CHECK-NEXT: [[TMP4:%.*]] = getelementptr inbounds i8, ptr [[P]], i64 2
436436
; CHECK-NEXT: store i16 [[TMP3]], ptr [[TMP4]], align 1
437437
; CHECK-NEXT: ret i8 [[V]]
438438
;

0 commit comments

Comments
 (0)