This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Work around ICE in PR 65648
- From: Jan Hubicka <hubicka at ucw dot cz>
- To: gcc-patches at gcc dot gnu dot org
- Date: Fri, 3 Apr 2015 22:24:16 +0200
- Subject: Work around ICE in PR 65648
- Authentication-results: sourceware.org; auth=none
Hi,
the dealII compilation ICEs on check that verifies that projected size match
the size after inlining. This check suffers from roundoff errors in corner
cases and I believe it is what triggers here.
Given that I have a reorg of this code to sreals scheduled for next stage1,
I think we can just disable the sanity check in GCC 5. It is non-critical
thoguh very useful to fix varoius bug that causes propagation to diverge.
Will commit it shortly as obvious.
PR ipa/65648
* ipa-inline-transform.c (inline_call): Skip sanity check to work
around the ICE
Index: ipa-inline-transform.c
===================================================================
--- ipa-inline-transform.c (revision 221859)
+++ ipa-inline-transform.c (working copy)
@@ -304,7 +304,8 @@ inline_call (struct cgraph_edge *e, bool
struct cgraph_node *callee = e->callee->ultimate_alias_target ();
bool new_edges_found = false;
-#ifdef ENABLE_CHECKING
+ /* This is used only for assert bellow. */
+#if 0
int estimated_growth = estimate_edge_growth (e);
bool predicated = inline_edge_summary (e)->predicate != NULL;
#endif
@@ -375,7 +376,10 @@ inline_call (struct cgraph_edge *e, bool
to->calls_comdat_local = false;
}
-#ifdef ENABLE_CHECKING
+ /* FIXME: This assert suffers from roundoff errors, disable it for GCC 5
+ and revisit it after conversion to sreals in GCC 6.
+ See PR 65654. */
+#if 0
/* Verify that estimated growth match real growth. Allow off-by-one
error due to INLINE_SIZE_SCALE roudoff errors. */
gcc_assert (!update_overall_summary || !overall_size || new_edges_found