+2008-09-28 Andrew Pinski <andrew_pinski@playstation.sony.com>
+ Kaushal Kantawala <kaushal_kantawala@playstation.sony.com>
+
+ PR tree-opt/36891
+ * tree-ssa-loop-im.c (rewrite_reciprocal): Set DECL_GIMPLE_REG_P on
+ the newly created variable.
+ Create a VECTOR_CST of all 1s for vector types.
+
2008-09-28 Eric Botcazou <ebotcazou@adacore.com>
PR middle-end/36575
+2008-09-28 Andrew Pinski <andrew_pinski@playstation.sony.com>
+ Kaushal Kantawala <kaushal_kantawala@playstation.sony.com>
+
+ PR tree-opt/36891
+ * gcc.dg/torture/pr36891.c: New testcase.
+
2008-09-28 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/conv_decimal.adb: New test.
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-ffast-math" } */
+
+#define __vector __attribute__((vector_size(16) ))
+__vector float f(void);
+void g(__vector float);
+void RRB( __vector float vdist, __vector float vx)
+{
+ int detail;
+ for(detail = 0; detail < 5;++detail)
+ {
+ __vector float frand = f();
+ __vector float pullperc = frand/ vdist;
+ __vector float pullx = vx * pullperc;
+ g(pullx);
+ }
+}
{
gimple stmt, stmt1, stmt2;
tree var, name, lhs, type;
+ tree real_one;
stmt = gsi_stmt (*bsi);
lhs = gimple_assign_lhs (stmt);
var = create_tmp_var (type, "reciptmp");
add_referenced_var (var);
+ DECL_GIMPLE_REG_P (var) = 1;
+
+ /* For vectors, create a VECTOR_CST full of 1's. */
+ if (TREE_CODE (type) == VECTOR_TYPE)
+ {
+ int i, len;
+ tree list = NULL_TREE;
+ real_one = build_real (TREE_TYPE (type), dconst1);
+ len = TYPE_VECTOR_SUBPARTS (type);
+ for (i = 0; i < len; i++)
+ list = tree_cons (NULL, real_one, list);
+ real_one = build_vector (type, list);
+ }
+ else
+ real_one = build_real (type, dconst1);
stmt1 = gimple_build_assign_with_ops (RDIV_EXPR,
- var, build_real (type, dconst1), gimple_assign_rhs2 (stmt));
+ var, real_one, gimple_assign_rhs2 (stmt));
name = make_ssa_name (var, stmt1);
gimple_assign_set_lhs (stmt1, name);