public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug rtl-optimization/24418] New: Redudant compare to zero not eliminated
@ 2005-10-18 0:01 evancheng at gcc dot gnu dot org
2005-10-18 0:02 ` [Bug rtl-optimization/24418] " evancheng at gcc dot gnu dot org
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: evancheng at gcc dot gnu dot org @ 2005-10-18 0:01 UTC (permalink / raw)
To: gcc-bugs
Compile the attached code with -O3. It produces an redundent cmpl following a
subl:
subl 28(%ebp), %eax
cmpl $0, %eax
je L12
jg L10
Looks like it's missing a insn pattern so combine would combine subl + cmpl.
See http://gcc.gnu.org/ml/gcc/2005-10/msg00347.html
--
Summary: Redudant compare to zero not eliminated
Product: gcc
Version: 4.0.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: rtl-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: evancheng at gcc dot gnu dot org
GCC build triplet: i686-pc-linux-gnu
GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24418
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug rtl-optimization/24418] Redudant compare to zero not eliminated
2005-10-18 0:01 [Bug rtl-optimization/24418] New: Redudant compare to zero not eliminated evancheng at gcc dot gnu dot org
@ 2005-10-18 0:02 ` evancheng at gcc dot gnu dot org
2005-10-18 0:07 ` pinskia at gcc dot gnu dot org
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: evancheng at gcc dot gnu dot org @ 2005-10-18 0:02 UTC (permalink / raw)
To: gcc-bugs
------- Comment #1 from evancheng at gcc dot gnu dot org 2005-10-18 00:02 -------
Created an attachment (id=10014)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=10014&action=view)
C test case
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24418
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug rtl-optimization/24418] Redudant compare to zero not eliminated
2005-10-18 0:01 [Bug rtl-optimization/24418] New: Redudant compare to zero not eliminated evancheng at gcc dot gnu dot org
2005-10-18 0:02 ` [Bug rtl-optimization/24418] " evancheng at gcc dot gnu dot org
@ 2005-10-18 0:07 ` pinskia at gcc dot gnu dot org
2005-10-18 0:10 ` pinskia at gcc dot gnu dot org
2005-10-25 22:55 ` [Bug target/24418] " evancheng at gcc dot gnu dot org
3 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-10-18 0:07 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from pinskia at gcc dot gnu dot org 2005-10-18 00:07 -------
This is a partial regression from 2.95.3 and 3.3.3, 3.2.3 and 3.0.4:
where we had:
subl 28(%ebp),%eax
jne .L7
...
.L7:
testl %eax,%eax
jle .L8
--
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
GCC build triplet|i686-pc-linux-gnu |
GCC host triplet|i686-pc-linux-gnu |
Keywords| |missed-optimization
Last reconfirmed|0000-00-00 00:00:00 |2005-10-18 00:07:31
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24418
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug rtl-optimization/24418] Redudant compare to zero not eliminated
2005-10-18 0:01 [Bug rtl-optimization/24418] New: Redudant compare to zero not eliminated evancheng at gcc dot gnu dot org
2005-10-18 0:02 ` [Bug rtl-optimization/24418] " evancheng at gcc dot gnu dot org
2005-10-18 0:07 ` pinskia at gcc dot gnu dot org
@ 2005-10-18 0:10 ` pinskia at gcc dot gnu dot org
2005-10-25 22:55 ` [Bug target/24418] " evancheng at gcc dot gnu dot org
3 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-10-18 0:10 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from pinskia at gcc dot gnu dot org 2005-10-18 00:09 -------
and yes eax/reg 68 (or n) is dead after the compare in combine:
(insn 37 36 39 3 (parallel [
(set (reg/v:SI 68 [ n ])
(minus:SI (reg:SI 71)
(reg/v:SI 66 [ med ])))
(clobber (reg:CC 17 flags))
]) 172 {*subsi_1} (insn_list:REG_DEP_TRUE 36 (nil))
(expr_list:REG_DEAD (reg:SI 71)
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil))))
(insn 39 37 40 3 (set (reg:CC 17 flags)
(compare:CC (reg/v:SI 68 [ n ])
(const_int 0 [0x0]))) 2 {*cmpsi_1_insn} (insn_list:REG_DEP_TRUE 37
(nil))
(expr_list:REG_DEAD (reg/v:SI 68 [ n ])
(nil)))
Note the REG_DEAD, so what RTH said is wrong.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24418
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug target/24418] Redudant compare to zero not eliminated
2005-10-18 0:01 [Bug rtl-optimization/24418] New: Redudant compare to zero not eliminated evancheng at gcc dot gnu dot org
` (2 preceding siblings ...)
2005-10-18 0:10 ` pinskia at gcc dot gnu dot org
@ 2005-10-25 22:55 ` evancheng at gcc dot gnu dot org
3 siblings, 0 replies; 5+ messages in thread
From: evancheng at gcc dot gnu dot org @ 2005-10-25 22:55 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from evancheng at gcc dot gnu dot org 2005-10-25 22:55 -------
Closing this. It's not a bug. It's not safe to eliminate the cmpl. Its result
are read by je and jg:
je reads ZF, jg reads ZF and OF. Now consider
subl 0x80000000 0x1 (OF <- 1)
cmpl 0x7fffffff (OF <- 0)
--
evancheng at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |INVALID
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24418
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2005-10-25 22:55 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-10-18 0:01 [Bug rtl-optimization/24418] New: Redudant compare to zero not eliminated evancheng at gcc dot gnu dot org
2005-10-18 0:02 ` [Bug rtl-optimization/24418] " evancheng at gcc dot gnu dot org
2005-10-18 0:07 ` pinskia at gcc dot gnu dot org
2005-10-18 0:10 ` pinskia at gcc dot gnu dot org
2005-10-25 22:55 ` [Bug target/24418] " evancheng at gcc dot gnu dot org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).