From aa6ad1a68bf94672cbc9f4c3aef60640cbc95a0a Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Mon, 19 Nov 2001 06:28:52 -0500 Subject: [PATCH] cppmacro.c (_cpp_backup_tokens): Pop cur_run before decrementing cur_token, not after. * cppmacro.c (_cpp_backup_tokens): Pop cur_run before decrementing cur_token, not after. * config/clipper/clix.h, config/h8300/elf.h, config/mips/linux.h: Lose ASM_OUTPUT_CONSTRUCTOR. * system.h: Poison it and INT_ASM_OP. * c-lang.c (finish_file): Don't check for it. * libgcc2.c (L_ctors): Check TARGET_ASM_CONSTRUCTOR instead. From-SVN: r47169 --- gcc/ChangeLog | 11 +++++++++++ gcc/c-lang.c | 6 ------ gcc/config/clipper/clix.h | 2 +- gcc/config/h8300/elf.h | 2 -- gcc/config/mips/linux.h | 23 ----------------------- gcc/cppmacro.c | 2 +- gcc/libgcc2.c | 2 +- gcc/system.h | 7 ++++++- 8 files changed, 20 insertions(+), 35 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a3fd98742eb..cdce1b94397 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2001-11-19 Jason Merrill + + * cppmacro.c (_cpp_backup_tokens): Pop cur_run before decrementing + cur_token, not after. + + * config/clipper/clix.h, config/h8300/elf.h, config/mips/linux.h: + Lose ASM_OUTPUT_CONSTRUCTOR. + * system.h: Poison it and INT_ASM_OP. + * c-lang.c (finish_file): Don't check for it. + * libgcc2.c (L_ctors): Check TARGET_ASM_CONSTRUCTOR instead. + 2001-11-18 Kaveh R. Ghazi * mmix.c (mmix_cc1_ignored_option): Const-ify. diff --git a/gcc/c-lang.c b/gcc/c-lang.c index 5a82c59ecdb..54f86dfab12 100644 --- a/gcc/c-lang.c +++ b/gcc/c-lang.c @@ -203,7 +203,6 @@ lookup_objc_ivar (id) return 0; } -#if !defined(ASM_OUTPUT_CONSTRUCTOR) || !defined(ASM_OUTPUT_DESTRUCTOR) extern tree static_ctors; extern tree static_dtors; @@ -253,7 +252,6 @@ finish_cdtor (body) finish_function (0); } -#endif /* Register a function tree, so that its optimization and conversion to RTL is only done at the end of the compilation. */ @@ -307,7 +305,6 @@ finish_file () VARRAY_FREE (deferred_fns); -#ifndef ASM_OUTPUT_CONSTRUCTOR if (static_ctors) { tree body = start_cdtor ('I'); @@ -318,8 +315,6 @@ finish_file () finish_cdtor (body); } -#endif -#ifndef ASM_OUTPUT_DESTRUCTOR if (static_dtors) { tree body = start_cdtor ('D'); @@ -330,7 +325,6 @@ finish_file () finish_cdtor (body); } -#endif if (back_end_hook) (*back_end_hook) (getdecls ()); diff --git a/gcc/config/clipper/clix.h b/gcc/config/clipper/clix.h index bce6979ea41..b066754d4d4 100644 --- a/gcc/config/clipper/clix.h +++ b/gcc/config/clipper/clix.h @@ -83,7 +83,7 @@ do { \ and CTOR_LIST_END to contribute to the .init section an instruction to push a word containing 0 (or some equivalent of that). - ASM_OUTPUT_CONSTRUCTOR should be defined to push the address of the + TARGET_ASM_CONSTRUCTOR should be defined to push the address of the constructor. */ #define CTOR_LIST_BEGIN \ diff --git a/gcc/config/h8300/elf.h b/gcc/config/h8300/elf.h index 20aa4cfd6cc..dcfb5e9f8a0 100644 --- a/gcc/config/h8300/elf.h +++ b/gcc/config/h8300/elf.h @@ -10,8 +10,6 @@ #undef DTORS_SECTION_ASM_OP #undef INIT_SECTION_ASM_OP #undef READONLY_DATA_SECTION -#undef ASM_OUTPUT_CONSTRUCTOR -#undef ASM_OUTPUT_DESTRUCTOR #undef TARGET_ASM_NAMED_SECTION #undef TARGET_MEM_FUNCTIONS #undef PREFERRED_DEBUGGING_TYPE diff --git a/gcc/config/mips/linux.h b/gcc/config/mips/linux.h index b51ee2b3da2..2dad6a0a6e4 100644 --- a/gcc/config/mips/linux.h +++ b/gcc/config/mips/linux.h @@ -117,29 +117,6 @@ void FN () \ } \ } -/* A C statement (sans semicolon) to output an element in the table of - global constructors. */ -#undef ASM_OUTPUT_CONSTRUCTOR -#define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME) \ - do { \ - ctors_section (); \ - fprintf (FILE, "\t%s\t", TARGET_LONG64 ? ".dword" : ".word"); \ - assemble_name (FILE, NAME); \ - fprintf (FILE, "\n"); \ - } while (0) - - -/* A C statement (sans semicolon) to output an element in the table of - global destructors. */ -#undef ASM_OUTPUT_DESTRUCTOR -#define ASM_OUTPUT_DESTRUCTOR(FILE,NAME) \ - do { \ - dtors_section (); \ - fprintf (FILE, "\t%s\t", TARGET_LONG64 ? ".dword" : ".word"); \ - assemble_name (FILE, NAME); \ - fprintf (FILE, "\n"); \ - } while (0) - #undef TARGET_VERSION #if TARGET_ENDIAN_DEFAULT == 0 #define TARGET_VERSION fprintf (stderr, " (MIPSel GNU/Linux with ELF)"); diff --git a/gcc/cppmacro.c b/gcc/cppmacro.c index 4fb2df91780..dbee62d887b 100644 --- a/gcc/cppmacro.c +++ b/gcc/cppmacro.c @@ -1087,12 +1087,12 @@ _cpp_backup_tokens (pfile, count) pfile->lookaheads += count; while (count--) { - pfile->cur_token--; if (pfile->cur_token == pfile->cur_run->base) { pfile->cur_run = pfile->cur_run->prev; pfile->cur_token = pfile->cur_run->limit; } + pfile->cur_token--; } } else diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c index 2ac66b1affc..5d424360d99 100644 --- a/gcc/libgcc2.c +++ b/gcc/libgcc2.c @@ -2834,7 +2834,7 @@ SYMBOL__MAIN () Long term no port should use those extensions. But many still do. */ #if !defined(INIT_SECTION_ASM_OP) && !defined(CTOR_LISTS_DEFINED_EXTERNALLY) -#if defined (ASM_OUTPUT_CONSTRUCTOR) || defined (USE_COLLECT2) +#if defined (TARGET_ASM_CONSTRUCTOR) || defined (USE_COLLECT2) func_ptr __CTOR_LIST__[2] = {0, 0}; func_ptr __DTOR_LIST__[2] = {0, 0}; #else diff --git a/gcc/system.h b/gcc/system.h index aaec2f88354..03c3223b054 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -603,7 +603,12 @@ typedef union tree_node *tree; VALID_MACHINE_DECL_ATTRIBUTE VALID_MACHINE_TYPE_ATTRIBUTE \ SET_DEFAULT_TYPE_ATTRIBUTES SET_DEFAULT_DECL_ATTRIBUTES \ MERGE_MACHINE_TYPE_ATTRIBUTES MERGE_MACHINE_DECL_ATTRIBUTES \ - MD_INIT_BUILTINS MD_EXPAND_BUILTIN + MD_INIT_BUILTINS MD_EXPAND_BUILTIN ASM_OUTPUT_CONSTRUCTOR \ + ASM_OUTPUT_DESTRUCTOR + +/* And other obsolete target macros. */ + #pragma GCC poison INT_ASM_OP + #endif /* IN_GCC */ /* Note: not all uses of the `index' token (e.g. variable names and -- 2.30.2