Properly parse invariant &MEM addresses in the GIMPLE FE
authorRichard Biener <rguenther@suse.de>
Wed, 6 Oct 2021 09:02:38 +0000 (11:02 +0200)
committerRichard Biener <rguenther@suse.de>
Thu, 7 Oct 2021 06:19:39 +0000 (08:19 +0200)
commit6496ae5c9651206c9de43f63018a549a2ef2244e
tree40def05c8bbc1491a6f61ce807a2c20d3a417dc6
parent57c7ec62ee0fbc33cacc5feb3e26d3ad4f765cdb
Properly parse invariant &MEM addresses in the GIMPLE FE

Currently the frontend rejects those addresses as not lvalues
because the C frontend doens't expect MEM_REF or TARGET_MEM_REF
to appear (but they would be valid lvalues there).  The following
fixes that by amending lvalue_p.

The change also makes the dumping of the source of the testcase
valid for the GIMPLE FE by not eliding the '&' when dumping
string literals.

2021-10-06  Richard Biener  <rguenther@suse.de>

gcc/c/
* c-typeck.c (lvalue_p): Also allow MEM_REF and TARGET_MEM_REF.

gcc/
* tree-pretty-print.c (dump_generic_node): Do not elide
printing '&' when dumping with -gimple.

gcc/testsuite/
* gcc.dg/gimplefe-47.c: New testcase.
gcc/c/c-typeck.c
gcc/testsuite/gcc.dg/gimplefe-47.c [new file with mode: 0644]
gcc/tree-pretty-print.c