diff options
author | Richard Guenther <rguenther@suse.de> | 2016-05-20 09:17:16 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2016-05-20 09:17:16 +0000 |
commit | 483c642948802336899b14fa57b2e76c760c3c36 (patch) | |
tree | e061dbe5dac8633c8babd3bf14639f9e128c156e /gcc/tree-pretty-print.c | |
parent | eb066284cb8cdf7f46f455c3e975cf1b349a0487 (diff) | |
download | gcc-483c642948802336899b14fa57b2e76c760c3c36.zip gcc-483c642948802336899b14fa57b2e76c760c3c36.tar.gz gcc-483c642948802336899b14fa57b2e76c760c3c36.tar.bz2 |
re PR target/29756 (SSE intrinsics hard to use without redundant temporaries appearing)
2016-05-20 Richard Guenther <rguenther@suse.de>
PR tree-optimization/29756
* tree.def (BIT_INSERT_EXPR): New tcc_expression tree code.
* expr.c (expand_expr_real_2): Handle BIT_INSERT_EXPR.
* fold-const.c (operand_equal_p): Likewise.
(fold_ternary_loc): Add constant folding of BIT_INSERT_EXPR.
* gimplify.c (gimplify_expr): Handle BIT_INSERT_EXPR.
* tree-inline.c (estimate_operator_cost): Likewise.
* tree-pretty-print.c (dump_generic_node): Likewise.
* tree-ssa-operands.c (get_expr_operands): Likewise.
* cfgexpand.c (expand_debug_expr): Likewise.
* gimple-pretty-print.c (dump_ternary_rhs): Likewise.
* gimple.c (get_gimple_rhs_num_ops): Handle BIT_INSERT_EXPR.
* tree-cfg.c (verify_gimple_assign_ternary): Verify BIT_INSERT_EXPR.
* tree-ssa.c (non_rewritable_lvalue_p): We can rewrite
vector inserts using BIT_FIELD_REF or MEM_REF on the lhs.
(execute_update_addresses_taken): Do it.
* gcc.dg/tree-ssa/vector-6.c: New testcase.
From-SVN: r236501
Diffstat (limited to 'gcc/tree-pretty-print.c')
-rw-r--r-- | gcc/tree-pretty-print.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c index c393d34..0e7fdd1 100644 --- a/gcc/tree-pretty-print.c +++ b/gcc/tree-pretty-print.c @@ -1876,6 +1876,23 @@ dump_generic_node (pretty_printer *pp, tree node, int spc, int flags, pp_greater (pp); break; + case BIT_INSERT_EXPR: + pp_string (pp, "BIT_INSERT_EXPR <"); + dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false); + pp_string (pp, ", "); + dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false); + pp_string (pp, ", "); + dump_generic_node (pp, TREE_OPERAND (node, 2), spc, flags, false); + pp_string (pp, " ("); + if (INTEGRAL_TYPE_P (TREE_TYPE (TREE_OPERAND (node, 1)))) + pp_decimal_int (pp, + TYPE_PRECISION (TREE_TYPE (TREE_OPERAND (node, 1)))); + else + dump_generic_node (pp, TYPE_SIZE (TREE_TYPE (TREE_OPERAND (node, 1))), + spc, flags, false); + pp_string (pp, " bits)>"); + break; + case ARRAY_REF: case ARRAY_RANGE_REF: op0 = TREE_OPERAND (node, 0); |