mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 21:32:39 +00:00
SimplifyCFG: Avoid miscompilations due to removed lifetime intrinsics.
The lifetime intrinsics need some work in order to make it clear which optimizations are or are not valid. For now dropping this optimization avoids a miscompilation. Patch by Björn Steinbrink. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214336 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9e3d58aae1
commit
7fef5a3d19
@ -4008,7 +4008,7 @@ bool SimplifyCFGOpt::SimplifyUncondBranch(BranchInst *BI, IRBuilder<> &Builder){
|
||||
return true;
|
||||
|
||||
// If the Terminator is the only non-phi instruction, simplify the block.
|
||||
BasicBlock::iterator I = BB->getFirstNonPHIOrDbgOrLifetime();
|
||||
BasicBlock::iterator I = BB->getFirstNonPHIOrDbg();
|
||||
if (I->isTerminator() && BB != &BB->getParent()->getEntryBlock() &&
|
||||
TryToSimplifyUncondBranchFromEmptyBlock(BB))
|
||||
return true;
|
||||
|
@ -1,11 +1,11 @@
|
||||
; RUN: opt < %s -simplifycfg -S | FileCheck %s
|
||||
|
||||
; Test that a lifetime intrinsic doesn't prevent us from simplifying this.
|
||||
; Test that a lifetime intrinsic isn't removed because that would change semantics
|
||||
|
||||
; CHECK: foo
|
||||
; CHECK: entry:
|
||||
; CHECK-NOT: bb0:
|
||||
; CHECK-NOT: bb1:
|
||||
; CHECK: bb0:
|
||||
; CHECK: bb1:
|
||||
; CHECK: ret
|
||||
define void @foo(i1 %x) {
|
||||
entry:
|
||||
|
Loading…
x
Reference in New Issue
Block a user