diff options
author | Dmitri Makarov <dim@wrs.com> | 2000-02-11 22:39:49 +0000 |
---|---|---|
committer | Nick Clifton <nickc@gcc.gnu.org> | 2000-02-11 22:39:49 +0000 |
commit | 914a3b8c0eec767f0c634442d84b977ef5d5bdc3 (patch) | |
tree | d6065b49ce8669dbe1435a99e781e357c1ff12d2 | |
parent | 90e7678cd53b837759f9b0ecfbbd9b1cc33827dc (diff) | |
download | gcc-914a3b8c0eec767f0c634442d84b977ef5d5bdc3.zip gcc-914a3b8c0eec767f0c634442d84b977ef5d5bdc3.tar.gz gcc-914a3b8c0eec767f0c634442d84b977ef5d5bdc3.tar.bz2 |
Minor formatting tidyups.
From-SVN: r31936
-rw-r--r-- | gcc/ChangeLog | 43 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 20 | ||||
-rw-r--r-- | gcc/config/arm/arm.h | 7 | ||||
-rw-r--r-- | gcc/config/arm/arm.md | 1 |
4 files changed, 60 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1632ef2..8799dba 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,46 @@ +2000-02-07 Dmitri Makarov <dim@wrs.com> & Bernd Schmidt <bernds@redhat.com> + + * config/arm/arm.c (arm_init_cumulative_args); New function: + Initlaise the CUMULATIE_ARGS strcuture for a function + defintion. + (arm_function_arg): New function: Determine where to place a + function's argument. Also handles deciding the function's + call cookie. + (current_file_function_operand): New function: Return true if + the symbol is a function which has already been compiled. + (arm_is_long_call_p): New function: Return true if the + indicated function should be called via a long call. + (arm_valid_type_attribute_p): New function: Return true if the + attribute is a valid, arm specific, attribute. + (arm_comp_type_attribute): New function: Return true if the + two types have compatable, arm specific, attributes. + + * config/arm/arm.h (CUMULATIVE_ARGS): Redefine to be a + structure. + (FUNCTION_ARG): Redefine to call arm_function_arg. + (FUNCTION_ARG_PARTIAL_NREGS): Redefine to use correct + structure field. + (INIT_CUMULATIVE_ARGS): Redefine to call + arm_init_cumulative_args. + (FUNCTION_ARG_ADVANCE): Redefine to use correct structure + field. + (SETUP_INCOMING_VARARGS): Redefine to use correct structure + field. + (ARM_MARK_NEARBY_FUNCTION): New macro: Mark already compiled + functions. + (ENCODE_SECTION): Add call to ARM_MARK_NEARBY_FUNCTION. + (VALID_MACHINE_TYPE_ATTRIBUTE): Define. + (COMP_TYPE_ATTRIBUTES): Define. + + * config/arm/arm.md (call): Call arm_is_long_call_p to decide + if a long call is needed. + (call_value): Call arm_is_long_call_p to decide if a long call + is needed. + (call_symbol): Call arm_is_long_call_p to decide if a long call + is needed. + + * config/arm/arm-protos.h: Add prototype for arm_is_long_call_p. + 2000-02-11 Denis Chertykov <denisc@overta.ru> * README.AVR: New file with information about the avr ports. diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 6560893..9a5df71 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -1,5 +1,5 @@ /* Output routines for GCC for ARM. - Copyright (C) 1991, 93-99, 2000 Free Software Foundation, Inc. + Copyright (C) 1991, 93, 94, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc. Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl) and Martin Simmons (@harleqn.co.uk). More major hacks by Richard Earnshaw (rearnsha@arm.com). @@ -1134,7 +1134,7 @@ arm_gen_constant (code, mode, val, target, source, subtargets, generate) /* See if two shifts will do 2 or more insn's worth of work. */ if (clear_sign_bit_copies >= 16 && clear_sign_bit_copies < 24) { - HOST_WIDE_INT shift_mask = ((0xffffffffUL + HOST_WIDE_INT shift_mask = ((0xffffffffUL << (32 - clear_sign_bit_copies)) & 0xffffffffUL); @@ -1536,14 +1536,16 @@ arm_function_arg (pcum, mode, type, named) } -/* Return 1 if the operand is a SYMBOL_REF for a function known to be in - this file. */ +/* Return 1 if the operand is a SYMBOL_REF for a function + known to be defined in the current compilation unit. */ static int current_file_function_operand (sym_ref) rtx sym_ref; { - return (SYMBOL_REF_FLAG (sym_ref) - || sym_ref == XEXP (DECL_RTL (current_function_decl), 0)); + /* XXX FIXME - we need some way to determine if SYMREF has already been + compiled. We wanted to used SYMBOL_REF_FLAG but this is already in use + by the constant pool generation code. */ + return sym_ref == XEXP (DECL_RTL (current_function_decl), 0); } /* Return non-zero if a 32 bit "long call" should be generated for this @@ -6141,7 +6143,7 @@ output_func_epilogue (frame_size) if (use_return_insn (FALSE) && return_used_this_function && (frame_size + current_function_outgoing_args_size) != 0 && ! (frame_pointer_needed && TARGET_APCS)) - abort (); + abort (); /* Reset the ARM-specific per-function variables. */ current_function_anonymous_args = 0; @@ -6827,7 +6829,7 @@ arm_final_prescan_insn (insn) case CALL_INSN: /* If using 32-bit addresses the cc is not preserved over - calls */ + calls. */ if (TARGET_APCS_32) { /* Succeed if the following insn is the target label, @@ -6858,7 +6860,7 @@ arm_final_prescan_insn (insn) /* If this is an unconditional branch to the same label, succeed. If it is to another label, do nothing. If it is conditional, fail. */ - /* XXX Probably, the tests for SET and the PC are unnecessary. */ + /* XXX Probably, the tests for SET and the PC are unnecessary. */ scanbody = PATTERN (this_insn); if (GET_CODE (scanbody) == SET diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index f457f92..1a27a74 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for ARM. - Copyright (C) 1991, 93, 94, 05, 96, 97, 98, 99, 2000 Free Software Foundation, Inc. + Copyright (C) 1991, 93, 94, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc. Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl) and Martin Simmons (@harleqn.co.uk). More major hacks by Richard Earnshaw (rearnsha@arm.com) @@ -242,7 +242,10 @@ Unrecognized value in TARGET_CPU_DEFAULT. { "subtarget_cpp_spec", SUBTARGET_CPP_SPEC }, \ SUBTARGET_EXTRA_SPECS +#ifndef SUBTARGET_EXTRA_SPECS #define SUBTARGET_EXTRA_SPECS +#endif + #ifndef SUBTARGET_CPP_SPEC #define SUBTARGET_CPP_SPEC "" #endif @@ -486,7 +489,7 @@ extern int arm_is_6_or_7; /* The frame pointer register used in gcc has nothing to do with debugging; that is controlled by the APCS-FRAME option. */ -/* Not fully implemented yet */ +/* Not fully implemented yet. */ /* #define CAN_DEBUG_WITHOUT_FP 1 */ #define TARGET_MEM_FUNCTIONS 1 diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index b1bd09e..b1e1f34 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -2935,6 +2935,7 @@ : preserve_subexpressions_p ())); DONE; } + if (flag_pic && (CONSTANT_P (operands[1]) || symbol_mentioned_p (operands[1]) |