Fix PA problem in order of initializations.

* emit-rtl.c (init_emit_once): Initialize modes first.

        Also add missing ChangeLog entry.

From-SVN: r29635
This commit is contained in:
Alex Samuel 1999-09-23 20:34:19 +00:00 committed by Alex Samuel
parent e6ad5e9044
commit 43fa63024d
2 changed files with 55 additions and 32 deletions

View File

@ -1,3 +1,26 @@
Thu Sep 23 12:54:49 1999 Alex Samuel <samuel@codesourcery.com>
* emit-rtl.c (init_emit_once): Initialize modes first.
Sun Sep 19 01:23:23 1999 Alex Samuel <samuel@codesourcery.com>
* 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 <jason@yorick.cygnus.com> Wed Sep 22 12:04:58 1999 Jason Merrill <jason@yorick.cygnus.com>
* cpplib.c (handle_directive): Don't complain about `# NUMBER' if * cpplib.c (handle_directive): Don't complain about `# NUMBER' if

View File

@ -3495,6 +3495,38 @@ init_emit_once (line_numbers)
no_line_numbers = ! 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. /* Assign register numbers to the globally defined register rtx.
This must be done at runtime because the register number field This must be done at runtime because the register number field
is in a union and some compilers can't initialize unions. */ is in a union and some compilers can't initialize unions. */
@ -3530,38 +3562,6 @@ init_emit_once (line_numbers)
INIT_EXPANDERS; INIT_EXPANDERS;
#endif #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. */ /* Create the unique rtx's for certain rtx codes and operand values. */
/* Don't use gen_rtx here since gen_rtx in this case /* Don't use gen_rtx here since gen_rtx in this case