re PR c++/84961 (ICE error: SSA_NAME_DEF_STMT is wrong)
authorJakub Jelinek <jakub@redhat.com>
Wed, 21 Mar 2018 20:19:33 +0000 (21:19 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 21 Mar 2018 20:19:33 +0000 (21:19 +0100)
commit57e20f74e011f190a29ec0b414c0ee74e62ebdc9
treef41cf51616f80f3c15202210cfdc0de3ca0b3ac7
parentb2595987bd320849de932cd2bcf83d2faf5f3ee8
re PR c++/84961 (ICE error: SSA_NAME_DEF_STMT is wrong)

PR c++/84961
* cp-tree.h (genericize_compound_lvalue): Declare.
* typeck.c (genericize_compound_lvalue): New function.
(unary_complex_lvalue, cp_build_modify_expr): Use it.
* semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
and PREDECREMENT_EXPR in output and "m" constrained input operands with
COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
COMPOUND_EXPR operand.

* c-c++-common/pr43690.c: Don't expect errors on "m" (--x) and
"m" (++x) in C++.
* g++.dg/torture/pr84961-1.C: New test.
* g++.dg/torture/pr84961-2.C: New test.

From-SVN: r258741
gcc/cp/ChangeLog
gcc/cp/cp-tree.h
gcc/cp/semantics.c
gcc/cp/typeck.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/pr43690.c
gcc/testsuite/g++.dg/torture/pr84961-1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/torture/pr84961-2.C [new file with mode: 0644]