From 483c642948802336899b14fa57b2e76c760c3c36 Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Fri, 20 May 2016 09:17:16 +0000 Subject: re PR target/29756 (SSE intrinsics hard to use without redundant temporaries appearing) 2016-05-20 Richard Guenther 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 --- gcc/gimple.c | 1 + 1 file changed, 1 insertion(+) (limited to 'gcc/gimple.c') diff --git a/gcc/gimple.c b/gcc/gimple.c index d822fab..742c907 100644 --- a/gcc/gimple.c +++ b/gcc/gimple.c @@ -2043,6 +2043,7 @@ get_gimple_rhs_num_ops (enum tree_code code) || (SYM) == REALIGN_LOAD_EXPR \ || (SYM) == VEC_COND_EXPR \ || (SYM) == VEC_PERM_EXPR \ + || (SYM) == BIT_INSERT_EXPR \ || (SYM) == FMA_EXPR) ? GIMPLE_TERNARY_RHS \ : ((SYM) == CONSTRUCTOR \ || (SYM) == OBJ_TYPE_REF \ -- cgit v1.1