aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-math-opts.c
diff options
context:
space:
mode:
authorMichael Matz <matz@suse.de>2009-10-29 16:41:10 +0000
committerMichael Matz <matz@gcc.gnu.org>2009-10-29 16:41:10 +0000
commit44e824996b295fb81976a35028097fea1b89c809 (patch)
tree78477739bb15b85a322a94a9a30767583a0fc1cf /gcc/tree-ssa-math-opts.c
parent64ba093a7ab56b482eca1ac6bf3c09454325e144 (diff)
downloadgcc-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.c92
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: