]> gcc.gnu.org Git - gcc.git/commitdiff
emit-rtl.c (init_derived_machine_modes): New functionm, split out from...
authorRichard Sandiford <rdsandiford@googlemail.com>
Tue, 6 May 2014 17:44:15 +0000 (17:44 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Tue, 6 May 2014 17:44:15 +0000 (17:44 +0000)
gcc/
* emit-rtl.c (init_derived_machine_modes): New functionm, split
out from...
(init_emit_once): ...here.
* rtl.h (init_derived_machine_modes): Declare.
* toplev.c (do_compile): Call it even if no_backend.

From-SVN: r210118

gcc/ChangeLog
gcc/emit-rtl.c
gcc/rtl.h
gcc/toplev.c

index 0644a4d3d71d034567c7eb26129c856d5a751462..ac74e45aad53433be9138d60be03de1affbbbca8 100644 (file)
@@ -1,3 +1,11 @@
+2014-05-06  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * emit-rtl.c (init_derived_machine_modes): New functionm, split
+       out from...
+       (init_emit_once): ...here.
+       * rtl.h (init_derived_machine_modes): Declare.
+       * toplev.c (do_compile): Call it even if no_backend.
+
 2014-05-06  Kenneth Zadeck  <zadeck@naturalbridge.com>
            Mike Stump  <mikestump@comcast.net>
            Richard Sandiford  <rdsandiford@googlemail.com>
index f2b8257de7c8f1ffd705422664c65f017ce2c16b..1eacb8f6ac64f428991e411ee7dea36d85821e84 100644 (file)
@@ -5720,6 +5720,30 @@ init_emit_regs (void)
     }
 }
 
+/* Initialize global machine_mode variables.  */
+
+void
+init_derived_machine_modes (void)
+{
+  byte_mode = VOIDmode;
+  word_mode = VOIDmode;
+
+  for (enum machine_mode mode = GET_CLASS_NARROWEST_MODE (MODE_INT);
+       mode != VOIDmode;
+       mode = GET_MODE_WIDER_MODE (mode))
+    {
+      if (GET_MODE_BITSIZE (mode) == BITS_PER_UNIT
+         && byte_mode == VOIDmode)
+       byte_mode = mode;
+
+      if (GET_MODE_BITSIZE (mode) == BITS_PER_WORD
+         && word_mode == VOIDmode)
+       word_mode = mode;
+    }
+
+  ptr_mode = mode_for_size (POINTER_SIZE, GET_MODE_CLASS (Pmode), 0);
+}
+
 /* Create some permanent unique rtl objects shared between all functions.  */
 
 void
@@ -5747,36 +5771,6 @@ init_emit_once (void)
   reg_attrs_htab = htab_create_ggc (37, reg_attrs_htab_hash,
                                    reg_attrs_htab_eq, NULL);
 
-  /* Compute the word and byte modes.  */
-
-  byte_mode = VOIDmode;
-  word_mode = VOIDmode;
-  double_mode = VOIDmode;
-
-  for (mode = GET_CLASS_NARROWEST_MODE (MODE_INT);
-       mode != VOIDmode;
-       mode = GET_MODE_WIDER_MODE (mode))
-    {
-      if (GET_MODE_BITSIZE (mode) == BITS_PER_UNIT
-         && byte_mode == VOIDmode)
-       byte_mode = mode;
-
-      if (GET_MODE_BITSIZE (mode) == BITS_PER_WORD
-         && word_mode == VOIDmode)
-       word_mode = mode;
-    }
-
-  for (mode = GET_CLASS_NARROWEST_MODE (MODE_FLOAT);
-       mode != VOIDmode;
-       mode = GET_MODE_WIDER_MODE (mode))
-    {
-      if (GET_MODE_BITSIZE (mode) == DOUBLE_TYPE_SIZE
-         && double_mode == VOIDmode)
-       double_mode = mode;
-    }
-
-  ptr_mode = mode_for_size (POINTER_SIZE, GET_MODE_CLASS (Pmode), 0);
-
 #ifdef INIT_EXPANDERS
   /* This is to initialize {init|mark|free}_machine_status before the first
      call to push_function_context_to.  This is needed by the Chill front
@@ -5799,6 +5793,8 @@ init_emit_once (void)
   else
     const_true_rtx = gen_rtx_CONST_INT (VOIDmode, STORE_FLAG_VALUE);
 
+  double_mode = mode_for_size (DOUBLE_TYPE_SIZE, MODE_FLOAT, 0);
+
   real_from_integer (&dconst0, double_mode, 0, SIGNED);
   real_from_integer (&dconst1, double_mode, 1, SIGNED);
   real_from_integer (&dconst2, double_mode, 2, SIGNED);
index 9fb75574e958213717ac4852b92863fff99a8ac5..dbf24f328b3c5e9bb6f1ada3db0183fed2a2e616 100644 (file)
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -2734,6 +2734,7 @@ extern int get_max_insn_count (void);
 extern int in_sequence_p (void);
 extern void init_emit (void);
 extern void init_emit_regs (void);
+extern void init_derived_machine_modes (void);
 extern void init_emit_once (void);
 extern void push_topmost_sequence (void);
 extern void pop_topmost_sequence (void);
index 0f7d452f3786d5ad33f70fab0ec58381c0f4903d..4c334bd451a98d92f3e7f6343b73594f9b822f24 100644 (file)
@@ -1891,6 +1891,7 @@ do_compile (void)
         predefined macros, such as __LDBL_MAX__, for targets using non
         default FP formats.  */
       init_adjust_machine_modes ();
+      init_derived_machine_modes ();
 
       /* Set up the back-end if requested.  */
       if (!no_backend)
This page took 0.088646 seconds and 5 git commands to generate.