From 156f51b905c85ae24f01d486925363d7f5fa95d3 Mon Sep 17 00:00:00 2001 From: jakub Date: Fri, 5 Nov 2010 09:00:50 +0000 Subject: [PATCH] PR debug/46307 * tree-ssa-operands.c (get_expr_operands): Handle FMA_EXPR. * tree-pretty-print.c (dump_generic_node): Likewise. (op_code_prio): Likewise. * cfgexpand.c (expand_debug_expr): Likewise. * gcc.dg/pr46307.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166351 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++++++ gcc/cfgexpand.c | 4 ++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr46307.c | 14 ++++++++++++++ gcc/tree-pretty-print.c | 11 +++++++++++ gcc/tree-ssa-operands.c | 1 + 6 files changed, 43 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/pr46307.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 84ff304..a752a51 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2010-11-05 Jakub Jelinek + + PR debug/46307 + * tree-ssa-operands.c (get_expr_operands): Handle FMA_EXPR. + * tree-pretty-print.c (dump_generic_node): Likewise. + (op_code_prio): Likewise. + * cfgexpand.c (expand_debug_expr): Likewise. + 2010-11-04 Paul Koning * doc/md.texi (Machine Constraints): Correct formatting in PDP-11 diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index f02a8cd..b302591 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -2360,6 +2360,7 @@ expand_debug_expr (tree exp) case DOT_PROD_EXPR: case WIDEN_MULT_PLUS_EXPR: case WIDEN_MULT_MINUS_EXPR: + case FMA_EXPR: goto ternary; case TRUTH_ANDIF_EXPR: @@ -3201,6 +3202,9 @@ expand_debug_expr (tree exp) } return NULL; + case FMA_EXPR: + return gen_rtx_FMA (mode, op0, op1, op2); + default: flag_unsupported: #ifdef ENABLE_CHECKING diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 90e13dd..6ef03bd 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-11-05 Jakub Jelinek + + PR debug/46307 + * gcc.dg/pr46307.c: New test. + 2010-11-05 Jason Merrill PR c++/46304 diff --git a/gcc/testsuite/gcc.dg/pr46307.c b/gcc/testsuite/gcc.dg/pr46307.c new file mode 100644 index 0000000..c308b56 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr46307.c @@ -0,0 +1,14 @@ +/* PR debug/46307 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -g" } */ + +double fma (double, double, double); + +double +foo (double x, double y, double z) +{ + double a = x * y + z; + double b = __builtin_fma (x, y, z); + double c = fma (x, y, z); + return x / y / z; +} diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c index 8ec2ded..12ef388 100644 --- a/gcc/tree-pretty-print.c +++ b/gcc/tree-pretty-print.c @@ -2040,6 +2040,16 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags, pp_string (buffer, " > "); break; + case FMA_EXPR: + pp_string (buffer, " FMA_EXPR < "); + dump_generic_node (buffer, TREE_OPERAND (node, 0), spc, flags, false); + pp_string (buffer, ", "); + dump_generic_node (buffer, TREE_OPERAND (node, 1), spc, flags, false); + pp_string (buffer, ", "); + dump_generic_node (buffer, TREE_OPERAND (node, 2), spc, flags, false); + pp_string (buffer, " > "); + break; + case OMP_PARALLEL: pp_string (buffer, "#pragma omp parallel"); dump_omp_clauses (buffer, OMP_PARALLEL_CLAUSES (node), spc, flags); @@ -2546,6 +2556,7 @@ op_code_prio (enum tree_code code) case CEIL_MOD_EXPR: case FLOOR_MOD_EXPR: case ROUND_MOD_EXPR: + case FMA_EXPR: return 13; case TRUTH_NOT_EXPR: diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c index 4256af0..c83267d 100644 --- a/gcc/tree-ssa-operands.c +++ b/gcc/tree-ssa-operands.c @@ -999,6 +999,7 @@ get_expr_operands (gimple stmt, tree *expr_p, int flags) case REALIGN_LOAD_EXPR: case WIDEN_MULT_PLUS_EXPR: case WIDEN_MULT_MINUS_EXPR: + case FMA_EXPR: { get_expr_operands (stmt, &TREE_OPERAND (expr, 0), flags); get_expr_operands (stmt, &TREE_OPERAND (expr, 1), flags); -- 2.7.4