diff options
author | Richard Sandiford <rdsandiford@googlemail.com> | 2014-05-06 17:44:15 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2014-05-06 17:44:15 +0000 |
commit | aa3a12d66e691508961992aaba0d13914c274afe (patch) | |
tree | 405677cb108c46f727cf1f1bb6116433f35f3e44 | |
parent | 1d60af086712da018dbdf2a31b0fa6513ccc4487 (diff) | |
download | gcc-aa3a12d66e691508961992aaba0d13914c274afe.zip gcc-aa3a12d66e691508961992aaba0d13914c274afe.tar.gz gcc-aa3a12d66e691508961992aaba0d13914c274afe.tar.bz2 |
emit-rtl.c (init_derived_machine_modes): New functionm, split out from...
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
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/emit-rtl.c | 56 | ||||
-rw-r--r-- | gcc/rtl.h | 1 | ||||
-rw-r--r-- | gcc/toplev.c | 1 |
4 files changed, 36 insertions, 30 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0644a4d..ac74e45 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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> diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index f2b8257..1eacb8f 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -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); @@ -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); diff --git a/gcc/toplev.c b/gcc/toplev.c index 0f7d452..4c334bd 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -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) |