Skip to content

Commit 1e33607

Browse files
committed
!fixup check align type size.
1 parent 1648232 commit 1e33607

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3105,7 +3105,7 @@ Instruction *InstCombinerImpl::visitCallInst(CallInst &CI) {
31053105
!isValidAssumeForContext(II, LI, &DT, /*AllowEphemerals=*/true))
31063106
continue;
31073107
auto *Align = dyn_cast<ConstantInt>(OBU.Inputs[1]);
3108-
if (!Align || !isPowerOf2_64(Align->getZExtValue()))
3108+
if (!Align || !isPowerOf2_64(Align->getZExtValue()) || Align->getType()->getScalarSizeInBits() != 64)
31093109
continue;
31103110
LI->setMetadata(
31113111
LLVMContext::MD_align,

llvm/test/Transforms/InstCombine/assume-align.ll

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,17 @@ define ptr @fold_assume_align_pow2_of_loaded_pointer_into_align_metadata(ptr %p)
133133
ret ptr %p2
134134
}
135135

136+
define ptr @dont_fold_assume_align_i32_pow2_of_loaded_pointer_into_align_metadata(ptr %p) {
137+
; CHECK-LABEL: @dont_fold_assume_align_i32_pow2_of_loaded_pointer_into_align_metadata(
138+
; CHECK-NEXT: [[P2:%.*]] = load ptr, ptr [[P:%.*]], align 8
139+
; CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(ptr [[P2]], i32 8) ]
140+
; CHECK-NEXT: ret ptr [[P2]]
141+
;
142+
%p2 = load ptr, ptr %p
143+
call void @llvm.assume(i1 true) [ "align"(ptr %p2, i32 8) ]
144+
ret ptr %p2
145+
}
146+
136147
define ptr @dont_fold_assume_align_pow2_of_loaded_pointer_into_align_metadata_due_to_call(ptr %p) {
137148
; CHECK-LABEL: @dont_fold_assume_align_pow2_of_loaded_pointer_into_align_metadata_due_to_call(
138149
; CHECK-NEXT: [[P2:%.*]] = load ptr, ptr [[P:%.*]], align 8

0 commit comments

Comments
 (0)