forked from OSchip/llvm-project
[MergeICmps] Relax sinking check
The check for sinking instructions past the load + cmp sequence currently checks for side-effects, which includes writing to memory and unwinding. However, I don't believe we care about sinking the instructions past an unwind (as they don't have any side-effects themselves). Differential Revision: https://reviews.llvm.org/D106591
This commit is contained in:
parent
18ce3d3f2c
commit
f502683750
|
@ -248,9 +248,9 @@ private:
|
|||
bool BCECmpBlock::canSinkBCECmpInst(const Instruction *Inst,
|
||||
DenseSet<Instruction *> &BlockInsts,
|
||||
AliasAnalysis &AA) const {
|
||||
// If this instruction has side effects and its in middle of the BCE cmp block
|
||||
// instructions, then bail for now.
|
||||
if (Inst->mayHaveSideEffects()) {
|
||||
// If this instruction may clobber the loads and is in middle of the BCE cmp
|
||||
// block instructions, then bail for now.
|
||||
if (Inst->mayWriteToMemory()) {
|
||||
// Bail if this is not a simple load or store
|
||||
if (!isSimpleLoadOrStore(Inst))
|
||||
return false;
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
%S = type { i32, i32, i32, i32 }
|
||||
|
||||
declare void @foo(...) nounwind readnone
|
||||
declare void @foo(...) readonly
|
||||
|
||||
; We can split %entry and create a memcmp(16 bytes).
|
||||
define zeroext i1 @opeq1(
|
||||
|
|
Loading…
Reference in New Issue