On 19/11/13 17:48, Jeff Law wrote: > On 11/19/13 10:32, Steven Bosscher wrote: >> >> Yes. In the GCC3 days it was important for sincos on i386, and on mk68 >> it used to be important for some of the funnier patterns. Not sure if >> it's still useful today, though. Might be worth looking into, just to >> avoid the confusion in the future. > I doubt it's changed all that much :-) > >> >> There's been confusion about this before, where people assumed >> single_set really means "just one SET in this pattern". (ISTR fixing >> gcse.c's hash_scan_rtx for this at some point...?). But that's not the >> semantics of single_set. > Yes. And I'd expect confusion to continue :( Not sure if creating > renaming to capture the actual semantics would help here. > >> >> The proper test for "just one SET" is (!multiple_sets && single_set). >> At least, that's how I've always coded it... > Seems reasonable for those cases where you have to ensure there really > is just one set. > > > jeff >
Provided we correctly note the other values that are killed, we can handle multiple sets safely. The one restriction we have to watch is where the dead set operations kill input values to the live set operation. I've committed my patch to trunk. I'll leave it to gestate a couple of days, but this is also needed on the active release branches as well. R.