Skip to content

Commit ec52263

Browse files
committed
address comments
1 parent c8cdc8c commit ec52263

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

llvm/lib/Analysis/ValueTracking.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7678,9 +7678,9 @@ static bool isGuaranteedNotToBeUndefOrPoison(
76787678
return true;
76797679
}
76807680

7681-
Value *Splat;
76827681
if (!::canCreateUndefOrPoison(Opr, Kind,
76837682
/*ConsiderFlagsAndMetadata=*/true)) {
7683+
Value *Splat;
76847684
if (const auto *PN = dyn_cast<PHINode>(V)) {
76857685
unsigned Num = PN->getNumIncomingValues();
76867686
bool IsWellDefined = true;

llvm/test/Transforms/InstSimplify/freeze-noundef.ll

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,3 +156,16 @@ define {i8, i32} @noundef_metadata2(ptr %p) {
156156
%v.fr = freeze {i8, i32} %v
157157
ret {i8, i32} %v.fr
158158
}
159+
160+
; For splats only the poison-ness of the value being splatted matters.
161+
define <4 x i32> @splat(i32 noundef %x) {
162+
; CHECK-LABEL: @splat(
163+
; CHECK-NEXT: [[INS:%.*]] = insertelement <4 x i32> poison, i32 [[X:%.*]], i32 0
164+
; CHECK-NEXT: [[SPLAT:%.*]] = shufflevector <4 x i32> [[INS]], <4 x i32> poison, <4 x i32> zeroinitializer
165+
; CHECK-NEXT: ret <4 x i32> [[SPLAT]]
166+
;
167+
%ins = insertelement <4 x i32> poison, i32 %x, i32 0
168+
%splat = shufflevector <4 x i32> %ins, <4 x i32> poison, <4 x i32> zeroinitializer
169+
%splat.fr = freeze <4 x i32> %splat
170+
ret <4 x i32> %splat.fr
171+
}

0 commit comments

Comments
 (0)