mirror of
https://github.com/llvm/llvm-project.git
synced 2025-05-19 07:36:07 +00:00
range
llvm-svn: 277066
This commit is contained in:
parent
4fa5041225
commit
caca9da4ff
@ -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)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user