- Aug 31, 2010
-
-
Nick Lewycky authored
two are weak, we make them thunks to a new strong function) so don't iterate through the function list as we're modifying it. Also add back the outermost loop which got removed during the cleanups. llvm-svn: 112595
-
Owen Anderson authored
Don't perform an extra traversal of the function just to do cleanup. We can safely simplify instructions after each block has been processed without worrying about iterator invalidation. llvm-svn: 112594
-
Owen Anderson authored
llvm-svn: 112591
-
Owen Anderson authored
llvm-svn: 112590
-
Owen Anderson authored
More Chris-inspired JumpThreading fixes: use ConstantExpr to correctly constant-fold undef, and be more careful with its return value. This actually exposed an infinite recursion bug in ComputeValueKnownInPredecessors which theoretically already existed (in JumpThreading's handling of and/or of i1's), but never manifested before. This patch adds a tracking set to prevent this case. llvm-svn: 112589
-
Nick Lewycky authored
where we hash, compare and fold, instead of one iteration where we build up the hash buckets and a second one to fold. llvm-svn: 112582
-
Owen Anderson authored
Remove r111665, which implemented store-narrowing in InstCombine. Chris discovered a miscompilation in it, and it's not easily fixable at the optimizer level. I'll investigate reimplementing it in DAGCombine. llvm-svn: 112575
-
Owen Anderson authored
llvm-svn: 112560
-
Owen Anderson authored
llvm-svn: 112553
-
Owen Anderson authored
Re-apply r112539, being more careful to respect the return values of the constant folding methods. Additionally, use the ConstantExpr::get*() methods to simplify some constant folding. llvm-svn: 112550
-
Owen Anderson authored
llvm-svn: 112545
-
Owen Anderson authored
llvm-svn: 112543
-
Owen Anderson authored
Fixes and cleanups pointed out by Chris. In general, be careful to handle 0 results from ComputeValueKnownInPredecessors (indicating undef), and re-use existing constant folding APIs. llvm-svn: 112539
-
- Aug 29, 2010
-
-
Chris Lattner authored
instead of PromoteMemToReg. This allows it to stop using DF and DT, eliminating a computation of DT and DF from clang -O3. Clang is now down to 2 runs of DomFrontier. llvm-svn: 112457
-
Chris Lattner authored
assertingvh so we get a violent explosion if the pointer dangles. 2) Fix AliasSetTracker::deleteValue to remove call sites with by-pointer comparisons instead of by-alias queries. Using findAliasSetForCallSite can cause alias sets to get merged when they shouldn't, and can also miss alias sets when the call is readonly. #2 fixes PR6889, which only repros with a .c file :( llvm-svn: 112452
-
Chris Lattner authored
out of loops, just delete them. llvm-svn: 112451
-
Chris Lattner authored
symtab manipulation, so its faster (in addition to being more elegant) llvm-svn: 112450
-
Chris Lattner authored
llvm-svn: 112449
-
Chris Lattner authored
of AST to remove the hoisted instruction from the AST, since it is no longer in the loop. llvm-svn: 112448
-
Chris Lattner authored
LICM correctly. When sinking an instruction, it should not add entries for the sunk instruction to the AST, it should remove the entry for the sunk instruction. The blocks being sunk to are not in the loop, so their instructions shouldn't be in the AST (yet)! llvm-svn: 112447
-
Chris Lattner authored
keeping them around until the pass is destroyed, keep them around a) just when useful (not for outer loops) and b) destroy them right after we use them. This should reduce memory use and fixes potential bugs where a loop is deleted and another loop gets allocated to the same address. llvm-svn: 112446
-
Chris Lattner authored
claims that it preserves domfrontier if it doesn't really. llvm-svn: 112445
-
Chris Lattner authored
for the unroller to pretend it supports updating it. It still has a horrible hack for DomTree. llvm-svn: 112444
-
Dan Gohman authored
other filtering techniques, as those may allow it to filter out more obviously unprofitable candidates. llvm-svn: 112441
-
Dan Gohman authored
LSRInstance data structures up to date. This fixes some pessimizations caused by stale data which will be exposed in an upcoming change. llvm-svn: 112440
-
Dan Gohman authored
NarrowSearchSpaceUsingHeuristics into separate functions. llvm-svn: 112439
-
Dan Gohman authored
llvm-svn: 112438
-
Dan Gohman authored
llvm-svn: 112437
-
Dan Gohman authored
the high-level logic. llvm-svn: 112436
-
Dan Gohman authored
llvm-svn: 112435
-
Dan Gohman authored
llvm-svn: 112434
-
Chris Lattner authored
preserves domfrontier. It does preserve AA though. llvm-svn: 112419
-
Chris Lattner authored
require DomFrontier. Dropping this doesn't actually save any runs of the pass though. llvm-svn: 112418
-
Chris Lattner authored
Among other things, this uses SSAUpdater instead of PromoteMemToReg. llvm-svn: 112417
-
Chris Lattner authored
llvm-svn: 112412
-
Chris Lattner authored
This leads to much simpler code. llvm-svn: 112410
-
Chris Lattner authored
llvm-svn: 112409
-
Chris Lattner authored
llvm-svn: 112408
-
Chris Lattner authored
getUniqueExitBlocks instead of getExitBlocks and a manual set to eliminate dupes. llvm-svn: 112405
-
Chris Lattner authored
llvm-svn: 112404
-