OSDN Git Service

* calls.c, function.c: Always define PREFERRED_STACK_BOUNDARY
authorzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 10 Aug 2001 16:19:22 +0000 (16:19 +0000)
committerzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 10 Aug 2001 16:19:22 +0000 (16:19 +0000)
if not already defined.  Remove all #ifdefs on STACK_BOUNDARY;
this macro is now required.

* cselib.c (cselib_process_insn), flow.c (propagate_block),
loop.c (find_and_verify_loops), reload.c (reload): Check
for rtx code of CALL_INSN, not CALL, when deciding if we
need to check for REG_SETJMP note.

* gcse.c (compute_hash_table, compute_store_table): Update
the #ifdef NON_SAVING_SETJMP code to the new REG_SETJMP
logic.

* config/avr/avr.c: Fix typo.
* config/convex/convex.c (expand_movstr): Use adjust_address.
* config/dsp16xx/dsp16xx.c: Define dsp16xx_compare_gen
variable.
* config/dsp16xx/dsp16xx.md: Correct calls to replace_equiv_address.
* config/elxsi/elxsi.c: Include tree.h, expr.h, regs.h, and flags.h.
Fix typo.
* config/elxsi/elxsi.h: Don't define Rmode (typo for Pmode?)
Do define STACK_BOUNDARY.
* config/i370/i370.c: Include expr.h.
* config/i860/sysv3.h, config/i860/sysv4.h, config/m32r/m32r.h,
config/pa/som.h, config/v850/v850.h: Take in_ctors and
in_dtors out of EXTRA_SECTIONS; take CTORS_SECTION_FUNCTION
and DTORS_SECTION_FUNCTION out of EXTRA_SECTION_FUNCTIONS.
* config/m88k/m88k.c: Include c-tree.h after expr.h.
* config/pdp11/pdp11.c: Include expr.h and toplev.h.
* config/romp/romp.c: Include expr.h after tree.h.
Include toplev.h.
(output_fpop): Use xmalloc, not oballoc.
* config/we32k/we32k.c: Include expr.h.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44768 138bc75d-0d04-0410-961f-82ee72b054a4

24 files changed:
gcc/ChangeLog
gcc/calls.c
gcc/config/avr/avr.c
gcc/config/convex/convex.c
gcc/config/dsp16xx/dsp16xx.c
gcc/config/dsp16xx/dsp16xx.md
gcc/config/elxsi/elxsi.c
gcc/config/elxsi/elxsi.h
gcc/config/i370/i370.c
gcc/config/i860/sysv3.h
gcc/config/i860/sysv4.h
gcc/config/m32r/m32r.h
gcc/config/m88k/m88k.c
gcc/config/pa/som.h
gcc/config/pdp11/pdp11.c
gcc/config/romp/romp.c
gcc/config/v850/v850.h
gcc/config/we32k/we32k.c
gcc/cselib.c
gcc/flow.c
gcc/function.c
gcc/gcse.c
gcc/loop.c
gcc/reload1.c

