diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2015-01-13 21:59:37 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2015-01-13 20:59:37 +0000 |
commit | 2001028ad3a44e5333333c175118837dba03c620 (patch) | |
tree | 16b0e6a36e132f7bfcc281898adf43947cc7246d /gcc/ipa-inline.c | |
parent | 59b8926c6fe2f4320babf3fd7e7d1ca8731e3890 (diff) | |
download | gcc-2001028ad3a44e5333333c175118837dba03c620.zip gcc-2001028ad3a44e5333333c175118837dba03c620.tar.gz gcc-2001028ad3a44e5333333c175118837dba03c620.tar.bz2 |
re PR ipa/64565 (ICE: in inline_small_functions, at ipa-inline.c:1664)
PR ipa/64565
* g++.dg/torture/pr64565.C: New testcase.
* ipa-inline.c (inline_small_functions): Update callee keys after
resolving speculation
(inline_small_functions): Always check monotonicity of the queue.
From-SVN: r219556
Diffstat (limited to 'gcc/ipa-inline.c')
-rw-r--r-- | gcc/ipa-inline.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index a99001ad..61e470f 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -1626,6 +1626,8 @@ inline_small_functions (void) reset_edge_caches (where); update_caller_keys (&edge_heap, where, updated_nodes, NULL); + update_callee_keys (&edge_heap, where, + updated_nodes); bitmap_clear (updated_nodes); } } @@ -1661,7 +1663,7 @@ inline_small_functions (void) /* Disable checking for profile because roundoff errors may cause slight deviations in the order. */ gcc_assert (max_count || cached_badness == current_badness); - gcc_assert (max_count || current_badness >= badness); + gcc_assert (current_badness >= badness); #else current_badness = edge_badness (edge, false); #endif |