* cgraphunit.c (cgraph_finalize_compilation_unit): Call
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 30 Jun 2009 17:26:32 +0000 (17:26 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 30 Jun 2009 17:26:32 +0000 (17:26 +0000)
commit4189e6771feda58eeb5859eb78adaeb1ce9729e1
tree46e380a758cc2f203dbeec25be5417a9a9bca764
parente94dd3dc45406db7175beaa5b7c909711996be09
* cgraphunit.c (cgraph_finalize_compilation_unit): Call
finalize_size_functions before further processing.
* stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
(variable_size): Call self_referential_size on size expressions
that contain a PLACEHOLDER_EXPR.
(size_functions): New static variable.
(copy_self_referential_tree_r): New static function.
(self_referential_size): Likewise.
(finalize_size_functions): New global function.
* tree.c: Include tree-inline.h.
(push_without_duplicates): New static function.
(find_placeholder_in_expr): New global function.
(substitute_in_expr) <tcc_declaration>: Return the replacement object
on equality.
<tcc_expression>: Likewise.
<tcc_vl_exp>: If the replacement object is a constant, try to inline
the call in the expression.
* tree.h (finalize_size_functions): Declare.
(find_placeholder_in_expr): Likewise.
(FIND_PLACEHOLDER_IN_EXPR): New macro.
(substitute_placeholder_in_expr): Update comment.
* tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
is true.
(copy_tree_body_r): Likewise.
(copy_tree_body): New static function.
(maybe_inline_call_in_expr): New global function.
* tree-inline.h (struct copy_body_data): Add do_not_unshare field.
(maybe_inline_call_in_expr): Declare.
* Makefile.in (tree.o): Depend on TREE_INLINE_H.
(stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
GIMPLE_H.
ada/
* gcc-interface/decl.c: Include tree-inline.h.
(annotate_value) <CALL_EXPR>: Try to inline the call in the expression.
* gcc-interface/utils.c (max_size) <CALL_EXPR>: Likewise.
* gcc-interface/utils2.c: Include tree-inline.
(known_alignment) <CALL_EXPR>: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149112 138bc75d-0d04-0410-961f-82ee72b054a4
28 files changed:
gcc/ChangeLog
gcc/Makefile.in
gcc/ada/ChangeLog
gcc/ada/gcc-interface/decl.c
gcc/ada/gcc-interface/utils.c
gcc/ada/gcc-interface/utils2.c
gcc/cgraphunit.c
gcc/stor-layout.c
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/discr12.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/discr12_pkg.ads [new file with mode: 0644]
gcc/testsuite/gnat.dg/discr13.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/discr14.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/discr14.ads [new file with mode: 0644]
gcc/testsuite/gnat.dg/discr15.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/discr15_pkg.ads [new file with mode: 0644]
gcc/testsuite/gnat.dg/discr16.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/discr16_cont.ads [new file with mode: 0644]
gcc/testsuite/gnat.dg/discr16_g.ads [new file with mode: 0644]
gcc/testsuite/gnat.dg/discr16_pkg.ads [new file with mode: 0644]
gcc/testsuite/gnat.dg/discr17.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/discr18.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/discr18_pkg.ads [new file with mode: 0644]
gcc/testsuite/gnat.dg/discr19.adb [new file with mode: 0644]
gcc/tree-inline.c
gcc/tree-inline.h
gcc/tree.c
gcc/tree.h