index a76f2e6..0d9367f 100644 (file)
@@ -1,3 +1,39 @@
+2001-08-10  Zack Weinberg  <zackw@stanford.edu>
+
+       * calls.c, function.c: Always define PREFERRED_STACK_BOUNDARY
+       if not already defined.  Remove all #ifdefs on STACK_BOUNDARY;
+       this macro is now required.
+
+       * cselib.c (cselib_process_insn), flow.c (propagate_block),
+       loop.c (find_and_verify_loops), reload.c (reload): Check
+       for rtx code of CALL_INSN, not CALL, when deciding if we
+       need to check for REG_SETJMP note.
+
+       * gcse.c (compute_hash_table, compute_store_table): Update
+       the #ifdef NON_SAVING_SETJMP code to the new REG_SETJMP
+       logic.
+
+       * config/avr/avr.c: Fix typo.
+       * config/convex/convex.c (expand_movstr): Use adjust_address.
+       * config/dsp16xx/dsp16xx.c: Define dsp16xx_compare_gen
+       variable.
+       * config/dsp16xx/dsp16xx.md: Correct calls to replace_equiv_address.
+       * config/elxsi/elxsi.c: Include tree.h, expr.h, regs.h, and flags.h.
+       Fix typo.
+       * config/elxsi/elxsi.h: Don't define Rmode (typo for Pmode?)
+       Do define STACK_BOUNDARY.
+       * config/i370/i370.c: Include expr.h.
+       * config/i860/sysv3.h, config/i860/sysv4.h, config/m32r/m32r.h,
+       config/pa/som.h, config/v850/v850.h: Take in_ctors and
+       in_dtors out of EXTRA_SECTIONS; take CTORS_SECTION_FUNCTION
+       and DTORS_SECTION_FUNCTION out of EXTRA_SECTION_FUNCTIONS.
+       * config/m88k/m88k.c: Include c-tree.h after expr.h.
+       * config/pdp11/pdp11.c: Include expr.h and toplev.h.
+       * config/romp/romp.c: Include expr.h after tree.h.
+       Include toplev.h.
+       (output_fpop): Use xmalloc, not oballoc.
+       * config/we32k/we32k.c: Include expr.h.
+
 2001-08-10  Kazu Hirata  <kazu@hxi.com>
 
        * config/h8300/h8300.h: Fix formatting.
@@ -41,7 +77,7 @@
 
 2001-08-09  John David Anglin  <dave@hiauly1.hia.nrc.ca>
 
-       * stmt.c (expand_null_return_1): Remove code to generate simple returns 
+       * stmt.c (expand_null_return_1): Remove code to generate simple returns
        and "use_goto" argument.
        (expand_null_return, expand_value_return): Update all callers.
        * function.c (expand_function_end): Remove code to generate simple
        (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR): Remove.
        (TARGET_ASM_CONSTRUCTOR, TARGET_ASM_DESTRUCTOR): New.
        * config/c4x/c4x.c: Move include of tree.h.
-       * config/clipper/clipper.c (clix_asm_out_constructor): New.     
+       * config/clipper/clipper.c (clix_asm_out_constructor): New.
        (clix_asm_out_destructor): New.
        * config/clipper/clix.h (ASM_OUTPUT_CONSTRUCTOR): Remove.
        (ASM_OUTPUT_DESTRUCTOR): Remove.
index 7d81069..1f40d53 100644 (file)
@@ -37,7 +37,7 @@ Boston, MA 02111-1307, USA.  */
 #define FUNCTION_OK_FOR_SIBCALL(DECL) 1
 #endif
 
-#if !defined PREFERRED_STACK_BOUNDARY && defined STACK_BOUNDARY
+#if !defined PREFERRED_STACK_BOUNDARY
 #define PREFERRED_STACK_BOUNDARY STACK_BOUNDARY
 #endif
 
@@ -988,7 +988,7 @@ restore_fixed_argument_area (save_area, argblock, high_to_save, low_to_save)
     move_by_pieces (stack_area, validize_mem (save_area),
                    high_to_save - low_to_save + 1, PARM_BOUNDARY);
 }
-#endif
+#endif /* REG_PARM_STACK_SPACE */
 
 /* If any elements in ARGS refer to parameters that are to be passed in
    registers, but not in memory, and whose alignment does not permit a
@@ -1368,10 +1368,8 @@ compute_argument_block_size (reg_parm_stack_space, args_size,
   /* For accumulate outgoing args mode we don't need to align, since the frame
      will be already aligned.  Align to STACK_BOUNDARY in order to prevent
      backends from generating missaligned frame sizes.  */
-#ifdef STACK_BOUNDARY
   if (ACCUMULATE_OUTGOING_ARGS && preferred_stack_boundary > STACK_BOUNDARY)
     preferred_stack_boundary = STACK_BOUNDARY;
