> Would you care to characterize the number of extra variables created > at the tree level and the number of extra pseudos created at the rtl > level?
We only create as many variables as we have statics we promote right now. At the RTL level, global reg has 6373 regs to allocate with promote statics and eustores doing nothing (due to the global var threshold issue). It takes 376 seconds. This is a checking enabled compiler in all cases. With promote statics and the global var threshold kicked up so eustores eliminates dead stores, it has 5556 regs to allocate, but apparently can do so a lot faster, as it takes 62 seconds on my machine. Without promote statics, it has 199 regs to allocate (since the statics are all in memory :P) and takes no time. > I could see that there's room to be lazy and create hundreds > of extra unnecessary variables that will exacerbate this problem. > Yes, in the case of daten, we actually tickle the global var threshold, because we generate 60,000 copy-in/outs, so nothing eliminates *any* of the stores, useless or not, because they are all vuses/vdefs of GLOBAL_VAR. Kenny's plan was to do stupid copy-in/copy-out placement, and let things like eustores clean up the dead stores and copies. eustores simply kills the stores, and DCE takes care of the rest (DCE normally won't touch the stores because it doesn't know the static isn't used outside the function). Because of the global var usage that happens when you pass the global var threshold, eustores can't eliminate them, since they all have vuses/vdefs of the same variable. If you up the threshold from from 50,000 to like 5 billion (i haven't tried smaller numbers), eustores eliminates 63157 dead static stores in daten, and things are slightly happier > wherein the difference is that the first case uses two variables for > the different live ranges, and the second uses only one. We do the second right now. However, without smart copy placement, creating extra vars would still put at 2x or 3x above the global var threshold, at one vdef/vuse per var. > > > r~