+2014-01-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/59706
+ * gimplify.c (gimplify_expr): Use create_tmp_var
+ instead of create_tmp_var_raw. If cond doesn't have
+ integral type, don't add the IFN_ANNOTATE builtin at all.
+
2014-01-17 Martin Jambor <mjambor@suse.cz>
PR ipa/59736
{
tree cond = TREE_OPERAND (*expr_p, 0);
tree id = TREE_OPERAND (*expr_p, 1);
- tree tmp = create_tmp_var_raw (TREE_TYPE(cond), NULL);
+ tree type = TREE_TYPE (cond);
+ if (!INTEGRAL_TYPE_P (type))
+ {
+ *expr_p = cond;
+ ret = GS_OK;
+ break;
+ }
+ tree tmp = create_tmp_var (type, NULL);
gimplify_arg (&cond, pre_p, EXPR_LOCATION (*expr_p));
gimple call = gimple_build_call_internal (IFN_ANNOTATE, 2,
cond, id);
+2014-01-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/59706
+ * gfortran.dg/pr59706.f90: New test.
+ * g++.dg/ext/pr59706.C: New test.
+
2014-01-17 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/59270
--- /dev/null
+// PR middle-end/59706
+// { dg-do compile }
+
+extern struct S s;
+struct T { T (); ~T (); int t; } t;
+
+void
+foo ()
+{
+ #pragma GCC ivdep
+ while (s) // { dg-error "could not convert" }
+ ;
+}
+
+void
+bar ()
+{
+ #pragma GCC ivdep
+ while (t) // { dg-error "could not convert" }
+ ;
+}