Skip to content
  • Evan Cheng's avatar
    Optimize code placement in loop to eliminate unconditional branches or move... · 2fa28110
    Evan Cheng authored
    Optimize code placement in loop to eliminate unconditional branches or move unconditional branch to the outside of the loop. e.g.
    
    ///       A:                                                                                                                                                                 
    ///       ...                                                                                                                                                                
    ///       <fallthrough to B>                                                                                                                                                 
    ///                                                                                                                                                                          
    ///       B:  --> loop header                                                                                                                                                
    ///       ...                                                                                                                                                                
    ///       jcc <cond> C, [exit]                                                                                                                                               
    ///                                                                                                                                                                          
    ///       C:                                                                                                                                                                 
    ///       ...                                                                                                                                                                
    ///       jmp B                                                                                                                                                              
    ///                                                                                                                                                                          
    /// ==>                                                                                                                                                                      
    ///                                                                                                                                                                          
    ///       A:                                                                                                                                                                 
    ///       ...                                                                                                                                                                
    ///       jmp B                                                                                                                                                              
    ///                                                                                                                                                                          
    ///       C:  --> new loop header                                                                                                                                            
    ///       ...                                                                                                                                                                
    ///       <fallthough to B>                                                                                                                                                  
    ///                                                                                                                                                                          
    ///       B:                                                                                                                                                                 
    ///       ...                                                                                                                                                                
    ///       jcc <cond> C, [exit] 
    
    llvm-svn: 71209
    2fa28110
Loading