Why does casting a function generate a run-time abort?
Ziemowit Laski
zlaski@apple.com
Fri Jun 18 23:43:00 GMT 2004
On 18 Jun 2004, at 16.08, Richard Henderson wrote:
> On Fri, Jun 18, 2004 at 03:53:04PM -0700, Ziemowit Laski wrote:
>> Because at least you know what you're calling, instead of having to
>> talk
>> back to the front-end du jour to find out.
>
> We know what we're calling -- a method. It's the details of how
> to find out exactly that method's address that's private to the
> front end.
A front-end deciding on an address of a method? Doesn't the linker
usually
do this? :-)
>
>>> Because you're NOT WRITING C. Because you're ALREADY outside the
>>> semantics of the C language, and so ...
>>>
>>>> for it guarantees
>>>> that ObjC is as portable as the C language underneath it.
>>>
>>> ... this says that you CAN NOT do what you're trying to do.
>>
>> Except that I _did_ do it, using a code fragment you described as
>> "overly complicated". :-)
>
> No, you did NOT. You wrote something that looked like C, but
> was not semantically valid C. Thus you did not write in C.
It was not strict standard-conforming C, I'll give you that. But it
definitely was GNU C (which, of course, the compiler we're both working
on supports). Of course, the original cast _was_ standard-conforming...
> Do you really want to continue arguing about this?
No. :-)
> You're not the
> one that has to work on the optimizers, after all.
No, not usually, but the reason I started this thread is to find a way
to solve
the temp variable bloat that we're getting hit with in ObjC. And I
think I
found it. :-) In the future, if/when you implement your METHOD_EXPR
doomsday
machine, I'll happily take a look at it, but right now we really need
to reduce the ObjC code bloat we're seeing with gcc 3.5.
Thanks,
--Zem
More information about the Gcc
mailing list