public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: optimization/10116: ce2: invalid merge of "join_bb" in the context of switch statements
@ 2003-03-23 20:36 rth
  0 siblings, 0 replies; 4+ messages in thread
From: rth @ 2003-03-23 20:36 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, marcel, rth, rth

Synopsis: ce2: invalid merge of "join_bb" in the context of switch statements

State-Changed-From-To: open->closed
State-Changed-By: rth
State-Changed-When: Sun Mar 23 20:30:33 2003
State-Changed-Why:
    http://gcc.gnu.org/ml/gcc-patches/2003-03/msg02032.html

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=10116


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: optimization/10116: ce2: invalid merge of "join_bb" in the context of switch statements
@ 2003-03-22  5:02 bangerth
  0 siblings, 0 replies; 4+ messages in thread
From: bangerth @ 2003-03-22  5:02 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, marcel, nobody, rth, rth

Synopsis: ce2: invalid merge of "join_bb" in the context of switch statements

Responsible-Changed-From-To: unassigned->rth
Responsible-Changed-By: bangerth
Responsible-Changed-When: Sat Mar 22 05:02:24 2003
Responsible-Changed-Why:
    Richard, this might be another simple one for you -- it
    contains a patch to ifcvt.c around some lines that you
    last changed with this patch
    
    revision 1.64
    date: 2001/08/22 05:21:10;  author: rth;  state: Exp;  lines: +6 -3
            * ifcvt.c (find_if_block): Allow join_bb as EXIT.
            (merge_if_block): Handle fallout from same.
    
    The patch in the PR only affects 3 lines and has a
    testcase that should be simple to verify. Would you mind
    taking a brief look?
    
    Thanks
      Wolfgang

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=10116


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: optimization/10116: ce2: invalid merge of "join_bb" in the context of switch statements
@ 2003-03-17  0:26 Marcel Moolenaar
  0 siblings, 0 replies; 4+ messages in thread
From: Marcel Moolenaar @ 2003-03-17  0:26 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR optimization/10116; it has been noted by GNATS.

From: Marcel Moolenaar <marcel@xcllnt.net>
To: gcc-gnats@gcc.gnu.org
Cc:  
Subject: Re: optimization/10116: ce2: invalid merge of "join_bb" in the context of switch statements
Date: Sun, 16 Mar 2003 16:16:42 -0800

 On Sun, Mar 16, 2003 at 11:46:00PM -0000, gcc-gnats@gcc.gnu.org wrote:
 > 
 > >Category:       optimization
 > >Responsible:    unassigned
 > >Synopsis:       ce2: invalid merge of "join_bb" in the context of switch statements
 > >Arrival-Date:   Sun Mar 16 23:46:00 UTC 2003
 
 This bug is being tracked with FreeBSD PR ia64/50059. The FreeBSD
 sibling can be closed when a vendor import has occured and the
 upgraded compiler contains a fix for this PR.
 
 -- 
  Marcel Moolenaar	  USPA: A-39004		 marcel@xcllnt.net


^ permalink raw reply	[flat|nested] 4+ messages in thread

* optimization/10116: ce2: invalid merge of "join_bb" in the context of switch statements
@ 2003-03-16 23:46 marcel
  0 siblings, 0 replies; 4+ messages in thread
From: marcel @ 2003-03-16 23:46 UTC (permalink / raw)
  To: gcc-gnats


>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==


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2003-03-23 20:30 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-03-23 20:36 optimization/10116: ce2: invalid merge of "join_bb" in the context of switch statements rth
  -- strict thread matches above, loose matches on Subject: below --
2003-03-22  5:02 bangerth
2003-03-17  0:26 Marcel Moolenaar
2003-03-16 23:46 marcel

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