This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Predictive commoning leads to register to register moves through memory.


On 08/28/2015 09:43 AM, Simon Dardis wrote:

Following Jeff's advice[1] to extract more information from GCC, I've
narrowed the cause down to the predictive commoning pass inserting
the load in a loop header style basic block. However, the next pass
in GCC, tree-cunroll promptly removes the loop and joins the loop
header to the body of the (non)loop. More oddly, disabling
conditional store elimination pass or the dominator optimizations
pass or disabling of jump-threading with --param
max-jump-thread-duplication-stmts=0 nets the above assembly code. Any
ideas on an approach for this issue?
I'd probably start by looking at the .optimized tree dump in both cases to understand the difference, then (most liklely) tracing that through the RTL optimizers into the register allocator.

jeff


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]