1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 20:23:11 +01:00
llvm-mirror/lib/Transforms
Chris Lattner b688868418 Extend jump threading to support much more general threading
predicates.  This allows us to jump thread things like:

_ZN12StringSwitchI5ColorE4CaseILj7EEERS1_RAT__KcRKS0_.exit119:
  %tmp1.i24166 = phi i8 [ 1, %bb5.i117 ], [ %tmp1.i24165, %_Z....exit ], [ %tmp1.i24165, %bb4.i114 ] 
  %toBoolnot.i87 = icmp eq i8 %tmp1.i24166, 0     ; <i1> [#uses=1]
  %tmp4.i90 = icmp eq i32 %tmp2.i, 6              ; <i1> [#uses=1]
  %or.cond173 = and i1 %toBoolnot.i87, %tmp4.i90  ; <i1> [#uses=1]
  br i1 %or.cond173, label %bb4.i96, label %_ZN12...

Where it is "obvious" that when coming from %bb5.i117 that the 'and' is always 
false.  This triggers a surprisingly high number of times in the testsuite, 
and gets us closer to generating good code for doug's strswitch testcase.

This also make a bunch of other code in jump threading redundant, I'll rip
out in the next patch.  This survived an enable-checking llvm-gcc bootstrap.

llvm-svn: 86264
2009-11-06 18:15:14 +00:00
..
Hello Use raw_ostream::write_escaped instead of EscapeString. 2009-10-17 20:43:19 +00:00
Instrumentation Remove includes of Support/Compiler.h that are no longer needed after the 2009-10-25 06:57:41 +00:00
IPO remove a bunch of extraneous LLVMContext arguments 2009-11-06 04:27:31 +00:00
Scalar Extend jump threading to support much more general threading 2009-11-06 18:15:14 +00:00
Utils remove a bunch of extraneous LLVMContext arguments 2009-11-06 04:27:31 +00:00
Makefile The attached patches attempt to fix cross builds. For example, if you 2009-08-18 00:40:33 +00:00