PR c++/93046
* cp-gimplify.c (cp_gimplify_init_expr): Don't look through
TARGET_EXPR if it has been gimplified already.
* g++.dg/ext/cond4.C: New test.
From-SVN: r279884
+2010-01-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/93046
+ * cp-gimplify.c (cp_gimplify_init_expr): Don't look through
+ TARGET_EXPR if it has been gimplified already.
+
2020-01-03 Jason Merrill <jason@redhat.com>
PR c++/93033 - incorrect tree node sharing with array init.
think that such code never uses the TARGET_EXPR as an initializer. If
I'm wrong, we'll abort because the temp won't have any RTL. In that
case, I guess we'll need to replace references somehow. */
- if (TREE_CODE (from) == TARGET_EXPR)
+ if (TREE_CODE (from) == TARGET_EXPR && TARGET_EXPR_INITIAL (from))
from = TARGET_EXPR_INITIAL (from);
/* If we might need to clean up a partially constructed object, break down
+2010-01-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/93046
+ * g++.dg/ext/cond4.C: New test.
+
2020-01-04 Tobias Burnus <tobias@codesourcery.com>
PR fortran/91640
--- /dev/null
+// PR c++/93046
+// { dg-do compile }
+// { dg-options "" }
+
+struct S {
+ S (int);
+ operator bool ();
+};
+
+S
+foo ()
+{
+ return S (1) ? : S (2);
+}