This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug rtl-optimization/35605] New: Label references are not updated after edge insertion


This problem can be seen by compiling testsuite/gfortran.dg/g77/ndrm2.f. The
label reference (after x87 stack compensation edge is inserted) is updated only
in final jump insn, but other references to the same label are left untouched.

We enter stack pass with:

(insn:TI 19 20 18 4 dnrm2.f:33 (set (reg/v/f:SI 1 dx [orig:73 next.2 ] [73])
        (label_ref:SI 53)) 47 {*movsi_1} (expr_list:REG_EQUAL (label_ref:SI 53)
        (insn_list:REG_LABEL_OPERAND 53 (nil))))

...

(insn 23 137 17 4 dnrm2.f:40 (set (reg:CCZ 17 flags)
        (compare:CCZ (reg/v/f:SI 1 dx [orig:73 next.2 ] [73])
            (label_ref:SI 53))) 5 {*cmpsi_1_insn} (insn_list:REG_LABEL_OPERAND
53 (nil)))

...

(jump_insn 24 245 355 4 dnrm2.f:40 (set (pc)
        (if_then_else (eq (reg:CCZ 17 flags)
                (const_int 0


-- 
           Summary: Label references are not updated after edge insertion
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: ubizjak at gmail dot com
 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=35605


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]