From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7620 invoked by alias); 24 Jan 2003 11:06:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 7596 invoked by uid 71); 24 Jan 2003 11:06:00 -0000 Date: Fri, 24 Jan 2003 11:06:00 -0000 Message-ID: <20030124110600.7595.qmail@sources.redhat.com> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: "Christian Ehrhardt" Subject: Re: optimization/9279: [3.2 regression] [Sparc] combine bug Reply-To: "Christian Ehrhardt" X-SW-Source: 2003-01/txt/msg01412.txt.bz2 List-Id: The following reply was made to PR optimization/9279; it has been noted by GNATS. From: "Christian Ehrhardt" To: gcc-gnats@gcc.gnu.org, gcc-bugs@gcc.gnu.org, frank@g-n-u.de, nobody@gcc.gnu.org, gcc-prs@gcc.gnu.org, doko@debian.org Cc: Subject: Re: optimization/9279: [3.2 regression] [Sparc] combine bug Date: Fri, 24 Jan 2003 11:57:26 +0100 Hi, here's an even simpler example: int x = 0; char c, * p = &c, a = -1; int main () { if ((x?0:(unsigned char)((*p) = a)) == -1) return 0; return 1; } The exitcode of this program should always be 1 but it is zero if compiled with -O2. The problem is that these two insns (insn 24 23 25 (set (reg:SI 117) (zero_extend:SI (reg:QI 116))) 126 {*zero_extendqisi2_insn} (nil) (expr_list:REG_DEAD (reg:QI 116) (nil))) (insn 25 24 26 (set (reg:CC 100 %icc) (compare:CC (reg:SI 117) (const_int -1 [0xffffffffffffffff]))) 0 {*cmpsi_insn} (insn_list 24 (nil)) (expr_list:REG_DEAD (reg:SI 117) (nil))) are combined into one like this: (note 24 23 25 NOTE_INSN_DELETED) (insn 25 24 26 (set (reg:CC 100 %icc) (compare:CC (subreg:SI (reg:QI 116) 0) (const_int 255 [0xff]))) 0 {*cmpsi_insn} (nil) (expr_list:REG_DEAD (reg:QI 116) (nil))) regards Christian