public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
From: marcel@xcllnt.net
To: gcc-gnats@gcc.gnu.org
Subject: optimization/10116: ce2: invalid merge of "join_bb" in the context of switch statements
Date: Sun, 16 Mar 2003 23:46:00 -0000	[thread overview]
Message-ID: <20030316234123.28549.qmail@sources.redhat.com> (raw)


>Number:         10116
>Category:       optimization
>Synopsis:       ce2: invalid merge of "join_bb" in the context of switch statements
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Mar 16 23:46:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     Marcel Moolenaar <marcel@xcllnt.net>
>Release:        GCC 3.2.2 (FreeBSD embedded)
>Organization:
>Environment:
os: FreeBSD 5-current
platform: ia64
gcc: (GCC) 3.2.2 [FreeBSD] 20030205 (release)
>Description:
The if converter on ia64 may end up merging basic blocks that are
not actually adjacent, even though merge_blocks_nomove() is used.
The situation given by the trigger case has a jump table between
"combo_bb' and 'join_bb'. As a result of the invalid merge, the jump
table gets eliminated causing a stale reference to a label.
Note that in this case the jump table can actually be eliminated, but
that's a different story.

The fix is based on the assumption that any instruction between 'combo_bb' and 'join_bb' cannot be a label as that would invalidate the
requirement that both BBs are adjacent.
>How-To-Repeat:
Compile the trigger case with -O with an ia64 (cross) compiler and
observe that the assembly output references a temporary label that
is not defined. For example:
% cc -O -S bug.i -o bug.s
>Fix:
Diff taken from the FreeBSD vendor imported code (whitespace corrupted, no doubt):

Index: ifcvt.c
===================================================================
RCS file: /home/ncvs/src/contrib/gcc/ifcvt.c,v
retrieving revision 1.1.1.4
diff -u -r1.1.1.4 ifcvt.c
--- ifcvt.c     1 Sep 2002 20:37:43 -0000       1.1.1.4
+++ ifcvt.c     16 Mar 2003 09:55:05 -0000
@@ -1934,9 +1934,10 @@
      is more than one remaining edge, it must come from elsewhere.  There
      may be zero incoming edges if the THEN block didn't actually join
      back up (as with a call to abort).  */
