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==
next 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: linkBe 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).