[llvm-commits] [llvm] r124526 - in /llvm/trunk: include/llvm/Transforms/Utils/ lib/CodeGen/ lib/Transforms/Scalar/ lib/Transforms/Utils/ test/CodeGen/X86/ test/Transforms/JumpThreading/ test/Transforms/SimplifyCFG/

Jakob Stoklund Olesen stoklund at 2pi.dk
Wed Feb 2 12:55:13 PST 2011


On Feb 2, 2011, at 10:51 AM, Evan Cheng wrote:

> 
> On Feb 2, 2011, at 10:30 AM, Jakob Stoklund Olesen wrote:
> 
>> After register allocation, a call still takes a long time to execute, so the relative benefit of duplicating the block is quite small.
> 
> I don't get this argument. The call is going to be executed either way, we are only concerned about whether getting rid of the unconditional branch is worth the code size increase. Isn't a  branch + call, which is just a branch to a branch, bad? The case I really want to get is duplicating a tail call into the predecessor.

Apparently, there are not many blocks containing a call and just one other instruction. These are the only places your change has an effect in the test suite:

Name:                                                                    | #Insts Beta   LLC/BETA |
External/Nurbs/nurbs                                                     | 15216  15278  0.996    | 
External/SPEC/CFP2000/183.equake/183.equake                              | 2896   2898   0.999    | 
External/SPEC/CFP2006/447.dealII/447.dealII                              | 99881  99941  0.999    | 
External/SPEC/CINT2006/483.xalancbmk/483.xalancbmk                       | 589228 589530 0.999    | 
MultiSource/Benchmarks/Prolangs-C/assembler/assembler                    | 5223   5226   0.999    | 
MultiSource/Benchmarks/Prolangs-C/cdecl/cdecl                            | 3117   3123   0.998    | 
MultiSource/Benchmarks/Prolangs-C++/deriv1/deriv1                        | 446    447    0.998    | 
MultiSource/Benchmarks/Prolangs-C++/ocean/ocean                          | 879    889    0.989    | 
MultiSource/Benchmarks/Prolangs-C++/trees/trees                          | 993    994    0.999    | 
SingleSource/Benchmarks/McGill/queens                                    | 267    268    0.996    | 
SingleSource/Benchmarks/Misc-C++/bigfib                                  | 2519   2523   0.998    | 
SingleSource/Benchmarks/Shootout-C++/ary                                 | 136    137    0.993    | 
SingleSource/Benchmarks/Shootout-C++/ary2                                | 173    174    0.994    | 
SingleSource/Benchmarks/Shootout-C++/ary3                                | 159    160    0.994    | 
SingleSource/Benchmarks/Shootout-C++/lists                               | 321    322    0.997    | 
SingleSource/Benchmarks/Shootout-C++/reversefile                         | 607    608    0.998    | 

I was unable to measure any performance impact.





More information about the llvm-commits mailing list