This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[tree-ssa] ia64 bootstrap broken


Since 2004-01-14 bootstrap on tree-ssa branch is broken for ia64.

$ cat libgcc2.i
extern void abort (void) __attribute__ ((__noreturn__));
typedef int TItype __attribute__ ((mode (TI)));
extern TItype __addvdi3 (TItype, TItype);
TItype
__addvdi3 (TItype a, TItype b)
{
  const TItype w = a + b;
  if (b >= 0 ? w < a : w > a)
    abort ();
  return w;
}
$ gdb --args ./cc1 -fpreprocessed libgcc2.i -quiet -dumpbase libgcc2.c -auxbase-strip libgcc/./_addvdi3.o -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -version -fPIC -o libgcc2.s
GNU gdb 6.0
Copyright 2003 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "ia64-suse-linux"...
Breakpoint 1 at 0x4000000000569b12: file ../../gcc/diagnostic.c, line 584.
.gdbinit:7: Error in sourced command file:
../../gcc/gdbinit.in:128: Error in sourced command file:
Function "exit" not defined.
(gdb) r
Starting program: /tmp/cvs/gcc-20040117/Build/gcc/cc1 -fpreprocessed libgcc2.i -quiet -dumpbase libgcc2.c -auxbase-strip libgcc/./_addvdi3.o -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -version -fPIC -o libgcc2.s
GNU C version 3.5-tree-ssa 20040117 (merged 20040102) (ia64-suse-linux)
	compiled by GNU C version 3.3.2 (SuSE Linux).
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096

Program received signal SIGSEGV, Segmentation fault.
init_propagate_block_info (bb=0x20000000004b33a0, live=0x60000000000c8510, 
    local_set=0x0, cond_local_set=0x0, flags=0) at ../../gcc/flow.c:1848
1848	      bb_true = bb->succ->dest;
(gdb) bt
#0  init_propagate_block_info (bb=0x20000000004b33a0, live=0x60000000000c8510, 
    local_set=0x0, cond_local_set=0x0, flags=0) at ../../gcc/flow.c:1848
#1  0x4000000000718210 in propagate_block (bb=0x20000000004b33a0, 
    live=0x60000000000c8510, local_set=0x0, cond_local_set=0x0, flags=0)
    at ../../gcc/flow.c:2011
#2  0x40000000004f62e0 in rtl_split_block (bb=0x20000000004b23e0, 
    insnp=0x2000000000322c60) at ../../gcc/cfgrtl.c:501
#3  0x4000000000d1ad90 in split_block (bb=0x20000000004b23e0, 
    i=0x2000000000322c60) at ../../gcc/cfghooks.c:311
#4  0x40000000004d02e0 in try_crossjump_to_edge (mode=35, 
    e1=0x20000000004baec0, e2=0x20000000004bb100)
    at ../../gcc/cfgcleanup.c:1479
#5  0x40000000004d15f0 in try_crossjump_bb (mode=35, bb=0x20000000004b2760)
    at ../../gcc/cfgcleanup.c:1607
#6  0x40000000004d2d40 in try_optimize_cfg (mode=35)
    at ../../gcc/cfgcleanup.c:1835
#7  0x40000000004d3590 in cleanup_cfg (mode=35) at ../../gcc/cfgcleanup.c:1944
#8  0x4000000000c50f50 in rest_of_compilation (decl=0x2000000000439340)
    at ../../gcc/toplev.c:3478
#9  0x40000000002c8700 in tree_rest_of_compilation (fndecl=0x2000000000439340, 
    nested_p=false) at ../../gcc/tree-optimize.c:556
#10 0x4000000000079ed0 in c_expand_body_1 (fndecl=0x2000000000439340, 
    nested_p=0) at ../../gcc/c-decl.c:6253
#11 0x400000000007a7a0 in c_expand_body (fndecl=0x2000000000439340)
    at ../../gcc/c-decl.c:6285
#12 0x4000000000d9d3c0 in cgraph_expand_function (node=0x200000000043a060)
    at ../../gcc/cgraphunit.c:627
