From 0b79a7727d68a507837e827803859424cf3d997b Mon Sep 17 00:00:00 2001 From: Eli Friedman Date: Fri, 17 Jul 2009 04:28:42 +0000 Subject: Replace isTrapping with a new, similar method called isSafeToSpeculativelyExecute. The new method is a bit closer to what the callers actually care about in that it rejects more things callers don't want. It also adds more precise handling for integer division, and unifies code for analyzing the legality of a speculative load. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76150 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Analysis/LoopInfo.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) (limited to 'lib/Analysis/LoopInfo.cpp') diff --git a/lib/Analysis/LoopInfo.cpp b/lib/Analysis/LoopInfo.cpp index d350fa6f9e..bef6bef337 100644 --- a/lib/Analysis/LoopInfo.cpp +++ b/lib/Analysis/LoopInfo.cpp @@ -79,14 +79,9 @@ bool Loop::makeLoopInvariant(Instruction *I, bool &Changed, // Test if the value is already loop-invariant. if (isLoopInvariant(I)) return true; - // Don't hoist instructions with side-effects. - if (I->isTrapping()) + if (!I->isSafeToSpeculativelyExecute()) return false; - // Don't hoist PHI nodes. - if (isa(I)) - return false; - // Don't hoist allocation instructions. - if (isa(I)) + if (I->mayReadFromMemory()) return false; // Determine the insertion point, unless one was given. if (!InsertPt) { -- cgit v1.2.3