[PATCH] Detect loops in find_comparison_args

Paolo Bonzini bonzini@gnu.org
Thu Jul 26 07:28:00 GMT 2012


Il 26/07/2012 04:25, Sandra Loosemore ha scritto:
> On 07/25/2012 01:27 AM, Paolo Bonzini wrote:
>> 
>> What I'm worried about is the extra cost of malloc-ing and free-ing
>> the pointer set.  Perhaps you can skip the pointer set creation in
>> the common case where find_comparison_args does not iterate?
>> Something like this:
>> 
>> [snip]
> 
> I think this version is a little neater; it just defers
> initialization of the pointer set to the end of the loop.

But the while condition could still fail right after you create the set,
and I would expect that to be the common case.

Paolo

> I checked
> the test case on the two targets where we've previously observed
> failures (the original one on MIPS and the current one on PowerPC),
> as well as doing a full bootstrap and regression-test on x86_64.  OK
> to check in?
> 
> -Sandra
> 
> 
> 2012-07-25  Andrew Jenner  <andrew@codesourcery.com> Sandra Loosemore
> <sandra@codesourcery.com>
> 
> gcc/ * cse.c (find_comparison_args): Check for cycles of any length.
> 
> gcc/testsuite/ * gcc.c-torture/compile/pr50380.c: Add code to cause
> cycle of length 2.
> 




More information about the Gcc-patches mailing list