Commit f325e752 by Martin Sebor Committed by Martin Sebor

PR middle-end/90694 - incorrect representation of ADDR_EXPR involving a pointer to array

gcc/ChangeLog:

	PR middle-end/90694
	* tree-pretty-print.c (dump_generic_node): Add parentheses.

gcc/testsuite/ChangeLog:

	PR middle-end/90694
	* gcc.dg/tree-ssa/dump-5.c: New test.

From-SVN: r271838
parent e4b44fd7
2019-06-01 Martin Sebor <msebor@redhat.com>
PR middle-end/90694
* tree-pretty-print.c (dump_generic_node): Add parentheses.
2019-05-31 Jan Hubicka <jh@suse.cz> 2019-05-31 Jan Hubicka <jh@suse.cz>
* alias.c: Include ipa-utils.h. * alias.c: Include ipa-utils.h.
......
2019-06-01 Martin Sebor <msebor@redhat.com>
PR middle-end/90694
* gcc.dg/tree-ssa/dump-5.c: New test.
2019-05-31 Jan Hubicka <jh@suse.cz> 2019-05-31 Jan Hubicka <jh@suse.cz>
* g++.dg/lto/alias-1_0.C: New testcase. * g++.dg/lto/alias-1_0.C: New testcase.
......
/* PR middle-end/90694 - incorrect representation of ADDR_EXPR involving
a pointer to array
{ dg-do compile }
{ dg-options "-fdump-tree-original" } */
typedef char A8[8];
unsigned f (A8 *pa)
{
return __builtin_strlen (&(*pa)[2]);
}
/* Veriy the expression is correct in the dump:
{ dg-final { scan-tree-dump-not "\\\&\\\*pa\\\[2\\\]" "original" } }
{ dg-final { scan-tree-dump "\\\&\\\(\\\*pa\\\)\\\[2\\\]" "original" } } */
...@@ -1679,9 +1679,17 @@ dump_generic_node (pretty_printer *pp, tree node, int spc, dump_flags_t flags, ...@@ -1679,9 +1679,17 @@ dump_generic_node (pretty_printer *pp, tree node, int spc, dump_flags_t flags,
{ {
if (TREE_CODE (TREE_OPERAND (node, 0)) != ADDR_EXPR) if (TREE_CODE (TREE_OPERAND (node, 0)) != ADDR_EXPR)
{ {
/* Enclose pointers to arrays in parentheses. */
tree op0 = TREE_OPERAND (node, 0);
tree op0type = TREE_TYPE (op0);
if (POINTER_TYPE_P (op0type)
&& TREE_CODE (TREE_TYPE (op0type)) == ARRAY_TYPE)
pp_left_paren (pp);
pp_star (pp); pp_star (pp);
dump_generic_node (pp, TREE_OPERAND (node, 0), dump_generic_node (pp, op0, spc, flags, false);
spc, flags, false); if (POINTER_TYPE_P (op0type)
&& TREE_CODE (TREE_TYPE (op0type)) == ARRAY_TYPE)
pp_right_paren (pp);
} }
else else
dump_generic_node (pp, dump_generic_node (pp,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment