[PATCH] c++/97197 - support TARGET_MEM_REF in C/C++ error pretty-printing

Jakub Jelinek jakub@redhat.com
Fri Sep 25 11:20:30 GMT 2020


On Fri, Sep 25, 2020 at 01:11:37PM +0200, Richard Biener wrote:
> This adds rough support to avoid "'target_mem_ref' not supported by"
> in diagnostics.  There were recent patches by Martin to sanitize
> dumping of MEM_REF so I'm not trying to interfere with this here.

Is that correct?
I mean, TARGET_MEM_REF encodes more than what MEM_REF encodes,
so printing it like MEM_REF will ignore many things from there.
I'd say we should print it like:
*(type *)(BASE + STEP * INDEX + INDEX2 + OFFSET)
rather than how we print MEM_REFs as
*(type *)(BASE + OFFSET)
(with skipping whatever is NULL in there).
So instead of adding case MEM_REF: in the second and last hunk
copy and edit it (perhaps kill the probably unnecessary
part that checks for *&foo and prints it as foo, because who would
create TARGET_MEM_REF when MEM_REF could have been used in that case).
> 
> Bootstrap & regtest pending.
> 
> OK?
> 
> 2020-09-25  Richard Biener  <rguenther@suse.de>
> 
> 	PR c++/97197
> cp/
> 	* error.c (dump_expr): Handle TARGET_MEM_REF as if it
> 	were MEM_REF.
> 
> c-family/
> 	* c-pretty-print.c (c_pretty_printer::postfix_expression):
> 	Handle TARGET_MEM_REF as expression.
> 	(c_pretty_printer::expression): Handle TARGET_MEM_REF as
> 	unary_expression.
> 	(c_pretty_printer::unary_expression): Handle TARGET_MEM_REF
> 	as if it were MEM_REF.

	Jakub



More information about the Gcc-patches mailing list