aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2008-05-02 13:08:22 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2008-05-02 11:08:22 +0000
commita12f79f5a86fd9eba90acc3d596e42caff53dc4c (patch)
treee9d4290b8905df7717b722efa1c56535d86eea80 /gcc
parentfa5b668e7e369b5c4394ffd7220aafe7b06ce7ca (diff)
downloadgcc-a12f79f5a86fd9eba90acc3d596e42caff53dc4c.zip
gcc-a12f79f5a86fd9eba90acc3d596e42caff53dc4c.tar.gz
gcc-a12f79f5a86fd9eba90acc3d596e42caff53dc4c.tar.bz2
re PR tree-optimization/36100 (always_inline attribute is broken at -O0)
PR bootstrap/36100 * ipa-inline.c (inline_generate_summary): Make static. (inline_transform): Do not call inlining at -O0; make static. * passes.c (execute_todo): Add sanity check. (execute_one_ipa_transform_pass): Execute proper flags. From-SVN: r134885
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/ipa-inline.c9
-rw-r--r--gcc/passes.c8
3 files changed, 16 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index aa08080..28a39b3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2008-05-01 Jan Hubicka <jh@suse.cz>
+
+ PR bootstrap/36100
+ * ipa-inline.c (inline_generate_summary): Make static.
+ (inline_transform): Do not call inlining at -O0; make static.
+ * passes.c (execute_todo): Add sanity check.
+ (execute_one_ipa_transform_pass): Execute proper flags.
+
2008-05-01 Eric Botcazou <ebotcazou@adacore.com>
* tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c
index f0a7819..81246d8 100644
--- a/gcc/ipa-inline.c
+++ b/gcc/ipa-inline.c
@@ -1560,7 +1560,7 @@ struct gimple_opt_pass pass_inline_parameters =
};
/* Note function body size. */
-void
+static void
inline_generate_summary (struct cgraph_node *node ATTRIBUTE_UNUSED)
{
compute_inline_parameters ();
@@ -1568,17 +1568,12 @@ inline_generate_summary (struct cgraph_node *node ATTRIBUTE_UNUSED)
}
/* Apply inline plan to function. */
-int
+static unsigned int
inline_transform (struct cgraph_node *node)
{
unsigned int todo = 0;
struct cgraph_edge *e;
- /* Even when not optimizing, ensure that always_inline functions get inlined.
- */
- if (!optimize)
- cgraph_decide_inlining_incrementally (node, INLINE_SPEED, 0);
-
/* We might need the body of this function so that we can expand
it inline somewhere else. */
if (cgraph_preserve_function_body_p (current_function_decl))
diff --git a/gcc/passes.c b/gcc/passes.c
index 196e5a7..0ca26fe 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -999,11 +999,15 @@ execute_todo (unsigned int flags)
to analyze side effects. The full removal is done just at the end
of IPA pass queue. */
if (flags & TODO_remove_functions)
- cgraph_remove_unreachable_nodes (true, dump_file);
+ {
+ gcc_assert (!cfun);
+ cgraph_remove_unreachable_nodes (true, dump_file);
+ }
if ((flags & TODO_dump_cgraph)
&& dump_file && !current_function_decl)
{
+ gcc_assert (!cfun);
dump_cgraph (dump_file);
/* Flush the file. If verification fails, we won't be able to
close the file before aborting. */
@@ -1162,7 +1166,7 @@ execute_one_ipa_transform_pass (struct cgraph_node *node,
pass_init_dump_file (pass);
/* Run pre-pass verification. */
- execute_todo (pass->todo_flags_start);
+ execute_todo (ipa_pass->function_transform_todo_flags_start);
/* If a timevar is present, start it. */
if (pass->tv_id)