forked from OSchip/llvm-project
Fix memory corruption. If one of the SCEV creation functions calls another but
doesn't return immediately after then the insert position in UniqueSCEVs will be out of date. No test because this is a memory corruption issue. Fixes PR9051! llvm-svn: 124282
This commit is contained in:
parent
db9d664244
commit
d9e6b4a8ff
llvm/lib/Analysis
|
@ -831,6 +831,7 @@ const SCEV *ScalarEvolution::getTruncateExpr(const SCEV *Op,
|
|||
}
|
||||
if (!hasTrunc)
|
||||
return getAddExpr(Operands, false, false);
|
||||
UniqueSCEVs.FindNodeOrInsertPos(ID, IP); // Mutates IP, returns NULL.
|
||||
}
|
||||
|
||||
// trunc(x1*x2*...*xN) --> trunc(x1)*trunc(x2)*...*trunc(xN) if we can
|
||||
|
@ -845,6 +846,7 @@ const SCEV *ScalarEvolution::getTruncateExpr(const SCEV *Op,
|
|||
}
|
||||
if (!hasTrunc)
|
||||
return getMulExpr(Operands, false, false);
|
||||
UniqueSCEVs.FindNodeOrInsertPos(ID, IP); // Mutates IP, returns NULL.
|
||||
}
|
||||
|
||||
// If the input value is a chrec scev, truncate the chrec's operands.
|
||||
|
|
Loading…
Reference in New Issue