Commit Graph

81448 Commits

Author SHA1 Message Date
Seongbae Park
0a090f42f6 opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
2007-06-12  Seongbae Park  <seongbae.park@gmail.com>

	* opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
	* dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
	to indicate an error.
	(dbg_cnt_process_single_pair, dbg_cnt_list_all_counters): New functions
	(dbg_cnt_process_opt): Print an error on a bad argument.
	* dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
	* common.opt (-fdbg-cnt-list): New.
	* doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.

From-SVN: r125657
2007-06-12 20:47:16 +00:00
Eric Botcazou
773a786120 tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything flag on ref-all pointers.
* tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
	flag on ref-all pointers.

From-SVN: r125656
2007-06-12 20:25:23 +00:00
Andrew Pinski
4543943ad4 re PR middle-end/31579 (ICE when compiling attached code)
2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR middle-end/31579
        * expr.c (expand_expr_addr_expr_1): Call expand_expr
        for the offset with the modifier as EXPAND_INITIALIZER
        if the modifier is EXPAND_INITIALIZER.
        (expand_expr_real_1 <case INTEGER_CST>): Don't force to
        a register if we had an overflow.

2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR middle-end/31579
         * g++.dg/torture/pr31579.C: New testcase.

From-SVN: r125655
2007-06-12 12:15:50 -07:00
Kaveh R. Ghazi
4c8c70e06a real.c (real_isfinite): New.
* real.c (real_isfinite): New.
	(real_sqrt): Use it.
	* real.h (real_isfinite): New.
	* builtins.c: Use it.

