--- Comment #10 from sje at gcc dot gnu dot org 2006-09-20 16:41 ---
Subject: Bug 28574
Author: sje
Date: Wed Sep 20 16:41:12 2006
New Revision: 117084
URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=117084
Log:
PR target/28574
* ifcvt.c (dead_or_predicable): Don't
--- Comment #11 from sje at cup dot hp dot com 2006-09-20 16:49 ---
Fix is now checked in.
--
sje at cup dot hp dot com changed:
What|Removed |Added
--- Comment #9 from sje at cup dot hp dot com 2006-09-14 22:37 ---
I don't see any way to delete a block without deleting the attached jumptable
so the only fix I can see is to not delete the block in the first place. The
block is being deleted on IA64 because it is a 'then block' on
--
mmitchel at gcc dot gnu dot org changed:
What|Removed |Added
Priority|P3 |P2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28574
--- Comment #1 from tbm at cyrius dot com 2006-08-02 17:17 ---
Created an attachment (id=11999)
-- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=11999action=view)
test case
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28574
--
pinskia at gcc dot gnu dot org changed:
What|Removed |Added
Target Milestone|--- |4.2.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28574
--- Comment #2 from steven at gcc dot gnu dot org 2006-08-02 19:03 ---
There are a million reasons why labels can disappear in GCC. This happens
because GCC deletes or keeps labels based on ref counting (LABEL_NUSES and
friends) and this is just too fragile.
The way for you to narrow
--- Comment #3 from tbm at cyrius dot com 2006-08-02 19:13 ---
Thanks for the explanation! I see the following two references in the
assembler file but I don't see any code_label references to those number in the
dumps.
//(insn/c 185 231 30 2 (set (reg/f:DI 14 r14 [386])
//
--- Comment #4 from tbm at cyrius dot com 2006-08-02 19:15 ---
Ah, sorry, looked for the wrong number. The last pass which has the case_label
is:
yasm-module.c.144r.peephole2:(code_label 48 47 49 11 [3 uses])
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28574
--- Comment #5 from tbm at cyrius dot com 2006-08-02 19:17 ---
So from 144r (peephole2) to 145r (ce3) it goes from:
;; Insn is not within a basic block
(code_label 48 47 49 11 [3 uses])
;; Insn is not within a basic block
(jump_insn 49 48 50 (addr_diff_vec:DI (label_ref:DI 48)
--
steven at gcc dot gnu dot org changed:
What|Removed |Added
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Last
--- Comment #6 from tbm at cyrius dot com 2006-08-02 19:43 ---
Slightly more reduced testcase:
typedef enum yasm_module_type {
YASM_MODULE_ARCH = 0,
YASM_MODULE_DBGFMT,
YASM_MODULE_OBJFMT,
YASM_MODULE_LISTFMT,
YASM_MODULE_OPTIMIZER
} yasm_module_type;
typedef
--- Comment #7 from steven at gcc dot gnu dot org 2006-08-02 20:52 ---
;; Insn is not within a basic block
(code_label 48 47 49 11 [3 uses])
;; Insn is not within a basic block
(jump_insn 49 48 50 (addr_diff_vec:DI (label_ref:DI 48)
[
(label_ref:DI 103)
--- Comment #8 from steven at gcc dot gnu dot org 2006-08-02 21:10 ---
Happens when we are in find_if_case_1, where we call:
delete_basic_block (then_bb);
The basic block we try to remove is this one:
;; basic block 5, loop depth 1, count 0
;; prev block 9, next block 6
;; pred:
;;
14 matches
Mail list logo