public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "law at redhat dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug middle-end/52306] [4.8/4.9 regression] ICE in cselib_record_set, at cselib.c:2158
Date: Mon, 10 Feb 2014 05:37:00 -0000	[thread overview]
Message-ID: <bug-52306-4-dZXVcAPYOq@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-52306-4@http.gcc.gnu.org/bugzilla/>

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52306

Jeffrey A. Law <law at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |law at redhat dot com
           Assignee|unassigned at gcc dot gnu.org      |law at redhat dot com

--- Comment #28 from Jeffrey A. Law <law at redhat dot com> ---
The problem here is clearly reload.

reload has an optimization for reloading an input value of the current insn
where it looks at the prior insn to see if it sets the same (unallocated)
pseudo register.  If so and replacing the unallocated pseudo in the prior insn
results in an insn that is recognized and satisfies its constraints, then the
optimization is applied.

Perhaps RTL will make this clearly.  This is the key block after emitting
reload insns for insn 71:

(code_label 87 225 69 10 13 "" [1 uses])
(note 69 87 245 10 [bb 10] NOTE_INSN_BASIC_BLOCK)
(insn 245 69 70 10 (set (reg:SI 8 %a0)
        (reg/v/f:SI 7 %d7 [orig:43 cur ] [43])) j.c:44 -1
     (nil))
(insn 70 245 246 10 (set (reg/f:SI 0 %d0 [orig:46 D.1493 ] [46])
        (mem/f:SI (reg:SI 8 %a0) [3 cur_22->prefix+0 S4 A16])) j.c:44 39
{*movsi_m68k2}
     (nil))
(insn 246 70 247 10 (set (reg:SI 8 %a0)
        (reg:SI 54 [ ivtmp.11 ])) j.c:44 -1
     (nil))
(insn 247 246 71 10 (set (reg:SI 54 [ ivtmp.11 ])
        (plus:SI (reg:SI 54 [ ivtmp.11 ])
            (const_int 4 [0x4]))) j.c:44 141 {*addsi3_internal}
     (nil))
(insn 71 247 240 10 (set (reg/f:SI 48 [ D.1497 ])
        (mem/f:SI (post_inc:SI (reg:SI 8 %a0)) [3 MEM[base: 0B, index:
ivtmp.11_45, offset: 0B]+0 S4 A16])) j.c:44 39 {*movsi_m68k2}
     (expr_list:REG_INC (reg:SI 8 %a0)
        (expr_list:REG_INC (reg:SI 8 %a0)
            (nil))))
(note 240 71 73 NOTE_INSN_DELETED)
(insn 73 240 74 10 (set (cc0)
        (compare (reg/f:SI 0 %d0 [orig:46 D.1493 ] [46])
            (mem/f:SI (reg/f:SI 48 [ D.1497 ]) [3 _30->prefix+0 S4 A16])))
j.c:44 16 {*m68k.md:492}
     (expr_list:REG_DEAD (reg/f:SI 48 [ D.1497 ])
        (nil)))
(jump_insn 74 73 132 10 (set (pc)
        (if_then_else (eq (cc0)
                (const_int 0 [0]))
            (label_ref:SI 114)
            (pc))) j.c:44 405 {beq}
     (int_list:REG_BR_PROB 300 (nil))
 -> 114)



We are processing insn 73.  It has an input reload for (reg:SI 48).  The prior
insn (71) has (reg:SI 48) as its output.  So ideally whatever reload register
we use to satisfy (reg:SI 48) would be used for the output of 71 and the input
of 73.   In this specific case, the reload register selected for the input
reload of insn 73 is a0.  Substituting a0 for (reg:SI 48) results in insn 71
being a recognizable, successfully constrained insn, but it is ill-formed as it
uses a0 within an auto-increment addressing mode and elsewhere in the same
insn.

It's worth noting that the selection of a0 as the reload register for the input
value of insn 73 is legitimate.  It's only the back-substitution of a0 into the
output of insn 71 that is invalid.

A patch to address this properly in reload is in testing.


  parent reply	other threads:[~2014-02-10  5:37 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-18 23:32 [Bug middle-end/52306] New: ICE in CSE tg at mirbsd dot org
2012-03-25 12:47 ` [Bug middle-end/52306] " aoliva at gcc dot gnu.org
2012-03-25 13:51 ` aoliva at gcc dot gnu.org
2012-05-06 14:29 ` tg at mirbsd dot org
2012-05-06 17:05 ` tg at mirbsd dot org
2012-12-04  9:27 ` tg at mirbsd dot org
2012-12-04 10:29 ` mikpe at it dot uu.se
2012-12-04 12:59 ` tg at mirbsd dot org
2012-12-04 22:06 ` mikpe at it dot uu.se
2012-12-06  9:50 ` mikpe at it dot uu.se
2012-12-06  9:53 ` jakub at gcc dot gnu.org
2012-12-24  0:53 ` tg at mirbsd dot org
2013-01-29 21:17 ` [Bug middle-end/52306] ICE in cselib_record_set, at cselib.c:2158 tg at mirbsd dot org
2013-01-29 21:26 ` tg at mirbsd dot org
2013-01-29 23:30 ` tg at mirbsd dot org
2013-01-30 17:34 ` mikpe at it dot uu.se
2013-01-30 17:50 ` mikpe at it dot uu.se
2013-02-06 23:25 ` mikpe at it dot uu.se
2013-02-07  8:14 ` jakub at gcc dot gnu.org
2013-08-17 17:31 ` tg at mirbsd dot org
2013-08-17 18:44 ` tg at mirbsd dot org
2013-08-22 16:28 ` tg at mirbsd dot org
2013-12-19  9:02 ` schwab@linux-m68k.org
2013-12-19 10:40 ` mikpelinux at gmail dot com
2013-12-19 11:12 ` [Bug middle-end/52306] [4.8/4.9 regression] " ebotcazou at gcc dot gnu.org
2013-12-19 11:22 ` schwab@linux-m68k.org
2013-12-19 11:28 ` amker.cheng at gmail dot com
2013-12-19 15:18 ` rguenth at gcc dot gnu.org
2014-02-10  5:37 ` law at redhat dot com [this message]
2014-02-10 16:26 ` law at gcc dot gnu.org
2014-02-10 16:26 ` [Bug middle-end/52306] [4.8 " law at redhat dot com
2014-02-19 22:02 ` schwab@linux-m68k.org
2014-02-23 14:21 ` mikpelinux at gmail dot com
2014-05-22  9:07 ` rguenth at gcc dot gnu.org
2014-12-19 13:44 ` jakub at gcc dot gnu.org
2015-01-19 22:34 ` law at redhat dot com

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-52306-4-dZXVcAPYOq@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).