Skip to content
  • Chris Lattner's avatar
    Extend jump threading to support much more general threading · 68d2417e
    Chris Lattner authored
    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
    68d2417e
Loading