optimization/8300: [3.2/3.3/3.4 regression] [sparc] ICE in gen_reg_rtx, at emit-rtl.c:662

Robert Schiele rschiele@uni-mannheim.de
Mon Mar 17 09:25:00 GMT 2003


On Sun, Mar 16, 2003 at 11:26:37PM -0000, rth@gcc.gnu.org wrote:
> Synopsis: [3.2/3.3/3.4 regression] [sparc] ICE in gen_reg_rtx, at emit-rtl.c:662
> 
> State-Changed-From-To: analyzed->open
> State-Changed-By: rth
> State-Changed-When: Sun Mar 16 23:26:37 2003
> State-Changed-Why:
>     The code is illegal because *(&c+1) is not an object.

Well, I can show that this is not the problem:

Rewriting the code as

void a() {
    double b;
    int c;
    c = *((int*)&b) && (*(&c + 1) = 0);
}

shows the same problem and as c is explicitly defined here _before_,
*(&c + 1) is also well defined.

And then we have two bugs here:

1. My rewritten example is legal code with no doubt and produces an
   ICE whit optimization.

2. The original sample is accepted is accepted without optimization,
   although you say, it is illegal.

Robert

-- 
Robert Schiele			Tel.: +49-621-181-2517
Dipl.-Wirtsch.informatiker	mailto:rschiele@uni-mannheim.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 481 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-bugs/attachments/20030317/8964c274/attachment.sig>


More information about the Gcc-bugs mailing list