From-SVN: r125654
2007-06-12 18:36:05 +00:00
Ian Lance Taylor
058dcc25b7 re PR libstdc++/29286 (placement new does not change the dynamic type as it should)
./:	PR libstdc++/29286
	* tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
	* tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
	(CHANGE_DYNAMIC_TYPE_LOCATION): Define.
	(DECL_NO_TBAA_P): Define.
	(struct tree_decl_common): Add no_tbaa_flag field.
	* tree-ssa-structalias.c (struct variable_info): Add
	no_tbaa_pruning field.
	(new_var_info): Initialize no_tbaa_pruning field.
	(unify_nodes): Copy no_tbaa_pruning field.
	(find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
	(dump_solution_for_var): Print no_tbaa_pruning flag.
	(set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
	callers.
	(compute_tbaa_pruning): New static function.
	(compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
	Call compute_tbaa_pruning.
	* tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
	* gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
	* gimple-low.c (lower_stmt): Likewise.
	* tree-gimple.c (is_gimple_stmt): Likewise.
	* tree-ssa-operands.c (get_expr_operands): Likewise.
	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
	* tree-inline.c (estimate_num_insns_1): Likewise.
	(copy_result_decl_to_var): Likewise.
	* expr.c (expand_expr_real_1): Likewise.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	* tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
	* omp-low.c (omp_copy_decl_2): Likewise.
	* print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
	* doc/c-tree.texi (Expression trees): Document
	CHANGE_DYNAMIC_TYPE_EXPR.
cp/:
	PR libstdc++/29286
	* init.c (avoid_placement_new_aliasing): New static function.
	(build_new_1): Call it.
testsuite/:
	PR libstdc++/29286
	* g++.dg/init/new16.C: New test.
	* g++.dg/init/new17.C: New test.
	* g++.dg/init/new18.C: New test.
	* g++.dg/init/new19.C: New test.

Co-Authored-By: Daniel Berlin <dberlin@dberlin.org>

From-SVN: r125653
2007-06-12 17:47:37 +00:00
Kaveh R. Ghazi
52a39a4c5d fold-const.c (fold_binary): Guard (X-X) -> 0 transformation with !HONOR_NANS and !HONOR_INFINITIES.
* fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
	with !HONOR_NANS and !HONOR_INFINITIES.
	* simplify-rtx.c (simplify_binary_operation_1): Likewise.

From-SVN: r125652
2007-06-12 16:28:01 +00:00
Seongbae Park
1c2abe5e5c MAINTAINERS (Various Maintainer): Fix typo.
2007-06-12  Seongbae Park  <seongbae.park@gmail.com>

	* MAINTAINERS (Various Maintainer): Fix typo.

From-SVN: r125651
2007-06-12 15:56:10 +00:00
Dirk Mueller
fc78ca2b3e reorder changelog entries
From-SVN: r125650
2007-06-12 15:44:55 +00:00
Tristan Gingold
1a9075e289 gcov.c: Comments updated.
* gcov.c: Comments updated.
	(source_info): Add file_time field.
	(source_index): New variable.
	(mutiple_files): New variable.
	(generate_results): New function extracted from process_file.
	(process_file): Save and restore chain of functions, generate
	results and free structures only if not merging results.
	(release_structures): File names are now freed in create_file_names
	(create_file_names): Free previous file names.
	(find_source): File date is now read here and modifications in
	source files is checked here.
	(read_graph_file): Only reverse order of functions for the current
	object file.
	(make_gcov_file_name): Do not generate long names if input_name is
	NULL.
	(output_lines): If merging results do not display graph, data and 
	runs informations.
	Checking source file modification is done in find_source.

	* doc/gcov.texi: Append an s to sourcefile.

From-SVN: r125649
2007-06-12 15:39:15 +00:00
Bernd Schmidt
b18e284e3c bfin.md (UNSPEC_NOP): New constant.
* config/bfin/bfin.md (UNSPEC_NOP): New constant.
	(forced_nop): New pattern.
	* config/bfin/bfin.c: Include "df.h".
	(add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
	(bfin_discover_loop): Use df_get_live_in instead of
	global_live_at_start.
	(bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
	df_analyze when done.
	(gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
	the insns.  Use QImode for the final insn in a bundle.  Call
	df_insn_rescan on generated NOPs; use gen_forced_nop instead of
	gen_nop.
	(reorder_var_tracking_notes): New function.
	(bfin_reorg): Pass no argument to split_all_insns.  Don't call
	update_life_info.  Call df_analyze after scheduling and bundle
	generation.  Call reorder_var_tracking_notes if generating these notes.
	Call df_finish_pass at the end.

From-SVN: r125648
2007-06-12 14:35:13 +00:00
Dirk Mueller
8c8fa92702 trans-stmt.c (gfc_trans_call): fix gcc_assert to a comparison, not an assignment.
2007-06-07  Dirk Mueller  <dmueller@suse.de>

        * trans-stmt.c (gfc_trans_call): fix gcc_assert to
        a comparison, not an assignment.

        * optabls.c (debug_optab_libfuncs): fix gcc_assert to
        a comparison, not an assignment.

From-SVN: r125647
2007-06-12 14:28:34 +00:00
Olivier Hainque
0e1a6f292f tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
* tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
	Request walking the subtrees only, leaving the current is_lhs/val_only
	untouched.
	(convert_non_local_reference): Likewise.

	testsuite/
	* gnat.dg/lhs_view_convert.adb: New test.

From-SVN: r125646
2007-06-12 13:32:27 +00:00
Nathan Sidwell
beff418056 * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
From-SVN: r125645
2007-06-12 12:28:45 +00:00
Richard Guenther
18d0801470 re PR tree-optimization/15353 ([tree-ssa] Merge two "if"s if one subsumes the other.)
2007-06-12  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/15353
	PR tree-optimization/31657
	* passes.c (init_optimization_passes): Add pass_tree_ifcombine.
	* timevar.def: Add TV_TREE_IFCOMBINE.
	* tree-pass.h (pass_tree_ifcombine): Declare.
	* tree-ssa-ifcombine.c: New file.
	* tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
	* tree-flow.h (blocks_in_phiopt_order): Declare.
	* Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
	(tree-ssa-ifcombine.o): New dependencies.

	* gcc.c-torture/execute/20070424-1.c: New testcase.
	* gcc.dg/tree-ssa/ssa-ifcombine-1.c: Likewise.
	* gcc.dg/tree-ssa/ssa-ifcombine-2.c: Likewise.
	* gcc.dg/tree-ssa/ssa-ifcombine-3.c: Likewise.
	* gcc.dg/tree-ssa/ssa-ifcombine-4.c: Likewise.
	* gcc.dg/tree-ssa/ssa-ifcombine-5.c: Likewise.

From-SVN: r125644
2007-06-12 12:06:19 +00:00
Uros Bizjak
7f482dfebf re PR rtl-optimization/32293 (internal compiler error: in do_SUBST, at combine.c:502)
PR rtl-optimization/32293
	* combine.c (simplify_if_then_else): Truncate return from
	nonzero_bits() to correct mode.

testsuite/ChangeLog:
	
	PR rtl-optimization/32293
	* gcc.dg/pr32293.c: New test.

From-SVN: r125643
2007-06-12 12:31:04 +02:00
Uros Bizjak
9883e373fc fold-const (fold_binary): Also optimize a/cbrt(b/c) into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
* fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
	into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.

testuite/ChangeLog:

	* gcc.dg/builtins-11.c: Also check folding of a/cbrt(b/c).

From-SVN: r125641
2007-06-12 09:19:36 +02:00
Paul Thomas
f84c7ed946 trans-common.c (create_common): Initialize 'field_init'.
2007-06-12  Paul Thomas  <pault@gcc.gnu.org>

	* trans-common.c (create_common): Initialize 'field_init'.

From-SVN: r125640
2007-06-12 06:54:42 +00:00
Eric Botcazou
a472f54655 Fix a few nits.
From-SVN: r125638
2007-06-12 05:57:40 +00:00
Diego Novillo
16b4cb481c Makefile.in (reload1.o-warn): Remove.
* Makefile.in (reload1.o-warn): Remove.

From-SVN: r125636
2007-06-11 22:30:36 -04:00
Seongbae Park
467f79e82d combine.c (subst): Fix typo.
2007-06-11  Seongbae Park <seongbae.park@gmail.com>

	* combine.c (subst): Fix typo.

From-SVN: r125635
2007-06-12 01:39:25 +00:00
Seongbae Park
46cc214143 combine.c (subst): Use reg_overlap_mentioned_p instead of comparing register numbers directly.
2007-06-11  Seongbae Park <seongbae.park@gmail.com>

	* combine.c (subst): Use reg_overlap_mentioned_p
	instead of comparing register numbers directly.

From-SVN: r125634
2007-06-12 01:11:03 +00:00
GCC Administrator
b1db1d9b26 Daily bump.
From-SVN: r125631
2007-06-12 00:17:06 +00:00
Paul Thomas
9d99ee7be4 re PR fortran/29786 (Initialization of overlapping variables: Not implemented)
2007-06-12  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29786
	PR fortran/30875
	* trans-common.c (get_init_field): New function.
	(create_common): Call get_init_field for overlapping
	initializers in equivalence blocks.
	* resolve.c (resolve_equivalence_derived, resolve_equivalence):
	Remove constraints on initializers in equivalence blocks.
	* target-memory.c (expr_to_char, gfc_merge_initializers):
	New functions.
	(encode_derived): Add the bit offset to the byte offset to get
	the total offset to the field.
	* target-memory.h : Add prototype for gfc_merge_initializers.


2007-06-12  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29786
	* gfortran.dg/equiv_7.f90: New test.
	* gfortran.dg/equiv_constraint_7.f90: Change error message.


	PR fortran/30875
	* gfortran.dg/equiv_constraint_5.f90: Correct code and error.

From-SVN: r125628
2007-06-11 22:39:21 +00:00
Kenneth Zadeck
b0384c544e reload1.c (mark_home_live_1): Use the mode parameter.
2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>

	* reload1.c (mark_home_live_1): Use the mode parameter.

From-SVN: r125627
2007-06-11 22:03:01 +00:00
Andreas Tobler
5c596005de setjmp-3.c: Rename raise to raise0.
2007-06-11  Andreas Tobler  <a.tobler@schweiz.org>

	* gcc.dg/setjmp-3.c: Rename raise to raise0.
	* gcc.dg/setjmp-4.c: Likewise.
	* gcc.target/i386/980211-1.c: Rename __signbitl to __signbitl0.

From-SVN: r125626
2007-06-11 21:07:34 +02:00
Kenneth Zadeck
0a41f3b2c8 df-scan.c (df_insn_delete, [...]): Fixed spelling of word "deferred".
2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>

	* df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
	df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
	word "deferred".
	* df-core.c: Ditto.

From-SVN: r125625
2007-06-11 18:22:49 +00:00
Daniel Berlin
6fb5fa3cbc Merge dataflow branch into mainline
From-SVN: r125624
2007-06-11 18:02:15 +00:00
Uros Bizjak
a91d32a4a6 i386.md ("*movtf_internal): Penalize moves to and from integer registers.
* config/i386/i386.md ("*movtf_internal): Penalize moves to and
        from integer registers.
        (FP mode splitters): Handle TFmode.

From-SVN: r125623
2007-06-11 18:06:19 +02:00
Arnaud Charlet
7a9007db0c Add new tests
From-SVN: r125622
2007-06-11 18:04:46 +02:00
Rafael Espindola
12753674ec really remove signed(_or_unsigned)?_type langhooks
From-SVN: r125621
2007-06-11 15:40:55 +00:00
Eric Botcazou
73fd4ad6cd tree-ssa-structalias.c (find_what_p_points_to): Return false for ref-all pointers that point-to anything.
* tree-ssa-structalias.c (find_what_p_points_to): Return false
	for ref-all pointers that point-to anything.

From-SVN: r125620
2007-06-11 15:40:52 +00:00
Joseph Myers
afcc986d03 arm.c (arm_output_dwarf_dtprel, [...]): New.
* config/arm/arm.c (arm_output_dwarf_dtprel,
	TARGET_ASM_OUTPUT_DWARF_DTPREL): New.

From-SVN: r125619
2007-06-11 15:55:06 +01:00
Paolo Bonzini
abca47391d MAINTAINERS (Various Maintainer): Add myself as dataflow maintainer.
2007-06-11  Paolo Bonzini  <bonzini@gnu.org>

	* MAINTAINERS (Various Maintainer): Add myself as
	dataflow maintainer.

From-SVN: r125618
2007-06-11 13:33:29 +00:00
Bernd Schmidt
0ea80eb62c bfin.md (movdi_insn, [...]): Don't allow constant to memory moves.
* config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
	movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
	to memory moves.

From-SVN: r125617
2007-06-11 11:29:00 +00:00
Rafael Espindola
b0464c8897 remove signed(_or_unsigned)?_type langhooks
From-SVN: r125616
2007-06-11 10:23:11 +00:00
Uros Bizjak
69c553ef2a re PR target/32280 (_mm_srli_si128, heinous code for some shifts)
PR target/32280
	* config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
	* config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.

testsuite/ChangeLog:
	
	PR target/32280
	* gcc.target/i386/pr32280.c: New test.

From-SVN: r125615
2007-06-11 12:13:00 +02:00
Uros Bizjak
f1da2df1e9 re PR middle-end/32279 (Fold 1.0/sqrt(x/y) to sqrt(y/x))
PR middle-end/32279
	* fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
	into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.

testsuite/ChangeLog:

	PR middle-end/32279
	* gcc.dg/builtins-11.c: Also check folding of a/sqrt(b/c).

From-SVN: r125614
2007-06-11 11:09:24 +02:00
Bob Duff
93e17a25c4 Resync
From-SVN: r125613
2007-06-11 08:44:41 +02:00
Bob Duff
2133b4c055 g-stsifd-sockets.adb (Create): Work around strange behavior of 'bind' on windows that causes 'connect' to fail...
2007-06-11  Bob Duff  <duff@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>

	* g-stsifd-sockets.adb (Create): Work around strange behavior of
	'bind' on windows that causes 'connect' to fail intermittently, by
	retrying the 'bind'.
	(GNAT.Sockets.Thin.Signalling_Fds): New procedure Close.

From-SVN: r125612
2007-06-11 08:41:43 +02:00
Jerry DeLisle
85e053e972 re PR fortran/32235 (incorrectly position text file after backspace)
2007-06-10  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/32235
	* gfortran.dg/backspace_9.f: New test.

From-SVN: r125611
2007-06-11 03:06:01 +00:00
GCC Administrator
00af1407c2 Daily bump.
From-SVN: r125609
2007-06-11 00:16:58 +00:00
Jerry DeLisle
82fa3fc0d3 re PR fortran/32235 (incorrectly position text file after backspace)
2007-06-10  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/32235
	* io/transfer.c (st_read): Remove test for end of file condition.
	(next_record_r): Add test for end of file condition.

From-SVN: r125606
2007-06-10 22:50:47 +00:00
Jan Sjodin
51c0074eed lambda-code.c (remove_iv): New.
* lambda-code.c (remove_iv): New.
	(lambda_loopnest_to_gcc_loopnest): Use remove_iv.


Co-Authored-By: Sebastian Pop <sebpop@gmail.com>

From-SVN: r125605
2007-06-10 21:00:59 +00:00
Zdenek Dvorak
79f5e44262 tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
* tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
	* tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
	* tree-ssa-loop-prefetch.c: Include optabs.h.
	(FENCE_FOLLOWING_MOVNT): New macro.
	(struct mem_ref): Add independent_p and storent_p fields.
	(record_ref): Initalize the new fields.
	(gather_memory_references_ref): Return true if the reference
	could be analysed.
	(gather_memory_references): Check whether all memory accesses
	in loop were recorded.
	(should_issue_prefetch_p): Return false for nontemporal stores.
	(nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
	may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
	(determine_loop_nest_reuse): Detect independent memory references.
	(loop_prefetch_arrays): Call mark_nontemporal_stores.
	* tree-flow.h (mark_virtual_ops_for_renaming): Declare.
	* Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
	* config/i386/i386.h (x86_mfence): Declare.
	(FENCE_FOLLOWING_MOVNT): Return x86_mfence.
	* config/i386/i386.c (x86_mfence): New variable.
	(ix86_init_mmx_sse_builtins): Initialize x86_mfence.

	* tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
	* optabs.c (init_optabs): Initialize storent_optab.
	* optabs.h (enum optab_index): Add OTI_storent.
	(storent_optab): Declare.
	* genopinit.c (optabs): Add initialization for storent_optab.
	* tree.h (MOVE_NONTEMPORAL): New macro.
	* expr.c (expand_assignment, store_expr, store_constructor_field,
	store_constructor, store_field, expand_expr_real_1): Propagate
	nontemporality of the expanded store.
	(emit_storent_insn): New function.
	* expr.h (expand_assignment, store_expr): Declaration changed.
	* function.c (assign_parm_setup_reg): Pass false as nontemporality
	to expand_assignment.
	* stmt.c (expand_asm_expr): Ditto.
	* calls.c (initialize_argument_information): Pass false as
	nontemporality to store_expr.
	* config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
	storentsi): New.

	* gcc.dg/tree-ssa/prefetch-7.c: New test.

From-SVN: r125604
2007-06-10 20:39:22 +00:00
Daniel Berlin
6bdff197e6 tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd parameter, use it.
2007-06-09  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
	parameter, use it.
	(find_what_p_points_to): Pass new parameter to set_uids_in_ptset.

From-SVN: r125603
2007-06-10 20:21:48 +00:00
Duncan Sands
1bbf850280 decl.c (gnat_to_gnu_entity): Use pointers to dummy nodes...
* decl.c (gnat_to_gnu_entity): Use pointers to dummy nodes, rather
	than to void, for the fields when making a new fat pointer type.
	(gnat_substitute_in_type): Now substitute_in_type.
	* gigi.h (gnat_substitute_in_type): Likewise.
	* trans.c (gnat_gimplify_expr): Remove COMPONENT_REF kludge.
	* utils.c (update_pointer_to): Update fat pointers by updating the
	dummy node pointers used for the fields.

From-SVN: r125602
2007-06-10 18:36:40 +00:00
Daniel Berlin
55edccf416 tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b, and allow DECL_P here.
2007-06-09  Daniel Berlin  <dberlin@dberlin.org>

	* tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
	and allow DECL_P here.

From-SVN: r125601
2007-06-10 14:13:18 +00:00
Benjamin Kosnik
28ec62e0a7 testsuite_performance.h: Add cstring include for memset.
2007-06-10  Benjamin Kosnik  <bkoz@redhat.com>

	* testsuite/util/testsuite_performance.h: Add cstring include for
	memset.

From-SVN: r125600
2007-06-10 09:14:43 +00:00
GCC Administrator
e463de681e Daily bump.
From-SVN: r125598
2007-06-10 00:16:56 +00:00
Zdenek Dvorak
9e824336e5 tree-scalar-evolution.c (follow_ssa_edge_in_rhs, [...]): Keep more precise track of the size of the expression.
* tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
	follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
	track of the size of the expression.
	* cfghooks.c (merge_blocks): Remove block from loops structure only
	after call of the merge_blocks hook.

	* gcc.dg/tree-ssa/loop-28.c: New testcase.

From-SVN: r125595
2007-06-09 21:34:08 +00:00