]> gcc.gnu.org Git - gcc.git/commit
langhooks.h (struct lang_hooks): Add new field deep_unsharing.
authorEric Botcazou <ebotcazou@adacore.com>
Wed, 19 May 2010 17:53:58 +0000 (17:53 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Wed, 19 May 2010 17:53:58 +0000 (17:53 +0000)
commit616f1431bf3ad91356460164fcd7d4d8a6f3bd3f
treee941e9d3872b8da1472eb83529eb4f4677ae6331
parentdaf8c6f03b7b7ae33e2e8e301d367eb8cce80e5c
langhooks.h (struct lang_hooks): Add new field deep_unsharing.

* langhooks.h (struct lang_hooks): Add new field deep_unsharing.
* langhooks-def.h (LANG_HOOKS_DEEP_UNSHARING): New macro.
(LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_DEEP_UNSHARING.
* gimplify.c: (mostly_copy_tree_r): Copy trees under SAVE_EXPR and
TARGET_EXPR nodes, but only once, if instructed to do so.  Do not
propagate the 'data' argument to copy_tree_r.
(copy_if_shared_r): Remove bogus ATTRIBUTE_UNUSED marker.
Propagate 'data' argument to walk_tree.
(copy_if_shared): New function.
(unmark_visited_r): Remove bogus ATTRIBUTE_UNUSED marker.
(unmark_visited): New function.
(unshare_body): Call copy_if_shared instead of doing it manually.
(unvisit_body): Call unmark_visited instead of doing it manually.
ada/
* gcc-interface/misc.c (LANG_HOOKS_DEEP_UNSHARING): Redefine.
* gcc-interface/trans.c (unshare_save_expr): Delete.
(gigi): Do not unshare trees under SAVE_EXPRs here.

From-SVN: r159592
13 files changed:
gcc/ChangeLog
gcc/ada/ChangeLog
gcc/ada/gcc-interface/misc.c
gcc/ada/gcc-interface/trans.c
gcc/gimplify.c
gcc/langhooks-def.h
gcc/langhooks.h
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/discr23.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/discr23.ads [new file with mode: 0644]
gcc/testsuite/gnat.dg/discr23_pkg.ads [new file with mode: 0644]
gcc/testsuite/gnat.dg/specs/controlled1.ads [new file with mode: 0644]
gcc/testsuite/gnat.dg/specs/controlled1_pkg.ads [new file with mode: 0644]
This page took 0.064307 seconds and 5 git commands to generate.