Minor formatting tidyups.
authornickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 11 Feb 2000 22:39:49 +0000 (22:39 +0000)
committernickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 11 Feb 2000 22:39:49 +0000 (22:39 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31936 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/arm/arm.c
gcc/config/arm/arm.h
gcc/config/arm/arm.md

index 1632ef2..8799dba 100644 (file)
@@ -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.
index 6560893..9a5df71 100644 (file)
@@ -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)
 }
 
 \f
-/* 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
index f457f92..1a27a74 100644 (file)
@@ -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
index b1bd09e..b1e1f34 100644 (file)
                           : preserve_subexpressions_p ()));
       DONE;
     }
+    
   if (flag_pic
       && (CONSTANT_P (operands[1])
         || symbol_mentioned_p (operands[1])