diff options
author | Chris Lattner <sabre@nondot.org> | 2004-11-29 21:26:12 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-11-29 21:26:12 +0000 |
commit | 6e455608e24aa6f8922c0e0de93efd67eef9ddf3 (patch) | |
tree | ee057a3c5c59c1cdf7957636dba1949844017349 /llvm/lib/Transforms/Scalar/LICM.cpp | |
parent | 0ea40c935ff420d07fe02442196c2f638895f061 (diff) | |
download | bcm5719-llvm-6e455608e24aa6f8922c0e0de93efd67eef9ddf3.tar.gz bcm5719-llvm-6e455608e24aa6f8922c0e0de93efd67eef9ddf3.zip |
Allow hoisting loads of globals and alloca's in conditionals.
llvm-svn: 18363
Diffstat (limited to 'llvm/lib/Transforms/Scalar/LICM.cpp')
-rw-r--r-- | llvm/lib/Transforms/Scalar/LICM.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Scalar/LICM.cpp b/llvm/lib/Transforms/Scalar/LICM.cpp index e9f2b330eef..c20e179f107 100644 --- a/llvm/lib/Transforms/Scalar/LICM.cpp +++ b/llvm/lib/Transforms/Scalar/LICM.cpp @@ -592,6 +592,12 @@ bool LICM::isSafeToExecuteUnconditionally(Instruction &Inst) { if (Inst.getParent() == CurLoop->getHeader()) return true; + // It's always safe to load from a global or alloca. + if (isa<LoadInst>(Inst)) + if (isa<AllocationInst>(Inst.getOperand(0)) || + isa<GlobalVariable>(Inst.getOperand(0))) + return true; + // Get the exit blocks for the current loop. std::vector<BasicBlock*> ExitBlocks; CurLoop->getExitBlocks(ExitBlocks); |