-#endif
 
   /* Compute the actual size of the argument block required.  The variable
      and constant sizes must be combined, the size may have to be rounded,
@@ -1382,7 +1380,6 @@ compute_argument_block_size (reg_parm_stack_space, args_size,
       args_size->var = ARGS_SIZE_TREE (*args_size);
       args_size->constant = 0;
 
-#ifdef PREFERRED_STACK_BOUNDARY
       preferred_stack_boundary /= BITS_PER_UNIT;
       if (preferred_stack_boundary > 1)
        {
@@ -1393,7 +1390,6 @@ compute_argument_block_size (reg_parm_stack_space, args_size,
            abort ();
          args_size->var = round_up (args_size->var, preferred_stack_boundary);
        }
-#endif
 
       if (reg_parm_stack_space > 0)
        {
@@ -1412,7 +1408,6 @@ compute_argument_block_size (reg_parm_stack_space, args_size,
     }
   else
     {
-#ifdef PREFERRED_STACK_BOUNDARY
       preferred_stack_boundary /= BITS_PER_UNIT;
       if (preferred_stack_boundary < 1)
        preferred_stack_boundary = 1;
@@ -1422,7 +1417,6 @@ compute_argument_block_size (reg_parm_stack_space, args_size,
                              / preferred_stack_boundary
                              * preferred_stack_boundary)
                             - stack_pointer_delta);
-#endif
 
       args_size->constant = MAX (args_size->constant,
                                 reg_parm_stack_space);
@@ -2296,11 +2290,7 @@ expand_call (exp, target, ignore)
     }
 
   /* Figure out the amount to which the stack should be aligned.  */
-#ifdef PREFERRED_STACK_BOUNDARY
   preferred_stack_boundary = PREFERRED_STACK_BOUNDARY;
-#else
-  preferred_stack_boundary = STACK_BOUNDARY;
-#endif
 
   /* Operand 0 is a pointer-to-function; get the type of the function.  */
   funtype = TREE_TYPE (TREE_OPERAND (exp, 0));
@@ -2905,7 +2895,6 @@ expand_call (exp, target, ignore)
 
       compute_argument_addresses (args, argblock, num_actuals);
 
-#ifdef PREFERRED_STACK_BOUNDARY
       /* If we push args individually in reverse order, perform stack alignment
         before the first push (the last arg).  */
       if (PUSH_ARGS_REVERSED && argblock == 0
@@ -2931,12 +2920,6 @@ expand_call (exp, target, ignore)
       /* Now that the stack is properly aligned, pops can't safely
         be deferred during the evaluation of the arguments.  */
       NO_DEFER_POP;
-#endif
-
-      /* Don't try to defer pops if preallocating, not even from the first arg,
-        since ARGBLOCK probably refers to the SP.  */
-      if (argblock)
-       NO_DEFER_POP;
 
       funexp = rtx_for_function_call (fndecl, exp);
 
@@ -3008,13 +2991,11 @@ expand_call (exp, target, ignore)
                sibcall_failure = 1;
            }
 
-#ifdef PREFERRED_STACK_BOUNDARY
       /* If we pushed args in forward order, perform stack alignment
         after pushing the last arg.  */
       if (!PUSH_ARGS_REVERSED && argblock == 0)
        anti_adjust_stack (GEN_INT (adjusted_args_size.constant
                                    - unadjusted_args_size));
-#endif
 
       /* If register arguments require space on the stack and stack space
         was not preallocated, allocate stack space here for arguments
@@ -3074,11 +3055,9 @@ expand_call (exp, target, ignore)
       /* All arguments and registers used for the call must be set up by
         now!  */
 
-#ifdef PREFERRED_STACK_BOUNDARY
       /* Stack must be properly aligned now.  */
       if (pass && stack_pointer_delta % preferred_unit_stack_boundary)
        abort ();
-#endif
 
       /* Generate the actual call instruction.  */
       emit_call_1 (funexp, fndecl, funtype, unadjusted_args_size,
@@ -3558,12 +3537,10 @@ emit_library_call_value_1 (retval, orgfun, value, fn_type, outmode, nargs, p)
     }
   fun = orgfun;
 
