aboutsummaryrefslogtreecommitdiff
path: root/gcc/passes.c
diff options
context:
space:
mode:
authorXinliang David Li <davidxl@google.com>2008-06-04 21:49:45 +0000
committerXinliang David Li <davidxl@gcc.gnu.org>2008-06-04 21:49:45 +0000
commitc2699190282c19bd5703de0a606b842774715074 (patch)
treee298fb5d3a5ce2f2f94d42716feeeb493ca9e188 /gcc/passes.c
parent7db5da56edab33b9dc4ab1991ad06d023c9516b1 (diff)
downloadgcc-c2699190282c19bd5703de0a606b842774715074.zip
gcc-c2699190282c19bd5703de0a606b842774715074.tar.gz
gcc-c2699190282c19bd5703de0a606b842774715074.tar.bz2
tree-call-cdce.c: New file.
2008-06-04 Xinliang David Li <davidxl@google.com> * tree-call-cdce.c: New file. (cond_dead_built_in_calls): New static variable. (input_domain): New struct. (check_pow): New function. (check_builtin_call): Ditto. (check_target_format): Ditto. (is_call_dce_candidate): Ditto. (gen_one_condition): Ditto. (gen_conditions_for_domain): Ditto. (get_domain): Ditto. (gen_conditions_for_pow_cst_base): Ditto. (gen_conditions_for_pow_int_base): Ditto. (gen_conditions_for_pow): Ditto. (get_no_error_domain): Ditto. (gen_shrink_wrap_conditions): Ditto. (shrink_wrap_one_built_in_call): Ditto. (shink_wrap_conditional_dead_built_in_calls): Ditto. (tree_call_cdce): Ditto. (gate_call_cdce): Ditto. (pass_call_cdce): New gimple pass. * passes.c: (init_optimization_passes): New pass. * tree-pass.h: New pass declaration. * opts.c (decode_options): New flag setting. * common.opt: Add -ftree-builtin-call-dce flag. * Makefile.in: Add new source file. * tempvar.def: New tv_id. * doc/invoke.texi (-ftree-builtin-call-dce): New flag. 2008-06-04 Xinliang David Li <davidxl@google.com> * gcc.dg/cdce1.c: New test. * gcc.dg/cdce2.c: Ditto. * g++.dg/cdce3.C: Ditto. From-SVN: r136374
Diffstat (limited to 'gcc/passes.c')
-rw-r--r--gcc/passes.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/passes.c b/gcc/passes.c
index 56862d8..4f19f7a 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -561,6 +561,14 @@ init_optimization_passes (void)
NEXT_PASS (pass_copy_prop);
NEXT_PASS (pass_merge_phi);
NEXT_PASS (pass_dce);
+ /* Ideally the function call conditional
+ dead code elimination phase can be delayed
+ till later where potentially more opportunities
+ can be found. Due to lack of good ways to
+ update VDEFs associated with the shrink-wrapped
+ calls, it is better to do the transformation
+ here where memory SSA is not built yet. */
+ NEXT_PASS (pass_call_cdce);
NEXT_PASS (pass_update_address_taken);
NEXT_PASS (pass_simple_dse);
NEXT_PASS (pass_tail_recursion);