mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
[InstCombine] Don't RAUW tokens with undef
Let SimplifyCFG remove unreachable BBs which define token instructions. llvm-svn: 252343
This commit is contained in:
parent
0addd685df
commit
9ffc9c11c7
@ -3012,7 +3012,7 @@ static bool prepareICWorklistFromFunction(Function &F, const DataLayout &DL,
|
||||
while (EndInst != BB->begin()) {
|
||||
// Delete the next to last instruction.
|
||||
Instruction *Inst = &*--EndInst->getIterator();
|
||||
if (!Inst->use_empty())
|
||||
if (!Inst->use_empty() && !Inst->getType()->isTokenTy())
|
||||
Inst->replaceAllUsesWith(UndefValue::get(Inst->getType()));
|
||||
if (Inst->isEHPad()) {
|
||||
EndInst = Inst;
|
||||
@ -3022,7 +3022,8 @@ static bool prepareICWorklistFromFunction(Function &F, const DataLayout &DL,
|
||||
++NumDeadInst;
|
||||
MadeIRChange = true;
|
||||
}
|
||||
Inst->eraseFromParent();
|
||||
if (!Inst->getType()->isTokenTy())
|
||||
Inst->eraseFromParent();
|
||||
}
|
||||
}
|
||||
|
||||
|
21
test/Transforms/InstCombine/token.ll
Normal file
21
test/Transforms/InstCombine/token.ll
Normal file
@ -0,0 +1,21 @@
|
||||
; RUN: opt < %s -instcombine -S | FileCheck %s
|
||||
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-pc-windows-msvc18.0.0"
|
||||
|
||||
declare i32 @__CxxFrameHandler3(...)
|
||||
|
||||
define i8* @f() personality i32 (...)* @__CxxFrameHandler3 {
|
||||
bb:
|
||||
unreachable
|
||||
|
||||
unreachable:
|
||||
%cl = cleanuppad []
|
||||
cleanupret %cl unwind to caller
|
||||
}
|
||||
|
||||
; CHECK: unreachable:
|
||||
; CHECK: %cl = cleanuppad []
|
||||
; CHECK: cleanupret %cl unwind to caller
|
||||
|
||||
|
||||
declare void @g(i8*)
|
Loading…
Reference in New Issue
Block a user