From: Neil Booth Date: Thu, 23 May 2002 17:57:46 +0000 (+0000) Subject: re PR preprocessor/6517 (gcc hangs on C compile with multiple "-I-") X-Git-Tag: releases/gcc-3.1.1~290 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=35412a59a54e875732f744f8c1e614b96314912c;p=thirdparty%2Fgcc.git re PR preprocessor/6517 (gcc hangs on C compile with multiple "-I-") PR preprocessor/6517 * Makefile.in: Update. * c-common.c (c_common_post_options): Add preprocessor errors to the error count. * c-lang.c (c_post_options): Kill. (LANG_HOOKS_POST_OPTIONS): Use c_common_post_options. * hooks.h: Add header guards. * langhooks-def.h: Include hooks.h. (LANG_HOOKS_POST_OPTIONS): Update. * langhooks.h (struct lang_hooks): Update post_options. * toplev.c (parse_options_and_default_flags): Update. cp: * cp-lang.c (LANG_HOOKS_POST_OPTIONS): Use c_common_post_options. * cp-tree.h (cxx_post_options): Kill. * cp-lex.c (cxx_post_options): Kill. objc: * objc-lang.c (objc_post_options): Kill. (LANG_HOOKS_POST_OPTIONS): Use c_common_post_options. From-SVN: r53797 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 296359441212..af365478d881 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,20 @@ +2002-05-23 Neil Booth + + PR preprocessor/6517 + * Makefile.in: Update. + * c-common.c (c_common_post_options): Add preprocessor + errors to the error count. + * c-lang.c (c_post_options): Kill. + (LANG_HOOKS_POST_OPTIONS): Use c_common_post_options. + * hooks.h: Add header guards. + * langhooks-def.h: Include hooks.h. + (LANG_HOOKS_POST_OPTIONS): Update. + * langhooks.h (struct lang_hooks): Update post_options. + * toplev.c (parse_options_and_default_flags): Update. +objc: + * objc-lang.c (objc_post_options): Kill. + (LANG_HOOKS_POST_OPTIONS): Use c_common_post_options. + 2002-05-23 Jakub Jelinek PR target/6753 diff --git a/gcc/Makefile.in b/gcc/Makefile.in index c3593415944e..7a0161fa2f69 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -541,6 +541,7 @@ CONFIG_H = $(GCONFIG_H) insn-constants.h insn-flags.h TCONFIG_H = tconfig.h $(xm_file_list) TARGET_H = target.h HOOKS_H = hooks.h +LANGHOOKS_DEF_H = langhooks.h $(HOOKS_H) TARGET_DEF_H = target-def.h $(HOOKS_H) TM_P_H = tm_p.h $(tm_p_file_list) tm-preds.h @@ -1212,7 +1213,7 @@ s-under: $(GCC_PASSES) c-common.o : c-common.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(OBSTACK_H) \ $(C_COMMON_H) flags.h toplev.h output.h c-pragma.h $(RTL_H) $(GGC_H) \ $(EXPR_H) $(TM_P_H) builtin-types.def builtin-attrs.def $(TARGET_H) \ - diagnostic.h tree-inline.h + diagnostic.h tree-inline.h $(LANGHOOKS_DEF_H) # A file used by all variants of C and some other languages. @@ -1327,7 +1328,7 @@ convert.o: convert.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h convert.h toplev. langhooks.o : langhooks.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) toplev.h \ tree-inline.h $(RTL_H) insn-config.h integrate.h langhooks.h \ - langhooks-def.h flags.h + $(LANGHOOKS_DEF_H) flags.h tree.o : tree.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h function.h toplev.h \ $(GGC_H) $(HASHTAB_H) $(TARGET_H) output.h $(TM_P_H) langhooks.h tree-dump.o: tree-dump.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \ diff --git a/gcc/c-common.c b/gcc/c-common.c index 8275df64be25..5b8b56546268 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -4161,6 +4161,10 @@ c_common_post_options () warning ("-Wformat-security ignored without -Wformat"); if (warn_missing_format_attribute && !warn_format) warning ("-Wmissing-format-attribute ignored without -Wformat"); + + /* If an error has occurred in cpplib, note it so we fail + immediately. */ + errorcount += cpp_errors (parse_in); } /* Front end initialization common to C, ObjC and C++. */ diff --git a/gcc/c-lang.c b/gcc/c-lang.c index aa6c2ff5b410..2b7d4733f66f 100644 --- a/gcc/c-lang.c +++ b/gcc/c-lang.c @@ -29,7 +29,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA static const char *c_init PARAMS ((const char *)); static void c_init_options PARAMS ((void)); -static void c_post_options PARAMS ((void)); /* ### When changing hooks, consider if ObjC needs changing too!! ### */ @@ -44,7 +43,7 @@ static void c_post_options PARAMS ((void)); #undef LANG_HOOKS_DECODE_OPTION #define LANG_HOOKS_DECODE_OPTION c_decode_option #undef LANG_HOOKS_POST_OPTIONS -#define LANG_HOOKS_POST_OPTIONS c_post_options +#define LANG_HOOKS_POST_OPTIONS c_common_post_options #undef LANG_HOOKS_GET_ALIAS_SET #define LANG_HOOKS_GET_ALIAS_SET c_common_get_alias_set #undef LANG_HOOKS_SAFE_FROM_P @@ -74,13 +73,6 @@ static void c_post_options PARAMS ((void)); /* Each front end provides its own. */ const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; -/* Post-switch processing. */ -static void -c_post_options () -{ - c_common_post_options (); -} - static void c_init_options () { diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 1aaa09f5425d..6a45ea3c6f94 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2002-05-23 Neil Booth + + * cp-lang.c (LANG_HOOKS_POST_OPTIONS): Use c_common_post_options. + * cp-tree.h (cxx_post_options): Kill. + * cp-lex.c (cxx_post_options): Kill. + 2002-05-19 Kriang Lerdsuwanakij * error.c (dump_type) [TYPEOF_TYPE]: Fix parenthesis printing. diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in index de4a372e80c8..df2de35fad9d 100644 --- a/gcc/cp/Make-lang.in +++ b/gcc/cp/Make-lang.in @@ -251,7 +251,7 @@ cp/spew.o: cp/spew.c $(CXX_TREE_H) cp/parse.h flags.h cp/lex.h toplev.h cp/lex.o: cp/lex.c $(CXX_TREE_H) cp/parse.h flags.h cp/lex.h c-pragma.h \ toplev.h output.h mbchar.h $(GGC_H) input.h diagnostic.h cp/operators.def \ $(TM_P_H) -cp/cp-lang.o: cp/cp-lang.c $(CXX_TREE_H) toplev.h langhooks.h langhooks-def.h \ +cp/cp-lang.o: cp/cp-lang.c $(CXX_TREE_H) toplev.h langhooks.h $(LANGHOOKS_DEF_H) \ c-common.h cp/decl.o: cp/decl.c $(CXX_TREE_H) flags.h cp/lex.h cp/decl.h stack.h \ output.h $(EXPR_H) except.h toplev.h hash.h $(GGC_H) $(RTL_H) \ diff --git a/gcc/cp/cp-lang.c b/gcc/cp/cp-lang.c index c40330bc319a..931523e8e012 100644 --- a/gcc/cp/cp-lang.c +++ b/gcc/cp/cp-lang.c @@ -1,5 +1,5 @@ /* Language-dependent hooks for C++. - Copyright 2001 Free Software Foundation, Inc. + Copyright 2001, 2002 Free Software Foundation, Inc. Contributed by Alexandre Oliva This file is part of GNU CC. @@ -43,7 +43,7 @@ static HOST_WIDE_INT cxx_get_alias_set PARAMS ((tree)); #undef LANG_HOOKS_DECODE_OPTION #define LANG_HOOKS_DECODE_OPTION cxx_decode_option #undef LANG_HOOKS_POST_OPTIONS -#define LANG_HOOKS_POST_OPTIONS cxx_post_options +#define LANG_HOOKS_POST_OPTIONS c_common_post_options #undef LANG_HOOKS_GET_ALIAS_SET #define LANG_HOOKS_GET_ALIAS_SET cxx_get_alias_set #undef LANG_HOOKS_EXPAND_CONSTANT diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 73898f888c6d..bfc6e339bce0 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -3961,7 +3961,6 @@ extern int cp_type_qual_from_rid PARAMS ((tree)); extern const char *cxx_init PARAMS ((const char *)); extern void cxx_finish PARAMS ((void)); extern void cxx_init_options PARAMS ((void)); -extern void cxx_post_options PARAMS ((void)); /* in method.c */ extern void init_method PARAMS ((void)); diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c index 61e34a8953d4..d68957a9963e 100644 --- a/gcc/cp/lex.c +++ b/gcc/cp/lex.c @@ -1,6 +1,6 @@ /* Separate lexical analyzer for GNU C++. Copyright (C) 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001 Free Software Foundation, Inc. + 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Hacked by Michael Tiemann (tiemann@cygnus.com) This file is part of GNU CC. @@ -237,13 +237,6 @@ static const char *const cplus_tree_code_name[] = { }; #undef DEFTREECODE -/* Post-switch processing. */ -void -cxx_post_options () -{ - c_common_post_options (); -} - /* Initialization before switch parsing. */ void cxx_init_options () diff --git a/gcc/hooks.c b/gcc/hooks.c index 387f4db961a8..3fd876a208c0 100644 --- a/gcc/hooks.c +++ b/gcc/hooks.c @@ -26,6 +26,12 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "system.h" #include "hooks.h" +/* Generic hook that does absolutely zappo. */ +void +hook_void_void () +{ +} + /* Generic hook that takes no arguments and returns false. */ bool hook_void_bool_false () diff --git a/gcc/hooks.h b/gcc/hooks.h index 7a8daa55d7fd..763ab8efc2ed 100644 --- a/gcc/hooks.h +++ b/gcc/hooks.h @@ -19,4 +19,10 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. You are forbidden to forbid anyone else to use, share and improve what you give them. Help stamp out software-hoarding! */ +#ifndef GCC_HOOKS_H +#define GCC_HOOKS_H + bool hook_void_bool_false PARAMS ((void)); +void hook_void_void PARAMS ((void)); + +#endif diff --git a/gcc/langhooks-def.h b/gcc/langhooks-def.h index be8304a320b0..bb00b501cc6c 100644 --- a/gcc/langhooks-def.h +++ b/gcc/langhooks-def.h @@ -22,6 +22,8 @@ Boston, MA 02111-1307, USA. */ #ifndef GCC_LANG_HOOKS_DEF_H #define GCC_LANG_HOOKS_DEF_H +#include "hooks.h" + /* Provide a hook routine for alias sets that always returns 1. This is used by languages that haven't deal with alias sets yet. */ extern HOST_WIDE_INT hook_get_alias_set_0 PARAMS ((tree)); @@ -71,7 +73,7 @@ tree lhd_tree_inlining_convert_parm_for_inlining PARAMS ((tree, tree, tree)); #define LANG_HOOKS_CLEAR_BINDING_STACK lhd_clear_binding_stack #define LANG_HOOKS_INIT_OPTIONS lhd_do_nothing #define LANG_HOOKS_DECODE_OPTION lhd_decode_option -#define LANG_HOOKS_POST_OPTIONS lhd_do_nothing +#define LANG_HOOKS_POST_OPTIONS hook_void_void #define LANG_HOOKS_GET_ALIAS_SET lhd_get_alias_set #define LANG_HOOKS_EXPAND_CONSTANT lhd_return_tree #define LANG_HOOKS_SAFE_FROM_P lhd_safe_from_p diff --git a/gcc/langhooks.h b/gcc/langhooks.h index 56b818fc5745..368f47d31a55 100644 --- a/gcc/langhooks.h +++ b/gcc/langhooks.h @@ -93,7 +93,10 @@ struct lang_hooks /* Called when all command line options have been parsed. Should do any required consistency checks, modifications etc. Complex initialization should be left to the "init" callback, since GC - and the identifier hashes are set up between now and then. */ + and the identifier hashes are set up between now and then. + + If errorcount is non-zero after this call the compiler exits + immediately and the finish hook is not called. */ void (*post_options) PARAMS ((void)); /* Called after post_options, to initialize the front end. The main diff --git a/gcc/objc/Make-lang.in b/gcc/objc/Make-lang.in index bc5f709c579d..379a16cfdbb3 100644 --- a/gcc/objc/Make-lang.in +++ b/gcc/objc/Make-lang.in @@ -93,7 +93,7 @@ objc-act.o : $(srcdir)/objc/objc-act.c \ $(srcdir)/c-tree.h $(srcdir)/c-common.h $(srcdir)/c-lex.h \ $(srcdir)/toplev.h $(srcdir)/flags.h $(srcdir)/objc/objc-act.h \ $(srcdir)/input.h $(srcdir)/function.h $(srcdir)/output.h $(srcdir)/debug.h \ - $(srcdir)/langhooks.h $(srcdir)/langhooks-def.h + $(srcdir)/langhooks.h $(LANGHOOKS_DEF_H) $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -I$(srcdir)/objc \ -c $(srcdir)/objc/objc-act.c diff --git a/gcc/objc/objc-lang.c b/gcc/objc/objc-lang.c index 874a9c3d2768..b62aa0f71b1d 100644 --- a/gcc/objc/objc-lang.c +++ b/gcc/objc/objc-lang.c @@ -1,5 +1,5 @@ /* Language-dependent hooks for Objective-C. - Copyright 2001 Free Software Foundation, Inc. + Copyright 2001, 2002 Free Software Foundation, Inc. Contributed by Ziemowit Laski This file is part of GNU CC. @@ -30,7 +30,6 @@ Boston, MA 02111-1307, USA. */ #include "langhooks-def.h" static void objc_init_options PARAMS ((void)); -static void objc_post_options PARAMS ((void)); #undef LANG_HOOKS_NAME #define LANG_HOOKS_NAME "GNU Objective-C" @@ -43,7 +42,7 @@ static void objc_post_options PARAMS ((void)); #undef LANG_HOOKS_DECODE_OPTION #define LANG_HOOKS_DECODE_OPTION objc_decode_option #undef LANG_HOOKS_POST_OPTIONS -#define LANG_HOOKS_POST_OPTIONS objc_post_options +#define LANG_HOOKS_POST_OPTIONS c_common_post_options #undef LANG_HOOKS_STATICP #define LANG_HOOKS_STATICP c_staticp #undef LANG_HOOKS_PRINT_IDENTIFIER @@ -72,13 +71,3 @@ objc_init_options () { c_common_init_options (clk_objective_c); } - -/* Post-switch processing. */ - -static void -objc_post_options () -{ - c_common_post_options (); -} - - diff --git a/gcc/toplev.c b/gcc/toplev.c index b4a9b58f1abb..8cb7ec1b1522 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -5226,7 +5226,7 @@ toplev_main (argc, argv) parse_options_and_default_flags (argc, argv); /* Exit early if we can (e.g. -help). */ - if (!exit_after_options) + if (!errorcount && !exit_after_options) do_compile (); if (errorcount || sorrycount)