gcc/gcc/testsuite/gcc.dg/tree-ssa/loop-1.c

61 lines
3.6 KiB
C
Raw Normal View History

tree-ssa-loop-ivcanon.c: New file. * tree-ssa-loop-ivcanon.c: New file. * tree-ssa-loop-manip.c (create_iv): New function. * Makefile.in (tree-ssa-loop-ivcanon.o): Add. (tree-ssa-loop.o, tree-ssa-loop-manip.o): Add SCEV_H dependency. * cfgloop.c (mark_single_exit_loops): New function. (verify_loop_structure): Verify single-exit loops. * cfgloop.h (struct loop): Add single_exit field. (LOOPS_HAVE_MARKED_SINGLE_EXITS): New constant. (mark_single_exit_loops): Declare. (tree_num_loop_insns): Declare. * cfgloopmanip.c (update_single_exits_after_duplication): New function. (duplicate_loop_to_header_edge): Use it. * common.opt (fivcanon): New flag. * timevar.def (TV_TREE_LOOP_IVCANON, TV_COMPLETE_UNROLL): New timevars. * tree-cfg.c (tree_find_edge_insert_loc): Return newly created block. (bsi_commit_edge_inserts_1): Pass null to tree_find_edge_insert_loc. (bsi_insert_on_edge_immediate): New function. * tree-flow.h (bsi_insert_on_edge_immediate, canonicalize_induction_variables, tree_unroll_loops_completely, create_iv): Declare. * tree-optimize.c (init_tree_optimization_passes): Add pass_iv_canon and pass_complete_unroll. * tree-pass.h (pass_iv_canon, pass_complete_unroll): Declare. * tree-scalar-evolution.c (get_loop_exit_condition, get_exit_conditions_rec, number_of_iterations_in_loop, scev_initialize): Use single_exit information. * tree-ssa-loop-niter.c (number_of_iterations_cond): Record missing assumptions. (loop_niter_by_eval): Return number of iterations as unsigned int. * tree-ssa-loop.c (tree_ssa_loop_init): Mark single exit loops. (tree_ssa_loop_ivcanon, gate_tree_ssa_loop_ivcanon, pass_iv_canon, tree_complete_unroll, gate_tree_complete_unroll, pass_complete_unroll): New passes. (tree_ssa_loop_done): Call free_numbers_of_iterations_estimates. * tree-ssanames.c (make_ssa_name): Allow creating ssa name before the defining statement is ready. * tree-vectorizer.c (vect_create_iv_simple): Removed. (vect_create_index_for_array_ref, vect_transform_loop_bound): Use create_iv. (vect_transform_loop_bound): Use single_exit information. (vect_analyze_loop_form): Cleanup bogus tests. (vectorize_loops): Do not call flow_loop_scan. * tree.h (may_negate_without_overflow_p): Declare. * fold-const.c (may_negate_without_overflow_p): Split out from ... (negate_expr_p): ... this function. (tree_expr_nonzero_p): Handle overflowed constants correctly. * doc/invoke.texi (-fivcanon): Document. * doc/passes.texi: Document canonical induction variable creation. * gcc.dg/tree-ssa/loop-1.c: New test. From-SVN: r86516
2004-08-24 22:48:23 +02:00
/* { dg-do compile } */
/* -mlongcall will cause us to place &foo in the CTR register. */
/* { dg-skip-if "" { powerpc*-*-* } { "-mlongcall" } { "" } } */
tree-pass.h (TODO_remove_unused_locals): Define. 2006-01-05 Richard Guenther <rguenther@suse.de> Diego Novillo <dnovillo@redhat.com> * tree-pass.h (TODO_remove_unused_locals): Define. * gimple-low.c (expand_var_p, remove_useless_vars, pass_remove_useless_vars): Remove. Update all users. * tree-ssa-live.c (mark_all_vars_used_1): Handle SSA names. (remove_unused_locals): New function. * tree-flow.h (remove_unused_locals): Declare. * passes.c (execute_todo): Call remove_unused_locals if TODO_remove_unused_locals is set. * tree-into-ssa.c (pass_build_ssa): Add TODO_remove_unused_locals. * tree-ssa-dce.c (pass_dce): Likewise. * tree-outof-ssa.c (pass_del_ssa): Likewise. * gcc.dg/tree-ssa/loop-11.c: Deal with removed vars pass. * gcc.dg/tree-ssa/loop-8.c: Likewise. * gcc.dg/tree-ssa/loop-1.c: Likewise. * gcc.dg/tree-ssa/pr23294.c: Likewise. * gcc.dg/tree-ssa/pr21985.c: Likewise. * gcc.dg/tree-ssa/loop-14.c: Likewise. * gcc.dg/tree-ssa/loop-2.c: Likewise. * gcc.dg/tree-ssa/loop-3.c: Likewise. * gcc.dg/tree-ssa/loop-4.c: Likewise. * gcc.dg/tree-ssa/pr21171.c: Likewise. * gcc.dg/tree-ssa/loop-5.c: Likewise. * gcc.dg/tree-ssa/loop-10.c: Likewise. * gcc.dg/tree-ssa/loop-6.c: Likewise. * treelang/compile/extravar.tree: Likewise. * g++.dg/tree-ssa/ssa-cast-1.C: Likewise. * g++.dg/tree-ssa/pointer-reference-alias.C: Likewise. * g++.dg/tree-ssa/ssa-sra-1.C: Likewise. * g++.dg/tree-ssa/ssa-sra-2.C: Likewise. * gcc.dg/tree-ssa/20031106-6.c: Disable SRA. Co-Authored-By: Diego Novillo <dnovillo@redhat.com> From-SVN: r109379
2006-01-05 14:53:54 +01:00
/* { dg-options "-O1 -ftree-loop-ivcanon -funroll-loops -fdump-tree-ivcanon-details -fdump-tree-cunroll-details -fdump-tree-optimized" } */
/* { dg-options "-O1 -ftree-loop-ivcanon -funroll-loops -fdump-tree-ivcanon-details -fdump-tree-cunroll-details -fdump-tree-optimized -mshort-calls" {target epiphany-*-*} } */
tree-ssa-loop-ivcanon.c: New file. * tree-ssa-loop-ivcanon.c: New file. * tree-ssa-loop-manip.c (create_iv): New function. * Makefile.in (tree-ssa-loop-ivcanon.o): Add. (tree-ssa-loop.o, tree-ssa-loop-manip.o): Add SCEV_H dependency. * cfgloop.c (mark_single_exit_loops): New function. (verify_loop_structure): Verify single-exit loops. * cfgloop.h (struct loop): Add single_exit field. (LOOPS_HAVE_MARKED_SINGLE_EXITS): New constant. (mark_single_exit_loops): Declare. (tree_num_loop_insns): Declare. * cfgloopmanip.c (update_single_exits_after_duplication): New function. (duplicate_loop_to_header_edge): Use it. * common.opt (fivcanon): New flag. * timevar.def (TV_TREE_LOOP_IVCANON, TV_COMPLETE_UNROLL): New timevars. * tree-cfg.c (tree_find_edge_insert_loc): Return newly created block. (bsi_commit_edge_inserts_1): Pass null to tree_find_edge_insert_loc. (bsi_insert_on_edge_immediate): New function. * tree-flow.h (bsi_insert_on_edge_immediate, canonicalize_induction_variables, tree_unroll_loops_completely, create_iv): Declare. * tree-optimize.c (init_tree_optimization_passes): Add pass_iv_canon and pass_complete_unroll. * tree-pass.h (pass_iv_canon, pass_complete_unroll): Declare. * tree-scalar-evolution.c (get_loop_exit_condition, get_exit_conditions_rec, number_of_iterations_in_loop, scev_initialize): Use single_exit information. * tree-ssa-loop-niter.c (number_of_iterations_cond): Record missing assumptions. (loop_niter_by_eval): Return number of iterations as unsigned int. * tree-ssa-loop.c (tree_ssa_loop_init): Mark single exit loops. (tree_ssa_loop_ivcanon, gate_tree_ssa_loop_ivcanon, pass_iv_canon, tree_complete_unroll, gate_tree_complete_unroll, pass_complete_unroll): New passes. (tree_ssa_loop_done): Call free_numbers_of_iterations_estimates. * tree-ssanames.c (make_ssa_name): Allow creating ssa name before the defining statement is ready. * tree-vectorizer.c (vect_create_iv_simple): Removed. (vect_create_index_for_array_ref, vect_transform_loop_bound): Use create_iv. (vect_transform_loop_bound): Use single_exit information. (vect_analyze_loop_form): Cleanup bogus tests. (vectorize_loops): Do not call flow_loop_scan. * tree.h (may_negate_without_overflow_p): Declare. * fold-const.c (may_negate_without_overflow_p): Split out from ... (negate_expr_p): ... this function. (tree_expr_nonzero_p): Handle overflowed constants correctly. * doc/invoke.texi (-fivcanon): Document. * doc/passes.texi: Document canonical induction variable creation. * gcc.dg/tree-ssa/loop-1.c: New test. From-SVN: r86516
2004-08-24 22:48:23 +02:00
/* On 31-bit S/390 the function address will be stored (once) in the literal pool,
so scan-assembler-times "foo" will return 1 even if the loop is fully unrolled.
-msmall-exec avoids this by enabling a call instruction with immediate operand. */
tree-pass.h (TODO_remove_unused_locals): Define. 2006-01-05 Richard Guenther <rguenther@suse.de> Diego Novillo <dnovillo@redhat.com> * tree-pass.h (TODO_remove_unused_locals): Define. * gimple-low.c (expand_var_p, remove_useless_vars, pass_remove_useless_vars): Remove. Update all users. * tree-ssa-live.c (mark_all_vars_used_1): Handle SSA names. (remove_unused_locals): New function. * tree-flow.h (remove_unused_locals): Declare. * passes.c (execute_todo): Call remove_unused_locals if TODO_remove_unused_locals is set. * tree-into-ssa.c (pass_build_ssa): Add TODO_remove_unused_locals. * tree-ssa-dce.c (pass_dce): Likewise. * tree-outof-ssa.c (pass_del_ssa): Likewise. * gcc.dg/tree-ssa/loop-11.c: Deal with removed vars pass. * gcc.dg/tree-ssa/loop-8.c: Likewise. * gcc.dg/tree-ssa/loop-1.c: Likewise. * gcc.dg/tree-ssa/pr23294.c: Likewise. * gcc.dg/tree-ssa/pr21985.c: Likewise. * gcc.dg/tree-ssa/loop-14.c: Likewise. * gcc.dg/tree-ssa/loop-2.c: Likewise. * gcc.dg/tree-ssa/loop-3.c: Likewise. * gcc.dg/tree-ssa/loop-4.c: Likewise. * gcc.dg/tree-ssa/pr21171.c: Likewise. * gcc.dg/tree-ssa/loop-5.c: Likewise. * gcc.dg/tree-ssa/loop-10.c: Likewise. * gcc.dg/tree-ssa/loop-6.c: Likewise. * treelang/compile/extravar.tree: Likewise. * g++.dg/tree-ssa/ssa-cast-1.C: Likewise. * g++.dg/tree-ssa/pointer-reference-alias.C: Likewise. * g++.dg/tree-ssa/ssa-sra-1.C: Likewise. * g++.dg/tree-ssa/ssa-sra-2.C: Likewise. * gcc.dg/tree-ssa/20031106-6.c: Disable SRA. Co-Authored-By: Diego Novillo <dnovillo@redhat.com> From-SVN: r109379
2006-01-05 14:53:54 +01:00
/* { dg-options "-O1 -ftree-loop-ivcanon -funroll-loops -fdump-tree-ivcanon-details -fdump-tree-cunroll-details -fdump-tree-optimized -msmall-exec" { target s390-*-* } } */
/* On Darwin, we call extern functions via a stub in PIC mode which is default and
the stub is named after the function. To avoid this we use -static to go out
of PIC mode. */
tree-pass.h (TODO_remove_unused_locals): Define. 2006-01-05 Richard Guenther <rguenther@suse.de> Diego Novillo <dnovillo@redhat.com> * tree-pass.h (TODO_remove_unused_locals): Define. * gimple-low.c (expand_var_p, remove_useless_vars, pass_remove_useless_vars): Remove. Update all users. * tree-ssa-live.c (mark_all_vars_used_1): Handle SSA names. (remove_unused_locals): New function. * tree-flow.h (remove_unused_locals): Declare. * passes.c (execute_todo): Call remove_unused_locals if TODO_remove_unused_locals is set. * tree-into-ssa.c (pass_build_ssa): Add TODO_remove_unused_locals. * tree-ssa-dce.c (pass_dce): Likewise. * tree-outof-ssa.c (pass_del_ssa): Likewise. * gcc.dg/tree-ssa/loop-11.c: Deal with removed vars pass. * gcc.dg/tree-ssa/loop-8.c: Likewise. * gcc.dg/tree-ssa/loop-1.c: Likewise. * gcc.dg/tree-ssa/pr23294.c: Likewise. * gcc.dg/tree-ssa/pr21985.c: Likewise. * gcc.dg/tree-ssa/loop-14.c: Likewise. * gcc.dg/tree-ssa/loop-2.c: Likewise. * gcc.dg/tree-ssa/loop-3.c: Likewise. * gcc.dg/tree-ssa/loop-4.c: Likewise. * gcc.dg/tree-ssa/pr21171.c: Likewise. * gcc.dg/tree-ssa/loop-5.c: Likewise. * gcc.dg/tree-ssa/loop-10.c: Likewise. * gcc.dg/tree-ssa/loop-6.c: Likewise. * treelang/compile/extravar.tree: Likewise. * g++.dg/tree-ssa/ssa-cast-1.C: Likewise. * g++.dg/tree-ssa/pointer-reference-alias.C: Likewise. * g++.dg/tree-ssa/ssa-sra-1.C: Likewise. * g++.dg/tree-ssa/ssa-sra-2.C: Likewise. * gcc.dg/tree-ssa/20031106-6.c: Disable SRA. Co-Authored-By: Diego Novillo <dnovillo@redhat.com> From-SVN: r109379
2006-01-05 14:53:54 +01:00
/* { dg-options "-O1 -ftree-loop-ivcanon -funroll-loops -fdump-tree-ivcanon-details -fdump-tree-cunroll-details -fdump-tree-optimized -static" { target *-*-darwin* } } */
mips.opt (mrelax-pic-calls): New option. * config/mips/mips.opt (mrelax-pic-calls): New option. * config/mips/mips.c (mips_strip_unspec_address): Move it up in the file. (mips_unspec_call): Change "unspec_call" expander into this. (mips_strip_unspec_call): New function. (mips_got_load): Call mips_unspec_call instead of gen_unspec_call<mode>. (mips16_build_call_stub): Fix comment for fp_code. Adjust call to MIPS_CALL. (mips_cfg_in_reorg): New function. (mips16_lay_out_constants): Use it to decide whether to call CFG-aware insn splitting. (r10k_insert_cache_barriers): Move CFG set-up code from here to mips_reorg. Move DF set-up code from here ... (mips_df_reorg): ... to here. Call r10k_insert_cache_barriers from here. (mips_reorg): Call mips_df_reorg instead of r10k_insert_cache_barriers. Move CFG set-up code here from r10k_insert_cache_barriers. (mips_call_expr_from_insn): New function. (mips_pic_call_symbol_from_set): Likewise. (mips_find_pic_call_symbol): Likewise. (mips_annotate_pic_call_expr): Likewise. (mips_get_pic_call_symbol): Likewise. (mips_annotate_pic_calls): Likewise. (mips_override_options): Disable -mrelax-pic-calls unless PIC calls are used. (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16. * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it. * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc directive. * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec. (unspec_call<mode>): Remove it. (sibcall_internal, sibcall_value_internal, sibcall_value_multiple_internal, call_internal, call_split, call_value_internal, call_value_split, call_value_multiple_internal, call_value_multiple_split): Pass SIZE_OPNO to MIPS_CALL. (call_internal_direct, call_direct_split, call_value_internal_direct, call_value_direct_split): Pass -1 as SIZE_OPNO to MIPS_CALL. * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR. * configure: Regenerate. * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls and -mno-relax-pic-calls. (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls. testsuite/ * gcc.target/mips/mips.exp: Add relax-pic-calls under -mfoo/-mno-foo options. (mips-dg-options): Make -mrelax-pic-calls imply -mno-plt, -mabicalls and -mexplicit-relocs. * gcc.target/mips/call-1.c: New test. * gcc.target/mips/call-2.c: New test. * gcc.target/mips/call-3.c: New test. * gcc.target/mips/lazy-binding-1.c: Add MIPS-specific dg-options. * gcc.dg/tree-ssa/loop-1.c: Likewise. From-SVN: r151890
2009-09-19 22:23:55 +02:00
/* On MIPS, disable generating hints (R_MIPS_JALR) for PIC calls. In addition
pr41779.c: Fix typos. 2013-07-21 Ondřej Bílka <neleai@seznam.cz> * c-c++-common/pr41779.c: Fix typos. * gcc.c-torture/compile/20031125-2.c: Likewise. * gcc.c-torture/compile/20040621-1.c: Likewise. * gcc.c-torture/execute/20020418-1.c: Likewise. * gcc.dg/20020108-1.c: Likewise. * gcc.dg/atomic-generic-aux.c: Likewise. * gcc.dg/builtin-complex-err-2.c: Likewise. * gcc.dg/decl-1.c: Likewise. * gcc.dg/di-sync-multithread.c: Likewise. * gcc.dg/format/c90-printf-1.c: Likewise. * gcc.dg/format/ms_c90-printf-1.c: Likewise. * gcc.dg/long-long-compare-1.c: Likewise. * gcc.dg/plugin/start_unit_plugin.c: Likewise. * gcc.dg/pr17055-1.c: Likewise. * gcc.dg/pr27095.c: Likewise. * gcc.dg/torture/fp-int-convert.h: Likewise. * gcc.dg/tree-prof/inliner-1.c: Likewise. * gcc.dg/tree-ssa/20030731-1.c: Likewise. * gcc.dg/tree-ssa/forwprop-6.c: Likewise. * gcc.dg/tree-ssa/ipa-cp-1.c: Likewise. * gcc.dg/tree-ssa/loop-19.c: Likewise. * gcc.dg/tree-ssa/loop-1.c: Likewise. * gcc.dg/tree-ssa/pr21001.c: Likewise. * gcc.dg/tree-ssa/pr42585.c: Likewise. * gcc.dg/tree-ssa/ssa-dse-5.c: Likewise. * gcc.dg/vect/vect-cond-5.c: Likewise. * gcc.dg/weak/typeof-2.c: Likewise. * gcc.target/aarch64/aapcs64/abitest-common.h: Likewise. * gcc.target/arm/naked-1.c: Likewise. * gcc.target/i386/pr9771-1.c: Likewise. * gcc.target/sparc/sparc-constant-1.c: Likewise. * gcc.target/sparc/struct-ret-check.c: Likewise. * gcc.target/x86_64/abi/test_struct_returning.c: Likewise. * gfortran.dg/c_ptr_tests_8_funcs.c: Likewise. * objc-obj-c++-shared/objc-test-suite-next-encode-assist-impl.h: Likewise. From-SVN: r201098
2013-07-21 18:17:52 +02:00
to the load from the GOT this also contains the name of the function so for
mips.opt (mrelax-pic-calls): New option. * config/mips/mips.opt (mrelax-pic-calls): New option. * config/mips/mips.c (mips_strip_unspec_address): Move it up in the file. (mips_unspec_call): Change "unspec_call" expander into this. (mips_strip_unspec_call): New function. (mips_got_load): Call mips_unspec_call instead of gen_unspec_call<mode>. (mips16_build_call_stub): Fix comment for fp_code. Adjust call to MIPS_CALL. (mips_cfg_in_reorg): New function. (mips16_lay_out_constants): Use it to decide whether to call CFG-aware insn splitting. (r10k_insert_cache_barriers): Move CFG set-up code from here to mips_reorg. Move DF set-up code from here ... (mips_df_reorg): ... to here. Call r10k_insert_cache_barriers from here. (mips_reorg): Call mips_df_reorg instead of r10k_insert_cache_barriers. Move CFG set-up code here from r10k_insert_cache_barriers. (mips_call_expr_from_insn): New function. (mips_pic_call_symbol_from_set): Likewise. (mips_find_pic_call_symbol): Likewise. (mips_annotate_pic_call_expr): Likewise. (mips_get_pic_call_symbol): Likewise. (mips_annotate_pic_calls): Likewise. (mips_override_options): Disable -mrelax-pic-calls unless PIC calls are used. (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16. * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it. * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc directive. * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec. (unspec_call<mode>): Remove it. (sibcall_internal, sibcall_value_internal, sibcall_value_multiple_internal, call_internal, call_split, call_value_internal, call_value_split, call_value_multiple_internal, call_value_multiple_split): Pass SIZE_OPNO to MIPS_CALL. (call_internal_direct, call_direct_split, call_value_internal_direct, call_value_direct_split): Pass -1 as SIZE_OPNO to MIPS_CALL. * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR. * configure: Regenerate. * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls and -mno-relax-pic-calls. (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls. testsuite/ * gcc.target/mips/mips.exp: Add relax-pic-calls under -mfoo/-mno-foo options. (mips-dg-options): Make -mrelax-pic-calls imply -mno-plt, -mabicalls and -mexplicit-relocs. * gcc.target/mips/call-1.c: New test. * gcc.target/mips/call-2.c: New test. * gcc.target/mips/call-3.c: New test. * gcc.target/mips/lazy-binding-1.c: Add MIPS-specific dg-options. * gcc.dg/tree-ssa/loop-1.c: Likewise. From-SVN: r151890
2009-09-19 22:23:55 +02:00
each call the function name would appear twice. */
/* { dg-options "-O1 -ftree-loop-ivcanon -funroll-loops -fdump-tree-ivcanon-details -fdump-tree-cunroll-details -fdump-tree-optimized -mno-relax-pic-calls" { target mips*-*-* } } */
__attribute__ ((pure))
int foo (int x);
int xxx(void)
tree-ssa-loop-ivcanon.c: New file. * tree-ssa-loop-ivcanon.c: New file. * tree-ssa-loop-manip.c (create_iv): New function. * Makefile.in (tree-ssa-loop-ivcanon.o): Add. (tree-ssa-loop.o, tree-ssa-loop-manip.o): Add SCEV_H dependency. * cfgloop.c (mark_single_exit_loops): New function. (verify_loop_structure): Verify single-exit loops. * cfgloop.h (struct loop): Add single_exit field. (LOOPS_HAVE_MARKED_SINGLE_EXITS): New constant. (mark_single_exit_loops): Declare. (tree_num_loop_insns): Declare. * cfgloopmanip.c (update_single_exits_after_duplication): New function. (duplicate_loop_to_header_edge): Use it. * common.opt (fivcanon): New flag. * timevar.def (TV_TREE_LOOP_IVCANON, TV_COMPLETE_UNROLL): New timevars. * tree-cfg.c (tree_find_edge_insert_loc): Return newly created block. (bsi_commit_edge_inserts_1): Pass null to tree_find_edge_insert_loc. (bsi_insert_on_edge_immediate): New function. * tree-flow.h (bsi_insert_on_edge_immediate, canonicalize_induction_variables, tree_unroll_loops_completely, create_iv): Declare. * tree-optimize.c (init_tree_optimization_passes): Add pass_iv_canon and pass_complete_unroll. * tree-pass.h (pass_iv_canon, pass_complete_unroll): Declare. * tree-scalar-evolution.c (get_loop_exit_condition, get_exit_conditions_rec, number_of_iterations_in_loop, scev_initialize): Use single_exit information. * tree-ssa-loop-niter.c (number_of_iterations_cond): Record missing assumptions. (loop_niter_by_eval): Return number of iterations as unsigned int. * tree-ssa-loop.c (tree_ssa_loop_init): Mark single exit loops. (tree_ssa_loop_ivcanon, gate_tree_ssa_loop_ivcanon, pass_iv_canon, tree_complete_unroll, gate_tree_complete_unroll, pass_complete_unroll): New passes. (tree_ssa_loop_done): Call free_numbers_of_iterations_estimates. * tree-ssanames.c (make_ssa_name): Allow creating ssa name before the defining statement is ready. * tree-vectorizer.c (vect_create_iv_simple): Removed. (vect_create_index_for_array_ref, vect_transform_loop_bound): Use create_iv. (vect_transform_loop_bound): Use single_exit information. (vect_analyze_loop_form): Cleanup bogus tests. (vectorize_loops): Do not call flow_loop_scan. * tree.h (may_negate_without_overflow_p): Declare. * fold-const.c (may_negate_without_overflow_p): Split out from ... (negate_expr_p): ... this function. (tree_expr_nonzero_p): Handle overflowed constants correctly. * doc/invoke.texi (-fivcanon): Document. * doc/passes.texi: Document canonical induction variable creation. * gcc.dg/tree-ssa/loop-1.c: New test. From-SVN: r86516
2004-08-24 22:48:23 +02:00
{
int x = 45;
int sum;
tree-ssa-loop-ivcanon.c: New file. * tree-ssa-loop-ivcanon.c: New file. * tree-ssa-loop-manip.c (create_iv): New function. * Makefile.in (tree-ssa-loop-ivcanon.o): Add. (tree-ssa-loop.o, tree-ssa-loop-manip.o): Add SCEV_H dependency. * cfgloop.c (mark_single_exit_loops): New function. (verify_loop_structure): Verify single-exit loops. * cfgloop.h (struct loop): Add single_exit field. (LOOPS_HAVE_MARKED_SINGLE_EXITS): New constant. (mark_single_exit_loops): Declare. (tree_num_loop_insns): Declare. * cfgloopmanip.c (update_single_exits_after_duplication): New function. (duplicate_loop_to_header_edge): Use it. * common.opt (fivcanon): New flag. * timevar.def (TV_TREE_LOOP_IVCANON, TV_COMPLETE_UNROLL): New timevars. * tree-cfg.c (tree_find_edge_insert_loc): Return newly created block. (bsi_commit_edge_inserts_1): Pass null to tree_find_edge_insert_loc. (bsi_insert_on_edge_immediate): New function. * tree-flow.h (bsi_insert_on_edge_immediate, canonicalize_induction_variables, tree_unroll_loops_completely, create_iv): Declare. * tree-optimize.c (init_tree_optimization_passes): Add pass_iv_canon and pass_complete_unroll. * tree-pass.h (pass_iv_canon, pass_complete_unroll): Declare. * tree-scalar-evolution.c (get_loop_exit_condition, get_exit_conditions_rec, number_of_iterations_in_loop, scev_initialize): Use single_exit information. * tree-ssa-loop-niter.c (number_of_iterations_cond): Record missing assumptions. (loop_niter_by_eval): Return number of iterations as unsigned int. * tree-ssa-loop.c (tree_ssa_loop_init): Mark single exit loops. (tree_ssa_loop_ivcanon, gate_tree_ssa_loop_ivcanon, pass_iv_canon, tree_complete_unroll, gate_tree_complete_unroll, pass_complete_unroll): New passes. (tree_ssa_loop_done): Call free_numbers_of_iterations_estimates. * tree-ssanames.c (make_ssa_name): Allow creating ssa name before the defining statement is ready. * tree-vectorizer.c (vect_create_iv_simple): Removed. (vect_create_index_for_array_ref, vect_transform_loop_bound): Use create_iv. (vect_transform_loop_bound): Use single_exit information. (vect_analyze_loop_form): Cleanup bogus tests. (vectorize_loops): Do not call flow_loop_scan. * tree.h (may_negate_without_overflow_p): Declare. * fold-const.c (may_negate_without_overflow_p): Split out from ... (negate_expr_p): ... this function. (tree_expr_nonzero_p): Handle overflowed constants correctly. * doc/invoke.texi (-fivcanon): Document. * doc/passes.texi: Document canonical induction variable creation. * gcc.dg/tree-ssa/loop-1.c: New test. From-SVN: r86516
2004-08-24 22:48:23 +02:00
while (x >>= 1)
sum += foo (x) * 2;
return sum;
tree-ssa-loop-ivcanon.c: New file. * tree-ssa-loop-ivcanon.c: New file. * tree-ssa-loop-manip.c (create_iv): New function. * Makefile.in (tree-ssa-loop-ivcanon.o): Add. (tree-ssa-loop.o, tree-ssa-loop-manip.o): Add SCEV_H dependency. * cfgloop.c (mark_single_exit_loops): New function. (verify_loop_structure): Verify single-exit loops. * cfgloop.h (struct loop): Add single_exit field. (LOOPS_HAVE_MARKED_SINGLE_EXITS): New constant. (mark_single_exit_loops): Declare. (tree_num_loop_insns): Declare. * cfgloopmanip.c (update_single_exits_after_duplication): New function. (duplicate_loop_to_header_edge): Use it. * common.opt (fivcanon): New flag. * timevar.def (TV_TREE_LOOP_IVCANON, TV_COMPLETE_UNROLL): New timevars. * tree-cfg.c (tree_find_edge_insert_loc): Return newly created block. (bsi_commit_edge_inserts_1): Pass null to tree_find_edge_insert_loc. (bsi_insert_on_edge_immediate): New function. * tree-flow.h (bsi_insert_on_edge_immediate, canonicalize_induction_variables, tree_unroll_loops_completely, create_iv): Declare. * tree-optimize.c (init_tree_optimization_passes): Add pass_iv_canon and pass_complete_unroll. * tree-pass.h (pass_iv_canon, pass_complete_unroll): Declare. * tree-scalar-evolution.c (get_loop_exit_condition, get_exit_conditions_rec, number_of_iterations_in_loop, scev_initialize): Use single_exit information. * tree-ssa-loop-niter.c (number_of_iterations_cond): Record missing assumptions. (loop_niter_by_eval): Return number of iterations as unsigned int. * tree-ssa-loop.c (tree_ssa_loop_init): Mark single exit loops. (tree_ssa_loop_ivcanon, gate_tree_ssa_loop_ivcanon, pass_iv_canon, tree_complete_unroll, gate_tree_complete_unroll, pass_complete_unroll): New passes. (tree_ssa_loop_done): Call free_numbers_of_iterations_estimates. * tree-ssanames.c (make_ssa_name): Allow creating ssa name before the defining statement is ready. * tree-vectorizer.c (vect_create_iv_simple): Removed. (vect_create_index_for_array_ref, vect_transform_loop_bound): Use create_iv. (vect_transform_loop_bound): Use single_exit information. (vect_analyze_loop_form): Cleanup bogus tests. (vectorize_loops): Do not call flow_loop_scan. * tree.h (may_negate_without_overflow_p): Declare. * fold-const.c (may_negate_without_overflow_p): Split out from ... (negate_expr_p): ... this function. (tree_expr_nonzero_p): Handle overflowed constants correctly. * doc/invoke.texi (-fivcanon): Document. * doc/passes.texi: Document canonical induction variable creation. * gcc.dg/tree-ssa/loop-1.c: New test. From-SVN: r86516
2004-08-24 22:48:23 +02:00
}
/* We should be able to find out that the loop iterates four times and unroll it completely. */
/* { dg-final { scan-tree-dump-times "Added canonical iv to loop 1, 4 iterations" 1 "ivcanon"} } */
nothrow1.C: Use cleanup-tree-dump. * g++.dg/opt/nothrow1.C: Use cleanup-tree-dump. g++.dg/tree-ssa/empty-1.C, g++.dg/tree-ssa/nothrow-1.C, g++.dg/tree-ssa/pointer-reference-alias.C, g++.dg/tree-ssa/pr15791-3.C, g++.dg/tree-ssa/pr15791-4.C, g++.dg/tree-ssa/pr15791-5.C, g++.dg/tree-ssa/ssa-cast-1.C g++.dg/tree-ssa/ssa-sra-1.C, g++.dg/tree-ssa/ssa-sra-2.C: Ditto g++.dg/vect/pr19951.cc: Ditto. * gcc.dg/builtins-43.c, gcc.dg/builtins-44.c, gcc.dg/builtins-45.c, gcc.dg/builtins-47.c: Ditto. * gcc.dg/pr15784-1.c, gcc.dg/pr15784-2.c, gcc.dg/pr15784-3.c, gcc.dg/pr20115-1.c: Ditto. * gcc.dg/tree-ssa/20030530-2.c, gcc.dg/tree-ssa/20030611-1.c, gcc.dg/tree-ssa/20030703-1.c, gcc.dg/tree-ssa/20030703-2.c, gcc.dg/tree-ssa/20030708-1.c, gcc.dg/tree-ssa/20030709-1.c, gcc.dg/tree-ssa/20030709-2.c, gcc.dg/tree-ssa/20030709-3.c, gcc.dg/tree-ssa/20030710-1.c, gcc.dg/tree-ssa/20030711-1.c, gcc.dg/tree-ssa/20030711-2.c, gcc.dg/tree-ssa/20030711-3.c, gcc.dg/tree-ssa/20030714-1.c, gcc.dg/tree-ssa/20030714-2.c, gcc.dg/tree-ssa/20030728-1.c, gcc.dg/tree-ssa/20030729-1.c, gcc.dg/tree-ssa/20030730-1.c, gcc.dg/tree-ssa/20030730-2.c, gcc.dg/tree-ssa/20030731-1.c, gcc.dg/tree-ssa/20030731-2.c, gcc.dg/tree-ssa/20030807-1.c, gcc.dg/tree-ssa/20030807-10.c, gcc.dg/tree-ssa/20030807-11.c, gcc.dg/tree-ssa/20030807-2.c, gcc.dg/tree-ssa/20030807-3.c, gcc.dg/tree-ssa/20030807-5.c, gcc.dg/tree-ssa/20030807-6.c, gcc.dg/tree-ssa/20030807-7.c, gcc.dg/tree-ssa/20030807-8.c, gcc.dg/tree-ssa/20030807-9.c, gcc.dg/tree-ssa/20030808-1.c, gcc.dg/tree-ssa/20030814-1.c, gcc.dg/tree-ssa/20030814-2.c, gcc.dg/tree-ssa/20030814-3.c, gcc.dg/tree-ssa/20030814-4.c, gcc.dg/tree-ssa/20030814-5.c, gcc.dg/tree-ssa/20030814-6.c, gcc.dg/tree-ssa/20030814-7.c, gcc.dg/tree-ssa/20030815-1.c, gcc.dg/tree-ssa/20030824-1.c, gcc.dg/tree-ssa/20030824-2.c, gcc.dg/tree-ssa/20030825-1.c, gcc.dg/tree-ssa/20030907-1.c, gcc.dg/tree-ssa/20030917-1.c, gcc.dg/tree-ssa/20030917-3.c, gcc.dg/tree-ssa/20030922-1.c, gcc.dg/tree-ssa/20030922-2.c, gcc.dg/tree-ssa/20031015-1.c, gcc.dg/tree-ssa/20031021-1.c, gcc.dg/tree-ssa/20031022-1.c, gcc.dg/tree-ssa/20031106-1.c, gcc.dg/tree-ssa/20031106-2.c, gcc.dg/tree-ssa/20031106-3.c, gcc.dg/tree-ssa/20031106-4.c, gcc.dg/tree-ssa/20031106-5.c, gcc.dg/tree-ssa/20031106-6.c, gcc.dg/tree-ssa/20031216-1.c, gcc.dg/tree-ssa/20040204-1.c, gcc.dg/tree-ssa/20040210-1.c, gcc.dg/tree-ssa/20040211-1.c, gcc.dg/tree-ssa/20040216-1.c, gcc.dg/tree-ssa/20040305-1.c, gcc.dg/tree-ssa/20040430-1.c, gcc.dg/tree-ssa/20040513-1.c, gcc.dg/tree-ssa/20040513-2.c, gcc.dg/tree-ssa/20040514-1.c, gcc.dg/tree-ssa/20040514-2.c, gcc.dg/tree-ssa/20040517-1.c, gcc.dg/tree-ssa/20040518-1.c, gcc.dg/tree-ssa/20040518-2.c, gcc.dg/tree-ssa/20040615-1.c, gcc.dg/tree-ssa/20040624-1.c, gcc.dg/tree-ssa/20040703-1.c, gcc.dg/tree-ssa/20040721-1.c, gcc.dg/tree-ssa/20040729-1.c, gcc.dg/tree-ssa/20040911-1.c, gcc.dg/tree-ssa/20041002-1.c, gcc.dg/tree-ssa/20041122-1.c, gcc.dg/tree-ssa/20050128-1.c, gcc.dg/tree-ssa/20050215-1.c, gcc.dg/tree-ssa/asm-1.c, gcc.dg/tree-ssa/asm-2.c, gcc.dg/tree-ssa/asm-3.c, gcc.dg/tree-ssa/cfgcleanup-1.c, gcc.dg/tree-ssa/complex-1.c, gcc.dg/tree-ssa/complex-2.c, gcc.dg/tree-ssa/copy-headers.c, gcc.dg/tree-ssa/ifc-20040816-1.c, gcc.dg/tree-ssa/ifc-20040816-2.c, gcc.dg/tree-ssa/inline_asm-1.c, gcc.dg/tree-ssa/inline_asm-2.c, gcc.dg/tree-ssa/loop-1.c, gcc.dg/tree-ssa/loop-2.c, gcc.dg/tree-ssa/loop-3.c, gcc.dg/tree-ssa/loop-4.c, gcc.dg/tree-ssa/loop-5.c, gcc.dg/tree-ssa/loop-6.c, gcc.dg/tree-ssa/loop-7.c, gcc.dg/tree-ssa/ltrans-1.c, gcc.dg/tree-ssa/ltrans-2.c, gcc.dg/tree-ssa/ltrans-3.c, gcc.dg/tree-ssa/ltrans-4.c, gcc.dg/tree-ssa/ltrans-5.c, gcc.dg/tree-ssa/pr15349.c, gcc.dg/tree-ssa/pr15791-3.c, gcc.dg/tree-ssa/pr15791-4.c, gcc.dg/tree-ssa/pr15791-5.c, gcc.dg/tree-ssa/pr16721.c, gcc.dg/tree-ssa/pr19633.c, gcc.dg/tree-ssa/sra-1.c, gcc.dg/tree-ssa/sra-2.c, gcc.dg/tree-ssa/sra-3.c, gcc.dg/tree-ssa/ssa-ccp-1.c, gcc.dg/tree-ssa/ssa-ccp-10.c, gcc.dg/tree-ssa/ssa-ccp-11.c, gcc.dg/tree-ssa/ssa-ccp-2.c, gcc.dg/tree-ssa/ssa-ccp-3.c, gcc.dg/tree-ssa/ssa-ccp-7.c, gcc.dg/tree-ssa/ssa-ccp-9.c, gcc.dg/tree-ssa/ssa-dce-1.c, gcc.dg/tree-ssa/ssa-dce-2.c, gcc.dg/tree-ssa/ssa-dce-3.c, gcc.dg/tree-ssa/ssa-dom-ccp-1.c, gcc.dg/tree-ssa/ssa-dom-cse-1.c, gcc.dg/tree-ssa/ssa-dom-thread-1.c, gcc.dg/tree-ssa/ssa-pre-1.c, gcc.dg/tree-ssa/ssa-pre-2.c, gcc.dg/tree-ssa/ssa-pre-3.c, gcc.dg/tree-ssa/ssa-pre-4.c, gcc.dg/tree-ssa/ssa-pre-5.c, gcc.dg/tree-ssa/ssa-pre-6.c, gcc.dg/tree-ssa/ssa-sink-1.c, gcc.dg/tree-ssa/ssa-sink-2.c, gcc.dg/tree-ssa/ssa-sink-3.c, gcc.dg/tree-ssa/ssa-sink-4.c, gcc.dg/tree-ssa/tailcall-1.c, gcc.dg/tree-ssa/tailcall-2.c, gcc.dg/tree-ssa/tailrecursion-1.c, gcc.dg/tree-ssa/tailrecursion-2.c, gcc.dg/tree-ssa/tailrecursion-3.c, gcc.dg/tree-ssa/tailrecursion-4.c, gcc.dg/tree-ssa/tailrecursion-5.c, gcc.dg/tree-ssa/useless-1.c: Ditto. gcc.dg/vect/pr16105.c, gcc.dg/vect/pr18308.c, gcc.dg/vect/pr18400.c, gcc.dg/vect/pr18425.c, gcc.dg/vect/pr18536.c, gcc.dg/vect/vect-1.c, gcc.dg/vect/vect-10.c, gcc.dg/vect/vect-11.c, gcc.dg/vect/vect-12.c, gcc.dg/vect/vect-13.c, gcc.dg/vect/vect-14.c, gcc.dg/vect/vect-15.c, gcc.dg/vect/vect-16.c, gcc.dg/vect/vect-17.c, gcc.dg/vect/vect-18.c, gcc.dg/vect/vect-19.c, gcc.dg/vect/vect-2.c, gcc.dg/vect/vect-20.c, gcc.dg/vect/vect-21.c, gcc.dg/vect/vect-22.c, gcc.dg/vect/vect-23.c, gcc.dg/vect/vect-24.c, gcc.dg/vect/vect-25.c, gcc.dg/vect/vect-26.c, gcc.dg/vect/vect-27.c, gcc.dg/vect/vect-28.c, gcc.dg/vect/vect-29.c, gcc.dg/vect/vect-3.c, gcc.dg/vect/vect-30.c, gcc.dg/vect/vect-31.c, gcc.dg/vect/vect-32.c, gcc.dg/vect/vect-33.c, gcc.dg/vect/vect-34.c, gcc.dg/vect/vect-35.c, gcc.dg/vect/vect-36.c, gcc.dg/vect/vect-37.c, gcc.dg/vect/vect-38.c, gcc.dg/vect/vect-4.c, gcc.dg/vect/vect-40.c, gcc.dg/vect/vect-41.c, gcc.dg/vect/vect-42.c, gcc.dg/vect/vect-43.c, gcc.dg/vect/vect-44.c, gcc.dg/vect/vect-45.c, gcc.dg/vect/vect-46.c, gcc.dg/vect/vect-47.c, gcc.dg/vect/vect-48.c, gcc.dg/vect/vect-49.c, gcc.dg/vect/vect-5.c, gcc.dg/vect/vect-50.c, gcc.dg/vect/vect-51.c, gcc.dg/vect/vect-52.c, gcc.dg/vect/vect-53.c, gcc.dg/vect/vect-54.c, gcc.dg/vect/vect-55.c, gcc.dg/vect/vect-56.c, gcc.dg/vect/vect-57.c, gcc.dg/vect/vect-58.c, gcc.dg/vect/vect-59.c, gcc.dg/vect/vect-6.c, gcc.dg/vect/vect-60.c, gcc.dg/vect/vect-61.c, gcc.dg/vect/vect-62.c, gcc.dg/vect/vect-63.c, gcc.dg/vect/vect-64.c, gcc.dg/vect/vect-65.c, gcc.dg/vect/vect-66.c, gcc.dg/vect/vect-67.c, gcc.dg/vect/vect-68.c, gcc.dg/vect/vect-69.c, gcc.dg/vect/vect-7.c, gcc.dg/vect/vect-70.c, gcc.dg/vect/vect-71.c, gcc.dg/vect/vect-72.c, gcc.dg/vect/vect-73.c, gcc.dg/vect/vect-74.c, gcc.dg/vect/vect-75.c, gcc.dg/vect/vect-76.c, gcc.dg/vect/vect-77.c, gcc.dg/vect/vect-78.c, gcc.dg/vect/vect-79.c, gcc.dg/vect/vect-8.c, gcc.dg/vect/vect-80.c, gcc.dg/vect/vect-82.c, gcc.dg/vect/vect-82_64.c, gcc.dg/vect/vect-83.c, gcc.dg/vect/vect-83_64.c, gcc.dg/vect/vect-85.c, gcc.dg/vect/vect-86.c, gcc.dg/vect/vect-87.c, gcc.dg/vect/vect-88.c, gcc.dg/vect/vect-89.c, gcc.dg/vect/vect-9.c, gcc.dg/vect/vect-96.c, gcc.dg/vect/vect-97.c, gcc.dg/vect/vect-98.c, gcc.dg/vect/vect-all.c, gcc.dg/vect/vect-none.c: Ditto. * treelang/compile/extrafunc.tree, treelang/compile/extravar.tree, treelang/compile/unsigned.tree: Ditto. From-SVN: r97342
2005-03-31 20:34:19 +02:00
/* { dg-final { cleanup-tree-dump "ivcanon" } } */
/* { dg-final { scan-tree-dump-times "loop with 5 iterations completely unrolled" 1 "cunroll"} } */
nothrow1.C: Use cleanup-tree-dump. * g++.dg/opt/nothrow1.C: Use cleanup-tree-dump. g++.dg/tree-ssa/empty-1.C, g++.dg/tree-ssa/nothrow-1.C, g++.dg/tree-ssa/pointer-reference-alias.C, g++.dg/tree-ssa/pr15791-3.C, g++.dg/tree-ssa/pr15791-4.C, g++.dg/tree-ssa/pr15791-5.C, g++.dg/tree-ssa/ssa-cast-1.C g++.dg/tree-ssa/ssa-sra-1.C, g++.dg/tree-ssa/ssa-sra-2.C: Ditto g++.dg/vect/pr19951.cc: Ditto. * gcc.dg/builtins-43.c, gcc.dg/builtins-44.c, gcc.dg/builtins-45.c, gcc.dg/builtins-47.c: Ditto. * gcc.dg/pr15784-1.c, gcc.dg/pr15784-2.c, gcc.dg/pr15784-3.c, gcc.dg/pr20115-1.c: Ditto. * gcc.dg/tree-ssa/20030530-2.c, gcc.dg/tree-ssa/20030611-1.c, gcc.dg/tree-ssa/20030703-1.c, gcc.dg/tree-ssa/20030703-2.c, gcc.dg/tree-ssa/20030708-1.c, gcc.dg/tree-ssa/20030709-1.c, gcc.dg/tree-ssa/20030709-2.c, gcc.dg/tree-ssa/20030709-3.c, gcc.dg/tree-ssa/20030710-1.c, gcc.dg/tree-ssa/20030711-1.c, gcc.dg/tree-ssa/20030711-2.c, gcc.dg/tree-ssa/20030711-3.c, gcc.dg/tree-ssa/20030714-1.c, gcc.dg/tree-ssa/20030714-2.c, gcc.dg/tree-ssa/20030728-1.c, gcc.dg/tree-ssa/20030729-1.c, gcc.dg/tree-ssa/20030730-1.c, gcc.dg/tree-ssa/20030730-2.c, gcc.dg/tree-ssa/20030731-1.c, gcc.dg/tree-ssa/20030731-2.c, gcc.dg/tree-ssa/20030807-1.c, gcc.dg/tree-ssa/20030807-10.c, gcc.dg/tree-ssa/20030807-11.c, gcc.dg/tree-ssa/20030807-2.c, gcc.dg/tree-ssa/20030807-3.c, gcc.dg/tree-ssa/20030807-5.c, gcc.dg/tree-ssa/20030807-6.c, gcc.dg/tree-ssa/20030807-7.c, gcc.dg/tree-ssa/20030807-8.c, gcc.dg/tree-ssa/20030807-9.c, gcc.dg/tree-ssa/20030808-1.c, gcc.dg/tree-ssa/20030814-1.c, gcc.dg/tree-ssa/20030814-2.c, gcc.dg/tree-ssa/20030814-3.c, gcc.dg/tree-ssa/20030814-4.c, gcc.dg/tree-ssa/20030814-5.c, gcc.dg/tree-ssa/20030814-6.c, gcc.dg/tree-ssa/20030814-7.c, gcc.dg/tree-ssa/20030815-1.c, gcc.dg/tree-ssa/20030824-1.c, gcc.dg/tree-ssa/20030824-2.c, gcc.dg/tree-ssa/20030825-1.c, gcc.dg/tree-ssa/20030907-1.c, gcc.dg/tree-ssa/20030917-1.c, gcc.dg/tree-ssa/20030917-3.c, gcc.dg/tree-ssa/20030922-1.c, gcc.dg/tree-ssa/20030922-2.c, gcc.dg/tree-ssa/20031015-1.c, gcc.dg/tree-ssa/20031021-1.c, gcc.dg/tree-ssa/20031022-1.c, gcc.dg/tree-ssa/20031106-1.c, gcc.dg/tree-ssa/20031106-2.c, gcc.dg/tree-ssa/20031106-3.c, gcc.dg/tree-ssa/20031106-4.c, gcc.dg/tree-ssa/20031106-5.c, gcc.dg/tree-ssa/20031106-6.c, gcc.dg/tree-ssa/20031216-1.c, gcc.dg/tree-ssa/20040204-1.c, gcc.dg/tree-ssa/20040210-1.c, gcc.dg/tree-ssa/20040211-1.c, gcc.dg/tree-ssa/20040216-1.c, gcc.dg/tree-ssa/20040305-1.c, gcc.dg/tree-ssa/20040430-1.c, gcc.dg/tree-ssa/20040513-1.c, gcc.dg/tree-ssa/20040513-2.c, gcc.dg/tree-ssa/20040514-1.c, gcc.dg/tree-ssa/20040514-2.c, gcc.dg/tree-ssa/20040517-1.c, gcc.dg/tree-ssa/20040518-1.c, gcc.dg/tree-ssa/20040518-2.c, gcc.dg/tree-ssa/20040615-1.c, gcc.dg/tree-ssa/20040624-1.c, gcc.dg/tree-ssa/20040703-1.c, gcc.dg/tree-ssa/20040721-1.c, gcc.dg/tree-ssa/20040729-1.c, gcc.dg/tree-ssa/20040911-1.c, gcc.dg/tree-ssa/20041002-1.c, gcc.dg/tree-ssa/20041122-1.c, gcc.dg/tree-ssa/20050128-1.c, gcc.dg/tree-ssa/20050215-1.c, gcc.dg/tree-ssa/asm-1.c, gcc.dg/tree-ssa/asm-2.c, gcc.dg/tree-ssa/asm-3.c, gcc.dg/tree-ssa/cfgcleanup-1.c, gcc.dg/tree-ssa/complex-1.c, gcc.dg/tree-ssa/complex-2.c, gcc.dg/tree-ssa/copy-headers.c, gcc.dg/tree-ssa/ifc-20040816-1.c, gcc.dg/tree-ssa/ifc-20040816-2.c, gcc.dg/tree-ssa/inline_asm-1.c, gcc.dg/tree-ssa/inline_asm-2.c, gcc.dg/tree-ssa/loop-1.c, gcc.dg/tree-ssa/loop-2.c, gcc.dg/tree-ssa/loop-3.c, gcc.dg/tree-ssa/loop-4.c, gcc.dg/tree-ssa/loop-5.c, gcc.dg/tree-ssa/loop-6.c, gcc.dg/tree-ssa/loop-7.c, gcc.dg/tree-ssa/ltrans-1.c, gcc.dg/tree-ssa/ltrans-2.c, gcc.dg/tree-ssa/ltrans-3.c, gcc.dg/tree-ssa/ltrans-4.c, gcc.dg/tree-ssa/ltrans-5.c, gcc.dg/tree-ssa/pr15349.c, gcc.dg/tree-ssa/pr15791-3.c, gcc.dg/tree-ssa/pr15791-4.c, gcc.dg/tree-ssa/pr15791-5.c, gcc.dg/tree-ssa/pr16721.c, gcc.dg/tree-ssa/pr19633.c, gcc.dg/tree-ssa/sra-1.c, gcc.dg/tree-ssa/sra-2.c, gcc.dg/tree-ssa/sra-3.c, gcc.dg/tree-ssa/ssa-ccp-1.c, gcc.dg/tree-ssa/ssa-ccp-10.c, gcc.dg/tree-ssa/ssa-ccp-11.c, gcc.dg/tree-ssa/ssa-ccp-2.c, gcc.dg/tree-ssa/ssa-ccp-3.c, gcc.dg/tree-ssa/ssa-ccp-7.c, gcc.dg/tree-ssa/ssa-ccp-9.c, gcc.dg/tree-ssa/ssa-dce-1.c, gcc.dg/tree-ssa/ssa-dce-2.c, gcc.dg/tree-ssa/ssa-dce-3.c, gcc.dg/tree-ssa/ssa-dom-ccp-1.c, gcc.dg/tree-ssa/ssa-dom-cse-1.c, gcc.dg/tree-ssa/ssa-dom-thread-1.c, gcc.dg/tree-ssa/ssa-pre-1.c, gcc.dg/tree-ssa/ssa-pre-2.c, gcc.dg/tree-ssa/ssa-pre-3.c, gcc.dg/tree-ssa/ssa-pre-4.c, gcc.dg/tree-ssa/ssa-pre-5.c, gcc.dg/tree-ssa/ssa-pre-6.c, gcc.dg/tree-ssa/ssa-sink-1.c, gcc.dg/tree-ssa/ssa-sink-2.c, gcc.dg/tree-ssa/ssa-sink-3.c, gcc.dg/tree-ssa/ssa-sink-4.c, gcc.dg/tree-ssa/tailcall-1.c, gcc.dg/tree-ssa/tailcall-2.c, gcc.dg/tree-ssa/tailrecursion-1.c, gcc.dg/tree-ssa/tailrecursion-2.c, gcc.dg/tree-ssa/tailrecursion-3.c, gcc.dg/tree-ssa/tailrecursion-4.c, gcc.dg/tree-ssa/tailrecursion-5.c, gcc.dg/tree-ssa/useless-1.c: Ditto. gcc.dg/vect/pr16105.c, gcc.dg/vect/pr18308.c, gcc.dg/vect/pr18400.c, gcc.dg/vect/pr18425.c, gcc.dg/vect/pr18536.c, gcc.dg/vect/vect-1.c, gcc.dg/vect/vect-10.c, gcc.dg/vect/vect-11.c, gcc.dg/vect/vect-12.c, gcc.dg/vect/vect-13.c, gcc.dg/vect/vect-14.c, gcc.dg/vect/vect-15.c, gcc.dg/vect/vect-16.c, gcc.dg/vect/vect-17.c, gcc.dg/vect/vect-18.c, gcc.dg/vect/vect-19.c, gcc.dg/vect/vect-2.c, gcc.dg/vect/vect-20.c, gcc.dg/vect/vect-21.c, gcc.dg/vect/vect-22.c, gcc.dg/vect/vect-23.c, gcc.dg/vect/vect-24.c, gcc.dg/vect/vect-25.c, gcc.dg/vect/vect-26.c, gcc.dg/vect/vect-27.c, gcc.dg/vect/vect-28.c, gcc.dg/vect/vect-29.c, gcc.dg/vect/vect-3.c, gcc.dg/vect/vect-30.c, gcc.dg/vect/vect-31.c, gcc.dg/vect/vect-32.c, gcc.dg/vect/vect-33.c, gcc.dg/vect/vect-34.c, gcc.dg/vect/vect-35.c, gcc.dg/vect/vect-36.c, gcc.dg/vect/vect-37.c, gcc.dg/vect/vect-38.c, gcc.dg/vect/vect-4.c, gcc.dg/vect/vect-40.c, gcc.dg/vect/vect-41.c, gcc.dg/vect/vect-42.c, gcc.dg/vect/vect-43.c, gcc.dg/vect/vect-44.c, gcc.dg/vect/vect-45.c, gcc.dg/vect/vect-46.c, gcc.dg/vect/vect-47.c, gcc.dg/vect/vect-48.c, gcc.dg/vect/vect-49.c, gcc.dg/vect/vect-5.c, gcc.dg/vect/vect-50.c, gcc.dg/vect/vect-51.c, gcc.dg/vect/vect-52.c, gcc.dg/vect/vect-53.c, gcc.dg/vect/vect-54.c, gcc.dg/vect/vect-55.c, gcc.dg/vect/vect-56.c, gcc.dg/vect/vect-57.c, gcc.dg/vect/vect-58.c, gcc.dg/vect/vect-59.c, gcc.dg/vect/vect-6.c, gcc.dg/vect/vect-60.c, gcc.dg/vect/vect-61.c, gcc.dg/vect/vect-62.c, gcc.dg/vect/vect-63.c, gcc.dg/vect/vect-64.c, gcc.dg/vect/vect-65.c, gcc.dg/vect/vect-66.c, gcc.dg/vect/vect-67.c, gcc.dg/vect/vect-68.c, gcc.dg/vect/vect-69.c, gcc.dg/vect/vect-7.c, gcc.dg/vect/vect-70.c, gcc.dg/vect/vect-71.c, gcc.dg/vect/vect-72.c, gcc.dg/vect/vect-73.c, gcc.dg/vect/vect-74.c, gcc.dg/vect/vect-75.c, gcc.dg/vect/vect-76.c, gcc.dg/vect/vect-77.c, gcc.dg/vect/vect-78.c, gcc.dg/vect/vect-79.c, gcc.dg/vect/vect-8.c, gcc.dg/vect/vect-80.c, gcc.dg/vect/vect-82.c, gcc.dg/vect/vect-82_64.c, gcc.dg/vect/vect-83.c, gcc.dg/vect/vect-83_64.c, gcc.dg/vect/vect-85.c, gcc.dg/vect/vect-86.c, gcc.dg/vect/vect-87.c, gcc.dg/vect/vect-88.c, gcc.dg/vect/vect-89.c, gcc.dg/vect/vect-9.c, gcc.dg/vect/vect-96.c, gcc.dg/vect/vect-97.c, gcc.dg/vect/vect-98.c, gcc.dg/vect/vect-all.c, gcc.dg/vect/vect-none.c: Ditto. * treelang/compile/extrafunc.tree, treelang/compile/extravar.tree, treelang/compile/unsigned.tree: Ditto. From-SVN: r97342
2005-03-31 20:34:19 +02:00
/* { dg-final { cleanup-tree-dump "cunroll" } } */
tree-pass.h (TODO_remove_unused_locals): Define. 2006-01-05 Richard Guenther <rguenther@suse.de> Diego Novillo <dnovillo@redhat.com> * tree-pass.h (TODO_remove_unused_locals): Define. * gimple-low.c (expand_var_p, remove_useless_vars, pass_remove_useless_vars): Remove. Update all users. * tree-ssa-live.c (mark_all_vars_used_1): Handle SSA names. (remove_unused_locals): New function. * tree-flow.h (remove_unused_locals): Declare. * passes.c (execute_todo): Call remove_unused_locals if TODO_remove_unused_locals is set. * tree-into-ssa.c (pass_build_ssa): Add TODO_remove_unused_locals. * tree-ssa-dce.c (pass_dce): Likewise. * tree-outof-ssa.c (pass_del_ssa): Likewise. * gcc.dg/tree-ssa/loop-11.c: Deal with removed vars pass. * gcc.dg/tree-ssa/loop-8.c: Likewise. * gcc.dg/tree-ssa/loop-1.c: Likewise. * gcc.dg/tree-ssa/pr23294.c: Likewise. * gcc.dg/tree-ssa/pr21985.c: Likewise. * gcc.dg/tree-ssa/loop-14.c: Likewise. * gcc.dg/tree-ssa/loop-2.c: Likewise. * gcc.dg/tree-ssa/loop-3.c: Likewise. * gcc.dg/tree-ssa/loop-4.c: Likewise. * gcc.dg/tree-ssa/pr21171.c: Likewise. * gcc.dg/tree-ssa/loop-5.c: Likewise. * gcc.dg/tree-ssa/loop-10.c: Likewise. * gcc.dg/tree-ssa/loop-6.c: Likewise. * treelang/compile/extravar.tree: Likewise. * g++.dg/tree-ssa/ssa-cast-1.C: Likewise. * g++.dg/tree-ssa/pointer-reference-alias.C: Likewise. * g++.dg/tree-ssa/ssa-sra-1.C: Likewise. * g++.dg/tree-ssa/ssa-sra-2.C: Likewise. * gcc.dg/tree-ssa/20031106-6.c: Disable SRA. Co-Authored-By: Diego Novillo <dnovillo@redhat.com> From-SVN: r109379
2006-01-05 14:53:54 +01:00
/* { dg-final { scan-tree-dump-times "foo" 5 "optimized"} } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
/* Because hppa, ia64 and Windows targets include an external declaration
for foo as well as the calls we need to look for something more specific
than just foo in order to count only the calls and not the declaration. */
/* The SH targets always use separate instructions to load the address
and to do the actual call - bsr is only generated by link time
relaxation. */
/* CRIS keeps the address in a register. */
/* m68k sometimes puts the address in a register, depending on CPU and PIC. */
/* { dg-final { scan-assembler-times "foo" 5 { xfail hppa*-*-* ia64*-*-* sh*-*-* cris-*-* crisv32-*-* fido-*-* m68k-*-* i?86-*-mingw* i?86-*-cygwin* x86_64-*-mingw* visium-*-* } } } */
/* { dg-final { scan-assembler-times "foo,%r" 5 { target hppa*-*-* } } } */
/* { dg-final { scan-assembler-times "= foo" 5 { target ia64*-*-* } } } */
/* { dg-final { scan-assembler-times "call\[ \t\]*_foo" 5 { target i?86-*-mingw* i?86-*-cygwin* } } } */
/* { dg-final { scan-assembler-times "call\[ \t\]*foo" 5 { target x86_64-*-mingw* } } } */
/* { dg-final { scan-assembler-times "jsr|bsrf|blink\ttr?,r18" 5 { target sh*-*-* } } } */
/* { dg-final { scan-assembler-times "Jsr \\\$r" 5 { target cris-*-* } } } */
/* { dg-final { scan-assembler-times "\[jb\]sr" 5 { target fido-*-* m68k-*-* } } } */
/* { dg-final { scan-assembler-times "bra *tr,r\[1-9\]*,r21" 5 { target visium-*-* } } } */