summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>2015-06-22 17:24:25 +0000
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>2015-06-22 17:24:25 +0000
commit38457529e47452f4f020ae4089b87d9821eeb073 (patch)
tree8df863833876a602eb39478998f15509b7a90c9d
parent7f2289e8bd05a4e886a328197652e9c171e42899 (diff)
downloadgcc-38457529e47452f4f020ae4089b87d9821eeb073.tar.gz
PR c++/66515
* call.c (implicit_conversion): Only reshape for classes. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@224748 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/call.c3
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 7b3cd2ce720..9f4e8b21e3d 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2015-06-22 Jason Merrill <jason@redhat.com>
+
+ PR c++/66515
+ * call.c (implicit_conversion): Only reshape for classes.
+
2015-06-22 Mikhail Maltsev <maltsevm@gmail.com>
* pt.c (maybe_adjust_types_for_deduction): Use std::swap instead of
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index ba5da4c36da..a6c313aed59 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -1759,8 +1759,9 @@ implicit_conversion (tree to, tree from, tree expr, bool c_cast_p,
/* Call reshape_init early to remove redundant braces. */
if (expr && BRACE_ENCLOSED_INITIALIZER_P (expr)
+ && CLASS_TYPE_P (to)
&& COMPLETE_TYPE_P (complete_type (to))
- && CP_AGGREGATE_TYPE_P (to))
+ && !CLASSTYPE_NON_AGGREGATE (to))
{
expr = reshape_init (to, expr, complain);
if (expr == error_mark_node)