aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.h
diff options
context:
space:
mode:
authorMichael Matz <matz@suse.de>2009-08-25 13:33:54 +0000
committerMichael Matz <matz@gcc.gnu.org>2009-08-25 13:33:54 +0000
commit8e7aa1f9a319b100c721a7d83294a799a295407c (patch)
tree21065dda4814644807909923e74947363f96ca60 /gcc/expr.h
parentb32e7cdb5df3f84bfdc0dc683f7c94adf76043cf (diff)
downloadgcc-8e7aa1f9a319b100c721a7d83294a799a295407c.zip
gcc-8e7aa1f9a319b100c721a7d83294a799a295407c.tar.gz
gcc-8e7aa1f9a319b100c721a7d83294a799a295407c.tar.bz2
expr.h (struct separate_ops, sepops): New type for passing around an exploded simple expression.
* expr.h (struct separate_ops, sepops): New type for passing around an exploded simple expression. * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr): Use this structure instead of expression tree. (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole expression, only its type. (expand_vec_cond_expr): Take type and individual operands instead of full expression. * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr, expand_vec_shift_expr): Change prototype accordingly. * tree-vect-stmts.c (vectorizable_condition): Change call of expand_vec_cond_expr_p to pass only type. * expr.c (do_store_flags): Change prototype and implementation to take an exploded expression. (expand_expr_real_1): New local ops initialized with details of the full expression. Use it instead of full expression in calls to do_store_flags, expand_vec_cond_expr, expand_widen_pattern_expr and expand_vec_shift_expr. From-SVN: r151079
Diffstat (limited to 'gcc/expr.h')
-rw-r--r--gcc/expr.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/expr.h b/gcc/expr.h
index 7058354..228a345 100644
--- a/gcc/expr.h
+++ b/gcc/expr.h
@@ -267,6 +267,17 @@ do { \
#define STACK_CHECK_MAX_VAR_SIZE (STACK_CHECK_MAX_FRAME_SIZE / 100)
#endif
+/* This structure is used to pass around information about exploded
+ unary, binary and trinary expressions between expand_expr_real_1 and
+ friends. */
+typedef struct separate_ops
+{
+ enum tree_code code;
+ tree type;
+ tree op0, op1, op2;
+ location_t location;
+} *sepops;
+
/* Functions from optabs.c, commonly used, and without need for the optabs
tables: */