diff options
author | Eli Friedman <efriedma@codeaurora.org> | 2017-06-14 22:43:28 +0000 |
---|---|---|
committer | Eli Friedman <efriedma@codeaurora.org> | 2017-06-14 22:43:28 +0000 |
commit | 127e0cd21b6e89fe9f052d39aaeea35c64e9b3da (patch) | |
tree | 92b1532beda652199f4368a226bda8e068ec90b5 /polly/lib/Support/SCEVValidator.cpp | |
parent | 5aa56d2d6e6e1eb7f7b2ceb96d2c7146b31b581b (diff) | |
download | bcm5719-llvm-127e0cd21b6e89fe9f052d39aaeea35c64e9b3da.tar.gz bcm5719-llvm-127e0cd21b6e89fe9f052d39aaeea35c64e9b3da.zip |
Don't check side effects for functions outside of SCoP
In r304074 we introduce a patch to accept results from side effect free
functions into SCEV modeling. This causes rejection of cases where the
call is happening outside the SCoP. This patch checks if the call is
outside the Region and treats the results as a parameter (SCEVType::PARAM)
to the SCoP instead of returning SCEVType::INVALID.
Patch by Sameer Abu Asal.
llvm-svn: 305423
Diffstat (limited to 'polly/lib/Support/SCEVValidator.cpp')
-rw-r--r-- | polly/lib/Support/SCEVValidator.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/polly/lib/Support/SCEVValidator.cpp b/polly/lib/Support/SCEVValidator.cpp index 1941875d0d5..3662424250c 100644 --- a/polly/lib/Support/SCEVValidator.cpp +++ b/polly/lib/Support/SCEVValidator.cpp @@ -320,11 +320,12 @@ public: ValidatorResult visitCallInstruction(Instruction *I, const SCEV *S) { assert(I->getOpcode() == Instruction::Call && "Call instruction expected"); - auto Call = cast<CallInst>(I); - - if (!isConstCall(Call)) - return ValidatorResult(SCEVType::INVALID, S); + if (R->contains(I)) { + auto Call = cast<CallInst>(I); + if (!isConstCall(Call)) + return ValidatorResult(SCEVType::INVALID, S); + } return ValidatorResult(SCEVType::PARAM, S); } |