+2017-09-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/82159
+ * gimplify.c (gimplify_modify_expr): Don't optimize away zero sized
+ lhs from calls if the lhs has addressable type.
+
2017-09-27 Richard Biener <rguenther@suse.de>
* graphite.h (scop::max_alias_set): New member.
side as statements and throw away the assignment. Do this after
gimplify_modify_expr_rhs so we handle TARGET_EXPRs of addressable
types properly. */
- if (zero_sized_type (TREE_TYPE (*from_p)) && !want_value)
+ if (zero_sized_type (TREE_TYPE (*from_p))
+ && !want_value
+ /* Don't do this for calls that return addressable types, expand_call
+ relies on those having a lhs. */
+ && !(TREE_ADDRESSABLE (TREE_TYPE (*from_p))
+ && TREE_CODE (*from_p) == CALL_EXPR))
{
gimplify_stmt (from_p, pre_p);
gimplify_stmt (to_p, pre_p);
+2017-09-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/82159
+ * g++.dg/opt/pr82159.C: New test.
+
2017-09-27 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
* gcc.dg/vect/pr65947-9.c: Use signed char explicitly.