#13 0x4000000000da4990 in cgraph_expand_all_functions ()
    at ../../gcc/cgraphunit.c:1480
#14 0x4000000000da5460 in cgraph_optimize () at ../../gcc/cgraphunit.c:1570
#15 0x40000000001a6940 in c_objc_common_finish_file ()
    at ../../gcc/c-objc-common.c:244
#16 0x4000000000022ed0 in finish_file () at ../../gcc/c-lang.c:196
#17 0x4000000000183e20 in c_common_parse_file (set_yydebug=0)
    at ../../gcc/c-opts.c:1213
#18 0x4000000000c472e0 in compile_file () at ../../gcc/toplev.c:1850
#19 0x4000000000c575f0 in do_compile () at ../../gcc/toplev.c:4631
#20 0x4000000000c577f0 in toplev_main (argc=20, argv=0x60000fffffffae18)
    at ../../gcc/toplev.c:4671
---Type <return> to continue, or q <return> to quit---
#21 0x4000000000240700 in main (argc=20, argv=0x60000fffffffae18)
    at ../../gcc/main.c:35
(gdb) p *bb
$1 = {head_ = 0x20000000004bb640, end_ = 0x2000000000435d00, stmt_list = 0x0, 
  pred = 0x0, succ = 0x0, local_set = 0x0, cond_local_set = 0x0, 
  global_live_at_start = 0x60000000000c8510, 
  global_live_at_end = 0x60000000000c8528, aux = 0x0, index = 16, 
  prev_bb = 0x20000000004b23e0, next_bb = 0x20000000004b2760, loop_depth = 0, 
  loop_father = 0x0, dom = {0x0, 0x0}, count = 0, frequency = 0, flags = 2, 

The failure was triggered by this change:

2004-01-14  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (tree-ssa-loop.o): Add cfgloop.h dependency.
	(cfghooks.o): Add TIMEVAR_H and toplev.h dependency.
	* basic-block.h (struct edge_def): Use ir_type instead testing of
	cfg_hooks directly.
	(tidy_fallthru_edge, tidy_fallthru_edges, dump_bb, verify_flow_info):
	Declaration removed.
	* cfg.c (verify_flow_info, dump_bb): Moved to cfghooks.c.
	* cfgcleanup.c (try_simplify_condjump): Changed due to change of
	tidy_fallthru_edge.
	* cfghooks.c: Include timevar.h and toplev.h.
	(cfg_hooks): Made static.
	(tree_register_cfg_hooks, ir_type): New.
	(verify_flow_info, dump_bb): Moved from cfg.c.
	(redirect_edge_and_branch, redirect_edge_and_branch_force,
	split_block, split_block_after_labels, move_block_after,
	delete_basic_block, split_edge, create_basic_block,
	create_empty_bb, can_merge_blocks_p, merge_blocks,
	make_forwarder_block, tidy_fallthru_edge, tidy_fallthru_edges): New.
	* cfghooks.h (struct cfg_hooks): Modified.
	(redirect_edge_and_branch, redirect_edge_and_branch_force, split_block,
	delete_basic_block, split_edge, create_basic_block, can_merge_blocks_p,
	merge_blocks, make_forwarder_block): Changed into functions.
	(loop_optimizer_init, loop_optimizer_finalize): Removed.
	(HEADER_BLOCK, LATCH_EDGE): Moved into cfgloop.c.
	(tidy_fallthru_edge, tidy_fallthru_edges, create_empty_bb,
	verify_flow_info, dump_bb, ir_type): Declare.
	(cfg_layout_rtl_cfg_hooks): Declare.
	* cfglayout.c (copy_bbs): Don't call add_to_dominance_info.
	* cfgloop.c (HEADER_BLOCK, LATCH_EDGE): Moved from cfghooks.h.
	(update_latch_info, mfb_keep_just, mfb_keep_nonlatch): New functions.
	(canonicalize_loop_headers): Use new semantics of make_forwarder_block.
	* cfgloop.h (rtl_loop_optimizer_init, rtl_loop_optimizer_finalize):
	Removed.
	(loop_optimizer_init, loop_optimizer_finalize): Declare.
	* cfgloopmanip.c (split_loop_bb): Don't update dominators.
	(remove_bbs): Don't call remove_bbs.
	(create_preheader): Use make_forwarder_block.
	(mfb_keep_just, mfb_update_loops): New static functions.
	* cfgrtl.c (cfg_layout_split_block, rtl_split_block,
	rtl_make_forwarder_block, rtl_create_basic_block,
	rtl_delete_block, rtl_split_block, rtl_merge_blocks,
	tidy_fallthru_edge, rtl_split_edge, cfg_layout_merge_blocks,
	cfg_layout_split_edge): Parts not specific to rtl moved to cfghooks.c
	(tidy_fallthru_edges): Moved to cfghooks.c.
	(rtl_move_block_after): New.
	(redirect_edge_with_latch_update, update_cfg_after_block_merging):
	Removed.
	(rtl_cfg_hooks, cfg_layout_rtl_cfg_hooks): Modified.
	* ifcvt.c (merge_if_block, find_cond_trap, find_if_case_1,
	find_if_case_2): Don't update dominators.
	* loop-init.c (rtl_loop_optimizer_init, rtl_loop_optimizer_finalize):
	Replaced by rtl_loop_optimizer_init and rtl_loop_optimizer_finalize.
	* loop-unswitch.c (unswitch_loop): Don't call add_to_dominance_info.
	* toplev.c (rest_of_handle_loop2): Enter cfglayout mode here.
	* tree-cfg.c (create_bb): Modified to suit create_basic_block hook.
	(tree_redirect_edge_and_branch_1): Merged into
	tree_redirect_edge_and_branch.
	(create_blocks_annotations): Removed.
	(tree_loop_optimizer_init, tree_loop_optimizer_finalize): Removed.
	(tree_make_forwarder_block, remove_bb, tree_split_edge,
	tree_redirect_edge_and_branch, tree_split_block,
	tree_move_block_after): Partially moved to cfghooks.c.
	(tree_duplicate_bb): New.
	(PENDING_STMT): Moved to tree-flow.h.
	(tree_register_cfg_hooks): Moved to cfghooks.c.
	(build_tree_cfg): Don't call create_blocks_annotations.
	(factor_computed_gotos, make_blocks): Use create_empty_bb.
	(cleanup_tree_cfg): Use delete_unreachable_blocks.
	(remove_unreachable_blocks, insert_bb_before): Removed.
	(remove_phi_nodes_and_edges_for_unreachable_block): Modified.
	(tree_find_edge_insert_loc, thread_jumps): Use cfg hooks.
	(bsi_commit_edge_inserts): Update_annotations argument removed.
	(tree_cfg_hooks): Modified.
	* tree-flow.h (PENDING_STMT): Moved from tree-cfg.c.
	(insert_bb_before, remove_unreachable_blocks,
	remove_phi_nodes_and_edges_for_unreachable_block, tree_split_edge):
	Declaration removed.
	(bsi_commit_edge_inserts): Declaration changed.
	(tree_duplicate_bb): Declare.
	* tree-sra.c (scalarize_structures): Changed due to
	bsi_commit_edge_inserts change.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Use
	delete_unreachable_blocks.
	* tree-ssa-loop.c: Include cfgloop.h.
	* tree-ssa-pre.c (split_critical_edges, tree_perform_ssapre): Use cfg
	hooks.
	* tree-ssa.c (rewrite_trees, rewrite_vars_out_of_ssa): Changed due to
	bsi_commit_edge_inserts change.
	(ssa_redirect_edge): Record the phi arguments on the redirected edge.
	* tree-tailcall.c (eliminate_tail_call): Clean stored phi arguments.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux AG, Maxfeldstraße 5, 90409 Nürnberg, Germany
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]