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).