|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| | llvm-svn: 23411 | 
| | 
| 
| 
| 
| 
| 
| | This implements SimplifyCFG/branch-fold.ll, and is useful on ?:/min/max heavy
code
llvm-svn: 23410 | 
| | 
| 
| 
| | llvm-svn: 23408 | 
| | 
| 
| 
| | llvm-svn: 23407 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | not define a value that is used outside of it's block.  This catches many
more simplifications, e.g. 854 in 176.gcc, 137 in vpr, etc.
This implements branch-phi-thread.ll:test3.ll
llvm-svn: 23397 | 
| | 
| 
| 
| 
| 
| | predecessors.  This implements branch-phi-thread.ll::test1
llvm-svn: 23395 | 
| | 
| 
| 
| | llvm-svn: 23393 | 
| | 
| 
| 
| | llvm-svn: 23392 | 
| | 
| 
| 
| 
| 
| 
| | control across branches with determined outcomes.  More generality to follow.
This triggers a couple thousand times in specint.
llvm-svn: 23391 | 
| | 
| 
| 
| 
| 
| 
| | a problem in LoopStrengthReduction, where it would split critical edges
then confused itself with outdated loop information.
llvm-svn: 22776 | 
| | 
| 
| 
| 
| 
| 
| | Instead, just update the BB in-place.  This is both faster, and it prevents
split-critical-edges from shuffling the PHI argument list unneccesarily.
llvm-svn: 22765 | 
| | 
| 
| 
| | llvm-svn: 22667 | 
| | 
| 
| 
| 
| 
| 
| 
| | BasicBlock's removePredecessor routine.  This requires shuffling around
the definition and implementation of hasContantValue from Utils.h,cpp into
Instructions.h,cpp
llvm-svn: 22664 | 
| | 
| 
| 
| 
| 
| | occurred while bugpointing another testcase
llvm-svn: 22621 | 
| | 
| 
| 
| 
| 
| 
| 
| | Transforms/SimplifyCFG/2005-08-01-PHIUpdateFail.ll
the right way
llvm-svn: 22615 | 
| | 
| 
| 
| | llvm-svn: 22613 | 
| | 
| 
| 
| 
| 
| | function with no side-effects
llvm-svn: 22612 | 
| | 
| 
| 
| | llvm-svn: 22611 | 
| | 
| 
| 
| 
| 
| | some duplicated code
llvm-svn: 22610 | 
| | 
| 
| 
| 
| 
| | call it from the only place it is live.  No functionality changes.
llvm-svn: 22609 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20050801/027345.html
This breaks real programs and only fixes an obscure regression testcase.  A
real fix is in development.
llvm-svn: 22606 | 
| | 
| 
| 
| | llvm-svn: 22605 | 
| | 
| 
| 
| 
| 
| 
| 
| | consideration the case where a reference in an unreachable block could
occur.  This fixes Transforms/SimplifyCFG/2005-08-01-PHIUpdateFail.ll,
something I ran into while bugpoint'ing another pass.
llvm-svn: 22584 | 
| | 
| 
| 
| | llvm-svn: 22523 | 
| | 
| 
| 
| 
| 
| 
| 
| | The optimization for locally used allocas was not safe for allocas that
were read before they were written.  This change disables that optimization
in that case.
llvm-svn: 22318 | 
| | 
| 
| 
| | llvm-svn: 22263 | 
| | 
| 
| 
| 
| 
| | This fixes PR584 and Transforms/SimplifyCFG/2005-06-16-PHICrash.ll
llvm-svn: 22232 | 
| | 
| 
| 
| | llvm-svn: 22158 | 
| | 
| 
| 
| 
| 
| 
| | a call.  This fixes Prolangs-C++/deriv2, kimwitu++, and Misc-C++/bigfib
on X86 with -enable-x86-fastcc.
llvm-svn: 22023 | 
| | 
| 
| 
| 
| 
| | turning calls into invokes
llvm-svn: 21797 | 
| | 
| 
| 
| 
| 
| | not change code after testing it without retesting!
llvm-svn: 21741 | 
| | 
| 
| 
| | llvm-svn: 21736 | 
| | 
| 
| 
| | llvm-svn: 21719 | 
| | 
| 
| 
| 
| 
| | are moved to simplify-libcalls pass.
llvm-svn: 21614 | 
| | 
| 
| 
| 
| 
| 
| 
| | sinh, cosh, etc.
* Make the name comparisons for the fp libcalls a little more efficient by
  switching on the first character of the name before doing comparisons.
llvm-svn: 21611 | 
| | 
| 
| 
| | llvm-svn: 21480 | 
| | 
| 
| 
| | llvm-svn: 21427 | 
| | 
| 
| 
| | llvm-svn: 21393 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | convert this:
        %tmp.1 = seteq int %i, 0                ; <bool> [#uses=1]
        br bool %tmp.1, label %shortcirc_done, label %shortcirc_next
shortcirc_next:         ; preds = %entry
        %tmp.4 = seteq int %j, 0                ; <bool> [#uses=1]
        br label %shortcirc_done
shortcirc_done:         ; preds = %shortcirc_next, %entry
        %shortcirc_val = phi bool [ %tmp.4, %shortcirc_next ], [ true, %entry ]         ; <bool> [#uses=1]
to this:
        %tmp.1 = seteq int %i, 0                ; <bool> [#uses=1]
        %tmp.4 = seteq int %j, 0                ; <bool> [#uses=1]
        %shortcirc_val = select bool %tmp.1, bool true, bool %tmp.4             ; <bool> [#uses=1]
... which is later simplified by instcombine into an or.
llvm-svn: 21388 | 
| | 
| 
| 
| | llvm-svn: 21253 | 
| | 
| 
| 
| 
| 
| | Bill Wendling!!
llvm-svn: 20649 | 
| | 
| 
| 
| 
| 
| 
| 
| | using Function::arg_{iterator|begin|end}.  Likewise Module::g* -> Module::global_*.
This patch is contributed by Gabor Greif, thanks!
llvm-svn: 20597 | 
| | 
| 
| 
| | llvm-svn: 20463 | 
| | 
| 
| 
| | llvm-svn: 20343 | 
| | 
| 
| 
| | llvm-svn: 20334 | 
| | 
| 
| 
| 
| 
| 
| 
| | This does a simple form of "jump threading", which eliminates CFG edges that
are provably dead.  This triggers 90 times in the external tests, and
eliminating CFG edges is always always a good thing! :)
llvm-svn: 20300 | 
| | 
| 
| 
| | llvm-svn: 19898 | 
| | 
| 
| 
| 
| 
| 
| 
| | SimplifyCFG is one of those passes that we use for final cleanup: it should
not rely on other passes to clean up its garbage.  This fixes the "why are
trivially dead setcc's in the output of gccas" problem.
llvm-svn: 19212 | 
| | 
| 
| 
| | llvm-svn: 18799 | 
| | 
| 
| 
| 
| 
| | and the failure on make_dparser last night.
llvm-svn: 18766 |