From c5f4be845ac03fb125b36df3a4c843ecceb0ceec Mon Sep 17 00:00:00 2001
From: Steven Bosscher <steven@gcc.gnu.org>
Date: Thu, 31 Jan 2013 20:16:07 +0000
Subject: [PATCH] re PR c/56113 (out of memory when compiling a function with
 many goto labels (50k > ))

	PR middle-end/56113
	* fwprop.c (fwprop_init): Set up loops without CFG modifications.

From-SVN: r195632
---
 gcc/ChangeLog | 5 +++++
 gcc/fwprop.c  | 8 ++++----
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 341e9aa434bb..b8b116a1a0f8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2013-01-31  Steven Bosscher  <steven@gcc.gnu.org>
+
+	PR middle-end/56113
+	* fwprop.c (fwprop_init): Set up loops without CFG modifications.
+
 2013-01-31  Hiroyuki Ono  <hiroyuki.ono.jc@renesas.com>
 	    Nick Clifton  <nickc@redhat.com>
 
diff --git a/gcc/fwprop.c b/gcc/fwprop.c
index a055fd041e06..6a82deabfd10 100644
--- a/gcc/fwprop.c
+++ b/gcc/fwprop.c
@@ -1404,10 +1404,10 @@ fwprop_init (void)
   calculate_dominance_info (CDI_DOMINATORS);
 
   /* We do not always want to propagate into loops, so we have to find
-     loops and be careful about them.  But we have to call flow_loops_find
-     before df_analyze, because flow_loops_find may introduce new jump
-     insns (sadly) if we are not working in cfglayout mode.  */
-  loop_optimizer_init (0);
+     loops and be careful about them.  Avoid CFG modifications so that
+     we don't have to update dominance information afterwards for
+     build_single_def_use_links.  */
+  loop_optimizer_init (AVOID_CFG_MODIFICATIONS);
 
   build_single_def_use_links ();
   df_set_flags (DF_DEFER_INSN_RESCAN);
-- 
GitLab