From 57dadce202417f7d1e5421f0c389abf67a92a518 Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Tue, 19 Jun 2001 08:34:34 +0000 Subject: [PATCH] emit-rtl.c (gen_lowpart_common): Do not assume that SFmode and DFmode are UNITS_PER_WORD and 2*UNITS_PER_WORD. 2001-06-19 Eric Christopher * emit-rtl.c (gen_lowpart_common): Do not assume that SFmode and DFmode are UNITS_PER_WORD and 2*UNITS_PER_WORD. Use GET_MODE_BITSIZE instead of GET_MODE_SIZE/UNITS_PER_WORD. From-SVN: r43454 --- gcc/ChangeLog | 38 ++++++++++++++++++++++---------------- gcc/emit-rtl.c | 26 ++++++++++++++------------ 2 files changed, 36 insertions(+), 28 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d0e6541ee57..3afd65219ce 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2001-06-19 Eric Christopher + + * emit-rtl.c (gen_lowpart_common): Do not assume that SFmode + and DFmode are UNITS_PER_WORD and 2*UNITS_PER_WORD. Use + GET_MODE_BITSIZE instead of GET_MODE_SIZE/UNITS_PER_WORD. + Tue Jun 19 01:52:27 2001 J"orn Rennecke * sh.c (output_branch): Delete bogus code. @@ -220,11 +226,11 @@ Thu Jun 14 12:44:15 CEST 2001 Jan Hubicka 2001-06-13 Zack Weinberg * Makefile.in: Move _bb and __gcc_bcmp to LIB2FUNCS_ST. - * libgcc-std.ver: Take out __bb* and __gcc_bcmp. + * libgcc-std.ver: Take out __bb* and __gcc_bcmp. * config/t-slibgcc-elf-ver, config/t-slibgcc-sld, config/alpha/t-osf4, config/mips/t-iris6: Extract all - references to @shlib_map_file@, @shlib_objs@, or + references to @shlib_map_file@, @shlib_objs@, or @shlib_base_name@ to Makefile variables. Bump soname version of libgcc to 1. @@ -256,7 +262,7 @@ Thu Jun 14 12:44:15 CEST 2001 Jan Hubicka Revert this patch: * toplev.c (rest_of_compilation): Remove dead code before purge_addressof. - + 2001-06-12 Alexandre Oliva Reverted: @@ -366,8 +372,8 @@ Tue Jun 12 12:20:12 CEST 2001 Jan Hubicka 2001-06-11 Stephane Carrez - * config/m68hc11/m68hc11.md ("*lshrdi3_const32"): Mark the clobber - as an early clobber to make sure it is not used by reload in + * config/m68hc11/m68hc11.md ("*lshrdi3_const32"): Mark the clobber + as an early clobber to make sure it is not used by reload in one of the operands. 2001-06-11 Mark Mitchell @@ -459,13 +465,13 @@ Tue Jun 12 12:20:12 CEST 2001 Jan Hubicka * configure.in: Align --help messages. Remove trailing full stops. Consistently use lower case. - Fix DWARF 2 spelling. + Fix DWARF 2 spelling. * configure: Rebuilt. 2001-06-11 Rainer Orth * config/alpha/alpha.h (CPP_SPEC): Don't define __LANGUAGE_C and - variants for .cpp/.cp/.c++ files. + variants for .cpp/.cp/.c++ files. Move definition of __LANGUAGE_C_PLUS_PLUS ... (CPLUSPLUS_CPP_SPEC): ... here. @@ -538,7 +544,7 @@ Mon Jun 11 15:47:45 CEST 2001 Jan Hubicka * config/alpha/alpha.c (override_options): Set align_loops, align_jumps, and align_functions. * config/alpha/alpha.h (FUNCTION_BOUNDARY): Set to 32 bits. - (LOOP_ALIGN, LABEL_ALIGN_AFTER_BARRIER): Remove. + (LOOP_ALIGN, LABEL_ALIGN_AFTER_BARRIER): Remove. 2001-06-11 Michael Hayes @@ -567,13 +573,13 @@ Mon Jun 11 15:47:45 CEST 2001 Jan Hubicka * dwarf2out.c: #include diagnostic.h * toplev.h (warningcount, errorcount, sorrycount): Remove - declarations. + declarations. * toplev.c (warningcount, errorcount, sorrycount): Remove - definitions. + definitions. * diagnostic.h (struct output_buffer): Reorder fields. - (diagnostic_kind_count): New macro. + (diagnostic_kind_count): New macro. (errorcount, warningcount, sorrycount): Define as macros. (diagnostic_report_warnings_p): New macro. (output_state): Add diagnostic_count field. @@ -593,12 +599,12 @@ Mon Jun 11 15:47:45 CEST 2001 Jan Hubicka 2001-06-10 Stephane Carrez - * config/m68hc11/m68hc11-protos.h (m68hc11_initialize_trampoline): + * config/m68hc11/m68hc11-protos.h (m68hc11_initialize_trampoline): Move definition in the RTX_CODE section. 2001-06-10 Stephane Carrez - * config/m68hc11/m68hc11.h (RETURN_ADDR_RTX): Define the return + * config/m68hc11/m68hc11.h (RETURN_ADDR_RTX): Define the return address as relative to the argument pointer. Sun Jun 10 10:58:53 CEST 2001 Jan Hubicka @@ -632,7 +638,7 @@ Sun Jun 10 10:00:17 CEST 2001 Jan Hubicka * toplev.c (rest_of_compilation): Remove dead code before purge_addressof. - + 2001-06-09 Neil Booth * cppinit.c (print_help): Document -fpreprocessed. @@ -837,7 +843,7 @@ Thu Jun 7 18:27:53 CEST 2001 Jan Hubicka * config/darwin-protos.h: Declare it. * config/rs6000/rs6000.c (machopic_output_stub): Use STRIP_NAME_ENCODING. - + 2001-06-07 Mark Mitchell * tree.h (DECL_SOURCE_FILE): Improve documentation. @@ -1025,7 +1031,7 @@ Wed Jun 6 14:51:05 CEST 2001 Jan Hubicka indent. * toplev.c (main): Disable sibling-call optimization if we are handling exceptions. - + 2001-06-05 Bernd Schmidt * reload1.c (reload): Delete all USEs generated during reload. diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 03bc62fafa5..c4f5be39423 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -900,9 +900,11 @@ gen_lowpart_common (mode, x) FP and integer operands. This simplifies reload because it doesn't have to deal with constructs like (subreg:DI (const_double:SF ...)) or (subreg:DF (const_int ...)). */ + /* Single-precision floats are always 32-bits and double-precision + floats are always 64-bits. */ else if (GET_MODE_CLASS (mode) == MODE_FLOAT - && GET_MODE_SIZE (mode) == UNITS_PER_WORD + && GET_MODE_BITSIZE (mode) == 32 && GET_CODE (x) == CONST_INT) { REAL_VALUE_TYPE r; @@ -913,7 +915,7 @@ gen_lowpart_common (mode, x) return CONST_DOUBLE_FROM_REAL_VALUE (r, mode); } else if (GET_MODE_CLASS (mode) == MODE_FLOAT - && GET_MODE_SIZE (mode) == 2 * UNITS_PER_WORD + && GET_MODE_BITSIZE (mode) == 64 && (GET_CODE (x) == CONST_INT || GET_CODE (x) == CONST_DOUBLE) && GET_MODE (x) == VOIDmode) { @@ -952,20 +954,20 @@ gen_lowpart_common (mode, x) int endian = WORDS_BIG_ENDIAN ? 1 : 0; REAL_VALUE_FROM_CONST_DOUBLE (r, x); - switch (GET_MODE_SIZE (GET_MODE (x)) / UNITS_PER_WORD) + switch (GET_MODE_BITSIZE (GET_MODE (x))) { - case 1: + case 32: REAL_VALUE_TO_TARGET_SINGLE (r, i[endian]); i[1 - endian] = 0; break; - case 2: + case 64: REAL_VALUE_TO_TARGET_DOUBLE (r, i); break; - case 3: + case 96: REAL_VALUE_TO_TARGET_LONG_DOUBLE (r, i + endian); i[3-3*endian] = 0; break; - case 4: + case 128: REAL_VALUE_TO_TARGET_LONG_DOUBLE (r, i); break; default: @@ -986,15 +988,15 @@ gen_lowpart_common (mode, x) for (c = 0; c < 4; c++) i[c] &= ~ (0L); - switch (GET_MODE_SIZE (GET_MODE (x)) / UNITS_PER_WORD) + switch (GET_MODE_BITSIZE (GET_MODE (x))) { - case 1: - case 2: + case 32: + case 64: return immed_double_const (((unsigned long) i[endian]) | (((HOST_WIDE_INT) i[1-endian]) << 32), 0, mode); - case 3: - case 4: + case 96: + case 128: return immed_double_const (((unsigned long) i[endian*3]) | (((HOST_WIDE_INT) i[1+endian]) << 32), ((unsigned long) i[2-endian]) | -- 2.30.2