diff options
author | Eric Christopher <echristo@gcc.gnu.org> | 2001-06-19 08:34:34 +0000 |
---|---|---|
committer | Eric Christopher <echristo@gcc.gnu.org> | 2001-06-19 08:34:34 +0000 |
commit | 57dadce202417f7d1e5421f0c389abf67a92a518 (patch) | |
tree | 97bf3752e6300e568daf8fdbc7b9e96284202254 | |
parent | beec1ac56eff4c6955449ee7f9cae146b739bd92 (diff) | |
download | gcc-57dadce202417f7d1e5421f0c389abf67a92a518.zip gcc-57dadce202417f7d1e5421f0c389abf67a92a518.tar.gz gcc-57dadce202417f7d1e5421f0c389abf67a92a518.tar.bz2 |
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 <echristo@redhat.com>
* 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
-rw-r--r-- | gcc/ChangeLog | 38 | ||||
-rw-r--r-- | gcc/emit-rtl.c | 26 |
2 files changed, 36 insertions, 28 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d0e6541..3afd652 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2001-06-19 Eric Christopher <echristo@redhat.com> + + * 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 <amylaar@redhat.com> * sh.c (output_branch): Delete bogus code. @@ -220,11 +226,11 @@ Thu Jun 14 12:44:15 CEST 2001 Jan Hubicka <jh@suse.cz> 2001-06-13 Zack Weinberg <zackw@stanford.edu> * 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 <jh@suse.cz> Revert this patch: * toplev.c (rest_of_compilation): Remove dead code before purge_addressof. - + 2001-06-12 Alexandre Oliva <aoliva@redhat.com> Reverted: @@ -366,8 +372,8 @@ Tue Jun 12 12:20:12 CEST 2001 Jan Hubicka <jh@suse.cz> 2001-06-11 Stephane Carrez <Stephane.Carrez@worldnet.fr> - * 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 <mark@codesourcery.com> @@ -459,13 +465,13 @@ Tue Jun 12 12:20:12 CEST 2001 Jan Hubicka <jh@suse.cz> * 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 <ro@TechFak.Uni-Bielefeld.DE> * 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 <jh@suse.cz> * 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 <m.hayes@elec.canterbury.ac.nz> @@ -567,13 +573,13 @@ Mon Jun 11 15:47:45 CEST 2001 Jan Hubicka <jh@suse.cz> * 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 <jh@suse.cz> 2001-06-10 Stephane Carrez <Stephane.Carrez@worldnet.fr> - * 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 <Stephane.Carrez@worldnet.fr> - * 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 <jh@suse.cz> @@ -632,7 +638,7 @@ Sun Jun 10 10:00:17 CEST 2001 Jan Hubicka <jh@suse.cz> * toplev.c (rest_of_compilation): Remove dead code before purge_addressof. - + 2001-06-09 Neil Booth <neil@daikokuya.demon.co.uk> * cppinit.c (print_help): Document -fpreprocessed. @@ -837,7 +843,7 @@ Thu Jun 7 18:27:53 CEST 2001 Jan Hubicka <jh@suse.cz> * config/darwin-protos.h: Declare it. * config/rs6000/rs6000.c (machopic_output_stub): Use STRIP_NAME_ENCODING. - + 2001-06-07 Mark Mitchell <mark@codesourcery.com> * tree.h (DECL_SOURCE_FILE): Improve documentation. @@ -1025,7 +1031,7 @@ Wed Jun 6 14:51:05 CEST 2001 Jan Hubicka <jh@suse.cz> indent. * toplev.c (main): Disable sibling-call optimization if we are handling exceptions. - + 2001-06-05 Bernd Schmidt <bernds@redhat.com> * reload1.c (reload): Delete all USEs generated during reload. diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 03bc62f..c4f5be3 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]) | |