Bug 23548 - [4.1 Regression] libstdc++ tests fail: could not split insn
Summary: [4.1 Regression] libstdc++ tests fail: could not split insn
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.1.0
: P2 normal
Target Milestone: 4.1.0
Assignee: Not yet assigned to anyone
Keywords: ice-on-valid-code
Depends on:
Reported: 2005-08-24 18:31 UTC by Joseph S. Myers
Modified: 2005-09-01 21:14 UTC (History)
3 users (show)

See Also:
Target: ia64-*-hpux11.*
Known to work:
Known to fail:
Last reconfirmed: 2005-08-29 22:50:07


Note You need to log in before you can comment on or make changes to this bug.
Description Joseph S. Myers 2005-08-24 18:31:44 UTC
FAIL: 23_containers/deque/cons/clear_allocator.cc (test for excess errors)
FAIL: 27_io/basic_filebuf/sbumpc/char/2-io.cc (test for excess errors)
FAIL: 27_io/basic_filebuf/sgetc/char/2-io.cc (test for excess errors)
FAIL: 27_io/basic_filebuf/sgetn/char/2-io.cc (test for excess errors)
FAIL: 27_io/basic_filebuf/snextc/char/2-in.cc (test for excess errors)
FAIL: 27_io/basic_filebuf/snextc/char/2-io.cc (test for excess errors)
FAIL: 27_io/basic_stringbuf/setbuf/char/4.cc (test for excess errors)

all appeared on mainline on 20050823 on ia64-hp-hpux11.23.  The errors are all
of the form:

In function 'void test01()':
error: could not split insn
(call_insn 119 1114 1100 1
(parallel [
            (set (reg:DI 8 r8)
                (call (mem:DI (const:DI (plus:DI (symbol_ref:DI
("_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE") [flags 0x40] <var_decl
786f9460 _ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE>)
                                (const_int 64 [0x40]))) [0 S8 A64])
                    (const_int 1 [0x1])))
            (clobber (reg:DI 320 b0))
            (clobber (scratch:DI))
            (clobber (scratch:DI))
        ]) 257 {call_value_gp} (insn_list:REG_DEP_ANTI 112
(insn_list:REG_DEP_ANTI 118 (insn_list:REG_DEP_ANTI 98 (insn_list:REG_DEP_ANTI
706 (insn_list:REG_DEP_ANTI 708 (insn_list:REG_DEP_ANTI 39
(insn_list:REG_DEP_ANTI 115 (insn_list:REG_DEP_ANTI 117 (insn_list:REG_DEP_ANTI
495 (insn_list:REG_DEP_ANTI 104 (insn_list:REG_DEP_ANTI 506
(insn_list:REG_DEP_ANTI 510 (insn_list:REG_DEP_ANTI 518 (insn_list:REG_DEP_ANTI
515 (insn_list:REG_DEP_ANTI 523 (insn_list:REG_DEP_ANTI 528
(insn_list:REG_DEP_ANTI 530 (insn_list:REG_DEP_ANTI 531 (insn_list:REG_DEP_ANTI
532 (insn_list:REG_DEP_ANTI 533 (insn_list:REG_DEP_ANTI 534
(insn_list:REG_DEP_ANTI 535 (insn_list:REG_DEP_ANTI 536 (insn_list:REG_DEP_ANTI
538 (insn_list:REG_DEP_ANTI 539 (insn_list:REG_DEP_ANTI 545
(insn_list:REG_DEP_ANTI 549 (insn_list:REG_DEP_ANTI 551 (insn_list:REG_DEP_ANTI
712 (insn_list:REG_DEP_ANTI 713 (insn_list:REG_DEP_ANTI 715
(insn_list:REG_DEP_ANTI 705 (insn_list:REG_DEP_ANTI 707 (insn_list:REG_DEP_ANTI
711 (nil)))))))))))))))))))))))))))))))))))
    (expr_list:REG_DEAD (reg:DI 120 r36)
        (expr_list:REG_DEAD (reg:DI 121 r37 [ dest ])
            (expr_list:REG_DEAD (reg:DI 122 r38 [ i.171 ])
                (expr_list:REG_DEAD (reg:DI 1 r1)
                    (expr_list:REG_UNUSED (scratch:DI)
                        (expr_list:REG_UNUSED (scratch:DI)
                            (expr_list:REG_UNUSED (reg:DI 320 b0)
                                (expr_list:REG_UNUSED (reg:DI 8 r8)
                                    (expr_list:REG_EH_REGION (const_int 1 [0x1])
    (expr_list:REG_DEP_TRUE (use (reg:DI 1 r1))
        (expr_list:REG_DEP_TRUE (use (reg:DI 122 r38 [ i.171 ]))
            (expr_list:REG_DEP_TRUE (use (reg:DI 121 r37 [ dest ]))
                (expr_list:REG_DEP_TRUE (use (reg:DI 120 r36))
internal compiler error: in final_scan_insn, at final.c:2445
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
Comment 1 Steve Ellcey 2005-08-29 22:50:06 UTC
I have reproduced this bug on IA64 Linux and also verified that it does not
happen if the patch for PR 23478 is removed.
Comment 2 Andrew Pinski 2005-08-29 23:19:52 UTC
I think this is really the same as PR 23601 also, just exposed in a different place.
Comment 3 Joseph S. Myers 2005-09-01 20:26:07 UTC
Appears fixed on ia64-hpux 20050901.
Comment 4 Andrew Pinski 2005-09-01 21:14:45 UTC
Fixed by one of the following patches:
2005-08-31  Richard Henderson  <rth@redhat.com>

        * emit-rtl.c (set_mem_attributes_minus_bitpos): Look through
        component-like references for setting MEM_NOTRAP_P.
2005-08-31  Richard Henderson  <rth@redhat.com>

        PR rtl-opt/23601
        * reload1.c (reload): Set MEM_NOTRAP_P in spill slots.
        (fixup_eh_region_note): New.
        (reload_as_needed): Call it.
        (fixup_abnormal_edges): Allow all throwing insns to be deleted;
        don't call find_many_sub_basic_blocks; call verify_flow_info.
        * function.c (assign_stack_local_1): Set MEM_NOTRAP_P.
        (keep_stack_depressed): Likewise.
        (assign_stack_temp_for_type): Likewise; use adjust_address_nv.

2005-09-01  Jakub Jelinek  <jakub@redhat.com>

        PR rtl-optimization/23478
        * local-alloc.c (struct qty): Add n_throwing_calls_crossed field.
        (alloc_qty): Initialize it.
        (update_equiv_regs): Clear REG_N_THROWING_CALLS_CROSSED.
        (combine_regs): Combine also n_throwing_calls_crossed fields.
        (find_free_reg): Don't attempt to caller-save pseudos crossing
        calls that might throw.
        * global.c (struct allocno): Add throwing_calls_crossed field.
        (global_alloc): Revert 2005-08-22 change.  Initialize
        (find_reg): Don't attempt to caller-save pseudos crossing calls that
        might throw.