diff options
-rw-r--r-- | llvm/lib/Transforms/Scalar/GVNHoist.cpp | 4 | ||||
-rw-r--r-- | llvm/test/Transforms/GVNHoist/hoist-recursive-geps.ll | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Scalar/GVNHoist.cpp b/llvm/lib/Transforms/Scalar/GVNHoist.cpp index b09bd36b6b4..023d1255064 100644 --- a/llvm/lib/Transforms/Scalar/GVNHoist.cpp +++ b/llvm/lib/Transforms/Scalar/GVNHoist.cpp @@ -891,6 +891,10 @@ private: if (MaxDepthInBB != -1 && InstructionNb++ >= MaxDepthInBB) break; + // Do not value number terminator instructions. + if (!isa<TerminatorInst>(&I1)) + break; + if (auto *Load = dyn_cast<LoadInst>(&I1)) LI.insert(Load, VN); else if (auto *Store = dyn_cast<StoreInst>(&I1)) diff --git a/llvm/test/Transforms/GVNHoist/hoist-recursive-geps.ll b/llvm/test/Transforms/GVNHoist/hoist-recursive-geps.ll index 76bc7c26e81..3cc1d993aff 100644 --- a/llvm/test/Transforms/GVNHoist/hoist-recursive-geps.ll +++ b/llvm/test/Transforms/GVNHoist/hoist-recursive-geps.ll @@ -8,9 +8,9 @@ ; CHECK: load ; CHECK: load ; CHECK: fsub -; CHECK: fmul ; CHECK: fsub ; CHECK: fmul +; CHECK: fmul ; CHECK-NOT: fsub ; CHECK-NOT: fmul |