--- gcc/config/pyr/pyr.h 2018/04/24 18:10:26 1.1.1.1 +++ gcc/config/pyr/pyr.h 2018/04/24 18:30:16 1.1.1.4 @@ -1,6 +1,6 @@ /* Definitions of target machine parameters for GNU compiler, for Pyramid 90x, 9000, and MIServer Series. - Copyright (C) 1989 Free Software Foundation, Inc. + Copyright (C) 1989, 1995 Free Software Foundation, Inc. This file is part of GNU CC. @@ -16,8 +16,9 @@ GNU General Public License for more deta You should have received a copy of the GNU General Public License along with GNU CC; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + /* * If you're going to change this, and you haven't already, * you should get and read @@ -41,7 +42,7 @@ the Free Software Foundation, 675 Mass A /* Names to predefine in the preprocessor for this target machine. */ -#define CPP_PREDEFINES "-Dpyr -Dunix" +#define CPP_PREDEFINES "-Dpyr -Dunix -Asystem(unix) -Acpu(pyr) -Amachine(pyr)" /* Print subsidiary information on the compiler version in use. */ @@ -484,6 +485,7 @@ enum reg_class { NO_REGS, ALL_REGS, LIM_ /* Value is the number of bytes of arguments automatically popped when returning from a subroutine call. + FUNDECL is the declaration node of the function (as a tree), FUNTYPE is the data type of the function (as a tree), or for a library call it is an identifier node for the subroutine name. SIZE is the number of bytes of arguments passed on the stack. @@ -492,7 +494,7 @@ enum reg_class { NO_REGS, ALL_REGS, LIM_ using RETD in this way violates the Pyramid calling convention. We may nevertheless provide this as an option. */ -#define RETURN_POPS_ARGS(FUNTYPE,SIZE) \ +#define RETURN_POPS_ARGS(FUNDECL,FUNTYPE,SIZE) \ ((TARGET_RETD && TREE_CODE (FUNTYPE) != IDENTIFIER_NODE \ && (TYPE_ARG_TYPES (FUNTYPE) == 0 \ || (TREE_VALUE (tree_last (TYPE_ARG_TYPES (FUNTYPE))) \ @@ -627,8 +629,9 @@ extern int inner_param_safe_helper(); for a call to a function whose data type is FNTYPE. For a library call, FNTYPE is 0. */ -#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ - ((CUM) = (FNTYPE && !flag_pcc_struct_return && aggregate_value_p (FNTYPE))) +#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ + ((CUM) = (FNTYPE && !flag_pcc_struct_return \ + && aggregate_value_p (TREE_TYPE (FNTYPE)))) /* Determine where to put an argument to a function. Value is zero to push the argument on the stack, @@ -1028,10 +1031,9 @@ extern int current_function_calls_alloca /* 1 if byte access requires more than one instruction */ #define SLOW_BYTE_ACCESS 0 -/* Define if shifts truncate the shift count - which implies one can omit a sign-extension or zero-extension - of a shift count. */ -#define SHIFT_COUNT_TRUNCATED +/* Define this to be nonzero if shift instructions ignore all but the low-order + few bits. */ +#define SHIFT_COUNT_TRUNCATED 1 /* Value is 1 if truncating an integer of INPREC bits to OUTPREC bits is done just by pretending it is already truncated. */ @@ -1316,7 +1318,7 @@ extern int swap_operands; #define PRINT_OPERAND(FILE, X, CODE) \ { if (GET_CODE (X) == REG) \ - fprintf (FILE, "%s", reg_names [REGNO (X)]); \ + fprintf (FILE, "%s", reg_names [REGNO (X) + ((CODE) == 'R')]); \ \ else if (GET_CODE (X) == MEM) \ output_address (XEXP (X, 0)); \ @@ -1331,7 +1333,7 @@ extern int swap_operands; else \ fprintf (FILE, "$0x%x", u1.i); } \ \ - else if (GET_CODE (X) == CONST_DOUBLE && GET_MODE (X) != DImode) \ + else if (GET_CODE (X) == CONST_DOUBLE && GET_MODE (X) != VOIDmode) \ { union { double d; int i[2]; } u; \ u.i[0] = CONST_DOUBLE_LOW (X); u.i[1] = CONST_DOUBLE_HIGH (X); \ fprintf (FILE, "$0d%.20e", u.d); } \