diff options
author | zack <zack@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-05-09 19:56:01 +0000 |
---|---|---|
committer | zack <zack@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-05-09 19:56:01 +0000 |
commit | e772a198f084ad036a97a4dc09e2fe8def270121 (patch) | |
tree | 11478b672b9b1d6e7c70820a940f550161e9a1a5 | |
parent | 0cd8536ce1a6769ac582b840925d915db5f1d925 (diff) | |
download | gcc-e772a198f084ad036a97a4dc09e2fe8def270121.tar.gz |
top level:
* Makefile.in (WARN_CFLAGS): Add -Wwrite-strings.
(tree.o): Depend on output.h.
* c-decl.c (pending_invalid_xref_file,
current_function_prototype_file): Constify.
(pushdecl): Constify a local char *.
(define_label): Constify filename parameter.
* c-lex.c (init_parse): Constify parameter and return value.
* c-typeck.c (c_expand_asm_operands): Constify filename parameter.
* c-tree.h: Update prototypes.
* c-parse.in: Constify filename member of %union, and if_stmt_file.
* c-parse.y, c-parse.c, c-parse.h, objc/objc-parse.y,
objc/objc-parse.c: Regenerate.
* dwarfout.c (dwarfout_init): Constify main_input_filename parameter.
* dwarfout.h: Update prototypes.
* expr.c (expand_expr): Constify a local char *.
* flags.h: Constify main_input_filename.
* function.c (expand_function_end): Constify filename parameter.
* genrecog.c (make_insn_sequence): Use a character array for
c_test_pos.
(main): Remove unused variables.
* input.h: Constify input_filename, main_input_filename, and
file_stack.name. Update prototypes.
* output.h: Declare first_global_object_name and
weak_global_object_name here, as const char *.
* stmt.c (expand_asm_operands): Constify filename parameter.
* toplev.c (compile_file, push_srcloc, debug_start_source_file):
Constify filename parameter.
(input_filename, main_input_filename): Constify.
* toplev.h: Update prototypes.
* tree.c: Include output.h. Don't declare
first_global_object_name or weak_global_object_name. Clean up string
bashing in get_file_function_name_long.
* tree.h (struct tree_decl): Constify filename member.
(input_filename): Constify.
Update prototypes.
* varasm.c (first_global_object_name, weak_global_object_name):
Constify.
(assemble_start_function, assemble_variable): Clean up string bashing.
* gcc.c: Constify all spec-related strings initialized,
transitively, from string constants. Constify all strings
and string variables related to multilibs.
(set_spec, read_specs): Cast argument to free to PTR.
(used_arg): Do not modify multilib_matches. Use strncmp plus
length comparison to compare multilib switches.
* genmultilib: Constify everything declared in multilib.h.
ch:
* ch-tree.h: Update prototypes. Remove prototypes for
functions declared elsewhere.
* decl.c (define_label): Constify filename parameter.
* grant.c (globalize_decl, set_default_grant_file): Constify
local char * variables. Don't declare
first_global_object_name or asm_out_file.
* lang.c (chill_real_input_filename): Constify.
* lex.c (init_parse): Constify parameter and return value.
* parse.c: Don't declare input_filename.
(ch_expand_asm_operands): Constify filename parameter.
(parse_multi_dimension_case_action): Constify local char *.
* satisfy.c (safe_satisfy_decl): Constify local char *.
cp:
* cp-tree.h: Constify tree_srcloc.filename, tinst_level.file,
and pending_inline.filename. Update prototypes.
* decl.c (define_label): Constify filename parameter.
* decl2.c (warn_if_unknown_interface): Constify local char *.
* input.c Constify input_source.filename. Don't declare
input_filename or lineno. Constify filename parameter to feed_input.
* lex.c (init_parse): Constify parameter and return value.
(cp_pragma_interface, cp_pragma_implementation): Constify
filename argument.
(reinit_parse_for_method, reinit_parse_for_block,
reinit_parse_for_expr, feed_defarg, handle_cp_pragma):
Constify local char *.
* pt.c: Don't declare lineno or input_filename.
(print_template_context, tsubst_friend_function, tsubst_decl,
tsubst, instantiate_decl): Constify local char *.
* semantics.c (expand_body): Constify local char *.
* tree.c (build_srcloc): Constify filename parameter.
* typeck.c (c_expand_asm_operands): Constify filename
parameter.
f:
* com.c (ffecom_subscript_check_): Constify array_name
parameter. Clean up string bashing.
(ffecom_arrayref_, ffecom_char_args_x_): Constify array_name
parameter.
(ffecom_do_entry_, ffecom_gen_sfuncdef_, ffecom_start_progunit_,
ffecom_sym_transform_, ffecom_sym_transform_assign_): Constify
local char *.
(init_parse): Constify parameter and return value.
* lex.c: Include dwarfout.h instead of prototyping dwarfout_*
functions here.
(ffelex_file_pop_, ffelex_file_push_): Constify filename parameter.
(ffelex_hash_, ffelex_include_): Constify local char *.
* std.c (ffestd_exec_end): Constify local char *.
* where.c (ffewhere_file_new): Constify filename parameter.
* where.h: Update prototypes.
java:
* check_init.c (check_init): Constify local char *.
* class.c (push_class): Constify local char *.
* java_tree.h: Update prototypes.
* jcf-io.c (open_class): Constify filename parameter and
return value.
(find_class): Remove redundant string copy. Cast return from
open_class.
* jcf-parse.c (read_class, parse_class_file, yyparse):
Constify local char *.
* jcf-write.c (generate_bytecode_insns, generate_classfile):
Constify local char *.
* jcf.h (JCF): Constify filename and classname.
(JCF_FINISH): Cast args to FREE to char * when appropriate.
* lang.c (init_parse): Constify parameter and return value.
* lex.c (java_get_line_col): Constify filename parameter.
* parse.h: Constify parser_ctxt.filename. Update prototypes.
* parse.y (java_parser_context_suspend,
issue_warning_error_from_context, safe_layout_class): Constify
local char *.
* parse.c: Regenerate.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@33804 138bc75d-0d04-0410-961f-82ee72b054a4
65 files changed, 619 insertions, 450 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a6d17cbdc64..e0d227ce34a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,54 @@ +2000-05-09 Zack Weinberg <zack@wolery.cumb.org> + + * Makefile.in (WARN_CFLAGS): Add -Wwrite-strings. + (tree.o): Depend on output.h. + + * c-decl.c (pending_invalid_xref_file, + current_function_prototype_file): Constify. + (pushdecl): Constify a local char *. + (define_label): Constify filename parameter. + * c-lex.c (init_parse): Constify parameter and return value. + * c-typeck.c (c_expand_asm_operands): Constify filename parameter. + * c-tree.h: Update prototypes. + * c-parse.in: Constify filename member of %union, and if_stmt_file. + * c-parse.y, c-parse.c, c-parse.h, objc/objc-parse.y, + objc/objc-parse.c: Regenerate. + + * dwarfout.c (dwarfout_init): Constify main_input_filename parameter. + * dwarfout.h: Update prototypes. + * expr.c (expand_expr): Constify a local char *. + * flags.h: Constify main_input_filename. + * function.c (expand_function_end): Constify filename parameter. + * genrecog.c (make_insn_sequence): Use a character array for + c_test_pos. + (main): Remove unused variables. + * input.h: Constify input_filename, main_input_filename, and + file_stack.name. Update prototypes. + * output.h: Declare first_global_object_name and + weak_global_object_name here, as const char *. + * stmt.c (expand_asm_operands): Constify filename parameter. + * toplev.c (compile_file, push_srcloc, debug_start_source_file): + Constify filename parameter. + (input_filename, main_input_filename): Constify. + * toplev.h: Update prototypes. + * tree.c: Include output.h. Don't declare + first_global_object_name or weak_global_object_name. Clean up string + bashing in get_file_function_name_long. + * tree.h (struct tree_decl): Constify filename member. + (input_filename): Constify. + Update prototypes. + * varasm.c (first_global_object_name, weak_global_object_name): + Constify. + (assemble_start_function, assemble_variable): Clean up string bashing. + + * gcc.c: Constify all spec-related strings initialized, + transitively, from string constants. Constify all strings + and string variables related to multilibs. + (set_spec, read_specs): Cast argument to free to PTR. + (used_arg): Do not modify multilib_matches. Use strncmp plus + length comparison to compare multilib switches. + * genmultilib: Constify everything declared in multilib.h. + Tue May 9 22:28:03 2000 Denis Chertykov <denisc@overta.ru> * flow.c (flow_delete_insn): Use INSN_DELETED_P for marking insn diff --git a/gcc/Makefile.in b/gcc/Makefile.in index cdd3ee5f3c3..449ee48aad0 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -76,7 +76,7 @@ XCFLAGS = TCFLAGS = CFLAGS = -g @stage1_warn_cflags@ BOOT_CFLAGS = -O2 $(CFLAGS) -WARN_CFLAGS = -W -Wall -Wtraditional -pedantic -Wno-long-long +WARN_CFLAGS = -W -Wall -Wtraditional -pedantic -Wno-long-long -Wwrite-strings LOOSE_CFLAGS = `echo $(CFLAGS)|sed -e 's/-pedantic//g' -e 's/-Wtraditional//g'` # These exists to be overridden by the x-* and t-* files, respectively. X_CFLAGS = @@ -1223,7 +1223,7 @@ prefix.o: prefix.c $(CONFIG_H) system.h Makefile prefix.h convert.o: convert.c $(CONFIG_H) system.h $(TREE_H) flags.h convert.h toplev.h tree.o : tree.c $(CONFIG_H) system.h $(TREE_H) flags.h function.h toplev.h \ - $(GGC_H) $(HASHTAB_H) + $(GGC_H) $(HASHTAB_H) output.h print-tree.o : print-tree.c $(CONFIG_H) system.h $(TREE_H) $(GGC_H) stor-layout.o : stor-layout.c $(CONFIG_H) system.h $(TREE_H) flags.h \ function.h $(EXPR_H) $(RTL_H) toplev.h $(GGC_H) diff --git a/gcc/c-decl.c b/gcc/c-decl.c index fcf8a7df4b9..301a3227977 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -80,7 +80,7 @@ int ggc_p = 1; tree pending_invalid_xref; /* File and line to appear in the eventual error message. */ -char *pending_invalid_xref_file; +const char *pending_invalid_xref_file; int pending_invalid_xref_line; /* While defining an enum type, this is 1 plus the last enumerator @@ -116,7 +116,7 @@ static tree current_function_parm_tags; /* Similar, for the file and line that the prototype came from if this is an old-style definition. */ -static char *current_function_prototype_file; +static const char *current_function_prototype_file; static int current_function_prototype_line; /* A list (chain of TREE_LIST nodes) of all LABEL_DECLs in the function @@ -2019,7 +2019,7 @@ pushdecl (x) if (name) { - char *file; + const char *file; int line; int different_binding_level = 0; @@ -2674,7 +2674,7 @@ shadow_label (name) tree define_label (filename, line, name) - char *filename; + const char *filename; int line; tree name; { diff --git a/gcc/c-lex.c b/gcc/c-lex.c index 8498e5f9607..3ca8264cba9 100644 --- a/gcc/c-lex.c +++ b/gcc/c-lex.c @@ -222,9 +222,9 @@ remember_protocol_qualifiers () wordlist[i].name = "oneway"; } -char * +const char * init_parse (filename) - char *filename; + const char *filename; { #if !USE_CPPLIB /* Open input file. */ diff --git a/gcc/c-parse.c b/gcc/c-parse.c index a00ba33f600..aff33d8e468 100644 --- a/gcc/c-parse.c +++ b/gcc/c-parse.c @@ -1,7 +1,6 @@ /* A Bison parser, made from c-parse.y - by GNU Bison version 1.27 - */ + by GNU Bison version 1.28 */ #define YYBISON 1 /* Identify Bison output. */ @@ -101,7 +100,7 @@ const char * const language_string = "GNU C"; #line 65 "c-parse.y" typedef union {long itype; tree ttype; enum tree_code code; - char *filename; int lineno; int ends_in_label; } YYSTYPE; + const char *filename; int lineno; int ends_in_label; } YYSTYPE; #line 186 "c-parse.y" /* Number of statements (loosely speaking) and compound statements @@ -111,7 +110,7 @@ static int compstmt_count; /* Input file and line number of the end of the body of last simple_if; used by the stmt-rule immediately after simple_if returns. */ -static char *if_stmt_file; +static const char *if_stmt_file; static int if_stmt_line; /* List of types and structure classes of the current declaration. */ @@ -1275,8 +1274,8 @@ static const short yycheck[] = { 38, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/lib/bison.simple" -/* This file comes from bison-1.27. */ +#line 3 "/usr/share/misc/bison.simple" +/* This file comes from bison-1.28. */ /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. @@ -1489,7 +1488,7 @@ __yy_memcpy (char *to, char *from, unsigned int count) #endif #endif -#line 216 "/usr/lib/bison.simple" +#line 217 "/usr/share/misc/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. @@ -3836,7 +3835,7 @@ case 407: break;} } /* the action file gets copied in in place of this dollarsign */ -#line 542 "/usr/lib/bison.simple" +#line 543 "/usr/share/misc/bison.simple" yyvsp -= yylen; yyssp -= yylen; diff --git a/gcc/c-parse.h b/gcc/c-parse.h index 29eff126e1c..f93aef0a566 100644 --- a/gcc/c-parse.h +++ b/gcc/c-parse.h @@ -1,5 +1,5 @@ typedef union {long itype; tree ttype; enum tree_code code; - char *filename; int lineno; int ends_in_label; } YYSTYPE; + const char *filename; int lineno; int ends_in_label; } YYSTYPE; #define IDENTIFIER 257 #define TYPENAME 258 #define SCSPEC 259 diff --git a/gcc/c-parse.in b/gcc/c-parse.in index deea8e98378..adc247a0162 100644 --- a/gcc/c-parse.in +++ b/gcc/c-parse.in @@ -75,7 +75,7 @@ end ifc %start program %union {long itype; tree ttype; enum tree_code code; - char *filename; int lineno; int ends_in_label; } + const char *filename; int lineno; int ends_in_label; } /* All identifiers that are not reserved words and are not declared typedefs in the current block */ @@ -216,7 +216,7 @@ static int compstmt_count; /* Input file and line number of the end of the body of last simple_if; used by the stmt-rule immediately after simple_if returns. */ -static char *if_stmt_file; +static const char *if_stmt_file; static int if_stmt_line; /* List of types and structure classes of the current declaration. */ diff --git a/gcc/c-parse.y b/gcc/c-parse.y index 99998fce41a..c228e6e67da 100644 --- a/gcc/c-parse.y +++ b/gcc/c-parse.y @@ -63,7 +63,7 @@ const char * const language_string = "GNU C"; %start program %union {long itype; tree ttype; enum tree_code code; - char *filename; int lineno; int ends_in_label; } + const char *filename; int lineno; int ends_in_label; } /* All identifiers that are not reserved words and are not declared typedefs in the current block */ @@ -191,7 +191,7 @@ static int compstmt_count; /* Input file and line number of the end of the body of last simple_if; used by the stmt-rule immediately after simple_if returns. */ -static char *if_stmt_file; +static const char *if_stmt_file; static int if_stmt_line; /* List of types and structure classes of the current declaration. */ diff --git a/gcc/c-tree.h b/gcc/c-tree.h index 32e802e0f2e..68e6f47a656 100644 --- a/gcc/c-tree.h +++ b/gcc/c-tree.h @@ -191,7 +191,8 @@ extern void clear_parm_order PARAMS ((void)); extern tree combine_parm_decls PARAMS ((tree, tree, int)); extern int complete_array_type PARAMS ((tree, tree, int)); extern void declare_parm_level PARAMS ((int)); -extern tree define_label PARAMS ((char *, int, tree)); +extern tree define_label PARAMS ((const char *, int, + tree)); extern void delete_block PARAMS ((tree)); extern void finish_decl PARAMS ((tree, tree, tree)); extern void finish_decl_top_level PARAMS ((tree, tree, tree)); @@ -290,8 +291,8 @@ extern void set_init_index PARAMS ((tree, tree)); extern void set_init_label PARAMS ((tree)); extern void process_init_element PARAMS ((tree)); extern void c_expand_asm_operands PARAMS ((tree, tree, tree, - tree, int, char *, - int)); + tree, int, + const char *, int)); extern void c_expand_return PARAMS ((tree)); extern tree c_expand_start_case PARAMS ((tree)); diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index efc38a81e73..25c19e25784 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -6435,7 +6435,7 @@ void c_expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line) tree string, outputs, inputs, clobbers; int vol; - char *filename; + const char *filename; int line; { int noutputs = list_length (outputs); diff --git a/gcc/ch/ChangeLog b/gcc/ch/ChangeLog index fe842119b9b..45262b340e7 100644 --- a/gcc/ch/ChangeLog +++ b/gcc/ch/ChangeLog @@ -1,3 +1,18 @@ +2000-05-09 Zack Weinberg <zack@wolery.cumb.org> + + * ch-tree.h: Update prototypes. Remove prototypes for + functions declared elsewhere. + * decl.c (define_label): Constify filename parameter. + * grant.c (globalize_decl, set_default_grant_file): Constify + local char * variables. Don't declare + first_global_object_name or asm_out_file. + * lang.c (chill_real_input_filename): Constify. + * lex.c (init_parse): Constify parameter and return value. + * parse.c: Don't declare input_filename. + (ch_expand_asm_operands): Constify filename parameter. + (parse_multi_dimension_case_action): Constify local char *. + * satisfy.c (safe_satisfy_decl): Constify local char *. + 2000-05-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> * ch-tree.h (init_function_start): Constify. diff --git a/gcc/ch/ch-tree.h b/gcc/ch/ch-tree.h index 953a1dc4c3f..5547107e137 100644 --- a/gcc/ch/ch-tree.h +++ b/gcc/ch/ch-tree.h @@ -672,7 +672,7 @@ extern void clear_parm_order PARAMS ((void)); extern tree combine_parm_decls PARAMS ((tree, tree, int)); extern int complete_array_type PARAMS ((tree, tree, int)); extern void declare_parm_level PARAMS ((int)); -extern tree define_label PARAMS ((char *, int, tree)); +extern tree define_label PARAMS ((const char *, int, tree)); extern void delete_block PARAMS ((tree)); extern void finish_decl PARAMS ((tree)); extern tree finish_enum PARAMS ((tree, tree)); @@ -1110,16 +1110,6 @@ extern tree type_for_size PARAMS ((unsigned, int)); extern int valid_array_index PARAMS ((tree, tree)); extern void validate_varying_array_ref PARAMS ((tree, tree)); -/* in function.c */ -extern void expand_function_end PARAMS ((char *, int, int)); -extern void expand_function_start PARAMS ((tree, int)); -extern void init_function_start PARAMS ((tree, const char *, int)); -extern void pop_function_context PARAMS ((void)); -extern void push_function_context PARAMS ((void)); - -/* in integrate.c */ -extern void output_inline_function PARAMS ((tree)); - /* in toplev.c */ extern void announce_function PARAMS ((tree)); extern int floor_log2_wide PARAMS ((unsigned HOST_WIDE_INT)); @@ -1132,10 +1122,6 @@ extern void make_function_rtl PARAMS ((tree)); extern void init_iterators PARAMS ((void)); extern int mark_addressable PARAMS ((tree)); extern tree chill_result_decl; -#ifdef RTX_CODE -extern rtx label_rtx PARAMS ((tree)); -#endif -extern void permanent_allocation PARAMS ((int)); #ifndef SET_WORD_SIZE #define SET_WORD_SIZE BITS_PER_WORD diff --git a/gcc/ch/decl.c b/gcc/ch/decl.c index 83caf0b003d..9d5fd0dcfef 100644 --- a/gcc/ch/decl.c +++ b/gcc/ch/decl.c @@ -3151,7 +3151,7 @@ pushdecl_top_level (x) tree define_label (filename, line, name) - char *filename; + const char *filename; int line; tree name; { diff --git a/gcc/ch/grant.c b/gcc/ch/grant.c index ddd8f936443..42328c122a8 100644 --- a/gcc/ch/grant.c +++ b/gcc/ch/grant.c @@ -2544,9 +2544,7 @@ globalize_decl (decl) if (!TREE_PUBLIC (decl) && DECL_NAME (decl) && (TREE_CODE (decl) == VAR_DECL || TREE_CODE (decl) == FUNCTION_DECL)) { - extern FILE *asm_out_file; - extern char *first_global_object_name; - const char *name = XSTR (XEXP (DECL_RTL (decl), 0), 0); + const char *name = XSTR (XEXP (DECL_RTL (decl), 0), 0); if (!first_global_object_name) first_global_object_name = name + (name[0] == '*'); @@ -2686,7 +2684,8 @@ write_grant_file () void set_default_grant_file () { - char *p, *tmp, *fname; + char *p, *tmp; + const char *fname; if (dump_base_name) fname = dump_base_name; /* Probably invoked via gcc */ @@ -2993,18 +2992,18 @@ chill_finish_compile () Perhaps rewrite this so nothing is done in pass 1. */ if (pass == 1) { - extern char *first_global_object_name; /* If we don't do this spoof, we get the name of the first tasking_code variable, and not the file name. */ - char *tmp = first_global_object_name; - + char *q; + const char *tmp = first_global_object_name; first_global_object_name = NULL; chill_init_name = get_file_function_name ('I'); first_global_object_name = tmp; + /* strip off the file's extension, if any. */ - tmp = strrchr (IDENTIFIER_POINTER (chill_init_name), '.'); - if (tmp) - *tmp = '\0'; + q = strrchr (IDENTIFIER_POINTER (chill_init_name), '.'); + if (q) + *q = '\0'; } start_chill_function (chill_init_name, void_type_node, NULL_TREE, diff --git a/gcc/ch/lang.c b/gcc/ch/lang.c index 42470cf354d..9a2f822fc1a 100644 --- a/gcc/ch/lang.c +++ b/gcc/ch/lang.c @@ -47,7 +47,7 @@ int ignore_case = 1; int special_UC = 0; /* The actual name of the input file, regardless of any #line directives */ -char* chill_real_input_filename; +const char* chill_real_input_filename; extern FILE* finput; static int deep_const_expr PARAMS ((tree)); diff --git a/gcc/ch/lex.c b/gcc/ch/lex.c index 5f0eb524d11..cd433caf9b9 100644 --- a/gcc/ch/lex.c +++ b/gcc/ch/lex.c @@ -197,9 +197,9 @@ ch_lex_init () } -char * +const char * init_parse (filename) - char *filename; + const char *filename; { int lowercase_standard_names = ignore_case || ! special_UC; diff --git a/gcc/ch/parse.c b/gcc/ch/parse.c index 92ca55bb97f..f2513ff23fa 100644 --- a/gcc/ch/parse.c +++ b/gcc/ch/parse.c @@ -94,7 +94,6 @@ static int expect PARAMS ((enum terminal, const char *)); static void define__PROCNAME__ PARAMS ((void)); extern int lineno; -extern char *input_filename; extern tree generic_signal_type_node; extern tree signal_code; extern int all_static_flag; @@ -451,7 +450,8 @@ static void parse_multi_dimension_case_action PARAMS ((tree)); static void parse_case_action PARAMS ((tree)); static tree parse_asm_operands PARAMS ((void)); static tree parse_asm_clobbers PARAMS ((void)); -static void ch_expand_asm_operands PARAMS ((tree, tree, tree, tree, int, char *, int)); +static void ch_expand_asm_operands PARAMS ((tree, tree, tree, tree, + int, const char *, int)); static void parse_asm_action PARAMS ((void)); static void parse_begin_end_block PARAMS ((tree)); static void parse_if_action PARAMS ((tree)); @@ -1785,7 +1785,7 @@ parse_multi_dimension_case_action (selector) tree action_labels = NULL_TREE; tree tests = NULL_TREE; int save_lineno = lineno; - char *save_filename = input_filename; + const char *save_filename = input_filename; /* We can't compute the range of an (ELSE) label until all of the CASE label specifications have been seen, however, the code for the actions @@ -2008,7 +2008,7 @@ static void ch_expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line) tree string, outputs, inputs, clobbers; int vol; - char *filename; + const char *filename; int line; { int noutputs = list_length (outputs); diff --git a/gcc/ch/satisfy.c b/gcc/ch/satisfy.c index fa300302c29..8fa46de3966 100644 --- a/gcc/ch/satisfy.c +++ b/gcc/ch/satisfy.c @@ -67,7 +67,7 @@ safe_satisfy_decl (decl, prev_chain) struct decl_chain new_link; struct decl_chain *link; struct decl_chain *chain = prev_chain; - char *save_filename = input_filename; + const char *save_filename = input_filename; int save_lineno = lineno; tree result = decl; diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index fa1c7f185bc..bd7f0ead2d8 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,25 @@ +2000-05-09 Zack Weinberg <zack@wolery.cumb.org> + + * cp-tree.h: Constify tree_srcloc.filename, tinst_level.file, + and pending_inline.filename. Update prototypes. + * decl.c (define_label): Constify filename parameter. + * decl2.c (warn_if_unknown_interface): Constify local char *. + * input.c Constify input_source.filename. Don't declare + input_filename or lineno. Constify filename parameter to feed_input. + * lex.c (init_parse): Constify parameter and return value. + (cp_pragma_interface, cp_pragma_implementation): Constify + filename argument. + (reinit_parse_for_method, reinit_parse_for_block, + reinit_parse_for_expr, feed_defarg, handle_cp_pragma): + Constify local char *. + * pt.c: Don't declare lineno or input_filename. + (print_template_context, tsubst_friend_function, tsubst_decl, + tsubst, instantiate_decl): Constify local char *. + * semantics.c (expand_body): Constify local char *. + * tree.c (build_srcloc): Constify filename parameter. + * typeck.c (c_expand_asm_operands): Constify filename + parameter. + 2000-05-08 Nathan Sidwell <nathan@codesourcery.com> * tinfo.cc (__dynamic_cast): Use a reinterpret_cast. Fix diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index cb469679310..c7c09332481 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -399,7 +399,7 @@ struct tree_wrapper struct tree_srcloc { char common[sizeof (struct tree_common)]; - char *filename; + const char *filename; int linenum; }; @@ -3338,7 +3338,7 @@ struct tinst_level { tree decl; int line; - char *file; + const char *file; struct tinst_level *next; }; @@ -3533,7 +3533,7 @@ struct pending_inline { struct pending_inline *next; /* pointer to next in chain */ int lineno; /* line number we got the text from */ - char *filename; /* name of file we were processing */ + const char *filename; /* name of file we were processing */ tree fndecl; /* FUNCTION_DECL that brought us here */ int token; /* token we were scanning */ int token_value; /* value of token we were scanning (YYSTYPE) */ @@ -3910,7 +3910,7 @@ extern void push_class_level_binding PARAMS ((tree, tree)); extern tree implicitly_declare PARAMS ((tree)); extern tree lookup_label PARAMS ((tree)); extern tree declare_local_label PARAMS ((tree)); -extern tree define_label PARAMS ((char *, int, tree)); +extern tree define_label PARAMS ((const char *, int, tree)); extern void push_switch PARAMS ((void)); extern void pop_switch PARAMS ((void)); extern void define_case_label PARAMS ((void)); @@ -4593,7 +4593,7 @@ extern tree build_x_modify_expr PARAMS ((tree, enum tree_code, tree)); extern tree build_modify_expr PARAMS ((tree, enum tree_code, tree)); extern tree dubious_conversion_warnings PARAMS ((tree, tree, const char *, tree, int)); extern tree convert_for_initialization PARAMS ((tree, tree, tree, int, const char *, tree, int)); -extern void c_expand_asm_operands PARAMS ((tree, tree, tree, tree, int, char *, int)); +extern void c_expand_asm_operands PARAMS ((tree, tree, tree, tree, int, const char *, int)); extern void c_expand_return PARAMS ((tree)); extern tree c_expand_start_case PARAMS ((tree)); extern int comp_ptr_ttypes PARAMS ((tree, tree)); diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 81203b432ab..b951773f08f 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -4794,7 +4794,7 @@ declare_local_label (id) tree define_label (filename, line, name) - char *filename; + const char *filename; int line; tree name; { diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 85bc908dfcc..ca660e098bf 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -867,7 +867,7 @@ warn_if_unknown_interface (decl) { struct tinst_level *til = tinst_for_decl (); int sl = lineno; - char *sf = input_filename; + const char *sf = input_filename; if (til) { diff --git a/gcc/cp/input.c b/gcc/cp/input.c index 32361582e45..8c96c37963d 100644 --- a/gcc/cp/input.c +++ b/gcc/cp/input.c @@ -54,7 +54,7 @@ struct input_source { /* values to restore after reading all of current string */ struct pending_input *input; #if !USE_CPPLIB - char *filename; + const char *filename; int lineno; struct putback_buffer putback; #endif @@ -62,15 +62,12 @@ struct input_source { static struct input_source *input, *free_inputs; -extern char *input_filename; -extern int lineno; - #if USE_CPPLIB extern unsigned char *yy_cur, *yy_lim; extern int yy_get_token (); #endif -extern void feed_input PARAMS ((char *, int, char *, int)); +extern void feed_input PARAMS ((char *, int, const char *, int)); extern void put_input PARAMS ((int)); extern void put_back PARAMS ((int)); extern int getch PARAMS ((void)); @@ -114,7 +111,7 @@ void feed_input (str, len, file, line) char *str; int len; - char *file; + const char *file; int line; { struct input_source *inp = allocate_input (); diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c index ba32971d259..34fea7e1cd4 100644 --- a/gcc/cp/lex.c +++ b/gcc/cp/lex.c @@ -65,8 +65,8 @@ static void feed_defarg PARAMS ((tree, tree)); static void store_pending_inline PARAMS ((tree, struct pending_inline *)); static void reinit_parse_for_expr PARAMS ((struct obstack *)); static int *init_cpp_parse PARAMS ((void)); -static void cp_pragma_interface PARAMS ((char *)); -static void cp_pragma_implementation PARAMS ((char *)); +static void cp_pragma_interface PARAMS ((const char *)); +static void cp_pragma_implementation PARAMS ((const char *)); static int handle_cp_pragma PARAMS ((const char *)); #ifdef HANDLE_GENERIC_PRAGMAS static int handle_generic_pragma PARAMS ((int)); @@ -510,9 +510,9 @@ init_cpp_parse () return token_count; } -char * +const char * init_parse (filename) - char *filename; + const char *filename; { extern int flag_no_gnu_keywords; extern int flag_operator_names; @@ -1188,7 +1188,7 @@ interface_strcmp (s) static void cp_pragma_interface (main_filename) - char *main_filename; + const char *main_filename; { tree fileinfo = TIME_IDENTIFIER_FILEINFO (get_time_identifier (input_filename)); @@ -1235,7 +1235,7 @@ cp_pragma_interface (main_filename) static void cp_pragma_implementation (main_filename) - char *main_filename; + const char *main_filename; { struct impl_files *ifiles = impl_file_chain; for (; ifiles; ifiles = ifiles->next) @@ -1514,7 +1514,7 @@ reinit_parse_for_method (yychar, decl) { int len; int starting_lineno = lineno; - char *starting_filename = input_filename; + const char *starting_filename = input_filename; reinit_parse_for_block (yychar, &inline_text_obstack); @@ -1562,7 +1562,7 @@ reinit_parse_for_block (pyychar, obstackp) register int c; int blev = 1; int starting_lineno = lineno; - char *starting_filename = input_filename; + const char *starting_filename = input_filename; int len; int look_for_semicolon = 0; int look_for_lbrac = 0; @@ -1728,7 +1728,7 @@ reinit_parse_for_expr (obstackp) { register int c; int starting_lineno = lineno; - char *starting_filename = input_filename; + const char *starting_filename = input_filename; int len; int plev = 0; @@ -1868,7 +1868,7 @@ feed_defarg (f, p) tree f, p; { tree d = TREE_PURPOSE (p); - char *file; + const char *file; int line; if (TREE_CODE (f) == FUNCTION_DECL) { @@ -2589,7 +2589,7 @@ handle_cp_pragma (pname) } else if (! strcmp (pname, "interface")) { - char *main_filename = input_filename; + const char *main_filename = input_filename; main_filename = file_name_nondirectory (main_filename); @@ -2616,7 +2616,7 @@ handle_cp_pragma (pname) } else if (! strcmp (pname, "implementation")) { - char *main_filename = main_input_filename ? main_input_filename : input_filename; + const char *main_filename = main_input_filename ? main_input_filename : input_filename; main_filename = file_name_nondirectory (main_filename); diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 2e077c91f8d..3b3f7862fb4 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -51,9 +51,6 @@ typedef int (*tree_fn_t) PARAMS ((tree, void*)); extern struct obstack permanent_obstack; -extern int lineno; -extern char *input_filename; - /* The PENDING_TEMPLATES is a TREE_LIST of templates whose instantiations have been deferred, either because their definitions were not yet available, or because we were putting off doing the @@ -4240,7 +4237,7 @@ print_template_context (err) { struct tinst_level *p = current_tinst_level; int line = lineno; - char *file = input_filename; + const char *file = input_filename; if (err && p) { @@ -4375,7 +4372,7 @@ tsubst_friend_function (decl, args) { tree new_friend; int line = lineno; - char *file = input_filename; + const char *file = input_filename; lineno = DECL_SOURCE_LINE (decl); input_filename = DECL_SOURCE_FILE (decl); @@ -5389,7 +5386,7 @@ tsubst_decl (t, args, type, in_decl) tree in_decl; { int saved_lineno; - char* saved_filename; + const char *saved_filename; tree r = NULL_TREE; /* Set the filename and linenumber to improve error-reporting. */ @@ -6454,7 +6451,7 @@ tsubst (t, args, complain, in_decl) || (code == REFERENCE_TYPE && TREE_CODE (type) == VOID_TYPE)) { static int last_line = 0; - static char* last_file = 0; + static const char* last_file = 0; /* We keep track of the last time we issued this error message to avoid spewing a ton of messages during a @@ -9434,7 +9431,7 @@ instantiate_decl (d, defer_ok) tree gen_tmpl; int pattern_defined; int line = lineno; - char *file = input_filename; + const char *file = input_filename; /* This function should only be used to instantiate templates for functions and static member variables. */ diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index d6d493f931d..afa9ff273c3 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -2694,7 +2694,7 @@ expand_body (fn) tree fn; { int saved_lineno; - char *saved_input_filename; + const char *saved_input_filename; /* When the parser calls us after finishing the body of a template function, we don't really want to expand the body. When we're diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 712e40d2001..078558ebd96 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -40,7 +40,7 @@ static int list_hash PARAMS ((tree, tree, tree)); static tree list_hash_lookup PARAMS ((int, tree, tree, tree)); static cp_lvalue_kind lvalue_p_1 PARAMS ((tree, int)); static tree no_linkage_helper PARAMS ((tree *, int *, void *)); -static tree build_srcloc PARAMS ((char *, int)); +static tree build_srcloc PARAMS ((const char *, int)); static void mark_list_hash PARAMS ((void *)); static int statement_code_p PARAMS ((enum tree_code)); static tree mark_local_for_remap_r PARAMS ((tree *, int *, void *)); @@ -1989,7 +1989,7 @@ build_int_wrapper (i) static tree build_srcloc (file, line) - char *file; + const char *file; int line; { tree t; diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 7d75d6f519b..671a66659ee 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -6638,7 +6638,7 @@ void c_expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line) tree string, outputs, inputs, clobbers; int vol; - char *filename; + const char *filename; int line; { int noutputs = list_length (outputs); diff --git a/gcc/dwarfout.c b/gcc/dwarfout.c index a8b2a4ae5c1..c9a9d4fab9e 100644 --- a/gcc/dwarfout.c +++ b/gcc/dwarfout.c @@ -5690,7 +5690,7 @@ dwarfout_undef (lineno, buffer) void dwarfout_init (asm_out_file, main_input_filename) register FILE *asm_out_file; - register char *main_input_filename; + register const char *main_input_filename; { /* Remember the name of the primary input file. */ diff --git a/gcc/dwarfout.h b/gcc/dwarfout.h index c09469a36a8..e0b9e2c7470 100644 --- a/gcc/dwarfout.h +++ b/gcc/dwarfout.h @@ -18,8 +18,7 @@ along with GNU CC; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -extern void dwarfout_init PARAMS ((FILE *asm_out_file, - char *main_input_filename)); +extern void dwarfout_init PARAMS ((FILE *, const char *)); extern void dwarfout_finish PARAMS ((void)); extern void dwarfout_define PARAMS ((unsigned, const char *)); diff --git a/gcc/expr.c b/gcc/expr.c index 287cd28d03c..5dace5b12f0 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -6077,7 +6077,7 @@ expand_expr (exp, target, tmode, modifier) case EXPR_WITH_FILE_LOCATION: { rtx to_return; - char *saved_input_filename = input_filename; + const char *saved_input_filename = input_filename; int saved_lineno = lineno; input_filename = EXPR_WFL_FILENAME (exp); lineno = EXPR_WFL_LINENO (exp); diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog index 5c95ba177e6..c33a7904e3a 100644 --- a/gcc/f/ChangeLog +++ b/gcc/f/ChangeLog @@ -1,3 +1,21 @@ +2000-05-09 Zack Weinberg <zack@wolery.cumb.org> + + * com.c (ffecom_subscript_check_): Constify array_name + parameter. Clean up string bashing. + (ffecom_arrayref_, ffecom_char_args_x_): Constify array_name + parameter. + (ffecom_do_entry_, ffecom_gen_sfuncdef_, ffecom_start_progunit_, + ffecom_sym_transform_, ffecom_sym_transform_assign_): Constify + local char *. + (init_parse): Constify parameter and return value. + * lex.c: Include dwarfout.h instead of prototyping dwarfout_* + functions here. + (ffelex_file_pop_, ffelex_file_push_): Constify filename parameter. + (ffelex_hash_, ffelex_include_): Constify local char *. + * std.c (ffestd_exec_end): Constify local char *. + * where.c (ffewhere_file_new): Constify filename parameter. + * where.h: Update prototypes. + 2000-05-06 Zack Weinberg <zack@wolery.cumb.org> * com.c (ffecom_overlap_): Set source_offset to diff --git a/gcc/f/com.c b/gcc/f/com.c index d1ddd622dec..c533330f215 100644 --- a/gcc/f/com.c +++ b/gcc/f/com.c @@ -712,7 +712,7 @@ static tree shadowed_labels; static tree ffecom_subscript_check_ (tree array, tree element, int dim, int total_dims, - char *array_name) + const char *array_name) { tree low = TYPE_MIN_VALUE (TYPE_DOMAIN (array)); tree high = TYPE_MAX_VALUE (TYPE_DOMAIN (array)); @@ -762,31 +762,30 @@ ffecom_subscript_check_ (tree array, tree element, int dim, int total_dims, { case 0: var = xmalloc (strlen (array_name) + 20); - sprintf (&var[0], "%s[%s-substring]", + sprintf (var, "%s[%s-substring]", array_name, dim ? "end" : "start"); len = strlen (var) + 1; + arg1 = build_string (len, var); + free (var); break; case 1: len = strlen (array_name) + 1; - var = array_name; + arg1 = build_string (len, array_name); break; default: var = xmalloc (strlen (array_name) + 40); - sprintf (&var[0], "%s[subscript-%d-of-%d]", + sprintf (var, "%s[subscript-%d-of-%d]", array_name, dim + 1, total_dims); len = strlen (var) + 1; + arg1 = build_string (len, var); + free (var); break; } - arg1 = build_string (len, var); - - if (total_dims != 1) - free (var); - TREE_TYPE (arg1) = build_type_variant (build_array_type (char_type_node, build_range_type @@ -877,7 +876,7 @@ ffecom_arrayref_ (tree item, ffebld expr, int want_ptr) tree element; tree tree_type; tree tree_type_x; - char *array_name; + const char *array_name; ffetype type; ffebld list; @@ -2072,7 +2071,7 @@ ffecom_char_args_x_ (tree *xitem, tree *length, ffebld expr, bool with_null) ffebld thing = ffebld_right (expr); tree start_tree; tree end_tree; - char *char_name; + const char *char_name; ffebld left_symter; tree array; @@ -2678,7 +2677,7 @@ ffecom_do_entry_ (ffesymbol fn, int entrynum) bool altreturning = FALSE; /* This entry point has alternate returns. */ int yes; int old_lineno = lineno; - char *old_input_filename = input_filename; + const char *old_input_filename = input_filename; input_filename = ffesymbol_where_filename (fn); lineno = ffesymbol_where_filelinenum (fn); @@ -6262,7 +6261,7 @@ ffecom_gen_sfuncdef_ (ffesymbol s, ffeinfoBasictype bt, ffeinfoKindtype kt) static bool recurse = FALSE; int yes; int old_lineno = lineno; - char *old_input_filename = input_filename; + const char *old_input_filename = input_filename; ffecom_nested_entry_ = s; @@ -7292,7 +7291,7 @@ ffecom_start_progunit_ () && (ffecom_master_bt_ == FFEINFO_basictypeNONE); bool main_program = FALSE; int old_lineno = lineno; - char *old_input_filename = input_filename; + const char *old_input_filename = input_filename; int yes; assert (fn != NULL); @@ -7528,7 +7527,7 @@ ffecom_sym_transform_ (ffesymbol s) ffeglobal g; int yes; int old_lineno = lineno; - char *old_input_filename = input_filename; + const char *old_input_filename = input_filename; /* Must ensure special ASSIGN variables are declared at top of outermost block, else they'll end up in the innermost block when their first @@ -8575,7 +8574,7 @@ ffecom_sym_transform_assign_ (ffesymbol s) tree t; /* Transformed thingy. */ int yes; int old_lineno = lineno; - char *old_input_filename = input_filename; + const char *old_input_filename = input_filename; if (ffesymbol_sfdummyparent (s) == NULL) { @@ -14770,9 +14769,9 @@ init_decl_processing () ffe_init_0 (); } -char * +const char * init_parse (filename) - char *filename; + const char *filename; { /* Open input file. */ if (filename == 0 || !strcmp (filename, "-")) diff --git a/gcc/f/lex.c b/gcc/f/lex.c index a79bab37fee..037063745e1 100644 --- a/gcc/f/lex.c +++ b/gcc/f/lex.c @@ -36,11 +36,8 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #endif #ifdef DWARF_DEBUGGING_INFO -void dwarfout_resume_previous_source_file (register unsigned); -void dwarfout_start_new_source_file (register char *); -void dwarfout_define (register unsigned, register char *); -void dwarfout_undef (register unsigned, register char *); -#endif DWARF_DEBUGGING_INFO +#include "dwarfout.h" +#endif static void ffelex_append_to_token_ (char c); static int ffelex_backslash_ (int c, ffewhereColumnNumber col); @@ -856,7 +853,7 @@ ffelex_cfelex_ (ffelexToken *xtoken, FILE *finput, int c) #if FFECOM_targetCURRENT == FFECOM_targetGCC static void -ffelex_file_pop_ (char *input_filename) +ffelex_file_pop_ (const char *input_filename) { if (input_file_stack->next) { @@ -882,7 +879,7 @@ ffelex_file_pop_ (char *input_filename) #endif #if FFECOM_targetCURRENT == FFECOM_targetGCC static void -ffelex_file_push_ (int old_lineno, char *input_filename) +ffelex_file_push_ (int old_lineno, const char *input_filename) { struct file_stack *p = (struct file_stack *) xmalloc (sizeof (struct file_stack)); @@ -1282,7 +1279,7 @@ ffelex_hash_ (FILE *finput) && (ffelex_token_type (token) == FFELEX_typeNUMBER)) { int old_lineno = lineno; - char *old_input_filename = input_filename; + const char *old_input_filename = input_filename; ffewhereFile wf; /* subtract one, because it is the following line that @@ -1554,7 +1551,7 @@ ffelex_include_ () = ffewhere_line_filelinenum (current_wl); #if FFECOM_targetCURRENT == FFECOM_targetGCC int old_lineno = lineno; - char *old_input_filename = input_filename; + const char *old_input_filename = input_filename; #endif if (card_length != 0) diff --git a/gcc/f/std.c b/gcc/f/std.c index 5811803b656..8610b9c01da 100644 --- a/gcc/f/std.c +++ b/gcc/f/std.c @@ -1500,7 +1500,7 @@ ffestd_exec_end () { #if FFECOM_targetCURRENT == FFECOM_targetGCC int old_lineno = lineno; - char *old_input_filename = input_filename; + const char *old_input_filename = input_filename; #endif ffecom_end_transition (); diff --git a/gcc/f/where.c b/gcc/f/where.c index 931191a12f7..0fafa751b8c 100644 --- a/gcc/f/where.c +++ b/gcc/f/where.c @@ -161,7 +161,7 @@ ffewhere_file_kill (ffewhereFile wf) /* Create file object. */ ffewhereFile -ffewhere_file_new (char *name, size_t length) +ffewhere_file_new (const char *name, size_t length) { ffewhereFile wf; int filepos; diff --git a/gcc/f/where.h b/gcc/f/where.h index 32b3d4b224d..efda13a85ce 100644 --- a/gcc/f/where.h +++ b/gcc/f/where.h @@ -89,7 +89,7 @@ extern struct _ffewhere_line_ ffewhere_unknown_line_; /* Declare functions with prototypes. */ void ffewhere_file_kill (ffewhereFile wf); -ffewhereFile ffewhere_file_new (char *name, size_t length); +ffewhereFile ffewhere_file_new (const char *name, size_t length); void ffewhere_file_set (ffewhereFile wf, bool have_num, ffewhereLineNumber ln); void ffewhere_init_1 (void); char *ffewhere_line_content (ffewhereLine l); diff --git a/gcc/flags.h b/gcc/flags.h index 3ed4a31ff46..9ca120c2020 100644 --- a/gcc/flags.h +++ b/gcc/flags.h @@ -20,7 +20,7 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Name of the input .c file being compiled. */ -extern char *main_input_filename; +extern const char *main_input_filename; enum debug_info_type { diff --git a/gcc/function.c b/gcc/function.c index a0038d17d5d..9fd40cc2379 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -6391,7 +6391,7 @@ use_return_register () void expand_function_end (filename, line, end_bindings) - char *filename; + const char *filename; int line; int end_bindings; { diff --git a/gcc/gcc.c b/gcc/gcc.c index e3952ffa0b9..270e4ed5742 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -146,11 +146,11 @@ static int save_temps_flag; /* The compiler version. */ -static char *compiler_version; +static const char *compiler_version; /* The target version specified with -V */ -static char *spec_version = DEFAULT_TARGET_VERSION; +static const char *spec_version = DEFAULT_TARGET_VERSION; /* The target machine specified with -b. */ @@ -160,9 +160,9 @@ static const char *spec_machine = DEFAULT_TARGET_MACHINE; When -b is used, the value comes from the `specs' file. */ #ifdef CROSS_COMPILE -static char *cross_compile = "1"; +static const char *cross_compile = "1"; #else -static char *cross_compile = "0"; +static const char *cross_compile = "0"; #endif /* The number of errors that have occurred; the link phase will not be @@ -493,29 +493,29 @@ proper position among the other output files. */ #define LINKER_NAME "collect2" #endif -static char *cpp_spec = CPP_SPEC; -static char *cpp_predefines = CPP_PREDEFINES; -static char *cc1_spec = CC1_SPEC; -static char *cc1plus_spec = CC1PLUS_SPEC; -static char *signed_char_spec = SIGNED_CHAR_SPEC; -static char *asm_spec = ASM_SPEC; -static char *asm_final_spec = ASM_FINAL_SPEC; -static char *link_spec = LINK_SPEC; -static char *lib_spec = LIB_SPEC; -static char *libgcc_spec = LIBGCC_SPEC; -static char *endfile_spec = ENDFILE_SPEC; -static char *startfile_spec = STARTFILE_SPEC; -static char *switches_need_spaces = SWITCHES_NEED_SPACES; -static char *linker_name_spec = LINKER_NAME; +static const char *cpp_spec = CPP_SPEC; +static const char *cpp_predefines = CPP_PREDEFINES; +static const char *cc1_spec = CC1_SPEC; +static const char *cc1plus_spec = CC1PLUS_SPEC; +static const char *signed_char_spec = SIGNED_CHAR_SPEC; +static const char *asm_spec = ASM_SPEC; +static const char *asm_final_spec = ASM_FINAL_SPEC; +static const char *link_spec = LINK_SPEC; +static const char *lib_spec = LIB_SPEC; +static const char *libgcc_spec = LIBGCC_SPEC; +static const char *endfile_spec = ENDFILE_SPEC; +static const char *startfile_spec = STARTFILE_SPEC; +static const char *switches_need_spaces = SWITCHES_NEED_SPACES; +static const char *linker_name_spec = LINKER_NAME; /* Some compilers have limits on line lengths, and the multilib_select and/or multilib_matches strings can be very long, so we build them at run time. */ static struct obstack multilib_obstack; -static char *multilib_select; -static char *multilib_matches; -static char *multilib_defaults; -static char *multilib_exclusions; +static const char *multilib_select; +static const char *multilib_matches; +static const char *multilib_defaults; +static const char *multilib_exclusions; #include "multilib.h" /* Check whether a particular argument is a default argument. */ @@ -1119,12 +1119,12 @@ struct spec_list { /* The following 2 fields must be first */ /* to allow EXTRA_SPECS to be initialized */ - char *name; /* name of the spec. */ - char *ptr; /* available ptr if no static pointer */ + const char *name; /* name of the spec. */ + const char *ptr; /* available ptr if no static pointer */ /* The following fields are not initialized */ /* by EXTRA_SPECS */ - char **ptr_spec; /* pointer to the spec itself. */ + const char **ptr_spec; /* pointer to the spec itself. */ struct spec_list *next; /* Next spec in linked list. */ int name_len; /* length of the name */ int alloc_p; /* whether string was allocated */ @@ -1164,8 +1164,8 @@ static struct spec_list static_specs[] = That is all that the EXTRA_SPECS macro gives us. */ struct spec_list_1 { - char *name; - char *ptr; + const char *name; + const char *ptr; }; static struct spec_list_1 extra_specs_1[] = { EXTRA_SPECS }; @@ -1230,7 +1230,7 @@ set_spec (name, spec) const char *spec; { struct spec_list *sl; - char *old_spec; + const char *old_spec; int name_len = strlen (name); int i; @@ -1278,7 +1278,7 @@ set_spec (name, spec) /* Free the old spec. */ if (old_spec && sl->alloc_p) - free (old_spec); + free ((PTR) old_spec); sl->alloc_p = 1; } @@ -1413,7 +1413,7 @@ static const char *tooldir_prefix; #ifndef STANDARD_BINDIR_PREFIX #define STANDARD_BINDIR_PREFIX "/usr/local/bin" #endif -static char *standard_bindir_prefix = STANDARD_BINDIR_PREFIX; +static const char *standard_bindir_prefix = STANDARD_BINDIR_PREFIX; /* Subdirectory to use for locating libraries. Set by set_multilib_dir based on the compilation options. */ @@ -1657,7 +1657,7 @@ read_specs (filename, main_p) set_spec (p2, *(sl->ptr_spec)); if (sl->alloc_p) - free (*(sl->ptr_spec)); + free ((PTR) *(sl->ptr_spec)); *(sl->ptr_spec) = ""; sl->alloc_p = 0; @@ -4291,7 +4291,7 @@ do_spec_1 (spec, inswitch, soft_matched_part) { char *x = (char *) alloca (strlen (cpp_predefines) + 1); char *buf = x; - char *y; + const char *y; /* Copy all of the -D options in CPP_PREDEFINES into BUF. */ y = cpp_predefines; @@ -4321,7 +4321,7 @@ do_spec_1 (spec, inswitch, soft_matched_part) { char *x = (char *) alloca (strlen (cpp_predefines) * 4 + 1); char *buf = x; - char *y; + const char *y; /* Copy all of CPP_PREDEFINES into BUF, but force them all into the reserved name space if they @@ -4567,8 +4567,8 @@ do_spec_1 (spec, inswitch, soft_matched_part) case 'v': { int c1 = *p++; /* Select first or second version number. */ - char *v = compiler_version; - char *q; + const char *v = compiler_version; + const char *q; static const char zeroc = '0'; /* The format of the version string is @@ -5172,7 +5172,7 @@ main (argc, argv) /* Build multilib_select, et. al from the separate lines that make up each multilib selection. */ { - char **q = multilib_raw; + const char *const *q = multilib_raw; int need_space; obstack_init (&multilib_obstack); @@ -5948,8 +5948,8 @@ used_arg (p, len) { struct mswitchstr { - char *str; - char *replace; + const char *str; + const char *replace; int len; int rep_len; }; @@ -5961,7 +5961,7 @@ used_arg (p, len) if (!mswitches) { struct mswitchstr *matches; - char *q; + const char *q; int cnt = 0; /* Break multilib_matches into the component strings of string and replacement @@ -5982,7 +5982,6 @@ used_arg (p, len) abort (); q++; } - *q = '\0'; matches[i].len = q - matches[i].str; matches[i].replace = ++q; @@ -5994,9 +5993,7 @@ used_arg (p, len) } matches[i].rep_len = q - matches[i].replace; i++; - if (*q == ';') - *q++ = '\0'; - else + if (*q != ';') break; } @@ -6011,7 +6008,8 @@ used_arg (p, len) { int xlen = strlen (switches[i].part1); for (j = 0; j < cnt; j++) - if (xlen == matches[j].len && ! strcmp (switches[i].part1, matches[j].str)) + if (xlen == matches[j].len + && ! strncmp (switches[i].part1, matches[j].str, xlen)) { mswitches[n_mswitches].str = matches[j].replace; mswitches[n_mswitches].len = matches[j].rep_len; @@ -6035,7 +6033,7 @@ default_arg (p, len) const char *p; int len; { - char *start, *end; + const char *start, *end; for (start = multilib_defaults; *start != '\0'; start = end+1) { @@ -6072,9 +6070,9 @@ default_arg (p, len) static void set_multilib_dir () { - char *p; + const char *p; unsigned int this_path_len; - char *this_path, *this_arg; + const char *this_path, *this_arg; int not_arg; int ok; @@ -6229,8 +6227,8 @@ set_multilib_dir () static void print_multilib_info () { - char *p = multilib_select; - char *last_path = 0, *this_path; + const char *p = multilib_select; + const char *last_path = 0, *this_path; int skip; unsigned int last_path_len = 0; @@ -6257,8 +6255,8 @@ print_multilib_info () with the '!' in either list. If any of the exclusion rules match all of its options with the select rule, we skip it. */ { - char *e = multilib_exclusions; - char *this_arg; + const char *e = multilib_exclusions; + const char *this_arg; while (*e != '\0') { @@ -6273,7 +6271,7 @@ print_multilib_info () /* Check the arguments. */ while (*e != ';') { - char *q; + const char *q; int mp = 0; if (*e == '\0') @@ -6297,7 +6295,7 @@ print_multilib_info () q = p + 1; while (*q != ';') { - char *arg; + const char *arg; int len = e - this_arg; if (*q == '\0') @@ -6356,12 +6354,12 @@ print_multilib_info () this one which does not require that default argument. */ if (! skip) { - char *q; + const char *q; q = p + 1; while (*q != ';') { - char *arg; + const char *arg; if (*q == '\0') abort (); @@ -6392,7 +6390,7 @@ print_multilib_info () if (! skip) { - char *p1; + const char *p1; for (p1 = last_path; p1 < p; p1++) putchar (*p1); @@ -6437,7 +6435,7 @@ print_multilib_info () if (multilib_extra && *multilib_extra) { int print_at = TRUE; - char *q; + const char *q; for (q = multilib_extra; *q != '\0'; q++) { diff --git a/gcc/genmultilib b/gcc/genmultilib index 6610b7bd032..4ff64bb2809 100644 --- a/gcc/genmultilib +++ b/gcc/genmultilib @@ -107,7 +107,7 @@ exceptions=$4 extra=$5 exclusions=$6 -echo "static char *multilib_raw[] = {" +echo "static const char *const multilib_raw[] = {" # What we want to do is select all combinations of the sets in # options. Each combination which includes a set of mutually @@ -285,7 +285,7 @@ echo "};" # Note, the format of the matches is reversed compared # to what we want, so switch them around. echo "" -echo "static char *multilib_matches_raw[] = {" +echo "static const char *const multilib_matches_raw[] = {" for match in ${matches}; do l=`echo ${match} | sed -e 's/=.*$//' -e 's/?/=/g'` r=`echo ${match} | sed -e 's/^.*=//' -e 's/?/=/g'` @@ -301,11 +301,11 @@ echo "};" # Output the default options now echo "" -echo "static char *multilib_extra = \"${extra}\";" +echo "static const char *multilib_extra = \"${extra}\";" # Output the exclusion rules now echo "" -echo "static char *multilib_exclusions_raw[] = {" +echo "static const char *const multilib_exclusions_raw[] = {" for rule in ${exclusions}; do s=`echo ${rule} | sed -e 's,/, ,g'` echo "\"${s};\"," diff --git a/gcc/genrecog.c b/gcc/genrecog.c index 3cc438ca49b..5d8bb593589 100644 --- a/gcc/genrecog.c +++ b/gcc/genrecog.c @@ -2281,10 +2281,11 @@ make_insn_sequence (insn, type) struct decision *last; struct decision_test *test, **place; struct decision_head head; - char *c_test_pos = ""; + char c_test_pos[2]; record_insn_name (next_insn_code, (type == RECOG ? XSTR (insn, 0) : NULL)); + c_test_pos[0] = '\0'; if (type == PEEPHOLE2) { int i, j; @@ -2307,7 +2308,6 @@ make_insn_sequence (insn, type) } XVECLEN (x, 0) = j; - c_test_pos = alloca (2); c_test_pos[0] = 'A' + j - 1; c_test_pos[1] = '\0'; } @@ -2473,8 +2473,6 @@ main (argc, argv) { rtx desc; struct decision_head recog_tree, split_tree, peephole2_tree, h; - FILE *infile; - register int c; progname = "genrecog"; diff --git a/gcc/input.h b/gcc/input.h index 3aee605f9b9..32d49b9ae8e 100644 --- a/gcc/input.h +++ b/gcc/input.h @@ -20,10 +20,10 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Source file current line is coming from. */ -extern char *input_filename; +extern const char *input_filename; /* Top-level source file. */ -extern char *main_input_filename; +extern const char *main_input_filename; /* Line number in current source file. */ extern int lineno; @@ -33,7 +33,7 @@ extern FILE *finput; struct file_stack { - char *name; + const char *name; struct file_stack *next; int line; int indent_level; @@ -46,5 +46,5 @@ extern struct file_stack *input_file_stack; /* Incremented on each change to input_file_stack. */ extern int input_file_stack_tick; -extern void push_srcloc PARAMS ((char *name, int line)); +extern void push_srcloc PARAMS ((const char *name, int line)); extern void pop_srcloc PARAMS ((void)); diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 0fc8b70c314..2f7aff924a0 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,26 @@ +2000-05-09 Zack Weinberg <zack@wolery.cumb.org> + + * check_init.c (check_init): Constify local char *. + * class.c (push_class): Constify local char *. + * java_tree.h: Update prototypes. + * jcf-io.c (open_class): Constify filename parameter and + return value. + (find_class): Remove redundant string copy. Cast return from + open_class. + * jcf-parse.c (read_class, parse_class_file, yyparse): + Constify local char *. + * jcf-write.c (generate_bytecode_insns, generate_classfile): + Constify local char *. + * jcf.h (JCF): Constify filename and classname. + (JCF_FINISH): Cast args to FREE to char * when appropriate. + * lang.c (init_parse): Constify parameter and return value. + * lex.c (java_get_line_col): Constify filename parameter. + * parse.h: Constify parser_ctxt.filename. Update prototypes. + * parse.y (java_parser_context_suspend, + issue_warning_error_from_context, safe_layout_class): Constify + local char *. + * parse.c: Regenerate. + 2000-05-08 Tom Tromey <tromey@cygnus.com> * expr.c (build_jni_stub): Cache the result of diff --git a/gcc/java/check-init.c b/gcc/java/check-init.c index fed19a798a9..24be236568a 100644 --- a/gcc/java/check-init.c +++ b/gcc/java/check-init.c @@ -711,7 +711,7 @@ check_init (exp, before) case EXPR_WITH_FILE_LOCATION: { - char *saved_input_filename = input_filename; + const char *saved_input_filename = input_filename; tree saved_wfl = wfl; tree body = EXPR_WFL_NODE (exp); int saved_lineno = lineno; diff --git a/gcc/java/class.c b/gcc/java/class.c index ca29eb9815f..21232e7f2d2 100644 --- a/gcc/java/class.c +++ b/gcc/java/class.c @@ -320,7 +320,7 @@ push_class (class_type, class_name) tree class_type, class_name; { tree decl, signature; - char *save_input_filename = input_filename; + const char *save_input_filename = input_filename; int save_lineno = lineno; tree source_name = identifier_subst (class_name, "", '.', '/', ".java"); push_obstacks (&permanent_obstack, &permanent_obstack); diff --git a/gcc/java/java-tree.h b/gcc/java/java-tree.h index 2820f5d3c4e..e0b594ec255 100644 --- a/gcc/java/java-tree.h +++ b/gcc/java/java-tree.h @@ -758,9 +758,11 @@ extern void jcf_print_char PARAMS ((FILE *, int)); extern void jcf_print_utf8_replace PARAMS ((FILE *, const unsigned char *, int, int, int)); # if JCF_USE_STDIO -extern char* open_class PARAMS ((char *, struct JCF *, FILE *, const char *)); +extern const char* open_class PARAMS ((const char *, struct JCF *, + FILE *, const char *)); # else -extern char* open_class PARAMS ((char *, struct JCF *, int, const char *)); +extern const char* open_class PARAMS ((const char *, struct JCF *, + int, const char *)); # endif /* JCF_USE_STDIO */ #endif void java_debug_context PARAMS ((void)); diff --git a/gcc/java/jcf-io.c b/gcc/java/jcf-io.c index 38ed9082c37..b4f4e2eecd4 100644 --- a/gcc/java/jcf-io.c +++ b/gcc/java/jcf-io.c @@ -183,9 +183,10 @@ DEFUN(open_in_zip, (jcf, zipfile, zipmember, is_system), } #if JCF_USE_STDIO -char* +const char * DEFUN(open_class, (filename, jcf, stream, dep_name), - char *filename AND JCF *jcf AND FILE* stream AND const char *dep_name) + const char *filename AND JCF *jcf AND FILE* stream + AND const char *dep_name) { if (jcf) { @@ -204,9 +205,9 @@ DEFUN(open_class, (filename, jcf, stream, dep_name), return filename; } #else -char* +const char * DEFUN(open_class, (filename, jcf, fd, dep_name), - char *filename AND JCF *jcf AND int fd AND const char *dep_name) + const char *filename AND JCF *jcf AND int fd AND const char *dep_name) { if (jcf) { @@ -441,9 +442,7 @@ DEFUN(find_class, (classname, classname_length, jcf, source_ok), close (fd); /* We use STDIO for source file */ } else - buffer = open_class (buffer, jcf, fd, dep_file); - jcf->classname = (char *) ALLOC (classname_length + 1); - strncpy (jcf->classname, classname, classname_length + 1); + buffer = (char *) open_class (buffer, jcf, fd, dep_file); jcf->classname = xstrdup (classname); return buffer; #endif diff --git a/gcc/java/jcf-parse.c b/gcc/java/jcf-parse.c index 6d4f2462c6d..cd0f283f81d 100644 --- a/gcc/java/jcf-parse.c +++ b/gcc/java/jcf-parse.c @@ -481,7 +481,7 @@ read_class (name) { JCF this_jcf, *jcf; tree save_current_class = current_class; - char *save_input_filename = input_filename; + const char *save_input_filename = input_filename; JCF *save_current_jcf = current_jcf; long saved_pos = 0; if (current_jcf->read_state) @@ -665,7 +665,7 @@ static void parse_class_file () { tree method; - char *save_input_filename = input_filename; + const char *save_input_filename = input_filename; int save_lineno = lineno; java_layout_seen_class_methods (); @@ -841,7 +841,7 @@ yyparse () if (twice) { - char *saved_input_filename = input_filename; + const char *saved_input_filename = input_filename; input_filename = value; warning ("source file seen twice on command line and will be compiled only once."); input_filename = saved_input_filename; diff --git a/gcc/java/jcf-write.c b/gcc/java/jcf-write.c index 61ff0fdbf4d..3b93e511c8d 100644 --- a/gcc/java/jcf-write.c +++ b/gcc/java/jcf-write.c @@ -1479,7 +1479,7 @@ generate_bytecode_insns (exp, target, state) break; case EXPR_WITH_FILE_LOCATION: { - char *saved_input_filename = input_filename; + const char *saved_input_filename = input_filename; tree body = EXPR_WFL_NODE (exp); int saved_lineno = lineno; if (body == empty_stmt_node) @@ -2796,7 +2796,7 @@ generate_classfile (clas, state) struct jcf_partial *state; { struct chunk *cpool_chunk; - char *source_file; + const char *source_file, *s; char *ptr; int i; char *fields_count_ptr; @@ -3064,13 +3064,13 @@ generate_classfile (clas, state) ptr = methods_count_ptr; UNSAFE_PUT2 (methods_count); source_file = DECL_SOURCE_FILE (TYPE_NAME (clas)); - for (ptr = source_file; ; ptr++) + for (s = source_file; ; s++) { char ch = *ptr; if (ch == '\0') break; if (ch == '/' || ch == '\\') - source_file = ptr+1; + source_file = s+1; } ptr = append_chunk (NULL, 10, state); diff --git a/gcc/java/jcf.h b/gcc/java/jcf.h index 9bd8a7cd0c0..0fe48142c75 100644 --- a/gcc/java/jcf.h +++ b/gcc/java/jcf.h @@ -95,8 +95,8 @@ typedef struct JCF { long zip_offset; jcf_filbuf_t filbuf; void *read_state; - char *filename; - char *classname; + const char *filename; + const char *classname; void *zipd; /* Directory entry where it was found */ JCF_u2 access_flags, this_class, super_class; CPool cpool; @@ -144,8 +144,8 @@ typedef struct JCF { #define JCF_FINISH(JCF) { \ CPOOL_FINISH(&(JCF)->cpool); \ if ((JCF)->buffer) FREE ((JCF)->buffer); \ - if ((JCF)->filename) FREE ((JCF)->filename); \ - if ((JCF)->classname) FREE ((JCF)->classname); } + if ((JCF)->filename) FREE ((char *) (JCF)->filename); \ + if ((JCF)->classname) FREE ((char *) (JCF)->classname); } #define CPOOL_INIT(CPOOL) \ ((CPOOL)->capacity = 0, (CPOOL)->count = 0, (CPOOL)->tags = 0, (CPOOL)->data = 0) diff --git a/gcc/java/lang.c b/gcc/java/lang.c index f8c37f2ad81..4bef553a95a 100644 --- a/gcc/java/lang.c +++ b/gcc/java/lang.c @@ -303,9 +303,9 @@ lang_decode_option (argc, argv) } FILE *finput; -char * +const char * init_parse (filename) - char *filename; + const char *filename; { /* Open input file. */ diff --git a/gcc/java/lex.c b/gcc/java/lex.c index c5de7ed66a0..c1d4c03c8d7 100644 --- a/gcc/java/lex.c +++ b/gcc/java/lex.c @@ -1363,7 +1363,7 @@ java_is_eol (fp, c) char * java_get_line_col (filename, line, col) - char *filename ATTRIBUTE_UNUSED; + const char *filename ATTRIBUTE_UNUSED; int line ATTRIBUTE_UNUSED, col ATTRIBUTE_UNUSED; { #ifdef JC1_LITE diff --git a/gcc/java/parse.c b/gcc/java/parse.c index a362a5dab30..fc7a1533712 100644 --- a/gcc/java/parse.c +++ b/gcc/java/parse.c @@ -1,7 +1,6 @@ /* A Bison parser, made from ./parse.y - by GNU Bison version 1.25 - */ + by GNU Bison version 1.28 */ #define YYBISON 1 /* Identify Bison output. */ @@ -12,113 +11,113 @@ #define yychar java_char #define yydebug java_debug #define yynerrs java_nerrs -#define PLUS_TK 258 -#define MINUS_TK 259 -#define MULT_TK 260 -#define DIV_TK 261 -#define REM_TK 262 -#define LS_TK 263 -#define SRS_TK 264 -#define ZRS_TK 265 -#define AND_TK 266 -#define XOR_TK 267 -#define OR_TK 268 -#define BOOL_AND_TK 269 -#define BOOL_OR_TK 270 -#define EQ_TK 271 -#define NEQ_TK 272 -#define GT_TK 273 -#define GTE_TK 274 -#define LT_TK 275 -#define LTE_TK 276 -#define PLUS_ASSIGN_TK 277 -#define MINUS_ASSIGN_TK 278 -#define MULT_ASSIGN_TK 279 -#define DIV_ASSIGN_TK 280 -#define REM_ASSIGN_TK 281 -#define LS_ASSIGN_TK 282 -#define SRS_ASSIGN_TK 283 -#define ZRS_ASSIGN_TK 284 -#define AND_ASSIGN_TK 285 -#define XOR_ASSIGN_TK 286 -#define OR_ASSIGN_TK 287 -#define PUBLIC_TK 288 -#define PRIVATE_TK 289 -#define PROTECTED_TK 290 -#define STATIC_TK 291 -#define FINAL_TK 292 -#define SYNCHRONIZED_TK 293 -#define VOLATILE_TK 294 -#define TRANSIENT_TK 295 -#define NATIVE_TK 296 -#define PAD_TK 297 -#define ABSTRACT_TK 298 -#define MODIFIER_TK 299 -#define DECR_TK 300 -#define INCR_TK 301 -#define DEFAULT_TK 302 -#define IF_TK 303 -#define THROW_TK 304 -#define BOOLEAN_TK 305 -#define DO_TK 306 -#define IMPLEMENTS_TK 307 -#define THROWS_TK 308 -#define BREAK_TK 309 -#define IMPORT_TK 310 -#define ELSE_TK 311 -#define INSTANCEOF_TK 312 -#define RETURN_TK 313 -#define VOID_TK 314 -#define CATCH_TK 315 -#define INTERFACE_TK 316 -#define CASE_TK 317 -#define EXTENDS_TK 318 -#define FINALLY_TK 319 -#define SUPER_TK 320 -#define WHILE_TK 321 -#define CLASS_TK 322 -#define SWITCH_TK 323 -#define CONST_TK 324 -#define TRY_TK 325 -#define FOR_TK 326 -#define NEW_TK 327 -#define CONTINUE_TK 328 -#define GOTO_TK 329 -#define PACKAGE_TK 330 -#define THIS_TK 331 -#define BYTE_TK 332 -#define SHORT_TK 333 -#define INT_TK 334 -#define LONG_TK 335 -#define CHAR_TK 336 -#define INTEGRAL_TK 337 -#define FLOAT_TK 338 -#define DOUBLE_TK 339 -#define FP_TK 340 -#define ID_TK 341 -#define REL_QM_TK 342 -#define REL_CL_TK 343 -#define NOT_TK 344 -#define NEG_TK 345 -#define ASSIGN_ANY_TK 346 -#define ASSIGN_TK 347 -#define OP_TK 348 -#define CP_TK 349 -#define OCB_TK 350 -#define CCB_TK 351 -#define OSB_TK 352 -#define CSB_TK 353 -#define SC_TK 354 -#define C_TK 355 -#define DOT_TK 356 -#define STRING_LIT_TK 357 -#define CHAR_LIT_TK 358 -#define INT_LIT_TK 359 -#define FP_LIT_TK 360 -#define TRUE_TK 361 -#define FALSE_TK 362 -#define BOOL_LIT_TK 363 -#define NULL_TK 364 +#define PLUS_TK 257 +#define MINUS_TK 258 +#define MULT_TK 259 +#define DIV_TK 260 +#define REM_TK 261 +#define LS_TK 262 +#define SRS_TK 263 +#define ZRS_TK 264 +#define AND_TK 265 +#define XOR_TK 266 +#define OR_TK 267 +#define BOOL_AND_TK 268 +#define BOOL_OR_TK 269 +#define EQ_TK 270 +#define NEQ_TK 271 +#define GT_TK 272 +#define GTE_TK 273 +#define LT_TK 274 +#define LTE_TK 275 +#define PLUS_ASSIGN_TK 276 +#define MINUS_ASSIGN_TK 277 +#define MULT_ASSIGN_TK 278 +#define DIV_ASSIGN_TK 279 +#define REM_ASSIGN_TK 280 +#define LS_ASSIGN_TK 281 +#define SRS_ASSIGN_TK 282 +#define ZRS_ASSIGN_TK 283 +#define AND_ASSIGN_TK 284 +#define XOR_ASSIGN_TK 285 +#define OR_ASSIGN_TK 286 +#define PUBLIC_TK 287 +#define PRIVATE_TK 288 +#define PROTECTED_TK 289 +#define STATIC_TK 290 +#define FINAL_TK 291 +#define SYNCHRONIZED_TK 292 +#define VOLATILE_TK 293 +#define TRANSIENT_TK 294 +#define NATIVE_TK 295 +#define PAD_TK 296 +#define ABSTRACT_TK 297 +#define MODIFIER_TK 298 +#define DECR_TK 299 +#define INCR_TK 300 +#define DEFAULT_TK 301 +#define IF_TK 302 +#define THROW_TK 303 +#define BOOLEAN_TK 304 +#define DO_TK 305 +#define IMPLEMENTS_TK 306 +#define THROWS_TK 307 +#define BREAK_TK 308 +#define IMPORT_TK 309 +#define ELSE_TK 310 +#define INSTANCEOF_TK 311 +#define RETURN_TK 312 +#define VOID_TK 313 +#define CATCH_TK 314 +#define INTERFACE_TK 315 +#define CASE_TK 316 +#define EXTENDS_TK 317 +#define FINALLY_TK 318 +#define SUPER_TK 319 +#define WHILE_TK 320 +#define CLASS_TK 321 +#define SWITCH_TK 322 +#define CONST_TK 323 +#define TRY_TK 324 +#define FOR_TK 325 +#define NEW_TK 326 +#define CONTINUE_TK 327 +#define GOTO_TK 328 +#define PACKAGE_TK 329 +#define THIS_TK 330 +#define BYTE_TK 331 +#define SHORT_TK 332 +#define INT_TK 333 +#define LONG_TK 334 +#define CHAR_TK 335 +#define INTEGRAL_TK 336 +#define FLOAT_TK 337 +#define DOUBLE_TK 338 +#define FP_TK 339 +#define ID_TK 340 +#define REL_QM_TK 341 +#define REL_CL_TK 342 +#define NOT_TK 343 +#define NEG_TK 344 +#define ASSIGN_ANY_TK 345 +#define ASSIGN_TK 346 +#define OP_TK 347 +#define CP_TK 348 +#define OCB_TK 349 +#define CCB_TK 350 +#define OSB_TK 351 +#define CSB_TK 352 +#define SC_TK 353 +#define C_TK 354 +#define DOT_TK 355 +#define STRING_LIT_TK 356 +#define CHAR_LIT_TK 357 +#define INT_LIT_TK 358 +#define FP_LIT_TK 359 +#define TRUE_TK 360 +#define FALSE_TK 361 +#define BOOL_LIT_TK 362 +#define NULL_TK 363 #line 48 "./parse.y" @@ -517,7 +516,7 @@ typedef union { #define YYFLAG -32768 #define YYNTBASE 110 -#define YYTRANSLATE(x) ((unsigned)(x) <= 364 ? yytranslate[x] : 272) +#define YYTRANSLATE(x) ((unsigned)(x) <= 363 ? yytranslate[x] : 272) static const char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -545,18 +544,18 @@ static const char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109 + 2, 2, 2, 2, 2, 1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109 }; #if YYDEBUG != 0 @@ -2388,6 +2387,7 @@ static const short yycheck[] = { 3, /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/share/misc/bison.simple" +/* This file comes from bison-1.28. */ /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. @@ -2404,46 +2404,66 @@ static const short yycheck[] = { 3, You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ /* As a special exception, when this file is copied by Bison into a Bison output file, you may use that output file without restriction. This special exception was added by the Free Software Foundation in version 1.24 of Bison. */ -#ifndef alloca +/* This is the parser code that is written into each bison parser + when the %semantic_parser declaration is not specified in the grammar. + It was written by Richard Stallman by simplifying the hairy parser + used when %semantic_parser is specified. */ + +#ifndef YYSTACK_USE_ALLOCA +#ifdef alloca +#define YYSTACK_USE_ALLOCA +#else /* alloca not defined */ #ifdef __GNUC__ +#define YYSTACK_USE_ALLOCA #define alloca __builtin_alloca #else /* not GNU C. */ -#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) +#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) +#define YYSTACK_USE_ALLOCA #include <alloca.h> #else /* not sparc */ -#if defined (MSDOS) && !defined (__TURBOC__) +/* We think this test detects Watcom and Microsoft C. */ +/* This used to test MSDOS, but that is a bad idea + since that symbol is in the user namespace. */ +#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) +#if 0 /* No need for malloc.h, which pollutes the namespace; + instead, just don't use alloca. */ #include <malloc.h> +#endif #else /* not MSDOS, or __TURBOC__ */ #if defined(_AIX) -#include <malloc.h> +/* I don't know what this was needed for, but it pollutes the namespace. + So I turned it off. rms, 2 May 1997. */ +/* #include <malloc.h> */ #pragma alloca -#else /* not MSDOS, __TURBOC__, or _AIX */ -#ifdef __hpux -#ifdef __cplusplus -extern "C" { -void *alloca (unsigned int); -}; -#else /* not __cplusplus */ -void *alloca (); -#endif /* not __cplusplus */ +#define YYSTACK_USE_ALLOCA +#else /* not MSDOS, or __TURBOC__, or _AIX */ +#if 0 +#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, + and on HPUX 10. Eventually we can turn this on. */ +#define YYSTACK_USE_ALLOCA +#define alloca __builtin_alloca #endif /* __hpux */ +#endif #endif /* not _AIX */ #endif /* not MSDOS, or __TURBOC__ */ -#endif /* not sparc. */ -#endif /* not GNU C. */ -#endif /* alloca not defined. */ +#endif /* not sparc */ +#endif /* not GNU C */ +#endif /* alloca not defined */ +#endif /* YYSTACK_USE_ALLOCA not defined */ -/* This is the parser code that is written into each bison parser - when the %semantic_parser declaration is not specified in the grammar. - It was written by Richard Stallman by simplifying the hairy parser - used when %semantic_parser is specified. */ +#ifdef YYSTACK_USE_ALLOCA +#define YYSTACK_ALLOC alloca +#else +#define YYSTACK_ALLOC malloc +#endif /* Note: there must be only one dollar sign in this file. It is replaced by the list of actions, each action @@ -2453,8 +2473,8 @@ void *alloca (); #define yyclearin (yychar = YYEMPTY) #define YYEMPTY -2 #define YYEOF 0 -#define YYACCEPT return(0) -#define YYABORT return(1) +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab #define YYERROR goto yyerrlab1 /* Like YYERROR except do call yyerror. This remains here temporarily to ease the @@ -2535,14 +2555,12 @@ int yydebug; /* nonzero means print parse trace */ #ifndef YYMAXDEPTH #define YYMAXDEPTH 10000 #endif - -/* Prevent warning if -Wstrict-prototypes. */ -#ifdef __GNUC__ -#ifndef YYPARSE_PARAM -int yyparse (void); -#endif -#endif +/* Define __yy_memcpy. Note that the size argument + should be passed with type unsigned int, because that is what the non-GCC + definitions require. With GCC, __builtin_memcpy takes an arg + of type size_t, but it can handle unsigned int. */ + #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ #define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) #else /* not GNU C or C++ */ @@ -2554,7 +2572,7 @@ static void __yy_memcpy (to, from, count) char *to; char *from; - int count; + unsigned int count; { register char *f = from; register char *t = to; @@ -2569,10 +2587,10 @@ __yy_memcpy (to, from, count) /* This is the most reliable way to avoid incompatibilities in available built-in functions on various systems. */ static void -__yy_memcpy (char *to, char *from, int count) +__yy_memcpy (char *to, char *from, unsigned int count) { - register char *f = from; register char *t = to; + register char *f = from; register int i = count; while (i-- > 0) @@ -2582,7 +2600,7 @@ __yy_memcpy (char *to, char *from, int count) #endif #endif -#line 196 "/usr/share/misc/bison.simple" +#line 217 "/usr/share/misc/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. @@ -2603,6 +2621,15 @@ __yy_memcpy (char *to, char *from, int count) #define YYPARSE_PARAM_DECL #endif /* not YYPARSE_PARAM */ +/* Prevent warning if -Wstrict-prototypes. */ +#ifdef __GNUC__ +#ifdef YYPARSE_PARAM +int yyparse (void *); +#else +int yyparse (void); +#endif +#endif + int yyparse(YYPARSE_PARAM_ARG) YYPARSE_PARAM_DECL @@ -2631,6 +2658,7 @@ yyparse(YYPARSE_PARAM_ARG) #endif int yystacksize = YYINITDEPTH; + int yyfree_stacks = 0; #ifdef YYPURE int yychar; @@ -2715,18 +2743,32 @@ yynewstate: if (yystacksize >= YYMAXDEPTH) { yyerror("parser stack overflow"); + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } return 2; } yystacksize *= 2; if (yystacksize > YYMAXDEPTH) yystacksize = YYMAXDEPTH; - yyss = (short *) alloca (yystacksize * sizeof (*yyssp)); - __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp)); - yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp)); - __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp)); +#ifndef YYSTACK_USE_ALLOCA + yyfree_stacks = 1; +#endif + yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); + __yy_memcpy ((char *)yyss, (char *)yyss1, + size * (unsigned int) sizeof (*yyssp)); + yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); + __yy_memcpy ((char *)yyvs, (char *)yyvs1, + size * (unsigned int) sizeof (*yyvsp)); #ifdef YYLSP_NEEDED - yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp)); - __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp)); + yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); + __yy_memcpy ((char *)yyls, (char *)yyls1, + size * (unsigned int) sizeof (*yylsp)); #endif #endif /* no yyoverflow */ @@ -4978,7 +5020,7 @@ case 503: break;} } /* the action file gets copied in in place of this dollarsign */ -#line 498 "/usr/share/misc/bison.simple" +#line 543 "/usr/share/misc/bison.simple" yyvsp -= yylen; yyssp -= yylen; @@ -5173,6 +5215,30 @@ yyerrhandle: yystate = yyn; goto yynewstate; + + yyacceptlab: + /* YYACCEPT comes here. */ + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 0; + + yyabortlab: + /* YYABORT comes here. */ + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 1; } #line 2546 "./parse.y" @@ -5310,7 +5376,7 @@ static void java_parser_context_suspend () { /* This makes debugging through java_debug_context easier */ - static char *name = "<inner buffer context>"; + static const char *name = "<inner buffer context>"; /* Duplicate the previous context, use it to save the globals we're interested in */ @@ -5597,7 +5663,7 @@ issue_warning_error_from_context (cl, msg, ap) const char *msg; va_list ap; { - char *saved, *saved_input_filename; + const char *saved, *saved_input_filename; char buffer [4096]; vsprintf (buffer, msg, ap); force_error = 1; @@ -7791,7 +7857,7 @@ safe_layout_class (class) tree class; { tree save_current_class = current_class; - char *save_input_filename = input_filename; + const char *save_input_filename = input_filename; int save_lineno = lineno; push_obstacks (&permanent_obstack, &permanent_obstack); diff --git a/gcc/java/parse.h b/gcc/java/parse.h index a9617b3c6c0..4ffee796e41 100644 --- a/gcc/java/parse.h +++ b/gcc/java/parse.h @@ -705,7 +705,7 @@ typedef struct _jdeplist { /* Parser context data structure. */ struct parser_ctxt { - char *filename; /* Current filename */ + const char *filename; /* Current filename */ FILE *finput; /* Current file input stream */ struct parser_ctxt *next; @@ -898,7 +898,7 @@ void java_expand_switch PARAMS ((tree)); int java_report_errors PARAMS ((void)); extern tree do_resolve_class PARAMS ((tree, tree, tree, tree)); #endif -char *java_get_line_col PARAMS ((char *, int, int)); +char *java_get_line_col PARAMS ((const char *, int, int)); extern void reset_report PARAMS ((void)); /* Always in use, no matter what you compile */ diff --git a/gcc/java/parse.y b/gcc/java/parse.y index 3f5d7cebf21..08e1a0ee5c7 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -2678,7 +2678,7 @@ static void java_parser_context_suspend () { /* This makes debugging through java_debug_context easier */ - static char *name = "<inner buffer context>"; + static const char *name = "<inner buffer context>"; /* Duplicate the previous context, use it to save the globals we're interested in */ @@ -2965,7 +2965,7 @@ issue_warning_error_from_context (cl, msg, ap) const char *msg; va_list ap; { - char *saved, *saved_input_filename; + const char *saved, *saved_input_filename; char buffer [4096]; vsprintf (buffer, msg, ap); force_error = 1; @@ -5159,7 +5159,7 @@ safe_layout_class (class) tree class; { tree save_current_class = current_class; - char *save_input_filename = input_filename; + const char *save_input_filename = input_filename; int save_lineno = lineno; push_obstacks (&permanent_obstack, &permanent_obstack); diff --git a/gcc/objc/objc-parse.c b/gcc/objc/objc-parse.c index 2ad6d3f9bd3..5407d329439 100644 --- a/gcc/objc/objc-parse.c +++ b/gcc/objc/objc-parse.c @@ -1,7 +1,6 @@ /* A Bison parser, made from objc-parse.y - by GNU Bison version 1.27 - */ + by GNU Bison version 1.28 */ #define YYBISON 1 /* Identify Bison output. */ @@ -102,7 +101,7 @@ const char * const language_string = "GNU Obj-C"; #line 66 "objc-parse.y" typedef union {long itype; tree ttype; enum tree_code code; - char *filename; int lineno; int ends_in_label; } YYSTYPE; + const char *filename; int lineno; int ends_in_label; } YYSTYPE; #line 198 "objc-parse.y" /* Number of statements (loosely speaking) and compound statements @@ -112,7 +111,7 @@ static int compstmt_count; /* Input file and line number of the end of the body of last simple_if; used by the stmt-rule immediately after simple_if returns. */ -static char *if_stmt_file; +static const char *if_stmt_file; static int if_stmt_line; /* List of types and structure classes of the current declaration. */ @@ -1759,8 +1758,8 @@ static const short yycheck[] = { 56, 50, 51, 52, 53, 54, 55, 56, 57 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/lib/bison.simple" -/* This file comes from bison-1.27. */ +#line 3 "/usr/share/misc/bison.simple" +/* This file comes from bison-1.28. */ /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. @@ -1973,7 +1972,7 @@ __yy_memcpy (char *to, char *from, unsigned int count) #endif #endif -#line 216 "/usr/lib/bison.simple" +#line 217 "/usr/share/misc/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. @@ -5096,7 +5095,7 @@ case 570: break;} } /* the action file gets copied in in place of this dollarsign */ -#line 542 "/usr/lib/bison.simple" +#line 543 "/usr/share/misc/bison.simple" yyvsp -= yylen; yyssp -= yylen; diff --git a/gcc/objc/objc-parse.y b/gcc/objc/objc-parse.y index 1a452955c81..10e135ff66c 100644 --- a/gcc/objc/objc-parse.y +++ b/gcc/objc/objc-parse.y @@ -64,7 +64,7 @@ const char * const language_string = "GNU Obj-C"; %start program %union {long itype; tree ttype; enum tree_code code; - char *filename; int lineno; int ends_in_label; } + const char *filename; int lineno; int ends_in_label; } /* All identifiers that are not reserved words and are not declared typedefs in the current block */ @@ -203,7 +203,7 @@ static int compstmt_count; /* Input file and line number of the end of the body of last simple_if; used by the stmt-rule immediately after simple_if returns. */ -static char *if_stmt_file; +static const char *if_stmt_file; static int if_stmt_line; /* List of types and structure classes of the current declaration. */ diff --git a/gcc/output.h b/gcc/output.h index 48d5a7383da..279a25b7a44 100644 --- a/gcc/output.h +++ b/gcc/output.h @@ -403,6 +403,13 @@ extern int sdb_begin_function_line; #ifdef BUFSIZ extern FILE *asm_out_file; #endif + +/* The first global object in the file. */ +extern const char *first_global_object_name; + +/* The first weak object in the file. */ +extern const char *weak_global_object_name; + /* Nonzero if function being compiled doesn't contain any calls (ignoring the prologue and epilogue). This is set prior to local register allocation and is valid for the remaining diff --git a/gcc/stmt.c b/gcc/stmt.c index 88538e007da..0626e2c3e34 100644 --- a/gcc/stmt.c +++ b/gcc/stmt.c @@ -1311,7 +1311,7 @@ void expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line) tree string, outputs, inputs, clobbers; int vol; - char *filename; + const char *filename; int line; { rtvec argvec, constraints; diff --git a/gcc/toplev.c b/gcc/toplev.c index e780587e8cc..165073fdb78 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -163,7 +163,7 @@ static void pipe_closed PARAMS ((int)) ATTRIBUTE_NORETURN; /* This might or might not be used in ASM_IDENTIFY_LANGUAGE. */ static void output_lang_identify PARAMS ((FILE *)) ATTRIBUTE_UNUSED; #endif -static void compile_file PARAMS ((char *)); +static void compile_file PARAMS ((const char *)); static void display_help PARAMS ((void)); static void mark_file_stack PARAMS ((void *)); @@ -195,13 +195,13 @@ char **save_argv; /* Name of current original source file (what was input to cpp). This comes from each #-command in the actual input. */ -char *input_filename; +const char *input_filename; /* Name of top-level original source file (what was input to cpp). This comes from the #-command at the beginning of the actual input. If there isn't any there, then this is the cc1 input file name. */ -char *main_input_filename; +const char *main_input_filename; /* Current line number in real source file. */ @@ -1992,7 +1992,7 @@ check_global_declarations (vec, len) void push_srcloc (file, line) - char *file; + const char *file; int line; { struct file_stack *fs; @@ -2037,7 +2037,7 @@ pop_srcloc () static void compile_file (name) - char *name; + const char *name; { tree globals; @@ -4826,7 +4826,7 @@ print_switch_values (file, pos, max, indent, sep, term) void debug_start_source_file (filename) - register char *filename ATTRIBUTE_UNUSED; + register const char *filename ATTRIBUTE_UNUSED; { #ifdef DBX_DEBUGGING_INFO if (write_symbols == DBX_DEBUG) diff --git a/gcc/toplev.h b/gcc/toplev.h index 83795329e2e..9f7ed84e027 100644 --- a/gcc/toplev.h +++ b/gcc/toplev.h @@ -31,7 +31,7 @@ extern int read_integral_parameter PARAMS ((const char *, const char *, extern int count_error PARAMS ((int)); extern void strip_off_ending PARAMS ((char *, int)); extern void print_time PARAMS ((const char *, long)); -extern void debug_start_source_file PARAMS ((char *)); +extern void debug_start_source_file PARAMS ((const char *)); extern void debug_end_source_file PARAMS ((unsigned)); extern void debug_define PARAMS ((unsigned, char *)); extern void debug_undef PARAMS ((unsigned, char *)); diff --git a/gcc/tree.c b/gcc/tree.c index 9f68e60122a..2a0ed56d75f 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -44,6 +44,7 @@ Boston, MA 02111-1307, USA. */ #include "toplev.h" #include "ggc.h" #include "hashtab.h" +#include "output.h" #define obstack_chunk_alloc xmalloc #define obstack_chunk_free free @@ -5359,9 +5360,6 @@ dump_tree_statistics () #endif /* NO_DOT_IN_LABEL */ #endif /* NO_DOLLAR_IN_LABEL */ -extern char *first_global_object_name; -extern char *weak_global_object_name; - /* Appends 6 random characters to TEMPLATE to (hopefully) avoid name clashes in cases where we can't reliably choose a unique name. @@ -5417,7 +5415,8 @@ get_file_function_name_long (type) const char *type; { char *buf; - register char *p; + const char *p; + char *q; if (first_global_object_name) p = first_global_object_name; @@ -5434,10 +5433,11 @@ get_file_function_name_long (type) if (! file) file = input_filename; - p = (char *) alloca (7 + strlen (name) + strlen (file)); + q = (char *) alloca (7 + strlen (name) + strlen (file)); - sprintf (p, "%s%s", name, file); - append_random_chars (p); + sprintf (q, "%s%s", name, file); + append_random_chars (q); + p = q; } buf = (char *) alloca (sizeof (FILE_FUNCTION_FORMAT) + strlen (p) @@ -5452,22 +5452,17 @@ get_file_function_name_long (type) /* Don't need to pull weird characters out of global names. */ if (p != first_global_object_name) { - for (p = buf+11; *p; p++) - if (! ( ISDIGIT(*p) -#if 0 /* we always want labels, which are valid C++ identifiers (+ `$') */ -#ifndef ASM_IDENTIFY_GCC /* this is required if `.' is invalid -- k. raeburn */ - || *p == '.' -#endif -#endif + for (q = buf+11; *q; q++) + if (! ( ISDIGIT(*q) #ifndef NO_DOLLAR_IN_LABEL /* this for `$'; unlikely, but... -- kr */ - || *p == '$' + || *q == '$' #endif #ifndef NO_DOT_IN_LABEL /* this for `.'; unlikely, but... */ - || *p == '.' + || *q == '.' #endif - || ISUPPER(*p) - || ISLOWER(*p))) - *p = '_'; + || ISUPPER(*q) + || ISLOWER(*q))) + *q = '_'; } return get_identifier (buf); diff --git a/gcc/tree.h b/gcc/tree.h index 0bbf784e3c1..ccbb9c3d29e 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -1541,7 +1541,7 @@ struct tree_type struct tree_decl { char common[sizeof (struct tree_common)]; - char *filename; + const char *filename; int linenum; unsigned int uid; union tree_node *size; @@ -2309,7 +2309,7 @@ extern int real_zerop PARAMS ((tree)); /* Points to the name of the input file from which the current input being parsed originally came (before it went into cpp). */ -extern char *input_filename; +extern const char *input_filename; /* Current line number in input file. */ extern int lineno; @@ -2354,7 +2354,7 @@ extern const char *(*decl_printable_name) PARAMS ((tree, int)); extern void (*incomplete_decl_finalize_hook) PARAMS ((tree)); -extern char *init_parse PARAMS ((char *)); +extern const char *init_parse PARAMS ((const char *)); extern void finish_parse PARAMS ((void)); extern const char * const language_string; @@ -2656,7 +2656,7 @@ extern void print_obstack_statistics PARAMS ((const char *, #ifdef BUFSIZ extern void print_obstack_name PARAMS ((char *, FILE *, const char *)); #endif -extern void expand_function_end PARAMS ((char *, int, int)); +extern void expand_function_end PARAMS ((const char *, int, int)); extern void expand_function_start PARAMS ((tree, int)); extern int real_onep PARAMS ((tree)); extern int real_twop PARAMS ((tree)); @@ -2790,7 +2790,7 @@ extern void emit_nop PARAMS ((void)); extern void expand_computed_goto PARAMS ((tree)); extern struct rtx_def *label_rtx PARAMS ((tree)); extern void expand_asm_operands PARAMS ((tree, tree, tree, tree, int, - char *, int)); + const char *, int)); extern int any_pending_cleanups PARAMS ((int)); extern void init_stmt PARAMS ((void)); extern void init_stmt_for_function PARAMS ((void)); diff --git a/gcc/varasm.c b/gcc/varasm.c index 3b5c31423c0..633688e1455 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -77,8 +77,8 @@ Boston, MA 02111-1307, USA. */ extern FILE *asm_out_file; /* The (assembler) name of the first globally-visible object output. */ -char *first_global_object_name; -char *weak_global_object_name; +const char *first_global_object_name; +const char *weak_global_object_name; extern struct obstack *current_obstack; extern struct obstack *saveable_obstack; @@ -1061,16 +1061,16 @@ assemble_start_function (decl, fnname) if (! first_global_object_name) { const char *p; - char **name; + char *name; + + STRIP_NAME_ENCODING (p, fnname); + name = permalloc (strlen (p) + 1); + strcpy (name, p); if (! DECL_WEAK (decl) && ! DECL_ONE_ONLY (decl)) - name = &first_global_object_name; + first_global_object_name = name; else - name = &weak_global_object_name; - - STRIP_NAME_ENCODING (p, fnname); - *name = permalloc (strlen (p) + 1); - strcpy (*name, p); + weak_global_object_name = name; } #ifdef ASM_WEAKEN_LABEL @@ -1438,10 +1438,12 @@ assemble_variable (decl, top_level, at_end, dont_output_data) && ! DECL_ONE_ONLY (decl)) { const char *p; + char *xname; STRIP_NAME_ENCODING (p, name); - first_global_object_name = permalloc (strlen (p) + 1); - strcpy (first_global_object_name, p); + xname = permalloc (strlen (p) + 1); + strcpy (xname, p); + first_global_object_name = xname; } /* Compute the alignment of this data. */ |