From 71d7daa22b71c5e8f3d89d5089dc576713c635d5 Mon Sep 17 00:00:00 2001 From: samuel Date: Thu, 23 Sep 1999 20:34:19 +0000 Subject: [PATCH] Fix PA problem in order of initializations. * emit-rtl.c (init_emit_once): Initialize modes first. Also add missing ChangeLog entry. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29635 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 23 +++++++++++++++++++++ gcc/emit-rtl.c | 64 +++++++++++++++++++++++++++++----------------------------- 2 files changed, 55 insertions(+), 32 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 553f6b21679..032c57b96af 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,26 @@ +Thu Sep 23 12:54:49 1999 Alex Samuel + + * emit-rtl.c (init_emit_once): Initialize modes first. + +Sun Sep 19 01:23:23 1999 Alex Samuel + + * config/i386/i386.c (pic_label_name): Change to char pointer. + (global_offset_table): New variable. + (load_pic_register): Fill global_offset_table if it hasn't + already been done. Allocate pic_label_name dynamically. + * ggc.h (empty_string): New variable. + * ggc-simple.c (empty_string): Likewise. + (init_ggc): Allocate empty_string and add as root. + * stmt.c (digit_strings): New variable. + (init_stmt): Add last_block_end_note as root. Allocate and + initialize digit_strings. + (expand_asm_operands): Use empty_string instead of string + constant. Use digit_strings instead of string constants. + * profile.c (init_arc_profiler): Allocate string with + ggc_alloc_string instead of xmalloc. + (output_func_start_profiler): Likewise. + * c-typeck.c (digest_init): Check if init is error_mark_node. + Wed Sep 22 12:04:58 1999 Jason Merrill * cpplib.c (handle_directive): Don't complain about `# NUMBER' if diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 5a339a45f0f..3d59220378c 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -3495,6 +3495,38 @@ init_emit_once (line_numbers) no_line_numbers = ! line_numbers; + /* 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; + } + +#ifndef DOUBLE_TYPE_SIZE +#define DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2) +#endif + + 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); + /* Assign register numbers to the globally defined register rtx. This must be done at runtime because the register number field is in a union and some compilers can't initialize unions. */ @@ -3530,38 +3562,6 @@ init_emit_once (line_numbers) INIT_EXPANDERS; #endif - /* 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; - } - -#ifndef DOUBLE_TYPE_SIZE -#define DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2) -#endif - - 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); - /* Create the unique rtx's for certain rtx codes and operand values. */ /* Don't use gen_rtx here since gen_rtx in this case -- 2.11.0