Andrew Pinski wrote:
>
> On Jul 4, 2006, at 5:07 PM, Yuri Pudgorodsky wrote:
>
>> Can someone make the decision to reopen PR optimization/12085?
>
> And I posted a patch to do the same in Objective-C mode as C mode :).
> http://gcc.gnu.org/ml/gcc-patches/2004-08/msg01013.html
>

That indeed will fix PR for all languages (btw why it was not commited
to mainline?),
but in a strange way. To get back to my original point, turning
particular example of
possibly undefined behavior is a bad practice. With current fix we have
different
syntaxes with identical semantic - calling function by casted pointer -
doing things
in a diverse way:

1) with direct cast: (int (*)(int)) foo
- warn/trap since 3.x
2) with cast through void fptr: (int (*)(int)) (int(*)()) foo
- warn/trap since 4.2 current
3) with assign: int (*bar)(int) = foo
- no warn, no ICE, generates proper call, does not inline
4) with union assign: ...
- no warn, no ICE, generates proper call, does not inline

Isn't it logical to make fix for all constructions do the same:
does not inline problematic call?

Reply via email to