From 516eb1c1396bc0a2b35573e58c567d6092ed5fd0 Mon Sep 17 00:00:00 2001 From: Owen Anderson Date: Tue, 26 Aug 2008 22:07:42 +0000 Subject: Put a heuristic in place to prevent GVN from falling into bad cases with massively complicated CFGs. This speeds up a particular testcase from 12+ hours to 5 seconds with little perceptible loss of quality. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55391 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Scalar/GVN.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'lib/Transforms/Scalar') diff --git a/lib/Transforms/Scalar/GVN.cpp b/lib/Transforms/Scalar/GVN.cpp index 272ad1b..42fbc78 100644 --- a/lib/Transforms/Scalar/GVN.cpp +++ b/lib/Transforms/Scalar/GVN.cpp @@ -862,6 +862,12 @@ bool GVN::processNonLocalLoad(LoadInst* L, DenseMap 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 repl; // Filter out useless results (non-locals, etc) -- cgit v1.1