mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-23 14:25:07 +00:00
Special-case static allocas in IndVarSimplify's loop invariant
sinking code, since they are special. If the loop preheader happens to be the entry block of a function, don't sink static allocas out of it. This fixes PR4775. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80010 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -553,6 +553,11 @@ void IndVarSimplify::SinkUnusedInvariants(Loop *L) {
|
||||
// dominates the exit block.
|
||||
if (I->mayHaveSideEffects() || I->mayReadFromMemory())
|
||||
continue;
|
||||
// Don't sink static AllocaInsts out of the entry block, which would
|
||||
// turn them into dynamic allocas!
|
||||
if (AllocaInst *AI = dyn_cast<AllocaInst>(I))
|
||||
if (AI->isStaticAlloca())
|
||||
continue;
|
||||
// Determine if there is a use in or before the loop (direct or
|
||||
// otherwise).
|
||||
bool UsedInLoop = false;
|
||||
|
Reference in New Issue
Block a user