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 tree-optimization/26169] [4.2 Regression] ICE in duplicate_ssa_name
Date: Wed, 08 Feb 2006 17:46:00 -0000	[thread overview]
Message-ID: <20060208174626.2979.qmail@sourceware.org> (raw)
In-Reply-To: <bug-26169-6528@http.gcc.gnu.org/bugzilla/>



------- Comment #7 from law at redhat dot com  2006-02-08 17:46 -------
Subject: Re:  [4.2 Regression] ICE in
        duplicate_ssa_name

On Wed, 2006-02-08 at 12:43 +0000, pinskia at gcc dot gnu dot org wrote:
> 
> ------- Comment #4 from pinskia at gcc dot gnu dot org  2006-02-08 12:43 -------
> (In reply to comment #3)
> > I didn't trip over anything like this on my x86 testing, but I have
> > been able to reproduce it with a cross compiler.  The fix is
> > pretty trivial, but it'll take until sometime tomorrow before the
> > regression testing and such is complete.
> 
> I should mention why you did not trip over it on the x86 testing orginally.
> This:
>   if (p == 0)
>     if (do_create)
> Was orginally:
>   if (p == 0 && do_create)
> Which causes a slightly different IR.
This patch should fix the various instances of the ICE in
duplicate_ssa_name.

Basically VRP performed a constant propagation, changing  the
index in an array reference from a variable to a constant.  When
this occurs we queue SSA graph updates for the virtual operands
of the statement.  As a side effect, the virtual operands are
no longer SSA_NAMEs, but instead _DECL nodes.

We then find that we're able to thread through the block containing
the updated array reference.  The block duplication code doesn't
know how to handle this case and dies.

This patch simply handles any queued SSA updates before dealing
with jump threads.  DOM does the exact same thing.

However, my gut tells me that this "solution" is mostly an artifact
of how the old old old SSA graph updating code in DOM worked.  I
suspect that it wouldn't be terribly difficult to do all the
SSA graph updates at the same time.  Doing so would probably be a
compile-time win as well.

Regardless, this patch should bring various failing targets back
into bootstrap land.

Bootstrapped and regression tested on i686-pc-linux-gnu; I've
also verified the ICE is fixed using cross compilers.










------- Comment #8 from law at redhat dot com  2006-02-08 17:46 -------
Created an attachment (id=10803)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=10803&action=view)


-- 


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


  parent reply	other threads:[~2006-02-08 17:46 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-08  4:17 [Bug tree-optimization/26169] New: " pinskia at gcc dot gnu dot org
2006-02-08  4:20 ` [Bug tree-optimization/26169] " pinskia at gcc dot gnu dot org
2006-02-08  4:22 ` pinskia at gcc dot gnu dot org
2006-02-08  7:55 ` law at redhat dot com
2006-02-08 12:43 ` pinskia at gcc dot gnu dot org
2006-02-08 16:10 ` uweigand at gcc dot gnu dot org
2006-02-08 16:55 ` law at redhat dot com
2006-02-08 17:46 ` law at redhat dot com [this message]
2006-02-08 17:47 ` 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=20060208174626.2979.qmail@sourceware.org \
    --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).