mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-23 01:24:30 +00:00
Don't PRE compares.
CodeGenPrepare sinks compare instructions down to their uses to prevent live flags and predicate registers across basic blocks. PRE of a compare instruction prevents that, forcing the i1 compare result into a general purpose register. That is usually more expensive than the redundant compare PRE was trying to eliminate in the first place. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153657 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -2328,7 +2328,14 @@ bool GVN::performPRE(Function &F) {
|
||||
CurInst->mayReadFromMemory() || CurInst->mayHaveSideEffects() ||
|
||||
isa<DbgInfoIntrinsic>(CurInst))
|
||||
continue;
|
||||
|
||||
|
||||
// Don't do PRE on compares. The PHI would prevent CodeGenPrepare from
|
||||
// sinking the compare again, and it would force the code generator to
|
||||
// move the i1 from processor flags or predicate registers into a general
|
||||
// purpose register.
|
||||
if (isa<CmpInst>(CurInst))
|
||||
continue;
|
||||
|
||||
// We don't currently value number ANY inline asm calls.
|
||||
if (CallInst *CallI = dyn_cast<CallInst>(CurInst))
|
||||
if (CallI->isInlineAsm())
|
||||
|
Reference in New Issue
Block a user