Ian Lance Taylor <[EMAIL PROTECTED]> writes:

> I personally don't agree that this needs to be a documented extension.
> I'm simply going on a more general rule which I tried to state above:
> I don't think we should insert a trap call for undefined code.

I realized that I am still not stating my position very clearly.  I
don't think we should make any extra effort to make this code work:
after all, the code is undefined.  I just think 1) we should not
insert a trap; 2) we should not ICE.  That is, we should handle it
just as we handle code like "a[i++] = i++;": caveat lector.

For what it's worth, I tried to recreate the ICE after removing the
trap insertion, but failed.  So I'm not even sure the trap insertion
is fixing a real problem any more.  It works at the moment simply
because it treats the call through a cast as a call through a function
pointer, and therefore does not inline it.

The Objective C frontend does ICE on the test case which Yuri pointed
out, but that ICE is independent of the code in c-typeck.c.  As far as
I can tell in two minutes, that's a type error in the Objective C
frontend: it passes "int d = (double) x;" to the middle-end, and the
middle-end ICEs trying to assign a double value to an int variable.

Ian

Reply via email to