summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog40
-rw-r--r--gcc/calls.c35
-rw-r--r--gcc/config/avr/avr.c1
-rw-r--r--gcc/config/convex/convex.c4
-rw-r--r--gcc/config/dsp16xx/dsp16xx.c1
-rw-r--r--gcc/config/dsp16xx/dsp16xx.md4
-rw-r--r--gcc/config/elxsi/elxsi.c6
-rw-r--r--gcc/config/elxsi/elxsi.h4
-rw-r--r--gcc/config/i370/i370.c1
-rw-r--r--gcc/config/i860/sysv3.h4
-rw-r--r--gcc/config/i860/sysv4.h4
-rw-r--r--gcc/config/m32r/m32r.h4
-rw-r--r--gcc/config/m88k/m88k.c2
-rw-r--r--gcc/config/pa/som.h10
-rw-r--r--gcc/config/pdp11/pdp11.c2
-rw-r--r--gcc/config/romp/romp.c5
-rw-r--r--gcc/config/v850/v850.h6
-rw-r--r--gcc/config/we32k/we32k.c1
-rw-r--r--gcc/cselib.c2
-rw-r--r--gcc/flow.c2
-rw-r--r--gcc/function.c9
-rw-r--r--gcc/gcse.c43
-rw-r--r--gcc/loop.c2
-rw-r--r--gcc/reload1.c3
24 files changed, 93 insertions, 102 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a76f2e690f3..0d9367f0820 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
@@ -161,7 +197,7 @@
(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.
diff --git a/gcc/calls.c b/gcc/calls.c
index 7d810696660..1f40d53e520 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -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 ();
diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c
index 6d11d058374..cb222b2b10f 100644
--- a/gcc/config/avr/avr.c
+++ b/gcc/config/avr/avr.c
@@ -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;
diff --git a/gcc/config/convex/convex.c b/gcc/config/convex/convex.c
index a0e0987b88e..dcf36694748 100644
--- a/gcc/config/convex/convex.c
+++ b/gcc/config/convex/convex.c
@@ -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;
}
diff --git a/gcc/config/dsp16xx/dsp16xx.c b/gcc/config/dsp16xx/dsp16xx.c
index 32402623ff4..74de0d084e0 100644
--- a/gcc/config/dsp16xx/dsp16xx.c
+++ b/gcc/config/dsp16xx/dsp16xx.c
@@ -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;
diff --git a/gcc/config/dsp16xx/dsp16xx.md b/gcc/config/dsp16xx/dsp16xx.md
index 4e851554b27..29d9acd3bef 100644
--- a/gcc/config/dsp16xx/dsp16xx.md
+++ b/gcc/config/dsp16xx/dsp16xx.md
@@ -1131,8 +1131,8 @@
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 ""
diff --git a/gcc/config/elxsi/elxsi.c b/gcc/config/elxsi/elxsi.c
index 0a0e77bf6bf..7e8a24c1205 100644
--- a/gcc/config/elxsi/elxsi.c
+++ b/gcc/config/elxsi/elxsi.c
@@ -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);
}
diff --git a/gcc/config/elxsi/elxsi.h b/gcc/config/elxsi/elxsi.h
index 8d138238191..87ef3ea41cf 100644
--- a/gcc/config/elxsi/elxsi.h
+++ b/gcc/config/elxsi/elxsi.h
@@ -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
diff --git a/gcc/config/i370/i370.c b/gcc/config/i370/i370.c
index 8dd229f268d..ca3cafb2ab0 100644
--- a/gcc/config/i370/i370.c
+++ b/gcc/config/i370/i370.c
@@ -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"
diff --git a/gcc/config/i860/sysv3.h b/gcc/config/i860/sysv3.h
index e4255d41e09..5380aa2b2b3 100644
--- a/gcc/config/i860/sysv3.h
+++ b/gcc/config/i860/sysv3.h
@@ -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 \
diff --git a/gcc/config/i860/sysv4.h b/gcc/config/i860/sysv4.h
index 5e40e34d030..c92c2a99fbe 100644
--- a/gcc/config/i860/sysv4.h
+++ b/gcc/config/i860/sysv4.h
@@ -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 \
diff --git a/gcc/config/m32r/m32r.h b/gcc/config/m32r/m32r.h
index e72f61f9ad9..692249babac 100644
--- a/gcc/config/m32r/m32r.h
+++ b/gcc/config/m32r/m32r.h
@@ -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
diff --git a/gcc/config/m88k/m88k.c b/gcc/config/m88k/m88k.c
index f77aa474a7c..b10eab003dc 100644
--- a/gcc/config/m88k/m88k.c
+++ b/gcc/config/m88k/m88k.c
@@ -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"
diff --git a/gcc/config/pa/som.h b/gcc/config/pa/som.h
index df3cb04a431..0d20555e5ab 100644
--- a/gcc/config/pa/som.h
+++ b/gcc/config/pa/som.h
@@ -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.
diff --git a/gcc/config/pdp11/pdp11.c b/gcc/config/pdp11/pdp11.c
index 9bf51ceda0b..03e596c5afe 100644
--- a/gcc/config/pdp11/pdp11.c
+++ b/gcc/config/pdp11/pdp11.c
@@ -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"
diff --git a/gcc/config/romp/romp.c b/gcc/config/romp/romp.c
index 27a17061f98..6cdb77e80f1 100644
--- a/gcc/config/romp/romp.c
+++ b/gcc/config/romp/romp.c
@@ -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;
diff --git a/gcc/config/v850/v850.h b/gcc/config/v850/v850.h
index ae7098ad244..281f2199988 100644
--- a/gcc/config/v850/v850.h
+++ b/gcc/config/v850/v850.h
@@ -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 () \
diff --git a/gcc/config/we32k/we32k.c b/gcc/config/we32k/we32k.c
index 462b598862d..5ee63acfd02 100644
--- a/gcc/config/we32k/we32k.c
+++ b/gcc/config/we32k/we32k.c
@@ -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"
diff --git a/gcc/cselib.c b/gcc/cselib.c
index 89a274f1e14..619bad174c2 100644
--- a/gcc/cselib.c
+++ b/gcc/cselib.c
@@ -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
diff --git a/gcc/flow.c b/gcc/flow.c
index f7d32196a86..e2c1646e6c8 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -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);
diff --git a/gcc/function.c b/gcc/function.c
index af1c87befb6..a0cfa00ba51 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -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;
diff --git a/gcc/gcse.c b/gcc/gcse.c
index f0031c093fe..230242e25a6 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -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);
}
diff --git a/gcc/loop.c b/gcc/loop.c
index 46225bbbefc..ca06a08007d 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -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
diff --git a/gcc/reload1.c b/gcc/reload1.c
index d405b10ca51..61100c990fa 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -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;