optimization/8154: gcj not emitting switch table

aph@gcc.gnu.org aph@gcc.gnu.org
Tue Oct 8 07:36:00 GMT 2002


Synopsis: gcj not emitting switch table

State-Changed-From-To: open->analyzed
State-Changed-By: aph
State-Changed-When: Tue Oct  8 07:36:37 2002
State-Changed-Why:
    Looks like try_optimize_cfg is making a mess of this -- we end up with 
    (insn 53 84 54 1 0x400d0fd0 (set (reg/f:SI 80)
            (label_ref:SI 57)) 38 {*movsi_1} (nil)
        (insn_list:REG_LABEL 57 (expr_list:REG_EQUAL (label_ref:SI 57)
                (nil))))
    
    (insn 54 53 55 1 0x400d0fd0 (set (reg:SI 81)
            (mem/u:SI (plus:SI (mult:SI (reg:SI 78)
                        (const_int 4 [0x4]))
                    (reg/f:SI 80)) [0 S4 A8])) 38 {*movsi_1} (nil)
        (nil))
    
    (jump_insn 55 54 56 1 0x400d0fd0 (parallel [
                (set (pc)
                    (reg:SI 81))
                (use (label_ref 57))
            ]) 370 {*tablejump_1} (nil)
        (nil))
    ;; End of basic block 1, registers live:
     (nil)
    
    (barrier 56 55 57)
    
    ;; Insn is not within a basic block
    (code_label 57 56 58 10 "" [2 uses])
    
    ;; Insn is not within a basic block
    (jump_insn 58 57 59 (nil) (addr_vec:SI [
                (label_ref:SI 19)
                (label_ref:SI 23)
                (label_ref:SI 27)
                (label_ref:SI 31)
                (label_ref:SI 35)
                (label_ref:SI 39)
                (label_ref:SI 43)
            ]) -1 (nil)
        (nil))
    
    turning into 
    
    (insn 53 84 54 1 0x400d0fd0 (set (reg/f:SI 80)
            (label_ref:SI 57)) 38 {*movsi_1} (nil)
        (insn_list:REG_LABEL 57 (expr_list:REG_EQUAL (label_ref:SI 57)
                (nil))))
    
    (insn 54 53 45 1 0x400d0fd0 (set (reg:SI 81)
            (mem/u:SI (plus:SI (mult:SI (reg:SI 78)
                        (const_int 4 [0x4]))
                    (reg/f:SI 80)) [0 S4 A8])) 38 {*movsi_1} (insn_list 53 (nil))
        (expr_list:REG_DEAD (reg:SI 78)
            (expr_list:REG_DEAD (reg/f:SI 80)
                (expr_list:REG_UNUSED (reg:SI 81)
                    (nil)))))
    
    (insn 45 54 60 1 0x400d0a50 (set (reg/v/f:SI 60)
            (mem/u:SI (const:SI (plus:SI (symbol_ref:SI ("_CD_linkbug"))
                        (const_int 32 [0x20]))) [0 S4 A32])) 38 {*movsi_1} (nil)
        (nil))
    ;; End of basic block 1, registers live:
     6 [bp] 7 [sp] 16 [] 20 [frame] 59 60
    
    Yes, the jump_insn 55 has disappeared altogether.
    
     

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



More information about the Gcc-prs mailing list