calls.c, function.c: Always define PREFERRED_STACK_BOUNDARY if not already defined.
* 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. From-SVN: r44768
This commit is contained in:
parent
07fe2dec7a
commit
19652adf82
|
@ -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>
|
2001-08-10 Kazu Hirata <kazu@hxi.com>
|
||||||
|
|
||||||
* config/h8300/h8300.h: Fix formatting.
|
* config/h8300/h8300.h: Fix formatting.
|
||||||
|
@ -41,7 +77,7 @@
|
||||||
|
|
||||||
2001-08-09 John David Anglin <dave@hiauly1.hia.nrc.ca>
|
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.
|
and "use_goto" argument.
|
||||||
(expand_null_return, expand_value_return): Update all callers.
|
(expand_null_return, expand_value_return): Update all callers.
|
||||||
* function.c (expand_function_end): Remove code to generate simple
|
* function.c (expand_function_end): Remove code to generate simple
|
||||||
|
@ -161,7 +197,7 @@
|
||||||
(ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR): Remove.
|
(ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR): Remove.
|
||||||
(TARGET_ASM_CONSTRUCTOR, TARGET_ASM_DESTRUCTOR): New.
|
(TARGET_ASM_CONSTRUCTOR, TARGET_ASM_DESTRUCTOR): New.
|
||||||
* config/c4x/c4x.c: Move include of tree.h.
|
* 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.
|
(clix_asm_out_destructor): New.
|
||||||
* config/clipper/clix.h (ASM_OUTPUT_CONSTRUCTOR): Remove.
|
* config/clipper/clix.h (ASM_OUTPUT_CONSTRUCTOR): Remove.
|
||||||
(ASM_OUTPUT_DESTRUCTOR): Remove.
|
(ASM_OUTPUT_DESTRUCTOR): Remove.
|
||||||
|
|
35
gcc/calls.c
35
gcc/calls.c
|
@ -37,7 +37,7 @@ Boston, MA 02111-1307, USA. */
|
||||||
#define FUNCTION_OK_FOR_SIBCALL(DECL) 1
|
#define FUNCTION_OK_FOR_SIBCALL(DECL) 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined PREFERRED_STACK_BOUNDARY && defined STACK_BOUNDARY
|
#if !defined PREFERRED_STACK_BOUNDARY
|
||||||
#define PREFERRED_STACK_BOUNDARY STACK_BOUNDARY
|
#define PREFERRED_STACK_BOUNDARY STACK_BOUNDARY
|
||||||
#endif
|
#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),
|
move_by_pieces (stack_area, validize_mem (save_area),
|
||||||
high_to_save - low_to_save + 1, PARM_BOUNDARY);
|
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
|
/* 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
|
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
|
/* 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
|
will be already aligned. Align to STACK_BOUNDARY in order to prevent
|
||||||
backends from generating missaligned frame sizes. */
|
backends from generating missaligned frame sizes. */
|
||||||
#ifdef STACK_BOUNDARY
|
|
||||||
if (ACCUMULATE_OUTGOING_ARGS && preferred_stack_boundary > STACK_BOUNDARY)
|
if (ACCUMULATE_OUTGOING_ARGS && preferred_stack_boundary > STACK_BOUNDARY)
|
||||||
preferred_stack_boundary = STACK_BOUNDARY;
|
preferred_stack_boundary = STACK_BOUNDARY;
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Compute the actual size of the argument block required. The variable
|
/* Compute the actual size of the argument block required. The variable
|
||||||
and constant sizes must be combined, the size may have to be rounded,
|
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->var = ARGS_SIZE_TREE (*args_size);
|
||||||
args_size->constant = 0;
|
args_size->constant = 0;
|
||||||
|
|
||||||
#ifdef PREFERRED_STACK_BOUNDARY
|
|
||||||
preferred_stack_boundary /= BITS_PER_UNIT;
|
preferred_stack_boundary /= BITS_PER_UNIT;
|
||||||
if (preferred_stack_boundary > 1)
|
if (preferred_stack_boundary > 1)
|
||||||
{
|
{
|
||||||
|
@ -1393,7 +1390,6 @@ compute_argument_block_size (reg_parm_stack_space, args_size,
|
||||||
abort ();
|
abort ();
|
||||||
args_size->var = round_up (args_size->var, preferred_stack_boundary);
|
args_size->var = round_up (args_size->var, preferred_stack_boundary);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if (reg_parm_stack_space > 0)
|
if (reg_parm_stack_space > 0)
|
||||||
{
|
{
|
||||||
|
@ -1412,7 +1408,6 @@ compute_argument_block_size (reg_parm_stack_space, args_size,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#ifdef PREFERRED_STACK_BOUNDARY
|
|
||||||
preferred_stack_boundary /= BITS_PER_UNIT;
|
preferred_stack_boundary /= BITS_PER_UNIT;
|
||||||
if (preferred_stack_boundary < 1)
|
if (preferred_stack_boundary < 1)
|
||||||
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
|
||||||
* preferred_stack_boundary)
|
* preferred_stack_boundary)
|
||||||
- stack_pointer_delta);
|
- stack_pointer_delta);
|
||||||
#endif
|
|
||||||
|
|
||||||
args_size->constant = MAX (args_size->constant,
|
args_size->constant = MAX (args_size->constant,
|
||||||
reg_parm_stack_space);
|
reg_parm_stack_space);
|
||||||
|
@ -2296,11 +2290,7 @@ expand_call (exp, target, ignore)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Figure out the amount to which the stack should be aligned. */
|
/* Figure out the amount to which the stack should be aligned. */
|
||||||
#ifdef PREFERRED_STACK_BOUNDARY
|
|
||||||
preferred_stack_boundary = 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. */
|
/* Operand 0 is a pointer-to-function; get the type of the function. */
|
||||||
funtype = TREE_TYPE (TREE_OPERAND (exp, 0));
|
funtype = TREE_TYPE (TREE_OPERAND (exp, 0));
|
||||||
|
@ -2905,7 +2895,6 @@ expand_call (exp, target, ignore)
|
||||||
|
|
||||||
compute_argument_addresses (args, argblock, num_actuals);
|
compute_argument_addresses (args, argblock, num_actuals);
|
||||||
|
|
||||||
#ifdef PREFERRED_STACK_BOUNDARY
|
|
||||||
/* If we push args individually in reverse order, perform stack alignment
|
/* If we push args individually in reverse order, perform stack alignment
|
||||||
before the first push (the last arg). */
|
before the first push (the last arg). */
|
||||||
if (PUSH_ARGS_REVERSED && argblock == 0
|
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
|
/* Now that the stack is properly aligned, pops can't safely
|
||||||
be deferred during the evaluation of the arguments. */
|
be deferred during the evaluation of the arguments. */
|
||||||
NO_DEFER_POP;
|
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);
|
funexp = rtx_for_function_call (fndecl, exp);
|
||||||
|
|
||||||
|
@ -3008,13 +2991,11 @@ expand_call (exp, target, ignore)
|
||||||
sibcall_failure = 1;
|
sibcall_failure = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef PREFERRED_STACK_BOUNDARY
|
|
||||||
/* If we pushed args in forward order, perform stack alignment
|
/* If we pushed args in forward order, perform stack alignment
|
||||||
after pushing the last arg. */
|
after pushing the last arg. */
|
||||||
if (!PUSH_ARGS_REVERSED && argblock == 0)
|
if (!PUSH_ARGS_REVERSED && argblock == 0)
|
||||||
anti_adjust_stack (GEN_INT (adjusted_args_size.constant
|
anti_adjust_stack (GEN_INT (adjusted_args_size.constant
|
||||||
- unadjusted_args_size));
|
- unadjusted_args_size));
|
||||||
#endif
|
|
||||||
|
|
||||||
/* If register arguments require space on the stack and stack space
|
/* If register arguments require space on the stack and stack space
|
||||||
was not preallocated, allocate stack space here for arguments
|
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
|
/* All arguments and registers used for the call must be set up by
|
||||||
now! */
|
now! */
|
||||||
|
|
||||||
#ifdef PREFERRED_STACK_BOUNDARY
|
|
||||||
/* Stack must be properly aligned now. */
|
/* Stack must be properly aligned now. */
|
||||||
if (pass && stack_pointer_delta % preferred_unit_stack_boundary)
|
if (pass && stack_pointer_delta % preferred_unit_stack_boundary)
|
||||||
abort ();
|
abort ();
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Generate the actual call instruction. */
|
/* Generate the actual call instruction. */
|
||||||
emit_call_1 (funexp, fndecl, funtype, unadjusted_args_size,
|
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;
|
fun = orgfun;
|
||||||
|
|
||||||
#ifdef PREFERRED_STACK_BOUNDARY
|
|
||||||
/* Ensure current function's preferred stack boundary is at least
|
/* Ensure current function's preferred stack boundary is at least
|
||||||
what we need. */
|
what we need. */
|
||||||
if (cfun->preferred_stack_boundary < PREFERRED_STACK_BOUNDARY)
|
if (cfun->preferred_stack_boundary < PREFERRED_STACK_BOUNDARY)
|
||||||
cfun->preferred_stack_boundary = PREFERRED_STACK_BOUNDARY;
|
cfun->preferred_stack_boundary = PREFERRED_STACK_BOUNDARY;
|
||||||
#endif
|
|
||||||
|
|
||||||
/* If this kind of value comes back in memory,
|
/* If this kind of value comes back in memory,
|
||||||
decide where in memory it should come back. */
|
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);
|
assemble_external_libcall (fun);
|
||||||
|
|
||||||
original_args_size = args_size;
|
original_args_size = args_size;
|
||||||
#ifdef PREFERRED_STACK_BOUNDARY
|
|
||||||
args_size.constant = (((args_size.constant
|
args_size.constant = (((args_size.constant
|
||||||
+ stack_pointer_delta
|
+ stack_pointer_delta
|
||||||
+ STACK_BYTES - 1)
|
+ STACK_BYTES - 1)
|
||||||
/ STACK_BYTES
|
/ STACK_BYTES
|
||||||
* STACK_BYTES)
|
* STACK_BYTES)
|
||||||
- stack_pointer_delta);
|
- stack_pointer_delta);
|
||||||
#endif
|
|
||||||
|
|
||||||
args_size.constant = MAX (args_size.constant,
|
args_size.constant = MAX (args_size.constant,
|
||||||
reg_parm_stack_space);
|
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);
|
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
|
/* If we push args individually in reverse order, perform stack alignment
|
||||||
before the first push (the last arg). */
|
before the first push (the last arg). */
|
||||||
if (argblock == 0 && PUSH_ARGS_REVERSED)
|
if (argblock == 0 && PUSH_ARGS_REVERSED)
|
||||||
anti_adjust_stack (GEN_INT (args_size.constant
|
anti_adjust_stack (GEN_INT (args_size.constant
|
||||||
- original_args_size.constant));
|
- original_args_size.constant));
|
||||||
#endif
|
|
||||||
|
|
||||||
if (PUSH_ARGS_REVERSED)
|
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
|
/* If we pushed args in forward order, perform stack alignment
|
||||||
after pushing the last arg. */
|
after pushing the last arg. */
|
||||||
if (argblock == 0 && !PUSH_ARGS_REVERSED)
|
if (argblock == 0 && !PUSH_ARGS_REVERSED)
|
||||||
anti_adjust_stack (GEN_INT (args_size.constant
|
anti_adjust_stack (GEN_INT (args_size.constant
|
||||||
- original_args_size.constant));
|
- original_args_size.constant));
|
||||||
#endif
|
|
||||||
|
|
||||||
if (PUSH_ARGS_REVERSED)
|
if (PUSH_ARGS_REVERSED)
|
||||||
argnum = nargs - 1;
|
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
|
valreg = (mem_value == 0 && outmode != VOIDmode
|
||||||
? hard_libcall_value (outmode) : NULL_RTX);
|
? hard_libcall_value (outmode) : NULL_RTX);
|
||||||
|
|
||||||
#ifdef PREFERRED_STACK_BOUNDARY
|
|
||||||
/* Stack must be properly aligned now. */
|
/* Stack must be properly aligned now. */
|
||||||
if (stack_pointer_delta & (PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT - 1))
|
if (stack_pointer_delta & (PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT - 1))
|
||||||
abort ();
|
abort ();
|
||||||
#endif
|
|
||||||
|
|
||||||
before_call = get_last_insn ();
|
before_call = get_last_insn ();
|
||||||
|
|
||||||
|
|
|
@ -815,7 +815,6 @@ avr_output_function_epilogue (file, size)
|
||||||
/* Return nonzero if X (an RTX) is a legitimate memory address on the target
|
/* Return nonzero if X (an RTX) is a legitimate memory address on the target
|
||||||
machine for a memory operand of mode MODE. */
|
machine for a memory operand of mode MODE. */
|
||||||
|
|
||||||
int
|
|
||||||
int
|
int
|
||||||
legitimate_address_p (mode, x, strict)
|
legitimate_address_p (mode, x, strict)
|
||||||
enum machine_mode mode;
|
enum machine_mode mode;
|
||||||
|
|
|
@ -439,8 +439,8 @@ expand_movstr (operands)
|
||||||
|
|
||||||
/* Advance to next piece. */
|
/* Advance to next piece. */
|
||||||
size = GET_MODE_SIZE (mode);
|
size = GET_MODE_SIZE (mode);
|
||||||
src = adj_offsettable_operand (src, size);
|
src = adjust_address (src, mode, size);
|
||||||
dest = adj_offsettable_operand (dest, size);
|
dest = adjust_address (dest, mode, size);
|
||||||
len -= size;
|
len -= size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -58,6 +58,7 @@ const char *save_chip_name;
|
||||||
|
|
||||||
rtx dsp16xx_compare_op0;
|
rtx dsp16xx_compare_op0;
|
||||||
rtx dsp16xx_compare_op1;
|
rtx dsp16xx_compare_op1;
|
||||||
|
rtx (*dsp16xx_compare_gen) PARAMS (());
|
||||||
|
|
||||||
static const char *fp;
|
static const char *fp;
|
||||||
static const char *sp;
|
static const char *sp;
|
||||||
|
|
|
@ -1131,8 +1131,8 @@
|
||||||
operands[5] = addr0;
|
operands[5] = addr0;
|
||||||
operands[6] = addr1;
|
operands[6] = addr1;
|
||||||
|
|
||||||
operands[0] = replace_equiv_address (operands[0], VOIDmode, addr0);
|
operands[0] = replace_equiv_address (operands[0], addr0);
|
||||||
operands[1] = replace_equiv_address (operands[1], VOIDmode, addr1);
|
operands[1] = replace_equiv_address (operands[1], addr1);
|
||||||
}")
|
}")
|
||||||
|
|
||||||
(define_insn ""
|
(define_insn ""
|
||||||
|
|
|
@ -26,6 +26,10 @@ Boston, MA 02111-1307, USA. */
|
||||||
#include "rtl.h"
|
#include "rtl.h"
|
||||||
#include "function.h"
|
#include "function.h"
|
||||||
#include "output.h"
|
#include "output.h"
|
||||||
|
#include "tree.h"
|
||||||
|
#include "expr.h"
|
||||||
|
#include "regs.h"
|
||||||
|
#include "flags.h"
|
||||||
#include "tm_p.h"
|
#include "tm_p.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "target-def.h"
|
#include "target-def.h"
|
||||||
|
@ -129,7 +133,7 @@ elxsi_output_function_epilogue (file, size)
|
||||||
{
|
{
|
||||||
for (regno = 0; regno < FIRST_PSEUDO_REGISTER; ++regno)
|
for (regno = 0; regno < FIRST_PSEUDO_REGISTER; ++regno)
|
||||||
if (regs_ever_live[regno] && !call_used_regs[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);
|
fprintf (file, "\texit\t%d\n", size + cnt);
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,7 +79,6 @@ extern int target_flags;
|
||||||
if using 16-bit ints on a 68000, this would still be 32.
|
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. */
|
But on a machine with 16-bit registers, this would be 16. */
|
||||||
#define BITS_PER_WORD 64
|
#define BITS_PER_WORD 64
|
||||||
#define Rmode DImode
|
|
||||||
|
|
||||||
#define INT_TYPE_SIZE 32
|
#define INT_TYPE_SIZE 32
|
||||||
|
|
||||||
|
@ -106,6 +105,9 @@ extern int target_flags;
|
||||||
/* Allocation boundary (in *bits*) for storing arguments in argument list. */
|
/* Allocation boundary (in *bits*) for storing arguments in argument list. */
|
||||||
#define PARM_BOUNDARY 32
|
#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. */
|
/* Allocation boundary (in *bits*) for the code of a function. */
|
||||||
#define FUNCTION_BOUNDARY 8
|
#define FUNCTION_BOUNDARY 8
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@ Boston, MA 02111-1307, USA. */
|
||||||
#include "output.h"
|
#include "output.h"
|
||||||
#include "insn-attr.h"
|
#include "insn-attr.h"
|
||||||
#include "function.h"
|
#include "function.h"
|
||||||
|
#include "expr.h"
|
||||||
#include "flags.h"
|
#include "flags.h"
|
||||||
#include "recog.h"
|
#include "recog.h"
|
||||||
#include "toplev.h"
|
#include "toplev.h"
|
||||||
|
|
|
@ -149,13 +149,11 @@ extern char *current_function_original_name;
|
||||||
#define TDESC_SECTION_ASM_OP "\t.section\t.tdesc"
|
#define TDESC_SECTION_ASM_OP "\t.section\t.tdesc"
|
||||||
|
|
||||||
#undef EXTRA_SECTIONS
|
#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
|
#undef EXTRA_SECTION_FUNCTIONS
|
||||||
#define EXTRA_SECTION_FUNCTIONS \
|
#define EXTRA_SECTION_FUNCTIONS \
|
||||||
CONST_SECTION_FUNCTION \
|
CONST_SECTION_FUNCTION \
|
||||||
CTORS_SECTION_FUNCTION \
|
|
||||||
DTORS_SECTION_FUNCTION \
|
|
||||||
TDESC_SECTION_FUNCTION
|
TDESC_SECTION_FUNCTION
|
||||||
|
|
||||||
#define TDESC_SECTION_FUNCTION \
|
#define TDESC_SECTION_FUNCTION \
|
||||||
|
|
|
@ -175,13 +175,11 @@ extern char *current_function_original_name;
|
||||||
#define TDESC_SECTION_ASM_OP "\t.section\t.tdesc"
|
#define TDESC_SECTION_ASM_OP "\t.section\t.tdesc"
|
||||||
|
|
||||||
#undef EXTRA_SECTIONS
|
#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
|
#undef EXTRA_SECTION_FUNCTIONS
|
||||||
#define EXTRA_SECTION_FUNCTIONS \
|
#define EXTRA_SECTION_FUNCTIONS \
|
||||||
CONST_SECTION_FUNCTION \
|
CONST_SECTION_FUNCTION \
|
||||||
CTORS_SECTION_FUNCTION \
|
|
||||||
DTORS_SECTION_FUNCTION \
|
|
||||||
TDESC_SECTION_FUNCTION
|
TDESC_SECTION_FUNCTION
|
||||||
|
|
||||||
#define TDESC_SECTION_FUNCTION \
|
#define TDESC_SECTION_FUNCTION \
|
||||||
|
|
|
@ -1548,7 +1548,7 @@ extern int m32r_sched_odd_word_p;
|
||||||
`in_text' and `in_data'. You need not define this macro
|
`in_text' and `in_data'. You need not define this macro
|
||||||
on a system with no other sections (that GCC needs to use). */
|
on a system with no other sections (that GCC needs to use). */
|
||||||
#undef EXTRA_SECTIONS
|
#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
|
/* One or more functions to be defined in "varasm.c". These
|
||||||
functions should do jobs analogous to those of `text_section' and
|
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
|
#undef EXTRA_SECTION_FUNCTIONS
|
||||||
#define EXTRA_SECTION_FUNCTIONS \
|
#define EXTRA_SECTION_FUNCTIONS \
|
||||||
CONST_SECTION_FUNCTION \
|
CONST_SECTION_FUNCTION \
|
||||||
CTORS_SECTION_FUNCTION \
|
|
||||||
DTORS_SECTION_FUNCTION \
|
|
||||||
SDATA_SECTION_FUNCTION \
|
SDATA_SECTION_FUNCTION \
|
||||||
SBSS_SECTION_FUNCTION
|
SBSS_SECTION_FUNCTION
|
||||||
|
|
||||||
|
|
|
@ -33,8 +33,8 @@ Boston, MA 02111-1307, USA. */
|
||||||
#include "insn-attr.h"
|
#include "insn-attr.h"
|
||||||
#include "tree.h"
|
#include "tree.h"
|
||||||
#include "function.h"
|
#include "function.h"
|
||||||
#include "c-tree.h"
|
|
||||||
#include "expr.h"
|
#include "expr.h"
|
||||||
|
#include "c-tree.h"
|
||||||
#include "flags.h"
|
#include "flags.h"
|
||||||
#include "recog.h"
|
#include "recog.h"
|
||||||
#include "toplev.h"
|
#include "toplev.h"
|
||||||
|
|
|
@ -260,13 +260,7 @@ do { \
|
||||||
|
|
||||||
/* Define the .bss section for ASM_OUTPUT_LOCAL to use. */
|
/* Define the .bss section for ASM_OUTPUT_LOCAL to use. */
|
||||||
|
|
||||||
#ifndef CTORS_SECTION_FUNCTION
|
|
||||||
#define EXTRA_SECTIONS in_readonly_data
|
#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
|
/* FIXME: HPUX ld generates incorrect GOT entries for "T" fixups
|
||||||
which reference data within the $TEXT$ space (for example constant
|
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); \
|
fprintf (asm_out_file, "%s\n", READONLY_DATA_ASM_OP); \
|
||||||
in_section = in_readonly_data; \
|
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
|
/* This is how to output a command to make the user-level label named NAME
|
||||||
defined for reference from other files.
|
defined for reference from other files.
|
||||||
|
|
|
@ -34,6 +34,8 @@ Boston, MA 02111-1307, USA. */
|
||||||
#include "flags.h"
|
#include "flags.h"
|
||||||
#include "recog.h"
|
#include "recog.h"
|
||||||
#include "tree.h"
|
#include "tree.h"
|
||||||
|
#include "expr.h"
|
||||||
|
#include "toplev.h"
|
||||||
#include "tm_p.h"
|
#include "tm_p.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "target-def.h"
|
#include "target-def.h"
|
||||||
|
|
|
@ -33,10 +33,11 @@ Boston, MA 02111-1307, USA. */
|
||||||
#include "insn-attr.h"
|
#include "insn-attr.h"
|
||||||
#include "flags.h"
|
#include "flags.h"
|
||||||
#include "recog.h"
|
#include "recog.h"
|
||||||
#include "expr.h"
|
|
||||||
#include "obstack.h"
|
#include "obstack.h"
|
||||||
#include "tree.h"
|
#include "tree.h"
|
||||||
#include "function.h"
|
#include "function.h"
|
||||||
|
#include "expr.h"
|
||||||
|
#include "toplev.h"
|
||||||
#include "tm_p.h"
|
#include "tm_p.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "target-def.h"
|
#include "target-def.h"
|
||||||
|
@ -1546,7 +1547,7 @@ output_fpop (code, op0, op1, op2, insn)
|
||||||
goto win;
|
goto win;
|
||||||
|
|
||||||
/* We have never seen this operation before. */
|
/* 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->mem_offset = data_offset;
|
||||||
fpop->opcode = code;
|
fpop->opcode = code;
|
||||||
fpop->noperands = noperands;
|
fpop->noperands = noperands;
|
||||||
|
|
|
@ -1056,8 +1056,8 @@ typedef enum
|
||||||
`in_text' and `in_data'. You need not define this macro on a
|
`in_text' and `in_data'. You need not define this macro on a
|
||||||
system with no other sections (that GCC needs to use). */
|
system with no other sections (that GCC needs to use). */
|
||||||
#undef EXTRA_SECTIONS
|
#undef EXTRA_SECTIONS
|
||||||
#define EXTRA_SECTIONS in_tdata, in_sdata, in_zdata, in_const, in_ctors, \
|
#define EXTRA_SECTIONS in_tdata, in_sdata, in_zdata, in_const, \
|
||||||
in_dtors, in_rozdata, in_rosdata, in_sbss, in_zbss, in_zcommon, in_scommon
|
in_rozdata, in_rosdata, in_sbss, in_zbss, in_zcommon, in_scommon
|
||||||
|
|
||||||
/* One or more functions to be defined in `varasm.c'. These
|
/* One or more functions to be defined in `varasm.c'. These
|
||||||
functions should do jobs analogous to those of `text_section' and
|
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 ... */
|
/* This could be done a lot more cleanly using ANSI C ... */
|
||||||
#define EXTRA_SECTION_FUNCTIONS \
|
#define EXTRA_SECTION_FUNCTIONS \
|
||||||
CONST_SECTION_FUNCTION \
|
CONST_SECTION_FUNCTION \
|
||||||
CTORS_SECTION_FUNCTION \
|
|
||||||
DTORS_SECTION_FUNCTION \
|
|
||||||
\
|
\
|
||||||
void \
|
void \
|
||||||
sdata_section () \
|
sdata_section () \
|
||||||
|
|
|
@ -31,6 +31,7 @@ Boston, MA 02111-1307, USA. */
|
||||||
#include "output.h"
|
#include "output.h"
|
||||||
#include "regs.h"
|
#include "regs.h"
|
||||||
#include "tree.h"
|
#include "tree.h"
|
||||||
|
#include "expr.h"
|
||||||
#include "tm_p.h"
|
#include "tm_p.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "target-def.h"
|
#include "target-def.h"
|
||||||
|
|
|
@ -1276,7 +1276,7 @@ cselib_process_insn (insn)
|
||||||
|
|
||||||
/* Forget everything at a CODE_LABEL, a volatile asm, or a setjmp. */
|
/* Forget everything at a CODE_LABEL, a volatile asm, or a setjmp. */
|
||||||
if (GET_CODE (insn) == CODE_LABEL
|
if (GET_CODE (insn) == CODE_LABEL
|
||||||
|| (GET_CODE (insn) == CALL
|
|| (GET_CODE (insn) == CALL_INSN
|
||||||
&& find_reg_note (insn, REG_SETJMP, NULL))
|
&& find_reg_note (insn, REG_SETJMP, NULL))
|
||||||
|| (GET_CODE (insn) == INSN
|
|| (GET_CODE (insn) == INSN
|
||||||
&& GET_CODE (PATTERN (insn)) == ASM_OPERANDS
|
&& GET_CODE (PATTERN (insn)) == ASM_OPERANDS
|
||||||
|
|
|
@ -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
|
/* If this is a call to `setjmp' et al, warn if any
|
||||||
non-volatile datum is live. */
|
non-volatile datum is live. */
|
||||||
if ((flags & PROP_REG_INFO)
|
if ((flags & PROP_REG_INFO)
|
||||||
&& GET_CODE (insn) == CALL
|
&& GET_CODE (insn) == CALL_INSN
|
||||||
&& find_reg_note (insn, REG_SETJMP, NULL))
|
&& find_reg_note (insn, REG_SETJMP, NULL))
|
||||||
IOR_REG_SET (regs_live_at_setjmp, pbi->reg_live);
|
IOR_REG_SET (regs_live_at_setjmp, pbi->reg_live);
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,7 @@ Boston, MA 02111-1307, USA. */
|
||||||
#define LOCAL_ALIGNMENT(TYPE, ALIGNMENT) ALIGNMENT
|
#define LOCAL_ALIGNMENT(TYPE, ALIGNMENT) ALIGNMENT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined (PREFERRED_STACK_BOUNDARY) && defined (STACK_BOUNDARY)
|
#ifndef PREFERRED_STACK_BOUNDARY
|
||||||
#define PREFERRED_STACK_BOUNDARY STACK_BOUNDARY
|
#define PREFERRED_STACK_BOUNDARY STACK_BOUNDARY
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -5058,13 +5058,11 @@ assign_parms (fndecl)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef STACK_BOUNDARY
|
|
||||||
#define STACK_BYTES (STACK_BOUNDARY / BITS_PER_UNIT)
|
#define STACK_BYTES (STACK_BOUNDARY / BITS_PER_UNIT)
|
||||||
|
|
||||||
current_function_args_size
|
current_function_args_size
|
||||||
= ((current_function_args_size + STACK_BYTES - 1)
|
= ((current_function_args_size + STACK_BYTES - 1)
|
||||||
/ STACK_BYTES) * STACK_BYTES;
|
/ STACK_BYTES) * STACK_BYTES;
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef ARGS_GROW_DOWNWARD
|
#ifdef ARGS_GROW_DOWNWARD
|
||||||
current_function_arg_offset_rtx
|
current_function_arg_offset_rtx
|
||||||
|
@ -6140,13 +6138,8 @@ prepare_function_start ()
|
||||||
cfun->original_decl_initial = 0;
|
cfun->original_decl_initial = 0;
|
||||||
cfun->original_arg_vector = 0;
|
cfun->original_arg_vector = 0;
|
||||||
|
|
||||||
#ifdef STACK_BOUNDARY
|
|
||||||
cfun->stack_alignment_needed = STACK_BOUNDARY;
|
cfun->stack_alignment_needed = STACK_BOUNDARY;
|
||||||
cfun->preferred_stack_boundary = 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. */
|
/* Set if a call to setjmp is seen. */
|
||||||
current_function_calls_setjmp = 0;
|
current_function_calls_setjmp = 0;
|
||||||
|
|
43
gcc/gcse.c
43
gcc/gcse.c
|
@ -2495,23 +2495,21 @@ compute_hash_table (set_p)
|
||||||
insn && insn != NEXT_INSN (BLOCK_END (bb));
|
insn && insn != NEXT_INSN (BLOCK_END (bb));
|
||||||
insn = NEXT_INSN (insn))
|
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))
|
if (! INSN_P (insn))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (GET_CODE (insn) == CALL_INSN)
|
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++)
|
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);
|
record_last_reg_set_info (insn, regno);
|
||||||
|
|
||||||
mark_call (insn);
|
mark_call (insn);
|
||||||
|
@ -6415,23 +6413,22 @@ compute_store_table ()
|
||||||
insn && insn != PREV_INSN (BLOCK_HEAD (bb));
|
insn && insn != PREV_INSN (BLOCK_HEAD (bb));
|
||||||
insn = PREV_INSN (insn))
|
insn = PREV_INSN (insn))
|
||||||
{
|
{
|
||||||
#ifdef NON_SAVING_SETJMP
|
/* Ignore anything that is not a normal insn. */
|
||||||
if (NON_SAVING_SETJMP && GET_CODE (insn) == NOTE
|
if (! INSN_P (insn))
|
||||||
&& 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')
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (GET_CODE (insn) == CALL_INSN)
|
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++)
|
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);
|
SET_BIT (reg_set_in_block[bb], regno);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2532,7 +2532,7 @@ find_and_verify_loops (f, loops)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GET_CODE (insn) == CALL
|
if (GET_CODE (insn) == CALL_INSN
|
||||||
&& find_reg_note (insn, REG_SETJMP, NULL))
|
&& find_reg_note (insn, REG_SETJMP, NULL))
|
||||||
{
|
{
|
||||||
/* In this case, we must invalidate our current loop and any
|
/* In this case, we must invalidate our current loop and any
|
||||||
|
|
|
@ -762,7 +762,8 @@ reload (first, global)
|
||||||
{
|
{
|
||||||
rtx set = single_set (insn);
|
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++)
|
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
|
||||||
if (! call_used_regs[i])
|
if (! call_used_regs[i])
|
||||||
regs_ever_live[i] = 1;
|
regs_ever_live[i] = 1;
|
||||||
|
|
Loading…
Reference in New Issue