-#ifdef PREFERRED_STACK_BOUNDARY
   /* Ensure current function's preferred stack boundary is at least
      what we need.  */
   if (cfun->preferred_stack_boundary < PREFERRED_STACK_BOUNDARY)
     cfun->preferred_stack_boundary = PREFERRED_STACK_BOUNDARY;
-#endif
 
   /* If this kind of value comes back in memory,
      decide where in memory it should come back.  */
@@ -3772,14 +3749,12 @@ emit_library_call_value_1 (retval, orgfun, value, fn_type, outmode, nargs, p)
   assemble_external_libcall (fun);
 
   original_args_size = args_size;
-#ifdef PREFERRED_STACK_BOUNDARY
   args_size.constant = (((args_size.constant
                          + stack_pointer_delta
                          + STACK_BYTES - 1)
                          / STACK_BYTES
                          * STACK_BYTES)
                         - stack_pointer_delta);
-#endif
 
   args_size.constant = MAX (args_size.constant,
                            reg_parm_stack_space);
@@ -3848,13 +3823,11 @@ emit_library_call_value_1 (retval, orgfun, value, fn_type, outmode, nargs, p)
        argblock = push_block (GEN_INT (args_size.constant), 0, 0);
     }
 
-#ifdef PREFERRED_STACK_BOUNDARY
   /* If we push args individually in reverse order, perform stack alignment
      before the first push (the last arg).  */
   if (argblock == 0 && PUSH_ARGS_REVERSED)
     anti_adjust_stack (GEN_INT (args_size.constant
                                - original_args_size.constant));
-#endif
 
   if (PUSH_ARGS_REVERSED)
     {
@@ -4000,13 +3973,11 @@ emit_library_call_value_1 (retval, orgfun, value, fn_type, outmode, nargs, p)
        }
     }
 
-#ifdef PREFERRED_STACK_BOUNDARY
   /* If we pushed args in forward order, perform stack alignment
      after pushing the last arg.  */
   if (argblock == 0 && !PUSH_ARGS_REVERSED)
     anti_adjust_stack (GEN_INT (args_size.constant
                                - original_args_size.constant));
-#endif
 
   if (PUSH_ARGS_REVERSED)
     argnum = nargs - 1;
@@ -4064,11 +4035,9 @@ emit_library_call_value_1 (retval, orgfun, value, fn_type, outmode, nargs, p)
   valreg = (mem_value == 0 && outmode != VOIDmode
            ? hard_libcall_value (outmode) : NULL_RTX);
 
-#ifdef PREFERRED_STACK_BOUNDARY
   /* Stack must be properly aligned now.  */
   if (stack_pointer_delta & (PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT - 1))
     abort ();
-#endif
 
   before_call = get_last_insn ();
 
index 6d11d05..cb222b2 100644 (file)
@@ -816,7 +816,6 @@ avr_output_function_epilogue (file, size)
    machine for a memory operand of mode MODE.  */
 
 int
-int
 legitimate_address_p (mode, x, strict)
      enum machine_mode mode;
      rtx x;
index a0e0987..dcf3669 100644 (file)
@@ -439,8 +439,8 @@ expand_movstr (operands)
 
       /* Advance to next piece. */
       size = GET_MODE_SIZE (mode);
-      src = adj_offsettable_operand (src, size);
-      dest = adj_offsettable_operand (dest, size);
+      src = adjust_address (src, mode, size);
+      dest = adjust_address (dest, mode, size);
       len -= size;
     }
 
index 3240262..74de0d0 100644 (file)
@@ -58,6 +58,7 @@ const char *save_chip_name;
 
 rtx dsp16xx_compare_op0;
 rtx dsp16xx_compare_op1;
+rtx (*dsp16xx_compare_gen) PARAMS (());
 
 static const char *fp;
 static const char *sp;
index 4e85155..29d9acd 100644 (file)
   operands[5] = addr0;
   operands[6] = addr1;
 
