mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 11:02:59 +02:00
Fix PR5471 by removing an instcombine xform. Some pieces of the code
generates store to undef and some generates store to null as the idiom for undefined behavior. Since simplifycfg zaps both, don't remove the undefined behavior in instcombine. llvm-svn: 89971
This commit is contained in:
parent
08e20f453d
commit
cf7665b0c8
@ -12096,12 +12096,6 @@ Instruction *InstCombiner::visitStoreInst(StoreInst &SI) {
|
||||
Value *Val = SI.getOperand(0);
|
||||
Value *Ptr = SI.getOperand(1);
|
||||
|
||||
if (isa<UndefValue>(Ptr)) { // store X, undef -> noop (even if volatile)
|
||||
EraseInstFromFunction(SI);
|
||||
++NumCombined;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// If the RHS is an alloca with a single use, zapify the store, making the
|
||||
// alloca dead.
|
||||
// If the RHS is an alloca with a two uses, the other one being a
|
||||
|
@ -125,3 +125,15 @@ l10:
|
||||
%v11 = select i1 %v5_, i64 0, i64 %v6
|
||||
ret i64 %v11
|
||||
}
|
||||
|
||||
; PR5471
|
||||
define arm_apcscc i32 @test5a() {
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
define arm_apcscc void @test5() {
|
||||
store i1 true, i1* undef
|
||||
%1 = invoke i32 @test5a() to label %exit unwind label %exit
|
||||
exit:
|
||||
ret void
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ define void @test1(i32* %P) {
|
||||
store i32 124, i32* null
|
||||
ret void
|
||||
; CHECK: @test1(
|
||||
; CHECK-NEXT: store i32 123, i32* undef
|
||||
; CHECK-NEXT: store i32 undef, i32* null
|
||||
; CHECK-NEXT: ret void
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user