-  else if ((join_bb->pred == NULL
-           || join_bb->pred->pred_next == NULL)
-          && join_bb != EXIT_BLOCK_PTR)
+  else if ((join_bb->pred == NULL || join_bb->pred->pred_next == NULL)
+          && join_bb != EXIT_BLOCK_PTR
+          && (NEXT_INSN(combo_bb->end) == join_bb->head
+              || GET_CODE(NEXT_INSN(combo_bb->end)) != CODE_LABEL))
     {
       /* We can merge the JOIN.  */
       if (life_data_ok)
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="bug.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="bug.i"

dm9pZCAqTlNSZXR1cm5BZGRyZXNzKGludCBvZmZzZXQpCnsKCXN3aXRjaCAob2Zmc2V0KSB7Cglj
YXNlIDA6ICByZXR1cm4gX19idWlsdGluX3JldHVybl9hZGRyZXNzKDAgKyAxKTsKCWNhc2UgMTog
IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMSArIDEpOwoJY2FzZSAyOiAgcmV0dXJu
IF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygyICsgMSk7CgljYXNlIDM6ICByZXR1cm4gX19idWls
dGluX3JldHVybl9hZGRyZXNzKDMgKyAxKTsKCWNhc2UgNDogIHJldHVybiBfX2J1aWx0aW5fcmV0
dXJuX2FkZHJlc3MoNCArIDEpOwoJY2FzZSA1OiAgcmV0dXJuIF9fYnVpbHRpbl9yZXR1cm5fYWRk
cmVzcyg1ICsgMSk7CgljYXNlIDY6ICByZXR1cm4gX19idWlsdGluX3JldHVybl9hZGRyZXNzKDYg
KyAxKTsKCWNhc2UgNzogIHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNyArIDEpOwoJ
Y2FzZSA4OiAgcmV0dXJuIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcyg4ICsgMSk7CgljYXNlIDk6
ICByZXR1cm4gX19idWlsdGluX3JldHVybl9hZGRyZXNzKDkgKyAxKTsKCWNhc2UgMTA6IHJldHVy
biBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMTAgKyAxKTsKCWNhc2UgMTE6IHJldHVybiBfX2J1
aWx0aW5fcmV0dXJuX2FkZHJlc3MoMTEgKyAxKTsKCWNhc2UgMTI6IHJldHVybiBfX2J1aWx0aW5f
cmV0dXJuX2FkZHJlc3MoMTIgKyAxKTsKCWNhc2UgMTM6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJu
X2FkZHJlc3MoMTMgKyAxKTsKCWNhc2UgMTQ6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJl
c3MoMTQgKyAxKTsKCWNhc2UgMTU6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMTUg
KyAxKTsKCWNhc2UgMTY6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMTYgKyAxKTsK
CWNhc2UgMTc6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMTcgKyAxKTsKCWNhc2Ug
MTg6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMTggKyAxKTsKCWNhc2UgMTk6IHJl
dHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMTkgKyAxKTsKCWNhc2UgMjA6IHJldHVybiBf
X2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMjAgKyAxKTsKCWNhc2UgMjE6IHJldHVybiBfX2J1aWx0
aW5fcmV0dXJuX2FkZHJlc3MoMjEgKyAxKTsKCWNhc2UgMjI6IHJldHVybiBfX2J1aWx0aW5fcmV0
dXJuX2FkZHJlc3MoMjIgKyAxKTsKCWNhc2UgMjM6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2Fk
ZHJlc3MoMjMgKyAxKTsKCWNhc2UgMjQ6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3Mo
MjQgKyAxKTsKCWNhc2UgMjU6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMjUgKyAx
KTsKCWNhc2UgMjY6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMjYgKyAxKTsKCWNh
c2UgMjc6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMjcgKyAxKTsKCWNhc2UgMjg6
IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMjggKyAxKTsKCWNhc2UgMjk6IHJldHVy
biBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMjkgKyAxKTsKCWNhc2UgMzA6IHJldHVybiBfX2J1
aWx0aW5fcmV0dXJuX2FkZHJlc3MoMzAgKyAxKTsKCWNhc2UgMzE6IHJldHVybiBfX2J1aWx0aW5f
cmV0dXJuX2FkZHJlc3MoMzEgKyAxKTsKCWNhc2UgMzI6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJu
X2FkZHJlc3MoMzIgKyAxKTsKCWNhc2UgMzM6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJl
c3MoMzMgKyAxKTsKCWNhc2UgMzQ6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMzQg
KyAxKTsKCWNhc2UgMzU6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMzUgKyAxKTsK
CWNhc2UgMzY6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMzYgKyAxKTsKCWNhc2Ug
Mzc6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMzcgKyAxKTsKCWNhc2UgMzg6IHJl
dHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMzggKyAxKTsKCWNhc2UgMzk6IHJldHVybiBf
X2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMzkgKyAxKTsKCWNhc2UgNDA6IHJldHVybiBfX2J1aWx0
aW5fcmV0dXJuX2FkZHJlc3MoNDAgKyAxKTsKCWNhc2UgNDE6IHJldHVybiBfX2J1aWx0aW5fcmV0
dXJuX2FkZHJlc3MoNDEgKyAxKTsKCWNhc2UgNDI6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2Fk
ZHJlc3MoNDIgKyAxKTsKCWNhc2UgNDM6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3Mo
NDMgKyAxKTsKCWNhc2UgNDQ6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNDQgKyAx
KTsKCWNhc2UgNDU6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNDUgKyAxKTsKCWNh
c2UgNDY6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNDYgKyAxKTsKCWNhc2UgNDc6
IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNDcgKyAxKTsKCWNhc2UgNDg6IHJldHVy
biBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNDggKyAxKTsKCWNhc2UgNDk6IHJldHVybiBfX2J1
aWx0aW5fcmV0dXJuX2FkZHJlc3MoNDkgKyAxKTsKCWNhc2UgNTA6IHJldHVybiBfX2J1aWx0aW5f
cmV0dXJuX2FkZHJlc3MoNTAgKyAxKTsKCWNhc2UgNTE6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJu
X2FkZHJlc3MoNTEgKyAxKTsKCWNhc2UgNTI6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJl
c3MoNTIgKyAxKTsKCWNhc2UgNTM6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNTMg
KyAxKTsKCWNhc2UgNTQ6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNTQgKyAxKTsK
CWNhc2UgNTU6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNTUgKyAxKTsKCWNhc2Ug
NTY6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNTYgKyAxKTsKCWNhc2UgNTc6IHJl
dHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNTcgKyAxKTsKCWNhc2UgNTg6IHJldHVybiBf
X2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNTggKyAxKTsKCWNhc2UgNTk6IHJldHVybiBfX2J1aWx0
aW5fcmV0dXJuX2FkZHJlc3MoNTkgKyAxKTsKCWNhc2UgNjA6IHJldHVybiBfX2J1aWx0aW5fcmV0
dXJuX2FkZHJlc3MoNjAgKyAxKTsKCWNhc2UgNjE6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2Fk
ZHJlc3MoNjEgKyAxKTsKCWNhc2UgNjI6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3Mo
NjIgKyAxKTsKCWNhc2UgNjM6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNjMgKyAx
KTsKCWNhc2UgNjQ6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNjQgKyAxKTsKCWNh
c2UgNjU6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNjUgKyAxKTsKCWNhc2UgNjY6
IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNjYgKyAxKTsKCWNhc2UgNjc6IHJldHVy
biBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNjcgKyAxKTsKCWNhc2UgNjg6IHJldHVybiBfX2J1
aWx0aW5fcmV0dXJuX2FkZHJlc3MoNjggKyAxKTsKCWNhc2UgNjk6IHJldHVybiBfX2J1aWx0aW5f
cmV0dXJuX2FkZHJlc3MoNjkgKyAxKTsKCWNhc2UgNzA6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJu
X2FkZHJlc3MoNzAgKyAxKTsKCWNhc2UgNzE6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJl
c3MoNzEgKyAxKTsKCWNhc2UgNzI6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNzIg
KyAxKTsKCWNhc2UgNzM6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNzMgKyAxKTsK
CWNhc2UgNzQ6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNzQgKyAxKTsKCWNhc2Ug
NzU6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNzUgKyAxKTsKCWNhc2UgNzY6IHJl
dHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNzYgKyAxKTsKCWNhc2UgNzc6IHJldHVybiBf
X2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoNzcgKyAxKTsKCWNhc2UgNzg6IHJldHVybiBfX2J1aWx0
aW5fcmV0dXJuX2FkZHJlc3MoNzggKyAxKTsKCWNhc2UgNzk6IHJldHVybiBfX2J1aWx0aW5fcmV0
dXJuX2FkZHJlc3MoNzkgKyAxKTsKCWNhc2UgODA6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2Fk
ZHJlc3MoODAgKyAxKTsKCWNhc2UgODE6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3Mo
ODEgKyAxKTsKCWNhc2UgODI6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoODIgKyAx
KTsKCWNhc2UgODM6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoODMgKyAxKTsKCWNh
c2UgODQ6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoODQgKyAxKTsKCWNhc2UgODU6
IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoODUgKyAxKTsKCWNhc2UgODY6IHJldHVy
biBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoODYgKyAxKTsKCWNhc2UgODc6IHJldHVybiBfX2J1
aWx0aW5fcmV0dXJuX2FkZHJlc3MoODcgKyAxKTsKCWNhc2UgODg6IHJldHVybiBfX2J1aWx0aW5f
cmV0dXJuX2FkZHJlc3MoODggKyAxKTsKCWNhc2UgODk6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJu
X2FkZHJlc3MoODkgKyAxKTsKCWNhc2UgOTA6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJl
c3MoOTAgKyAxKTsKCWNhc2UgOTE6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoOTEg
KyAxKTsKCWNhc2UgOTI6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoOTIgKyAxKTsK
CWNhc2UgOTM6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoOTMgKyAxKTsKCWNhc2Ug
OTQ6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoOTQgKyAxKTsKCWNhc2UgOTU6IHJl
dHVybiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoOTUgKyAxKTsKCWNhc2UgOTY6IHJldHVybiBf
X2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoOTYgKyAxKTsKCWNhc2UgOTc6IHJldHVybiBfX2J1aWx0
aW5fcmV0dXJuX2FkZHJlc3MoOTcgKyAxKTsKCWNhc2UgOTg6IHJldHVybiBfX2J1aWx0aW5fcmV0
dXJuX2FkZHJlc3MoOTggKyAxKTsKCWNhc2UgOTk6IHJldHVybiBfX2J1aWx0aW5fcmV0dXJuX2Fk
ZHJlc3MoOTkgKyAxKTsKCX0KCXJldHVybiAwOwp9Cg==


             reply	other threads:[~2003-03-16 23:46 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-03-16 23:46 marcel [this message]
2003-03-17  0:26 Marcel Moolenaar
2003-03-22  5:02 bangerth
2003-03-23 20:36 rth

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=20030316234123.28549.qmail@sources.redhat.com \
    --to=marcel@xcllnt.net \
    --cc=gcc-gnats@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).