This is the mail archive of the gcc-patches@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: [Patch, PR 57800] Waste work in gfc_match_call()


> On 23 July 2013 23:32:27 pchang9@cs.wisc.edu wrote:
>> Hi,
>>
>> The problem appears in revision 201034 in version 4.9. I attached a
>> one-line patch that fixes it.  I also reported this problem
>> at http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57800
>>
>> Bootstrap and regression-tested on x86_64-linux.
>>
>> In method "gfc_match_call()" in gcc/fortran/match.c, the loop on line
>> 4189 should break immediately after "i" is set to 1.
>>
>>
>> 2013-07-22  Chang  <pchang9@cs.wisc.edu>
>>
>>         * match.c (gfc_match_call): Exit loop after setting i.
>>
>>
>> Index: gcc/fortran/match.c
>> ===================================================================
>> --- gcc/fortran/match.c	(revision 201034)
>> +++ gcc/fortran/match.c	(working copy)
>> @@ -4188,7 +4188,10 @@
>>    i = 0;
>>    for (a = arglist; a; a = a->next)
>     for (a = arglist; a || i; a = a->next)
>
> Sounds more reasonable to me.
>
> To repeat the previous question, curious how you get at these? scev one-liner?
>
> Thanks,

We found these by analysis tool using LLVM, but not so-fancy as scev one-linear.
Of course, at very beginning we inspected the code manually.

Thanks,
-Chang



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