diff options
author | Zack Weinberg <zack@gcc.gnu.org> | 2004-11-23 19:55:24 +0000 |
---|---|---|
committer | Zack Weinberg <zack@gcc.gnu.org> | 2004-11-23 19:55:24 +0000 |
commit | 6e14af161c7d61b280c187b1a91a0fd853249bd1 (patch) | |
tree | 67f41f708633dc69a022149ee3dee19b259e910b /gcc/config | |
parent | e9c00ceb85406d1f78d1752f27742ac7bb05b47b (diff) | |
download | gcc-6e14af161c7d61b280c187b1a91a0fd853249bd1.zip gcc-6e14af161c7d61b280c187b1a91a0fd853249bd1.tar.gz gcc-6e14af161c7d61b280c187b1a91a0fd853249bd1.tar.bz2 |
function.h (struct function): Remove calls_longjmp.
* function.h (struct function): Remove calls_longjmp.
(current_function_calls_longjmp): Delete.
* tree.h (ECF_LONGJMP): Delete.
(ECF_SIBCALL, ECF_PURE, ECF_SP_DEPRESSED, ECF_ALWAYS_RETURN)
(ECF_LIBCALL_BLOCK): Everybody slide down one.
(ECF_CONST, ECF_NORETURN, ECF_SIBCALL): Clarify comments.
* builtins.c (expand_builtin_longjmp): Don't set
current_function_calls_longjmp.
* calls.c (special_function_p): Mark longjmp and siglongjmp
with ECF_NORETURN, not ECF_LONGJMP.
(emit_call_1, expand_call, emit_library_call_value_1):
Don't check for ECF_LONGJMP.
* tree-cfg.c (make_exit_edges, is_ctrl_altering_stmt)
(need_fake_edge_p): Likewise.
* config/avr/avr.h, config/ip2k/ip2k.h: Don't define NON_SAVING_SETJMP.
* system.h: Poison NON_SAVING_SETJMP.
* function.c (use_register_for_decl)
* gcse.c (compute_hash_table_work, compute_store_table)
* postreload-gcse.c (record_opr_changes)
* reload.c (find_equiv_reg)
* reload1.c (reload)
* config/i386/i386.c (ix86_can_use_return_insn_p):
Remove code conditional on NON_SAVING_SETJMP.
* doc/tm.texi: Delete documentation of NON_SAVING_SETJMP.
* config/i386/sysv3.h: Delete file.
* config/i386/i386.c (ix86_svr3_asm_out_constructor): Delete.
From-SVN: r91101
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/avr/avr.h | 2 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 27 | ||||
-rw-r--r-- | gcc/config/i386/sysv3.h | 105 | ||||
-rw-r--r-- | gcc/config/ip2k/ip2k.h | 2 |
4 files changed, 1 insertions, 135 deletions
diff --git a/gcc/config/avr/avr.h b/gcc/config/avr/avr.h index 669ca36..f1c6da0 100644 --- a/gcc/config/avr/avr.h +++ b/gcc/config/avr/avr.h @@ -196,8 +196,6 @@ extern int avr_asm_only_p; 1,1,/* STACK */ \ 1,1 /* arg pointer */ } -#define NON_SAVING_SETJMP 0 - #define REG_ALLOC_ORDER { \ 24,25, \ 18,19, \ diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index adb4e5b..3fca2f7 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -924,9 +924,6 @@ static bool ix86_must_pass_in_stack (enum machine_mode mode, tree type); static bool ix86_pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode, tree, bool); -#if defined (DO_GLOBAL_CTORS_BODY) && defined (HAS_INIT_SECTION) -static void ix86_svr3_asm_out_constructor (rtx, int); -#endif /* This function is only used on Solaris. */ static void i386_solaris_elf_named_section (const char *, unsigned int, tree) ATTRIBUTE_UNUSED; @@ -3709,24 +3706,13 @@ symbolic_reference_mentioned_p (rtx op) body of a function. Do this only if the epilogue is simple, needing a couple of insns. Prior to reloading, we can't tell how many registers must be saved, so return 0 then. Return 0 if there is no frame - marker to de-allocate. - - If NON_SAVING_SETJMP is defined and true, then it is not possible - for the epilogue to be simple, so return 0. This is a special case - since NON_SAVING_SETJMP will not cause regs_ever_live to change - until final, but jump_optimize may need to know sooner if a - `return' is OK. */ + marker to de-allocate. */ int ix86_can_use_return_insn_p (void) { struct ix86_frame frame; -#ifdef NON_SAVING_SETJMP - if (NON_SAVING_SETJMP && current_function_calls_setjmp) - return 0; -#endif - if (! reload_completed || frame_pointer_needed) return 0; @@ -14374,17 +14360,6 @@ ix86_rtx_costs (rtx x, int code, int outer_code, int *total) } } -#if defined (DO_GLOBAL_CTORS_BODY) && defined (HAS_INIT_SECTION) -static void -ix86_svr3_asm_out_constructor (rtx symbol, int priority ATTRIBUTE_UNUSED) -{ - init_section (); - fputs ("\tpushl $", asm_out_file); - assemble_name (asm_out_file, XSTR (symbol, 0)); - fputc ('\n', asm_out_file); -} -#endif - #if TARGET_MACHO static int current_machopic_label_num; diff --git a/gcc/config/i386/sysv3.h b/gcc/config/i386/sysv3.h deleted file mode 100644 index b2643b1..0000000 --- a/gcc/config/i386/sysv3.h +++ /dev/null @@ -1,105 +0,0 @@ -/* Definitions for Intel 386 running system V. - Copyright (C) 1988, 1996, 2000, 2002 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GCC is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GCC; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -#define TARGET_VERSION fprintf (stderr, " (80386, ATT syntax)"); - -/* Use crt1.o as a startup file and crtn.o as a closing file. */ - -#define STARTFILE_SPEC \ - "%{pg:gcrt1.o%s}%{!pg:%{posix:%{p:mcrtp1.o%s}%{!p:crtp1.o%s}}%{!posix:%{p:mcrt1.o%s}%{!p:crt1.o%s}}} crtbegin.o%s\ - %{p:-L/usr/lib/libp}%{pg:-L/usr/lib/libp}" - -/* ??? There is a suggestion that -lg is needed here. - Does anyone know whether this is right? */ -#define LIB_SPEC "%{posix:-lcposix} %{shlib:-lc_s} -lc crtend.o%s crtn.o%s" - -/* Specify predefined symbols in preprocessor. */ - -#define TARGET_OS_CPP_BUILTINS() \ - do \ - { \ - builtin_define_std ("unix"); \ - builtin_assert ("system=svr3"); \ - } \ - while (0) - -#define CPP_SPEC "%{posix:-D_POSIX_SOURCE}" - -/* Writing `int' for a bit-field forces int alignment for the structure. */ - -#define PCC_BITFIELD_TYPE_MATTERS 1 - -/* We want to be able to get DBX debugging information via -gstabs. */ - -#define DBX_DEBUGGING_INFO 1 - -#undef PREFERRED_DEBUGGING_TYPE -#define PREFERRED_DEBUGGING_TYPE SDB_DEBUG - -/* longjmp may fail to restore the registers if called from the same - function that called setjmp. To compensate, the compiler avoids - putting variables in registers in functions that use both setjmp - and longjmp. */ - -#define NON_SAVING_SETJMP \ - (current_function_calls_setjmp && current_function_calls_longjmp) - -/* longjmp may fail to restore the stack pointer if the saved frame - pointer is the same as the caller's frame pointer. Requiring a frame - pointer in any function that calls setjmp or longjmp avoids this - problem, unless setjmp and longjmp are called from the same function. - Since a frame pointer will be required in such a function, it is OK - that the stack pointer is not restored. */ - -#undef SUBTARGET_FRAME_POINTER_REQUIRED -#define SUBTARGET_FRAME_POINTER_REQUIRED \ - (current_function_calls_setjmp || current_function_calls_longjmp) - -/* Modify ASM_OUTPUT_LOCAL slightly to test -msvr3-shlib. */ -#undef ASM_OUTPUT_LOCAL -#define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED) \ - do { \ - int align = exact_log2 (ROUNDED); \ - if (align > 2) align = 2; \ - if (TARGET_SVR3_SHLIB) \ - data_section (); \ - else \ - bss_section (); \ - ASM_OUTPUT_ALIGN ((FILE), align == -1 ? 2 : align); \ - ASM_OUTPUT_LABEL ((FILE), (NAME)); \ - fprintf ((FILE), "\t.set .,.+%u\n", (int)(ROUNDED));\ - } while (0) - -/* Define a few machine-specific details of the implementation of - constructors. - - The __CTORS_LIST__ goes in the .init section. Define CTOR_LIST_BEGIN - and CTOR_LIST_END to contribute to the .init section an instruction to - push a word containing 0 (or some equivalent of that). */ - -#undef INIT_SECTION_ASM_OP -#define INIT_SECTION_ASM_OP "\t.section .init,\"x\"" - -#define CTOR_LIST_BEGIN \ - asm (INIT_SECTION_ASM_OP); \ - asm ("pushl $0") -#define CTOR_LIST_END CTOR_LIST_BEGIN - -#define TARGET_ASM_CONSTRUCTOR ix86_svr3_asm_out_constructor diff --git a/gcc/config/ip2k/ip2k.h b/gcc/config/ip2k/ip2k.h index aecc8cd..0638198 100644 --- a/gcc/config/ip2k/ip2k.h +++ b/gcc/config/ip2k/ip2k.h @@ -184,8 +184,6 @@ extern int target_flags; 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,/*r224..r255*/\ 1,1,1,1} -#define NON_SAVING_SETJMP 0 - #define REG_ALLOC_ORDER { \ 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f, \ 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, \ |