aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2004-09-21 18:16:20 -0700
committerDevang Patel <dpatel@gcc.gnu.org>2004-09-21 18:16:20 -0700
commitad9f20cbce22c10f62d7f4c1b12d42b144454760 (patch)
treecf11806a17acf6f626d41825f28ce0efa0b0f398
parent86c440722e1c91d4bccb6ab1fc038cbfb00f55cd (diff)
downloadgcc-ad9f20cbce22c10f62d7f4c1b12d42b144454760.zip
gcc-ad9f20cbce22c10f62d7f4c1b12d42b144454760.tar.gz
gcc-ad9f20cbce22c10f62d7f4c1b12d42b144454760.tar.bz2
tree.def (VEC_COND_EXPR): New tree node.
* tree.def (VEC_COND_EXPR): New tree node. * tree-ssa-operands.c (get_expr_operands): Handle VEC_COND_EXPR. From-SVN: r87839
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree-ssa-operands.c3
-rw-r--r--gcc/tree.def12
3 files changed, 19 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0ba7fa8..6565150 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-09-21 Devang Patel <dpatel@apple.com>
+
+ * tree.def (VEC_COND_EXPR): New tree node.
+ * tree-ssa-operands.c (get_expr_operands): Handle VEC_COND_EXPR.
+
2004-09-21 Stan Shebs <shebs@apple.com>
* config/rs6000/darwin-tramp.asm: Add __ppc64__ case.
diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c
index 7f9840f..8c05169 100644
--- a/gcc/tree-ssa-operands.c
+++ b/gcc/tree-ssa-operands.c
@@ -1071,7 +1071,8 @@ get_expr_operands (tree stmt, tree *expr_p, int flags)
return;
case COND_EXPR:
- get_expr_operands (stmt, &COND_EXPR_COND (expr), opf_none);
+ case VEC_COND_EXPR:
+ get_expr_operands (stmt, &TREE_OPERAND (expr, 0), opf_none);
get_expr_operands (stmt, &TREE_OPERAND (expr, 1), opf_none);
get_expr_operands (stmt, &TREE_OPERAND (expr, 2), opf_none);
return;
diff --git a/gcc/tree.def b/gcc/tree.def
index 922c75f..fa58aba 100644
--- a/gcc/tree.def
+++ b/gcc/tree.def
@@ -453,6 +453,18 @@ DEFTREECODE (TARGET_EXPR, "target_expr", tcc_expression, 4)
have VOID_TYPE. The same constraints apply to operand 2. */
DEFTREECODE (COND_EXPR, "cond_expr", tcc_expression, 3)
+/* Vector conditional expresion. It is like COND_EXPR, but with
+ vector operands.
+
+ A = VEC_COND_EXPR ( X < Y, B, C)
+
+ means
+
+ for (i=0; i<N; i++)
+ A[i] = X[i] < Y[i] ? B[i] : C[i];
+*/
+DEFTREECODE (VEC_COND_EXPR, "vec_cond_expr", 'e', 3)
+
/* Declare local variables, including making RTL and allocating space.
BIND_EXPR_VARS is a chain of VAR_DECL nodes for the variables.
BIND_EXPR_BODY is the body, the expression to be computed using