llvm-svn: 277066
This commit is contained in:
Vitaly Buka 2016-07-28 22:50:43 +00:00
parent 4fa5041225
commit caca9da4ff
1 changed files with 6 additions and 0 deletions

View File

@ -30,6 +30,8 @@ using namespace PatternMatch;
STATISTIC(NumSimplified, "Number of library calls simplified"); STATISTIC(NumSimplified, "Number of library calls simplified");
extern cl::opt<bool> ClUseAfterScope;
/// Return the specified type promoted as it would be to pass though a va_arg /// Return the specified type promoted as it would be to pass though a va_arg
/// area. /// area.
static Type *getPromotedType(Type *Ty) { static Type *getPromotedType(Type *Ty) {
@ -1209,6 +1211,10 @@ static bool removeTriviallyEmptyRange(IntrinsicInst &I, unsigned StartID,
unsigned EndID, InstCombiner &IC) { unsigned EndID, InstCombiner &IC) {
assert(I.getIntrinsicID() == StartID && assert(I.getIntrinsicID() == StartID &&
"Start intrinsic does not have expected ID"); "Start intrinsic does not have expected ID");
// Even if the range is empty asan need to poison memory to detect invalid
// access latter.
if (ClUseAfterScope)
return false;
BasicBlock::iterator BI(I), BE(I.getParent()->end()); BasicBlock::iterator BI(I), BE(I.getParent()->end());
for (++BI; BI != BE; ++BI) { for (++BI; BI != BE; ++BI) {
if (auto *E = dyn_cast<IntrinsicInst>(BI)) { if (auto *E = dyn_cast<IntrinsicInst>(BI)) {