--
pinskia at gcc dot gnu dot org changed:
What|Removed |Added
Target Milestone|--- |4.3.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33181
--- Comment #4 from ubizjak at gmail dot com 2007-08-26 10:56 ---
C testcase:
--cut here--
extern void abort (void);
enum Status
{
P_ON_LOWER = -4,
P_ON_UPPER = -2,
P_FREE = -1
};
void
foo (enum Status *stat, double newUpper, double lower, double max)
{
if (newUpper = max)
--- Comment #5 from ubizjak at gmail dot com 2007-08-26 12:55 ---
The problem is in the way ifcvt handles IFs without ELSE blocks. Compiling c
testcase with -O2 -ffast-math (on x86_64 target), we hit check for else_bb in
noce_process_if_block(). We continue into line 2196 of ifcvt.c,
--- Comment #6 from hjl at lucon dot org 2007-08-26 14:42 ---
This patch
2007-08-26 H.J. Lu [EMAIL PROTECTED]
PR middle-end/33181
* ifcvt.c (noce_process_if_block): Don't move insn across
basic block.
--- gcc/ifcvt.c.cmov2007-08-24 06:02:57.0
--- Comment #7 from rguenther at suse dot de 2007-08-26 14:43 ---
Subject: Re: [4.3 Regression] Revision 127766 generates
bad cmov
On Sun, 26 Aug 2007, ubizjak at gmail dot com wrote:
So, previous non-note insn from (insn 33) is (insn 28)(!!) in a totally
unrelated BB, leading to
--- Comment #8 from rguenther at suse dot de 2007-08-26 14:46 ---
Subject: Re: [4.3 Regression] Revision 127766 generates
bad cmov
On Sun, 26 Aug 2007, hjl at lucon dot org wrote:
This patch
2007-08-26 H.J. Lu [EMAIL PROTECTED]
PR middle-end/33181
*
--- Comment #9 from hjl at lucon dot org 2007-08-26 15:01 ---
(In reply to comment #8)
2007-08-26 H.J. Lu [EMAIL PROTECTED]
PR middle-end/33181
* ifcvt.c (noce_process_if_block): Don't move insn across
basic block.
...
Yes. Or if we have
--- Comment #10 from hjl at gcc dot gnu dot org 2007-08-26 18:24 ---
Subject: Bug 33181
Author: hjl
Date: Sun Aug 26 18:24:19 2007
New Revision: 127810
URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=127810
Log:
gcc/
2007-08-26 H.J. Lu [EMAIL PROTECTED]
PR
--- Comment #11 from hjl at lucon dot org 2007-08-26 19:31 ---
Fixed.
--
hjl at lucon dot org changed:
What|Removed |Added
Status|NEW
--- Comment #2 from hjl at lucon dot org 2007-08-25 20:38 ---
[EMAIL PROTECTED] rrs]$ cat cmov.cc
#include stdlib.h
const double infinity = 1e100;
enum Status
{
P_ON_LOWER = -4,
P_ON_UPPER = -2,
P_FREE = -1,
P_FIXED = P_ON_UPPER + P_ON_LOWER
};
void
foo (enum Status stat,
--- Comment #3 from hjl at lucon dot org 2007-08-25 23:29 ---
A smaller testcase:
[EMAIL PROTECTED] cmov-1]$ cat cmov.cc
extern C void abort (void);
enum Status
{
P_ON_LOWER = -4,
P_ON_UPPER = -2,
P_FREE = -1,
};
void
foo (enum Status stat, double newUpper, double lower,
11 matches
Mail list logo