diff options
author | Michael Matz <matz@suse.de> | 2009-10-29 16:41:10 +0000 |
---|---|---|
committer | Michael Matz <matz@gcc.gnu.org> | 2009-10-29 16:41:10 +0000 |
commit | 44e824996b295fb81976a35028097fea1b89c809 (patch) | |
tree | 78477739bb15b85a322a94a9a30767583a0fc1cf /gcc/tree-ssa-math-opts.c | |
parent | 64ba093a7ab56b482eca1ac6bf3c09454325e144 (diff) | |
download | gcc-44e824996b295fb81976a35028097fea1b89c809.zip gcc-44e824996b295fb81976a35028097fea1b89c809.tar.gz gcc-44e824996b295fb81976a35028097fea1b89c809.tar.bz2 |
tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
* tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
(gate_convert_to_rsqrt): Ditto.
(pass_convert_to_rsqrt): Ditto.
* tree-pass.h (pass_convert_to_rsqrt): Don't declare.
* passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt
to pass list.
* config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order.
testsuite/
* gcc.target/i386/sse-recip.c: Use fabsf instead of != .
* gcc.target/i386/sse-recip-vec.c: Ditto.
* gcc.target/i386/brokensqrt.c: New test.
From-SVN: r153713
Diffstat (limited to 'gcc/tree-ssa-math-opts.c')
-rw-r--r-- | gcc/tree-ssa-math-opts.c | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c index 11ce546..f0fcc2b 100644 --- a/gcc/tree-ssa-math-opts.c +++ b/gcc/tree-ssa-math-opts.c @@ -791,98 +791,6 @@ struct gimple_opt_pass pass_cse_sincos = } }; -/* Find all expressions in the form of sqrt(a/b) and - convert them to rsqrt(b/a). */ - -static unsigned int -execute_convert_to_rsqrt (void) -{ - basic_block bb; - - FOR_EACH_BB (bb) - { - gimple_stmt_iterator gsi; - - for (gsi = gsi_after_labels (bb); !gsi_end_p (gsi); gsi_next (&gsi)) - { - gimple stmt = gsi_stmt (gsi); - tree fndecl; - - if (is_gimple_call (stmt) - && gimple_call_lhs (stmt) - && (fndecl = gimple_call_fndecl (stmt)) - && (DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_NORMAL - || DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_MD)) - { - enum built_in_function code; - bool md_code; - tree arg1; - gimple stmt1; - - code = DECL_FUNCTION_CODE (fndecl); - md_code = DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_MD; - - fndecl = targetm.builtin_reciprocal (code, md_code, true); - if (!fndecl) - continue; - - arg1 = gimple_call_arg (stmt, 0); - - if (TREE_CODE (arg1) != SSA_NAME) - continue; - - stmt1 = SSA_NAME_DEF_STMT (arg1); - - if (is_gimple_assign (stmt1) - && gimple_assign_rhs_code (stmt1) == RDIV_EXPR) - { - tree arg10, arg11; - - arg10 = gimple_assign_rhs1 (stmt1); - arg11 = gimple_assign_rhs2 (stmt1); - - /* Swap operands of RDIV_EXPR. */ - gimple_assign_set_rhs1 (stmt1, arg11); - gimple_assign_set_rhs2 (stmt1, arg10); - fold_stmt_inplace (stmt1); - update_stmt (stmt1); - - gimple_call_set_fndecl (stmt, fndecl); - update_stmt (stmt); - } - } - } - } - - return 0; -} - -static bool -gate_convert_to_rsqrt (void) -{ - return flag_unsafe_math_optimizations && optimize; -} - -struct gimple_opt_pass pass_convert_to_rsqrt = -{ - { - GIMPLE_PASS, - "rsqrt", /* name */ - gate_convert_to_rsqrt, /* gate */ - execute_convert_to_rsqrt, /* execute */ - NULL, /* sub */ - NULL, /* next */ - 0, /* static_pass_number */ - TV_NONE, /* tv_id */ - PROP_ssa, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - TODO_dump_func | TODO_update_ssa | TODO_verify_ssa - | TODO_verify_stmts /* todo_flags_finish */ - } -}; - /* A symbolic number is used to detect byte permutation and selection patterns. Therefore the field N contains an artificial number consisting of byte size markers: |