-  operands[0] = replace_equiv_address (operands[0], VOIDmode, addr0);
-  operands[1] = replace_equiv_address (operands[1], VOIDmode, addr1);
+  operands[0] = replace_equiv_address (operands[0], addr0);
+  operands[1] = replace_equiv_address (operands[1], addr1);
 }")
 
 (define_insn ""
index 0a0e77b..7e8a24c 100644 (file)
@@ -26,6 +26,10 @@ Boston, MA 02111-1307, USA.  */
 #include "rtl.h"
 #include "function.h"
 #include "output.h"
+#include "tree.h"
+#include "expr.h"
+#include "regs.h"
+#include "flags.h"
 #include "tm_p.h"
 #include "target.h"
 #include "target-def.h"
@@ -129,7 +133,7 @@ elxsi_output_function_epilogue (file, size)
     {
       for (regno = 0; regno < FIRST_PSEUDO_REGISTER; ++regno)
        if (regs_ever_live[regno] && !call_used_regs[regno])
-         fprintf (file, "\tld.64\t.r%d,[.sp]%d\n", regno, (cnt + =8) - 12);
+         fprintf (file, "\tld.64\t.r%d,[.sp]%d\n", regno, (cnt +8) - 12);
 
       fprintf (file, "\texit\t%d\n", size + cnt);
     }
index 8d13823..87ef3ea 100644 (file)
@@ -79,7 +79,6 @@ extern int target_flags;
    if using 16-bit ints on a 68000, this would still be 32.
    But on a machine with 16-bit registers, this would be 16.  */
 #define BITS_PER_WORD 64
-#define Rmode DImode
 
 #define INT_TYPE_SIZE 32
 
@@ -106,6 +105,9 @@ extern int target_flags;
 /* Allocation boundary (in *bits*) for storing arguments in argument list.  */
 #define PARM_BOUNDARY 32
 
+/* Boundary (in *bits*) on which stack pointer should be aligned.  */
+#define STACK_BOUNDARY 32
+
 /* Allocation boundary (in *bits*) for the code of a function.  */
 #define FUNCTION_BOUNDARY 8
 
index 8dd229f..ca3cafb 100644 (file)
@@ -34,6 +34,7 @@ Boston, MA 02111-1307, USA.  */
 #include "output.h"
 #include "insn-attr.h"
 #include "function.h"
+#include "expr.h"
 #include "flags.h"
 #include "recog.h"
 #include "toplev.h"
index e4255d4..5380aa2 100644 (file)
@@ -149,13 +149,11 @@ extern char *current_function_original_name;
 #define TDESC_SECTION_ASM_OP    "\t.section\t.tdesc"
 
 #undef EXTRA_SECTIONS
-#define EXTRA_SECTIONS in_const, in_ctors, in_dtors, in_tdesc
+#define EXTRA_SECTIONS in_const, in_tdesc
 
 #undef EXTRA_SECTION_FUNCTIONS
 #define EXTRA_SECTION_FUNCTIONS                                                \
   CONST_SECTION_FUNCTION                                               \
-  CTORS_SECTION_FUNCTION                                               \
-  DTORS_SECTION_FUNCTION                                               \
   TDESC_SECTION_FUNCTION
 
 #define TDESC_SECTION_FUNCTION                                         \
index 5e40e34..c92c2a9 100644 (file)
@@ -175,13 +175,11 @@ extern char *current_function_original_name;
 #define TDESC_SECTION_ASM_OP    "\t.section\t.tdesc"
 
 #undef EXTRA_SECTIONS
-#define EXTRA_SECTIONS in_const, in_ctors, in_dtors, in_tdesc
+#define EXTRA_SECTIONS in_const, in_tdesc
 
 #undef EXTRA_SECTION_FUNCTIONS
 #define EXTRA_SECTION_FUNCTIONS                                                \
   CONST_SECTION_FUNCTION                                               \
-  CTORS_SECTION_FUNCTION                                               \
-  DTORS_SECTION_FUNCTION                                               \
   TDESC_SECTION_FUNCTION
 
 #define TDESC_SECTION_FUNCTION                                         \
index e72f61f..692249b 100644 (file)
@@ -1548,7 +1548,7 @@ extern int m32r_sched_odd_word_p;
    `in_text' and `in_data'.  You need not define this macro
    on a system with no other sections (that GCC needs to use).  */
 #undef  EXTRA_SECTIONS
-#define EXTRA_SECTIONS in_sdata, in_sbss, in_const, in_ctors, in_dtors
+#define EXTRA_SECTIONS in_sdata, in_sbss, in_const
 
 /* One or more functions to be defined in "varasm.c".  These
    functions should do jobs analogous to those of `text_section' and
@@ -1557,8 +1557,6 @@ extern int m32r_sched_odd_word_p;
 #undef  EXTRA_SECTION_FUNCTIONS
 #define EXTRA_SECTION_FUNCTIONS        \
   CONST_SECTION_FUNCTION       \
-  CTORS_SECTION_FUNCTION       \
-  DTORS_SECTION_FUNCTION       \
   SDATA_SECTION_FUNCTION       \
   SBSS_SECTION_FUNCTION
 
index f77aa47..b10eab0 100644 (file)
@@ -33,8 +33,8 @@ Boston, MA 02111-1307, USA.  */
 #include "insn-attr.h"
 #include "tree.h"
 #include "function.h"
-#include "c-tree.h"
 #include "expr.h"
+#include "c-tree.h"
 #include "flags.h"
 #include "recog.h"
 #include "toplev.h"
index df3cb04..0d20555 100644 (file)
@@ -260,13 +260,7 @@ do {  \
 
 /* Define the .bss section for ASM_OUTPUT_LOCAL to use. */
 
-#ifndef CTORS_SECTION_FUNCTION
 #define EXTRA_SECTIONS in_readonly_data
-#define CTORS_SECTION_FUNCTION
-#define DTORS_SECTION_FUNCTION
-#else
-#define EXTRA_SECTIONS in_readonly_data, in_ctors, in_dtors
-#endif
 
 /* FIXME: HPUX ld generates incorrect GOT entries for "T" fixups
    which reference data within the $TEXT$ space (for example constant
@@ -293,9 +287,7 @@ readonly_data ()                                                    \
        fprintf (asm_out_file, "%s\n", READONLY_DATA_ASM_OP);           \
       in_section = in_readonly_data;                                   \
     }                                                                  \
-}                                                                      \
-CTORS_SECTION_FUNCTION                                                 \
-DTORS_SECTION_FUNCTION
+}
 
 /* This is how to output a command to make the user-level label named NAME
    defined for reference from other files.
index 9bf51ce..03e596c 100644 (file)
@@ -34,6 +34,8 @@ Boston, MA 02111-1307, USA.  */
 #include "flags.h"
 #include "recog.h"
 #include "tree.h"
+#include "expr.h"
+#include "toplev.h"
 #include "tm_p.h"
 #include "target.h"
 #include "target-def.h"
index 27a1706..6cdb77e 100644 (file)
@@ -33,10 +33,11 @@ Boston, MA 02111-1307, USA.  */
 #include "insn-attr.h"
 #include "flags.h"
 #include "recog.h"
-#include "expr.h"
 #include "obstack.h"
 #include "tree.h"
 #include "function.h"
+#include "expr.h"
+#include "toplev.h"
 #include "tm_p.h"
 #include "target.h"
 #include "target-def.h"
@@ -1546,7 +1547,7 @@ output_fpop (code, op0, op1, op2, insn)
       goto win;
 
   /* We have never seen this operation before.  */
-  fpop = (struct fp_op *) oballoc (sizeof (struct fp_op));
+  fpop = (struct fp_op *) xmalloc (sizeof (struct fp_op));
   fpop->mem_offset = data_offset;
   fpop->opcode = code;
   fpop->noperands = noperands;
index ae7098a..281f219 100644 (file)
@@ -1056,8 +1056,8 @@ typedef enum
    `in_text' and `in_data'.  You need not define this macro on a
    system with no other sections (that GCC needs to use).  */
 #undef EXTRA_SECTIONS
-#define EXTRA_SECTIONS in_tdata, in_sdata, in_zdata, in_const, in_ctors, \
-in_dtors, in_rozdata, in_rosdata, in_sbss, in_zbss, in_zcommon, in_scommon
+#define EXTRA_SECTIONS in_tdata, in_sdata, in_zdata, in_const, \
+ in_rozdata, in_rosdata, in_sbss, in_zbss, in_zcommon, in_scommon
 
 /* One or more functions to be defined in `varasm.c'.  These
    functions should do jobs analogous to those of `text_section' and
@@ -1068,8 +1068,6 @@ in_dtors, in_rozdata, in_rosdata, in_sbss, in_zbss, in_zcommon, in_scommon
 /* This could be done a lot more cleanly using ANSI C ... */
 #define EXTRA_SECTION_FUNCTIONS                                                \
 CONST_SECTION_FUNCTION                                                 \
-CTORS_SECTION_FUNCTION                                                 \
-DTORS_SECTION_FUNCTION                                                 \
                                                                        \
 void                                                                   \
 sdata_section ()                                                       \
index 462b598..5ee63ac 100644 (file)
@@ -31,6 +31,7 @@ Boston, MA 02111-1307, USA.  */
 #include "output.h"
 #include "regs.h"
 #include "tree.h"
+#include "expr.h"
 #include "tm_p.h"
 #include "target.h"
 #include "target-def.h"
index 89a274f..619bad1 100644 (file)
@@ -1276,7 +1276,7 @@ cselib_process_insn (insn)
 
   /* Forget everything at a CODE_LABEL, a volatile asm, or a setjmp.  */
   if (GET_CODE (insn) == CODE_LABEL
-      || (GET_CODE (insn) == CALL
+      || (GET_CODE (insn) == CALL_INSN
          && find_reg_note (insn, REG_SETJMP, NULL))
       || (GET_CODE (insn) == INSN
          && GET_CODE (PATTERN (insn)) == ASM_OPERANDS
index f7d3219..e2c1646 100644 (file)
@@ -5711,7 +5711,7 @@ propagate_block (bb, live, local_set, cond_local_set, flags)
       /* If this is a call to `setjmp' et al, warn if any
         non-volatile datum is live.  */
       if ((flags & PROP_REG_INFO)
-         && GET_CODE (insn) == CALL
+         && GET_CODE (insn) == CALL_INSN
          && find_reg_note (insn, REG_SETJMP, NULL))
        IOR_REG_SET (regs_live_at_setjmp, pbi->reg_live);
 
index af1c87b..a0cfa00 100644 (file)
@@ -67,7 +67,7 @@ Boston, MA 02111-1307, USA.  */
 #define LOCAL_ALIGNMENT(TYPE, ALIGNMENT) ALIGNMENT
 #endif
 
-#if !defined (PREFERRED_STACK_BOUNDARY) && defined (STACK_BOUNDARY)
+#ifndef PREFERRED_STACK_BOUNDARY
 #define PREFERRED_STACK_BOUNDARY STACK_BOUNDARY
 #endif
 
@@ -5058,13 +5058,11 @@ assign_parms (fndecl)
 #endif
 #endif
 
-#ifdef STACK_BOUNDARY
 #define STACK_BYTES (STACK_BOUNDARY / BITS_PER_UNIT)
 
   current_function_args_size
     = ((current_function_args_size + STACK_BYTES - 1)
        / STACK_BYTES) * STACK_BYTES;
-#endif
 
 #ifdef ARGS_GROW_DOWNWARD
   current_function_arg_offset_rtx
@@ -6140,13 +6138,8 @@ prepare_function_start ()
   cfun->original_decl_initial = 0;
   cfun->original_arg_vector = 0;
 
-#ifdef STACK_BOUNDARY
   cfun->stack_alignment_needed = STACK_BOUNDARY;
   cfun->preferred_stack_boundary = STACK_BOUNDARY;
-#else
-  cfun->stack_alignment_needed = 0;
-  cfun->preferred_stack_boundary = 0;
-#endif
 
   /* Set if a call to setjmp is seen.  */
   current_function_calls_setjmp = 0;
index f0031c0..230242e 100644 (file)
@@ -2495,23 +2495,21 @@ compute_hash_table (set_p)
           insn && insn != NEXT_INSN (BLOCK_END (bb));
           insn = NEXT_INSN (insn))
        {
-#ifdef NON_SAVING_SETJMP 
-         if (NON_SAVING_SETJMP && GET_CODE (insn) == NOTE
-             && NOTE_LINE_NUMBER (insn) == NOTE_INSN_SETJMP)
-           {
-             for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
-               record_last_reg_set_info (insn, regno);
-             continue;
-           }
-#endif
-
          if (! INSN_P (insn))
            continue;
 
          if (GET_CODE (insn) == CALL_INSN)
            {
+             bool clobbers_all = false;
+#ifdef NON_SAVING_SETJMP 
+             if (NON_SAVING_SETJMP
+                 && find_reg_note (insn, REG_SETJMP, NULL_RTX))
+               clobbers_all = true;
+#endif
+
              for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
-               if (TEST_HARD_REG_BIT (regs_invalidated_by_call, regno))
+               if (clobbers_all
+                   || TEST_HARD_REG_BIT (regs_invalidated_by_call, regno))
                  record_last_reg_set_info (insn, regno);
 
              mark_call (insn);
@@ -6415,23 +6413,22 @@ compute_store_table ()
           insn && insn != PREV_INSN (BLOCK_HEAD (bb));
           insn = PREV_INSN (insn))
        {
-#ifdef NON_SAVING_SETJMP 
-         if (NON_SAVING_SETJMP && GET_CODE (insn) == NOTE
-             && NOTE_LINE_NUMBER (insn) == NOTE_INSN_SETJMP)
-           {
-             for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
-               SET_BIT (reg_set_in_block[bb], regno);
-             continue;
-           }
-#endif
-       /* Ignore anything that is not a normal insn.  */
-       if (GET_RTX_CLASS (GET_CODE (insn)) != 'i')
+         /* Ignore anything that is not a normal insn.  */
+         if (! INSN_P (insn))
            continue;
 
          if (GET_CODE (insn) == CALL_INSN)
            {
+             bool clobbers_all = false;
+#ifdef NON_SAVING_SETJMP 
+             if (NON_SAVING_SETJMP
+                 && find_reg_note (insn, REG_SETJMP, NULL_RTX))
+               clobbers_all = true;
+#endif
+
              for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
-               if (TEST_HARD_REG_BIT (regs_invalidated_by_call, regno))
+               if (clobbers_all
+                   || TEST_HARD_REG_BIT (regs_invalidated_by_call, regno))
                  SET_BIT (reg_set_in_block[bb], regno);
            }
          
index 46225bb..ca06a08 100644 (file)
@@ -2532,7 +2532,7 @@ find_and_verify_loops (f, loops)
            break;
          }
 
-      if (GET_CODE (insn) == CALL
+      if (GET_CODE (insn) == CALL_INSN
          && find_reg_note (insn, REG_SETJMP, NULL))
        {
          /* In this case, we must invalidate our current loop and any
index d405b10..61100c9 100644 (file)
@@ -762,7 +762,8 @@ reload (first, global)
     {
       rtx set = single_set (insn);
 
-      if (GET_CODE (insn) == CALL && find_reg_note (insn, REG_SETJMP, NULL))
+      if (GET_CODE (insn) == CALL_INSN
+         && find_reg_note (insn, REG_SETJMP, NULL))
        for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
          if (! call_used_regs[i])
            regs_ever_live[i] = 1;