linux-mips
[Top] [All Lists]

Re: Error in gcc version 2.96 20000731

To: Kjeld Borch Egevang <kjelde@mips.com>
Subject: Re: Error in gcc version 2.96 20000731
From: "H . J . Lu" <hjl@lucon.org>
Date: Thu, 13 Sep 2001 08:10:40 -0700
Cc: linux-mips@oss.sgi.com
In-reply-to: <3BA0BF6E.2010300@mips.com>; from kjelde@mips.com on Thu, Sep 13, 2001 at 04:15:10PM +0200
References: <3BA0BF6E.2010300@mips.com>
Sender: owner-linux-mips@oss.sgi.com
User-agent: Mutt/1.2.5i
On Thu, Sep 13, 2001 at 04:15:10PM +0200, Kjeld Borch Egevang wrote:
> Hi all.
> 
> I discovered an optimization error in the current gcc for MIPS.
> 
> When I compile the code below with -O2 it clears the code-field just 
> after setting it. The instructions are mixed up. It works fine with -O1 
> and -O0.
> 
> If the "//" is removed in front of the first printf, it works too.
> 

The code isn't ISO C. You cannot declare something as short and then
access it as int. On x86:

# gcc alias.c -O
put_code after, code=5 5
gen_rtx, code=5
# gcc alias.c -O2
put_code after, code=5 0
gen_rtx, code=0

On mips,

# gcc alias.c -O
put_code after, code=5 5
gen_rtx, code=5
# gcc alias.c -O2
put_code after, code=5 5
gen_rtx, code=0

You can fix the code or add -fno-strict-aliasing

# gcc alias.c -O2 -fno-strict-aliasing
put_code after, code=5 5
gen_rtx, code=5



H.J.

<Prev in Thread] Current Thread [Next in Thread>