From f4a0a4785ba9bb73303647293e9edcf5ee88592b Mon Sep 17 00:00:00 2001 From: sje Date: Mon, 9 Dec 2002 17:54:07 +0000 Subject: [PATCH] * doc/tm.texi (FUNCTION_ARG_REG_LITTLE_ENDIAN): Remove definition. * defaults.h (FUNCTION_ARG_REG_LITTLE_ENDIAN): Remove definition. * calls.c (store_unaligned_arguments_into_pseudos) Remove FUNCTION_ARG_REG_LITTLE_ENDIAN. * stmt.c (expand_return): Ditto. * expr.c (move_block_from_reg): Ditto. (copy_blkmode_from_reg): Ditto. * expmed.c (store_bit_field): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@59962 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 11 +++++++++++ gcc/calls.c | 1 - gcc/defaults.h | 10 ---------- gcc/doc/tm.texi | 8 -------- gcc/expmed.c | 1 - gcc/expr.c | 20 ++++---------------- gcc/stmt.c | 1 - 7 files changed, 15 insertions(+), 37 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6ec988373cbb..3cb1aa8b4bba 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2002-12-09 Steve Ellcey + + * doc/tm.texi (FUNCTION_ARG_REG_LITTLE_ENDIAN): Remove definition. + * defaults.h (FUNCTION_ARG_REG_LITTLE_ENDIAN): Remove definition. + * calls.c (store_unaligned_arguments_into_pseudos) Remove + FUNCTION_ARG_REG_LITTLE_ENDIAN. + * stmt.c (expand_return): Ditto. + * expr.c (move_block_from_reg): Ditto. + (copy_blkmode_from_reg): Ditto. + * expmed.c (store_bit_field): Ditto. + 2002-12-09 Svein E. Seldal * config.gcc: Added tic4x-* target as an alias to c4x-* diff --git a/gcc/calls.c b/gcc/calls.c index 99722b5da2e3..41725b577698 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -1071,7 +1071,6 @@ store_unaligned_arguments_into_pseudos (args, num_actuals) this means we must skip the empty high order bytes when calculating the bit offset. */ if (BYTES_BIG_ENDIAN - && !FUNCTION_ARG_REG_LITTLE_ENDIAN && bytes < UNITS_PER_WORD) big_endian_correction = (BITS_PER_WORD - (bytes * BITS_PER_UNIT)); diff --git a/gcc/defaults.h b/gcc/defaults.h index a3b5f7e8e295..0c71996c4205 100644 --- a/gcc/defaults.h +++ b/gcc/defaults.h @@ -513,16 +513,6 @@ You Lose! You must define PREFERRED_DEBUGGING_TYPE! #define PREFERRED_DEBUGGING_TYPE NO_DEBUG #endif -/* This is set to 1 if BYTES_BIG_ENDIAN is defined but the target uses a - little-endian method of passing and returning structures in registers. - On the HP-UX IA64 and PA64 platforms structures are aligned differently - then integral values and setting this value to 1 will allow for the - special handling of structure arguments and return values in regs. */ - -#ifndef FUNCTION_ARG_REG_LITTLE_ENDIAN -#define FUNCTION_ARG_REG_LITTLE_ENDIAN 0 -#endif - /* Define codes for all the float formats that we know of. */ #define UNKNOWN_FLOAT_FORMAT 0 #define IEEE_FLOAT_FORMAT 1 diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index b8f2b934671a..342f6096bdf7 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -3584,14 +3584,6 @@ nonzero, the caller does not make a copy. Instead, it passes a pointer to the determined that the value won't be modified, it need not make a copy; otherwise a copy must be made. -@findex FUNCTION_ARG_REG_LITTLE_ENDIAN -@item FUNCTION_ARG_REG_LITTLE_ENDIAN -If defined TRUE on a big-endian system then structure arguments passed -(and returned) in registers are passed in a little-endian manner instead of -the big-endian manner. On the HP-UX IA64 and PA64 platforms structures are -aligned differently then integral values and setting this value to true will -allow for the special handling of structure arguments and return values. - @findex CUMULATIVE_ARGS @item CUMULATIVE_ARGS A C type for declaring a variable that is used as the first argument of diff --git a/gcc/expmed.c b/gcc/expmed.c index d1c89f2f1f2e..5eb933c5530a 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -404,7 +404,6 @@ store_bit_field (str_rtx, bitsize, bitnum, fieldmode, value, total_size) But as we have it, it counts within whatever size OP0 now has. On a bigendian machine, these are not the same, so convert. */ if (BYTES_BIG_ENDIAN - && !FUNCTION_ARG_REG_LITTLE_ENDIAN && GET_CODE (op0) != MEM && unit > GET_MODE_BITSIZE (GET_MODE (op0))) bitpos += unit - GET_MODE_BITSIZE (GET_MODE (op0)); diff --git a/gcc/expr.c b/gcc/expr.c index 144bc008b551..85d329f9ffce 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -2147,8 +2147,7 @@ move_block_from_reg (regno, x, nregs, size) /* If SIZE is that of a mode no bigger than a word, just use that mode's store operation. */ if (size <= UNITS_PER_WORD - && (mode = mode_for_size (size * BITS_PER_UNIT, MODE_INT, 0)) != BLKmode - && !FUNCTION_ARG_REG_LITTLE_ENDIAN) + && (mode = mode_for_size (size * BITS_PER_UNIT, MODE_INT, 0)) != BLKmode) { emit_move_insn (adjust_address (x, mode, 0), gen_rtx_REG (mode, regno)); return; @@ -2157,9 +2156,7 @@ move_block_from_reg (regno, x, nregs, size) /* Blocks smaller than a word on a BYTES_BIG_ENDIAN machine must be aligned to the left before storing to memory. Note that the previous test doesn't handle all cases (e.g. SIZE == 3). */ - if (size < UNITS_PER_WORD - && BYTES_BIG_ENDIAN - && !FUNCTION_ARG_REG_LITTLE_ENDIAN) + if (size < UNITS_PER_WORD && BYTES_BIG_ENDIAN) { rtx tem = operand_subword (x, 0, 1, BLKmode); rtx shift; @@ -2523,26 +2520,17 @@ copy_blkmode_from_reg (tgtblk, srcreg, type) } /* This code assumes srcreg is at least a full word. If it isn't, copy it - into a new pseudo which is a full word. + into a new pseudo which is a full word. */ - If FUNCTION_ARG_REG_LITTLE_ENDIAN is set and convert_to_mode does a copy, - the wrong part of the register gets copied so we fake a type conversion - in place. */ if (GET_MODE (srcreg) != BLKmode && GET_MODE_SIZE (GET_MODE (srcreg)) < UNITS_PER_WORD) - { - if (FUNCTION_ARG_REG_LITTLE_ENDIAN) - srcreg = simplify_gen_subreg (word_mode, srcreg, GET_MODE (srcreg), 0); - else - srcreg = convert_to_mode (word_mode, srcreg, TREE_UNSIGNED (type)); - } + srcreg = convert_to_mode (word_mode, srcreg, TREE_UNSIGNED (type)); /* Structures whose size is not a multiple of a word are aligned to the least significant byte (to the right). On a BYTES_BIG_ENDIAN machine, this means we must skip the empty high order bytes when calculating the bit offset. */ if (BYTES_BIG_ENDIAN - && !FUNCTION_ARG_REG_LITTLE_ENDIAN && bytes % UNITS_PER_WORD) big_endian_correction = (BITS_PER_WORD - ((bytes % UNITS_PER_WORD) * BITS_PER_UNIT)); diff --git a/gcc/stmt.c b/gcc/stmt.c index 360abe195712..fdae2b8a0b6d 100644 --- a/gcc/stmt.c +++ b/gcc/stmt.c @@ -3106,7 +3106,6 @@ expand_return (retval) machine, this means we must skip the empty high order bytes when calculating the bit offset. */ if (BYTES_BIG_ENDIAN - && !FUNCTION_ARG_REG_LITTLE_ENDIAN && bytes % UNITS_PER_WORD) big_endian_correction = (BITS_PER_WORD - ((bytes % UNITS_PER_WORD) * BITS_PER_UNIT)); -- 2.11.4.GIT