|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| | 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 | 
| | 
| 
| 
| | llvm-svn: 18381 | 
| | 
| 
| 
| 
| 
| | This only fails on darwin or on X86 under valgrind.
llvm-svn: 18377 | 
| | 
| 
| 
| | llvm-svn: 18369 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | if (x) {
    code
    ...
  } else {
    code
    ...
  }
Turn it into:
  code
  if (x) {
    ...
  } else {
    ...
  }
This reduces code size and in some common cases allows us to completely
eliminate the conditional.  This turns several if/then/else blocks in loops
into straightline code in 179.art, turning the loops into single basic blocks
(good for modsched even!).
Maybe now brg will leave me alone ;-)
llvm-svn: 18366 | 
| | 
| 
| 
| | llvm-svn: 18028 | 
| | 
| 
| 
| | llvm-svn: 17699 | 
| | 
| 
| 
| 
| 
| | instructions, setting DefBlock to a block it did not have dom info for.
llvm-svn: 17697 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | This speeds up simplifycfg on this program, from 44.87s to 0.29s (with
a profiled build):
 #define CL0(a) case a: goto c;
 #define CL1(a) CL0(a##0) CL0(a##1) CL0(a##2) CL0(a##3) CL0(a##4) CL0(a##5) \
 CL0(a##6) CL0(a##7) CL0(a##8) CL0(a##9)
 #define CL2(a) CL1(a##0) CL1(a##1) CL1(a##2) CL1(a##3) CL1(a##4) CL1(a##5) \
 CL1(a##6) CL1(a##7) CL1(a##8) CL1(a##9)
 #define CL3(a) CL2(a##0) CL2(a##1) CL2(a##2) CL2(a##3) CL2(a##4) CL2(a##5) \
 CL2(a##6) CL2(a##7) CL2(a##8) CL2(a##9)
 #define CL4(a) CL3(a##0) CL3(a##1) CL3(a##2) CL3(a##3) CL3(a##4) CL3(a##5) \
 CL3(a##6) CL3(a##7) CL3(a##8) CL3(a##9)
 void f();
 void a() {
     int b;
  c: switch (b) {
         CL4(1)
     }
 }
This testcase is contrived to expose N^2 behavior, but this patch should speedup
simplifycfg on any programs that use large switch statements.  This testcase
comes from GCC PR17895.
llvm-svn: 17389 | 
| | 
| 
| 
| | llvm-svn: 17286 | 
| | 
| 
| 
| | llvm-svn: 17163 | 
| | 
| 
| 
| | llvm-svn: 17155 |