diff options
-rw-r--r-- | lib/Transforms/Scalar/GVN.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/Transforms/Scalar/GVN.cpp b/lib/Transforms/Scalar/GVN.cpp index 272ad1b99b..42fbc78671 100644 --- a/lib/Transforms/Scalar/GVN.cpp +++ b/lib/Transforms/Scalar/GVN.cpp @@ -862,6 +862,12 @@ bool GVN::processNonLocalLoad(LoadInst* L, DenseMap<BasicBlock*, Value*> deps; MD.getNonLocalDependency(L, deps); + // If we had to process more than one hundred blocks to find the + // dependencies, this load isn't worth worrying about. Optimizing + // it will be too expensive. + if (deps.size() > 100) + return false; + DenseMap<BasicBlock*, Value*> repl; // Filter out useless results (non-locals, etc) |