]> gcc.gnu.org Git - gcc.git/commitdiff
Makefile.in (gcse.o): Depend on params.h.
authorMark Mitchell <mark@codesourcery.com>
Wed, 11 Apr 2001 18:22:46 +0000 (18:22 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Wed, 11 Apr 2001 18:22:46 +0000 (18:22 +0000)
* Makefile.in (gcse.o): Depend on params.h.
* gcse.c: Include params.h.
(gcse_main): Don't do GCSE if doing so will take inordinate
amounts of memory.
* params.def (PARAM_MAX_GCSE_MEMORY): New  parameter.
* params.h (MAX_GCSE_MEMORY): New macro.

From-SVN: r41260

gcc/ChangeLog
gcc/Makefile.in
gcc/gcse.c
gcc/params.def
gcc/params.h

index 2f0ab448b1d57258b1792adb40a7cfa545ce364a..69015e90b533fe19f227b3ffbed0fdba98635312 100644 (file)
@@ -1,3 +1,12 @@
+2001-04-11  Mark Mitchell  <mark@codesourcery.com>
+
+       * Makefile.in (gcse.o): Depend on params.h.
+       * gcse.c: Include params.h.
+       (gcse_main): Don't do GCSE if doing so will take inordinate
+       amounts of memory.
+       * params.def (PARAM_MAX_GCSE_MEMORY): New  parameter.
+       * params.h (MAX_GCSE_MEMORY): New macro.
+
 2001-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * Makefile.in (insn-output.o): Depend on $(EXPR_H).
index c94eb08f4628b022e78f98796c42fa88f372ca61..04757de7bc328238c0698b213424d1aba5eb6c21 100644 (file)
@@ -1465,7 +1465,7 @@ cse.o : cse.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) hard-reg-set.h flags.h
    $(BASIC_BLOCK_H) $(GGC_H) $(TM_P_H)
 gcse.o : gcse.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) hard-reg-set.h \
    flags.h real.h insn-config.h ggc.h $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) \
-   function.h output.h toplev.h $(TM_P_H)
+   function.h output.h toplev.h $(TM_P_H) params.h
 sibcall.o : sibcall.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) function.h \
    hard-reg-set.h flags.h insn-config.h $(RECOG_H) $(BASIC_BLOCK_H)
 resource.o : resource.c $(CONFIG_H) $(RTL_H) hard-reg-set.h $(SYSTEM_H) \
index 9121af7cb74936e0105c1a03d8b99d125107c2e3..402e85e787efb22727c3852b7f10b1453794bbd9 100644 (file)
@@ -160,6 +160,7 @@ Boston, MA 02111-1307, USA.  */
 #include "function.h"
 #include "expr.h" 
 #include "ggc.h"
+#include "params.h"
 
 #include "obstack.h"
 #define obstack_chunk_alloc gmalloc
@@ -767,6 +768,19 @@ gcse_main (f, file)
       return 0;
     }
 
+  /* If allocating memory for the cprop bitmap would take up too much
+     storage it's better just to disable the optimization.  */
+  if ((n_basic_blocks 
+       * SBITMAP_SET_SIZE (max_gcse_regno)
+       * sizeof (SBITMAP_ELT_TYPE)) > MAX_GCSE_MEMORY)
+    {
+      if (warn_disabled_optimization)
+       warning ("GCSE disabled: %d basic blocks and %d registers",
+                n_basic_blocks, max_gcse_regno);
+
+      return 0;
+    }
+
   /* See what modes support reg/reg copy operations.  */
   if (! can_copy_init_p)
     {
index aae706839edaef9a0bb8641cf9553bd3e4b23ce5..749414f6e9c5dd1d07be1146040c6472435ac715 100644 (file)
@@ -66,6 +66,13 @@ DEFPARAM(PARAM_MAX_DELAY_SLOT_LIVE_SEARCH,
         "The maximum number of instructions to consider to find accurate live register information",
         333)
 
+/* The GCSE optimization will be disabled if it would require
+   significantly more memory than this value.  */
+DEFPARAM(PARAM_MAX_GCSE_MEMORY,
+        "max-gcse-memory",
+        "The maximum amount of memory to be allocated by GCSE",
+        50 * 1024 * 1024)
+
 /*
 Local variables:
 mode:c
index d5336f2c70d71b96e054bb83b8c89ac5b73d1160..d97e7bbc396827faf7fb2e8fb83bf6b0c08a9eb7 100644 (file)
@@ -88,5 +88,7 @@ typedef enum compiler_param
   PARAM_VALUE (PARAM_MAX_DELAY_SLOT_INSN_SEARCH)
 #define MAX_DELAY_SLOT_LIVE_SEARCH \
   PARAM_VALUE (PARAM_MAX_DELAY_SLOT_LIVE_SEARCH)
+#define MAX_GCSE_MEMORY \
+  ((size_t) PARAM_VALUE (PARAM_MAX_GCSE_MEMORY))
 
 #endif /* PARAMS_H */
This page took 0.091473 seconds and 5 git commands to generate.