diff options
| author | Davide Italiano <davide@freebsd.org> | 2017-07-18 15:42:59 +0000 |
|---|---|---|
| committer | Davide Italiano <davide@freebsd.org> | 2017-07-18 15:42:59 +0000 |
| commit | 6da7db31df9cbee80af4f471da6065ab64dc2e11 (patch) | |
| tree | eb76ee54484b6873a206c8c6d8e5c7dc2107bbc8 /llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp | |
| parent | 4dfa732750476fb5a1f9fef78cb311a87ca9da51 (diff) | |
| download | bcm5719-llvm-6da7db31df9cbee80af4f471da6065ab64dc2e11.tar.gz bcm5719-llvm-6da7db31df9cbee80af4f471da6065ab64dc2e11.zip | |
[TRE] Simplify canTRE() a bit using all_of(). NFCI.
This has a ~11 years old FIXME, which may not be true today.
We might consider removing this code altogether.
llvm-svn: 308319
Diffstat (limited to 'llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp b/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp index 9397b87cdf5..90c5c243f46 100644 --- a/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp +++ b/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp @@ -68,6 +68,7 @@ #include "llvm/IR/DerivedTypes.h" #include "llvm/IR/DiagnosticInfo.h" #include "llvm/IR/Function.h" +#include "llvm/IR/InstIterator.h" #include "llvm/IR/Instructions.h" #include "llvm/IR/IntrinsicInst.h" #include "llvm/IR/Module.h" @@ -90,16 +91,10 @@ STATISTIC(NumAccumAdded, "Number of accumulators introduced"); /// If it contains any dynamic allocas, returns false. static bool canTRE(Function &F) { // Because of PR962, we don't TRE dynamic allocas. - for (auto &BB : F) { - for (auto &I : BB) { - if (AllocaInst *AI = dyn_cast<AllocaInst>(&I)) { - if (!AI->isStaticAlloca()) - return false; - } - } - } - - return true; + return llvm::all_of(instructions(F), [](Instruction &I) { + auto *AI = dyn_cast<AllocaInst>(&I); + return !AI || AI->isStaticAlloca(); + }); } namespace { |

