[Bug middle-end/50251] [4.7 Regression] Revision 178353 caused many test failures
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Sep 2 09:42:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50251
--- Comment #12 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-09-02 09:40:33 UTC ---
(In reply to comment #3)
> Created attachment 25162 [details]
> optimized dump
>
> 1. The alloca in main is transformed into this declaration:
>
> <unnamed-unsigned:8> D.2129[24];
>
> and accessed like this:
>
> iftmp.6_13 = MEM[symbol: D.2129, index: ivtmp.30_31, step: 4,
> offset: 4294967292B];
>
> MEM[symbol: D.2129, index: ivtmp.30_31, step: 4, offset: 0B] = D.2105_15;
>
> D.2099_18 = MEM[(int *)&D.2129][5]{lb: 0 sz: 4};
>
> MEM[symbol: D.2129, index: ivtmp.30_31, step: 4, offset: 0B] = 0;
>
>
> 2. __builtin_stack_restore/__builtin_stack_restore in main are not optimized
> away, because the restored value is potentially used. The restored value is the
> same as the current value, so the restore is redundant, but that's not checked
> in optimize_stack_restore.
>
> saved_stack.3_5 = __builtin_stack_save ();
>
> __builtin_stack_restore (saved_stack.3_5);
It does try it here:
second_stack_restore:
/* If there's exactly one use, then zap the call to __builtin_stack_save.
If there are multiple uses, then the last one should remove the call.
In any case, whether the call to __builtin_stack_save can be removed
or not is irrelevant to removing the call to __builtin_stack_restore. */
if (has_single_use (gimple_call_arg (call, 0)))
but for some reason it doesn't trigger?
More information about the Gcc-bugs
mailing list