summaryrefslogtreecommitdiff
path: root/gcc/ipa.c
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2011-10-02 14:30:50 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2011-10-02 14:30:50 +0000
commit941125aa76aa3bfc7cdac563a102881b1ba642e3 (patch)
treef40e1b4f38e5db0794b1f03ee8f8d26958cf4b8b /gcc/ipa.c
parentd10a25bb8b6f3e2b53d5ecbfe27fd1a37949973b (diff)
downloadgcc-941125aa76aa3bfc7cdac563a102881b1ba642e3.tar.gz
* cgraphunit.c (ipa_passes): Remove unrechable nodes.
* lto-streamer-out.c (produce_symtab): Skip unused extern declarations. * ipa.c (cgraph_remove_unreachable_nodes): Do not assume that external functions are reachable when address is taken. * ipa-inline-analysis.c (reset_inline_edge_summary): New * gcc.dg/ipa/ctor-empty-1.c: Update dump file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@179429 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ipa.c')
-rw-r--r--gcc/ipa.c7
1 files changed, 1 insertions, 6 deletions
diff --git a/gcc/ipa.c b/gcc/ipa.c
index a8c4a358e04..dfd8eef99ca 100644
--- a/gcc/ipa.c
+++ b/gcc/ipa.c
@@ -196,12 +196,7 @@ cgraph_remove_unreachable_nodes (bool before_inlining_p, FILE *file)
/* Keep around virtual functions for possible devirtualization. */
|| (before_inlining_p
&& DECL_VIRTUAL_P (node->decl)
- && (DECL_COMDAT (node->decl) || DECL_EXTERNAL (node->decl)))
- /* Also external functions with address taken are better to stay
- for indirect inlining. */
- || (before_inlining_p
- && DECL_EXTERNAL (node->decl)
- && node->address_taken)))
+ && (DECL_COMDAT (node->decl) || DECL_EXTERNAL (node->decl)))))
{
gcc_assert (!node->global.inlined_to);
enqueue_cgraph_node (node, &first);