Skip to content
  • Kyle Butt's avatar
    IfConversion: Rescan diamonds. · 6262ca34
    Kyle Butt authored
    The cost of predicating a diamond is only the instructions that are not shared
    between the two branches. Additionally If a predicate clobbering instruction
    occurs in the shared portion of the branches (e.g. a cond move), it may still
    be possible to if convert the sub-cfg. This change handles these two facts by
    rescanning the non-shared portion of a diamond sub-cfg to recalculate both the
    predication cost and whether both blocks are pred-clobbering.
    
    Fixed 2 bugs before recommitting. Branch instructions must be compared and found
    identical before diamond conversion. Also, predicate-clobbering instructions in
    the shared prefix disqualifies a potential diamond conversion. Includes tests
    for both.
    
    llvm-svn: 279670
    6262ca34
Loading