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.

From-SVN: r33804
This commit is contained in:
Zack Weinberg 2000-05-09 19:56:01 +00:00 committed by Zack Weinberg
parent aa9e158d7a
commit 3b304f5b7d
65 changed files with 629 additions and 460 deletions

View File

@ -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> Tue May 9 22:28:03 2000 Denis Chertykov <denisc@overta.ru>
* flow.c (flow_delete_insn): Use INSN_DELETED_P for marking insn * flow.c (flow_delete_insn): Use INSN_DELETED_P for marking insn

View File

@ -76,7 +76,7 @@ XCFLAGS =
TCFLAGS = TCFLAGS =
CFLAGS = -g @stage1_warn_cflags@ CFLAGS = -g @stage1_warn_cflags@
BOOT_CFLAGS = -O2 $(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'` 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. # These exists to be overridden by the x-* and t-* files, respectively.
X_CFLAGS = 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 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 \ 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) 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 \ stor-layout.o : stor-layout.c $(CONFIG_H) system.h $(TREE_H) flags.h \
function.h $(EXPR_H) $(RTL_H) toplev.h $(GGC_H) function.h $(EXPR_H) $(RTL_H) toplev.h $(GGC_H)

View File

@ -80,7 +80,7 @@ int ggc_p = 1;
tree pending_invalid_xref; tree pending_invalid_xref;
/* File and line to appear in the eventual error message. */ /* 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; int pending_invalid_xref_line;
/* While defining an enum type, this is 1 plus the last enumerator /* 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 /* Similar, for the file and line that the prototype came from if this is
an old-style definition. */ an old-style definition. */
static char *current_function_prototype_file; static const char *current_function_prototype_file;
static int current_function_prototype_line; static int current_function_prototype_line;
/* A list (chain of TREE_LIST nodes) of all LABEL_DECLs in the function /* A list (chain of TREE_LIST nodes) of all LABEL_DECLs in the function
@ -2019,7 +2019,7 @@ pushdecl (x)
if (name) if (name)
{ {
char *file; const char *file;
int line; int line;
int different_binding_level = 0; int different_binding_level = 0;
@ -2674,7 +2674,7 @@ shadow_label (name)
tree tree
define_label (filename, line, name) define_label (filename, line, name)
char *filename; const char *filename;
int line; int line;
tree name; tree name;
{ {

View File

@ -222,9 +222,9 @@ remember_protocol_qualifiers ()
wordlist[i].name = "oneway"; wordlist[i].name = "oneway";
} }
char * const char *
init_parse (filename) init_parse (filename)
char *filename; const char *filename;
{ {
#if !USE_CPPLIB #if !USE_CPPLIB
/* Open input file. */ /* Open input file. */

View File

@ -1,7 +1,6 @@
/* A Bison parser, made from c-parse.y /* 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. */ #define YYBISON 1 /* Identify Bison output. */
@ -101,7 +100,7 @@ const char * const language_string = "GNU C";
#line 65 "c-parse.y" #line 65 "c-parse.y"
typedef union {long itype; tree ttype; enum tree_code code; 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" #line 186 "c-parse.y"
/* Number of statements (loosely speaking) and compound statements /* 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; /* 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. */ 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; static int if_stmt_line;
/* List of types and structure classes of the current declaration. */ /* 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 48, 49, 50, 51, 52, 53, 54, 55, 56, 57
}; };
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ /* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line 3 "/usr/lib/bison.simple" #line 3 "/usr/share/misc/bison.simple"
/* This file comes from bison-1.27. */ /* This file comes from bison-1.28. */
/* Skeleton output parser for bison, /* Skeleton output parser for bison,
Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
@ -1489,7 +1488,7 @@ __yy_memcpy (char *to, char *from, unsigned int count)
#endif #endif
#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 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
into yyparse. The argument should have type void *. into yyparse. The argument should have type void *.
@ -3836,7 +3835,7 @@ case 407:
break;} break;}
} }
/* the action file gets copied in in place of this dollarsign */ /* 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; yyvsp -= yylen;
yyssp -= yylen; yyssp -= yylen;

View File

@ -1,5 +1,5 @@
typedef union {long itype; tree ttype; enum tree_code code; 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 IDENTIFIER 257
#define TYPENAME 258 #define TYPENAME 258
#define SCSPEC 259 #define SCSPEC 259

View File

@ -75,7 +75,7 @@ end ifc
%start program %start program
%union {long itype; tree ttype; enum tree_code code; %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 /* All identifiers that are not reserved words
and are not declared typedefs in the current block */ 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; /* 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. */ 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; static int if_stmt_line;
/* List of types and structure classes of the current declaration. */ /* List of types and structure classes of the current declaration. */

View File

@ -63,7 +63,7 @@ const char * const language_string = "GNU C";
%start program %start program
%union {long itype; tree ttype; enum tree_code code; %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 /* All identifiers that are not reserved words
and are not declared typedefs in the current block */ 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; /* 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. */ 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; static int if_stmt_line;
/* List of types and structure classes of the current declaration. */ /* List of types and structure classes of the current declaration. */

View File

@ -191,7 +191,8 @@ extern void clear_parm_order PARAMS ((void));
extern tree combine_parm_decls PARAMS ((tree, tree, int)); extern tree combine_parm_decls PARAMS ((tree, tree, int));
extern int complete_array_type PARAMS ((tree, tree, int)); extern int complete_array_type PARAMS ((tree, tree, int));
extern void declare_parm_level PARAMS ((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 delete_block PARAMS ((tree));
extern void finish_decl PARAMS ((tree, tree, tree)); extern void finish_decl PARAMS ((tree, tree, tree));
extern void finish_decl_top_level 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 set_init_label PARAMS ((tree));
extern void process_init_element PARAMS ((tree)); extern void process_init_element PARAMS ((tree));
extern void c_expand_asm_operands PARAMS ((tree, tree, tree, extern void c_expand_asm_operands PARAMS ((tree, tree, tree,
tree, int, char *, tree, int,
int)); const char *, int));
extern void c_expand_return PARAMS ((tree)); extern void c_expand_return PARAMS ((tree));
extern tree c_expand_start_case PARAMS ((tree)); extern tree c_expand_start_case PARAMS ((tree));

View File

@ -6435,7 +6435,7 @@ void
c_expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line) c_expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line)
tree string, outputs, inputs, clobbers; tree string, outputs, inputs, clobbers;
int vol; int vol;
char *filename; const char *filename;
int line; int line;
{ {
int noutputs = list_length (outputs); int noutputs = list_length (outputs);

View File

@ -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> 2000-05-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* ch-tree.h (init_function_start): Constify. * ch-tree.h (init_function_start): Constify.

View File

@ -672,7 +672,7 @@ extern void clear_parm_order PARAMS ((void));
extern tree combine_parm_decls PARAMS ((tree, tree, int)); extern tree combine_parm_decls PARAMS ((tree, tree, int));
extern int complete_array_type PARAMS ((tree, tree, int)); extern int complete_array_type PARAMS ((tree, tree, int));
extern void declare_parm_level PARAMS ((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 delete_block PARAMS ((tree));
extern void finish_decl PARAMS ((tree)); extern void finish_decl PARAMS ((tree));
extern tree finish_enum PARAMS ((tree, 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 int valid_array_index PARAMS ((tree, tree));
extern void validate_varying_array_ref 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 */ /* in toplev.c */
extern void announce_function PARAMS ((tree)); extern void announce_function PARAMS ((tree));
extern int floor_log2_wide PARAMS ((unsigned HOST_WIDE_INT)); 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 void init_iterators PARAMS ((void));
extern int mark_addressable PARAMS ((tree)); extern int mark_addressable PARAMS ((tree));
extern tree chill_result_decl; 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 #ifndef SET_WORD_SIZE
#define SET_WORD_SIZE BITS_PER_WORD #define SET_WORD_SIZE BITS_PER_WORD

View File

@ -3151,7 +3151,7 @@ pushdecl_top_level (x)
tree tree
define_label (filename, line, name) define_label (filename, line, name)
char *filename; const char *filename;
int line; int line;
tree name; tree name;
{ {

View File

@ -2544,9 +2544,7 @@ globalize_decl (decl)
if (!TREE_PUBLIC (decl) && DECL_NAME (decl) && if (!TREE_PUBLIC (decl) && DECL_NAME (decl) &&
(TREE_CODE (decl) == VAR_DECL || TREE_CODE (decl) == FUNCTION_DECL)) (TREE_CODE (decl) == VAR_DECL || TREE_CODE (decl) == FUNCTION_DECL))
{ {
extern FILE *asm_out_file; const char *name = XSTR (XEXP (DECL_RTL (decl), 0), 0);
extern char *first_global_object_name;
const char *name = XSTR (XEXP (DECL_RTL (decl), 0), 0);
if (!first_global_object_name) if (!first_global_object_name)
first_global_object_name = name + (name[0] == '*'); first_global_object_name = name + (name[0] == '*');
@ -2686,7 +2684,8 @@ write_grant_file ()
void void
set_default_grant_file () set_default_grant_file ()
{ {
char *p, *tmp, *fname; char *p, *tmp;
const char *fname;
if (dump_base_name) if (dump_base_name)
fname = dump_base_name; /* Probably invoked via gcc */ 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. */ Perhaps rewrite this so nothing is done in pass 1. */
if (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 /* If we don't do this spoof, we get the name of the first
tasking_code variable, and not the file name. */ 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; first_global_object_name = NULL;
chill_init_name = get_file_function_name ('I'); chill_init_name = get_file_function_name ('I');
first_global_object_name = tmp; first_global_object_name = tmp;
/* strip off the file's extension, if any. */ /* strip off the file's extension, if any. */
tmp = strrchr (IDENTIFIER_POINTER (chill_init_name), '.'); q = strrchr (IDENTIFIER_POINTER (chill_init_name), '.');
if (tmp) if (q)
*tmp = '\0'; *q = '\0';
} }
start_chill_function (chill_init_name, void_type_node, NULL_TREE, start_chill_function (chill_init_name, void_type_node, NULL_TREE,

View File

@ -47,7 +47,7 @@ int ignore_case = 1;
int special_UC = 0; int special_UC = 0;
/* The actual name of the input file, regardless of any #line directives */ /* 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; extern FILE* finput;
static int deep_const_expr PARAMS ((tree)); static int deep_const_expr PARAMS ((tree));

View File

@ -197,9 +197,9 @@ ch_lex_init ()
} }
char * const char *
init_parse (filename) init_parse (filename)
char *filename; const char *filename;
{ {
int lowercase_standard_names = ignore_case || ! special_UC; int lowercase_standard_names = ignore_case || ! special_UC;

View File

@ -94,7 +94,6 @@ static int expect PARAMS ((enum terminal, const char *));
static void define__PROCNAME__ PARAMS ((void)); static void define__PROCNAME__ PARAMS ((void));
extern int lineno; extern int lineno;
extern char *input_filename;
extern tree generic_signal_type_node; extern tree generic_signal_type_node;
extern tree signal_code; extern tree signal_code;
extern int all_static_flag; 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 void parse_case_action PARAMS ((tree));
static tree parse_asm_operands PARAMS ((void)); static tree parse_asm_operands PARAMS ((void));
static tree parse_asm_clobbers 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_asm_action PARAMS ((void));
static void parse_begin_end_block PARAMS ((tree)); static void parse_begin_end_block PARAMS ((tree));
static void parse_if_action 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 action_labels = NULL_TREE;
tree tests = NULL_TREE; tree tests = NULL_TREE;
int save_lineno = lineno; 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 /* 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 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) ch_expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line)
tree string, outputs, inputs, clobbers; tree string, outputs, inputs, clobbers;
int vol; int vol;
char *filename; const char *filename;
int line; int line;
{ {
int noutputs = list_length (outputs); int noutputs = list_length (outputs);

View File

@ -67,7 +67,7 @@ safe_satisfy_decl (decl, prev_chain)
struct decl_chain new_link; struct decl_chain new_link;
struct decl_chain *link; struct decl_chain *link;
struct decl_chain *chain = prev_chain; struct decl_chain *chain = prev_chain;
char *save_filename = input_filename; const char *save_filename = input_filename;
int save_lineno = lineno; int save_lineno = lineno;
tree result = decl; tree result = decl;

View File

@ -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> 2000-05-08 Nathan Sidwell <nathan@codesourcery.com>
* tinfo.cc (__dynamic_cast): Use a reinterpret_cast. Fix * tinfo.cc (__dynamic_cast): Use a reinterpret_cast. Fix

View File

@ -399,7 +399,7 @@ struct tree_wrapper
struct tree_srcloc struct tree_srcloc
{ {
char common[sizeof (struct tree_common)]; char common[sizeof (struct tree_common)];
char *filename; const char *filename;
int linenum; int linenum;
}; };
@ -3338,7 +3338,7 @@ struct tinst_level
{ {
tree decl; tree decl;
int line; int line;
char *file; const char *file;
struct tinst_level *next; struct tinst_level *next;
}; };
@ -3533,7 +3533,7 @@ struct pending_inline
{ {
struct pending_inline *next; /* pointer to next in chain */ struct pending_inline *next; /* pointer to next in chain */
int lineno; /* line number we got the text from */ 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 */ tree fndecl; /* FUNCTION_DECL that brought us here */
int token; /* token we were scanning */ int token; /* token we were scanning */
int token_value; /* value of token we were scanning (YYSTYPE) */ 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 implicitly_declare PARAMS ((tree));
extern tree lookup_label PARAMS ((tree)); extern tree lookup_label PARAMS ((tree));
extern tree declare_local_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 push_switch PARAMS ((void));
extern void pop_switch PARAMS ((void)); extern void pop_switch PARAMS ((void));
extern void define_case_label 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 build_modify_expr PARAMS ((tree, enum tree_code, tree));
extern tree dubious_conversion_warnings PARAMS ((tree, tree, const char *, tree, int)); 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 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 void c_expand_return PARAMS ((tree));
extern tree c_expand_start_case PARAMS ((tree)); extern tree c_expand_start_case PARAMS ((tree));
extern int comp_ptr_ttypes PARAMS ((tree, tree)); extern int comp_ptr_ttypes PARAMS ((tree, tree));

View File

@ -4794,7 +4794,7 @@ declare_local_label (id)
tree tree
define_label (filename, line, name) define_label (filename, line, name)
char *filename; const char *filename;
int line; int line;
tree name; tree name;
{ {

View File

@ -867,7 +867,7 @@ warn_if_unknown_interface (decl)
{ {
struct tinst_level *til = tinst_for_decl (); struct tinst_level *til = tinst_for_decl ();
int sl = lineno; int sl = lineno;
char *sf = input_filename; const char *sf = input_filename;
if (til) if (til)
{ {

View File

@ -54,7 +54,7 @@ struct input_source {
/* values to restore after reading all of current string */ /* values to restore after reading all of current string */
struct pending_input *input; struct pending_input *input;
#if !USE_CPPLIB #if !USE_CPPLIB
char *filename; const char *filename;
int lineno; int lineno;
struct putback_buffer putback; struct putback_buffer putback;
#endif #endif
@ -62,15 +62,12 @@ struct input_source {
static struct input_source *input, *free_inputs; static struct input_source *input, *free_inputs;
extern char *input_filename;
extern int lineno;
#if USE_CPPLIB #if USE_CPPLIB
extern unsigned char *yy_cur, *yy_lim; extern unsigned char *yy_cur, *yy_lim;
extern int yy_get_token (); extern int yy_get_token ();
#endif #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_input PARAMS ((int));
extern void put_back PARAMS ((int)); extern void put_back PARAMS ((int));
extern int getch PARAMS ((void)); extern int getch PARAMS ((void));
@ -114,7 +111,7 @@ void
feed_input (str, len, file, line) feed_input (str, len, file, line)
char *str; char *str;
int len; int len;
char *file; const char *file;
int line; int line;
{ {
struct input_source *inp = allocate_input (); struct input_source *inp = allocate_input ();

View File

@ -65,8 +65,8 @@ static void feed_defarg PARAMS ((tree, tree));
static void store_pending_inline PARAMS ((tree, struct pending_inline *)); static void store_pending_inline PARAMS ((tree, struct pending_inline *));
static void reinit_parse_for_expr PARAMS ((struct obstack *)); static void reinit_parse_for_expr PARAMS ((struct obstack *));
static int *init_cpp_parse PARAMS ((void)); static int *init_cpp_parse PARAMS ((void));
static void cp_pragma_interface PARAMS ((char *)); static void cp_pragma_interface PARAMS ((const char *));
static void cp_pragma_implementation PARAMS ((char *)); static void cp_pragma_implementation PARAMS ((const char *));
static int handle_cp_pragma PARAMS ((const char *)); static int handle_cp_pragma PARAMS ((const char *));
#ifdef HANDLE_GENERIC_PRAGMAS #ifdef HANDLE_GENERIC_PRAGMAS
static int handle_generic_pragma PARAMS ((int)); static int handle_generic_pragma PARAMS ((int));
@ -510,9 +510,9 @@ init_cpp_parse ()
return token_count; return token_count;
} }
char * const char *
init_parse (filename) init_parse (filename)
char *filename; const char *filename;
{ {
extern int flag_no_gnu_keywords; extern int flag_no_gnu_keywords;
extern int flag_operator_names; extern int flag_operator_names;
@ -1188,7 +1188,7 @@ interface_strcmp (s)
static void static void
cp_pragma_interface (main_filename) cp_pragma_interface (main_filename)
char *main_filename; const char *main_filename;
{ {
tree fileinfo tree fileinfo
= TIME_IDENTIFIER_FILEINFO (get_time_identifier (input_filename)); = TIME_IDENTIFIER_FILEINFO (get_time_identifier (input_filename));
@ -1235,7 +1235,7 @@ cp_pragma_interface (main_filename)
static void static void
cp_pragma_implementation (main_filename) cp_pragma_implementation (main_filename)
char *main_filename; const char *main_filename;
{ {
struct impl_files *ifiles = impl_file_chain; struct impl_files *ifiles = impl_file_chain;
for (; ifiles; ifiles = ifiles->next) for (; ifiles; ifiles = ifiles->next)
@ -1514,7 +1514,7 @@ reinit_parse_for_method (yychar, decl)
{ {
int len; int len;
int starting_lineno = lineno; int starting_lineno = lineno;
char *starting_filename = input_filename; const char *starting_filename = input_filename;
reinit_parse_for_block (yychar, &inline_text_obstack); reinit_parse_for_block (yychar, &inline_text_obstack);
@ -1562,7 +1562,7 @@ reinit_parse_for_block (pyychar, obstackp)
register int c; register int c;
int blev = 1; int blev = 1;
int starting_lineno = lineno; int starting_lineno = lineno;
char *starting_filename = input_filename; const char *starting_filename = input_filename;
int len; int len;
int look_for_semicolon = 0; int look_for_semicolon = 0;
int look_for_lbrac = 0; int look_for_lbrac = 0;
@ -1728,7 +1728,7 @@ reinit_parse_for_expr (obstackp)
{ {
register int c; register int c;
int starting_lineno = lineno; int starting_lineno = lineno;
char *starting_filename = input_filename; const char *starting_filename = input_filename;
int len; int len;
int plev = 0; int plev = 0;
@ -1868,7 +1868,7 @@ feed_defarg (f, p)
tree f, p; tree f, p;
{ {
tree d = TREE_PURPOSE (p); tree d = TREE_PURPOSE (p);
char *file; const char *file;
int line; int line;
if (TREE_CODE (f) == FUNCTION_DECL) if (TREE_CODE (f) == FUNCTION_DECL)
{ {
@ -2589,7 +2589,7 @@ handle_cp_pragma (pname)
} }
else if (! strcmp (pname, "interface")) else if (! strcmp (pname, "interface"))
{ {
char *main_filename = input_filename; const char *main_filename = input_filename;
main_filename = file_name_nondirectory (main_filename); main_filename = file_name_nondirectory (main_filename);
@ -2616,7 +2616,7 @@ handle_cp_pragma (pname)
} }
else if (! strcmp (pname, "implementation")) 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); main_filename = file_name_nondirectory (main_filename);

View File

@ -51,9 +51,6 @@ typedef int (*tree_fn_t) PARAMS ((tree, void*));
extern struct obstack permanent_obstack; extern struct obstack permanent_obstack;
extern int lineno;
extern char *input_filename;
/* The PENDING_TEMPLATES is a TREE_LIST of templates whose /* The PENDING_TEMPLATES is a TREE_LIST of templates whose
instantiations have been deferred, either because their definitions instantiations have been deferred, either because their definitions
were not yet available, or because we were putting off doing the 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; struct tinst_level *p = current_tinst_level;
int line = lineno; int line = lineno;
char *file = input_filename; const char *file = input_filename;
if (err && p) if (err && p)
{ {
@ -4375,7 +4372,7 @@ tsubst_friend_function (decl, args)
{ {
tree new_friend; tree new_friend;
int line = lineno; int line = lineno;
char *file = input_filename; const char *file = input_filename;
lineno = DECL_SOURCE_LINE (decl); lineno = DECL_SOURCE_LINE (decl);
input_filename = DECL_SOURCE_FILE (decl); input_filename = DECL_SOURCE_FILE (decl);
@ -5389,7 +5386,7 @@ tsubst_decl (t, args, type, in_decl)
tree in_decl; tree in_decl;
{ {
int saved_lineno; int saved_lineno;
char* saved_filename; const char *saved_filename;
tree r = NULL_TREE; tree r = NULL_TREE;
/* Set the filename and linenumber to improve error-reporting. */ /* 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)) || (code == REFERENCE_TYPE && TREE_CODE (type) == VOID_TYPE))
{ {
static int last_line = 0; 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 /* We keep track of the last time we issued this error
message to avoid spewing a ton of messages during a message to avoid spewing a ton of messages during a
@ -9434,7 +9431,7 @@ instantiate_decl (d, defer_ok)
tree gen_tmpl; tree gen_tmpl;
int pattern_defined; int pattern_defined;
int line = lineno; int line = lineno;
char *file = input_filename; const char *file = input_filename;
/* This function should only be used to instantiate templates for /* This function should only be used to instantiate templates for
functions and static member variables. */ functions and static member variables. */

View File

@ -2694,7 +2694,7 @@ expand_body (fn)
tree fn; tree fn;
{ {
int saved_lineno; int saved_lineno;
char *saved_input_filename; const char *saved_input_filename;
/* When the parser calls us after finishing the body of a template /* 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 function, we don't really want to expand the body. When we're

View File

@ -40,7 +40,7 @@ static int list_hash PARAMS ((tree, tree, tree));
static tree list_hash_lookup PARAMS ((int, tree, tree, tree)); static tree list_hash_lookup PARAMS ((int, tree, tree, tree));
static cp_lvalue_kind lvalue_p_1 PARAMS ((tree, int)); static cp_lvalue_kind lvalue_p_1 PARAMS ((tree, int));
static tree no_linkage_helper PARAMS ((tree *, int *, void *)); 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 void mark_list_hash PARAMS ((void *));
static int statement_code_p PARAMS ((enum tree_code)); static int statement_code_p PARAMS ((enum tree_code));
static tree mark_local_for_remap_r PARAMS ((tree *, int *, void *)); static tree mark_local_for_remap_r PARAMS ((tree *, int *, void *));
@ -1989,7 +1989,7 @@ build_int_wrapper (i)
static tree static tree
build_srcloc (file, line) build_srcloc (file, line)
char *file; const char *file;
int line; int line;
{ {
tree t; tree t;

View File

@ -6638,7 +6638,7 @@ void
c_expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line) c_expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line)
tree string, outputs, inputs, clobbers; tree string, outputs, inputs, clobbers;
int vol; int vol;
char *filename; const char *filename;
int line; int line;
{ {
int noutputs = list_length (outputs); int noutputs = list_length (outputs);

View File

@ -5690,7 +5690,7 @@ dwarfout_undef (lineno, buffer)
void void
dwarfout_init (asm_out_file, main_input_filename) dwarfout_init (asm_out_file, main_input_filename)
register FILE *asm_out_file; register FILE *asm_out_file;
register char *main_input_filename; register const char *main_input_filename;
{ {
/* Remember the name of the primary input file. */ /* Remember the name of the primary input file. */

View File

@ -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, the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
extern void dwarfout_init PARAMS ((FILE *asm_out_file, extern void dwarfout_init PARAMS ((FILE *, const char *));
char *main_input_filename));
extern void dwarfout_finish PARAMS ((void)); extern void dwarfout_finish PARAMS ((void));
extern void dwarfout_define PARAMS ((unsigned, const char *)); extern void dwarfout_define PARAMS ((unsigned, const char *));

View File

@ -6077,7 +6077,7 @@ expand_expr (exp, target, tmode, modifier)
case EXPR_WITH_FILE_LOCATION: case EXPR_WITH_FILE_LOCATION:
{ {
rtx to_return; rtx to_return;
char *saved_input_filename = input_filename; const char *saved_input_filename = input_filename;
int saved_lineno = lineno; int saved_lineno = lineno;
input_filename = EXPR_WFL_FILENAME (exp); input_filename = EXPR_WFL_FILENAME (exp);
lineno = EXPR_WFL_LINENO (exp); lineno = EXPR_WFL_LINENO (exp);

View File

@ -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> 2000-05-06 Zack Weinberg <zack@wolery.cumb.org>
* com.c (ffecom_overlap_): Set source_offset to * com.c (ffecom_overlap_): Set source_offset to

View File

@ -712,7 +712,7 @@ static tree shadowed_labels;
static tree static tree
ffecom_subscript_check_ (tree array, tree element, int dim, int total_dims, 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 low = TYPE_MIN_VALUE (TYPE_DOMAIN (array));
tree high = TYPE_MAX_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: case 0:
var = xmalloc (strlen (array_name) + 20); var = xmalloc (strlen (array_name) + 20);
sprintf (&var[0], "%s[%s-substring]", sprintf (var, "%s[%s-substring]",
array_name, array_name,
dim ? "end" : "start"); dim ? "end" : "start");
len = strlen (var) + 1; len = strlen (var) + 1;
arg1 = build_string (len, var);
free (var);
break; break;
case 1: case 1:
len = strlen (array_name) + 1; len = strlen (array_name) + 1;
var = array_name; arg1 = build_string (len, array_name);
break; break;
default: default:
var = xmalloc (strlen (array_name) + 40); var = xmalloc (strlen (array_name) + 40);
sprintf (&var[0], "%s[subscript-%d-of-%d]", sprintf (var, "%s[subscript-%d-of-%d]",
array_name, array_name,
dim + 1, total_dims); dim + 1, total_dims);
len = strlen (var) + 1; len = strlen (var) + 1;
arg1 = build_string (len, var);
free (var);
break; break;
} }
arg1 = build_string (len, var);
if (total_dims != 1)
free (var);
TREE_TYPE (arg1) TREE_TYPE (arg1)
= build_type_variant (build_array_type (char_type_node, = build_type_variant (build_array_type (char_type_node,
build_range_type build_range_type
@ -877,7 +876,7 @@ ffecom_arrayref_ (tree item, ffebld expr, int want_ptr)
tree element; tree element;
tree tree_type; tree tree_type;
tree tree_type_x; tree tree_type_x;
char *array_name; const char *array_name;
ffetype type; ffetype type;
ffebld list; ffebld list;
@ -2072,7 +2071,7 @@ ffecom_char_args_x_ (tree *xitem, tree *length, ffebld expr, bool with_null)
ffebld thing = ffebld_right (expr); ffebld thing = ffebld_right (expr);
tree start_tree; tree start_tree;
tree end_tree; tree end_tree;
char *char_name; const char *char_name;
ffebld left_symter; ffebld left_symter;
tree array; tree array;
@ -2678,7 +2677,7 @@ ffecom_do_entry_ (ffesymbol fn, int entrynum)
bool altreturning = FALSE; /* This entry point has alternate returns. */ bool altreturning = FALSE; /* This entry point has alternate returns. */
int yes; int yes;
int old_lineno = lineno; int old_lineno = lineno;
char *old_input_filename = input_filename; const char *old_input_filename = input_filename;
input_filename = ffesymbol_where_filename (fn); input_filename = ffesymbol_where_filename (fn);
lineno = ffesymbol_where_filelinenum (fn); lineno = ffesymbol_where_filelinenum (fn);
@ -6262,7 +6261,7 @@ ffecom_gen_sfuncdef_ (ffesymbol s, ffeinfoBasictype bt, ffeinfoKindtype kt)
static bool recurse = FALSE; static bool recurse = FALSE;
int yes; int yes;
int old_lineno = lineno; int old_lineno = lineno;
char *old_input_filename = input_filename; const char *old_input_filename = input_filename;
ffecom_nested_entry_ = s; ffecom_nested_entry_ = s;
@ -7292,7 +7291,7 @@ ffecom_start_progunit_ ()
&& (ffecom_master_bt_ == FFEINFO_basictypeNONE); && (ffecom_master_bt_ == FFEINFO_basictypeNONE);
bool main_program = FALSE; bool main_program = FALSE;
int old_lineno = lineno; int old_lineno = lineno;
char *old_input_filename = input_filename; const char *old_input_filename = input_filename;
int yes; int yes;
assert (fn != NULL); assert (fn != NULL);
@ -7528,7 +7527,7 @@ ffecom_sym_transform_ (ffesymbol s)
ffeglobal g; ffeglobal g;
int yes; int yes;
int old_lineno = lineno; 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 /* Must ensure special ASSIGN variables are declared at top of outermost
block, else they'll end up in the innermost block when their first 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. */ tree t; /* Transformed thingy. */
int yes; int yes;
int old_lineno = lineno; int old_lineno = lineno;
char *old_input_filename = input_filename; const char *old_input_filename = input_filename;
if (ffesymbol_sfdummyparent (s) == NULL) if (ffesymbol_sfdummyparent (s) == NULL)
{ {
@ -14770,9 +14769,9 @@ init_decl_processing ()
ffe_init_0 (); ffe_init_0 ();
} }
char * const char *
init_parse (filename) init_parse (filename)
char *filename; const char *filename;
{ {
/* Open input file. */ /* Open input file. */
if (filename == 0 || !strcmp (filename, "-")) if (filename == 0 || !strcmp (filename, "-"))

View File

@ -36,11 +36,8 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#endif #endif
#ifdef DWARF_DEBUGGING_INFO #ifdef DWARF_DEBUGGING_INFO
void dwarfout_resume_previous_source_file (register unsigned); #include "dwarfout.h"
void dwarfout_start_new_source_file (register char *); #endif
void dwarfout_define (register unsigned, register char *);
void dwarfout_undef (register unsigned, register char *);
#endif DWARF_DEBUGGING_INFO
static void ffelex_append_to_token_ (char c); static void ffelex_append_to_token_ (char c);
static int ffelex_backslash_ (int c, ffewhereColumnNumber col); 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 #if FFECOM_targetCURRENT == FFECOM_targetGCC
static void static void
ffelex_file_pop_ (char *input_filename) ffelex_file_pop_ (const char *input_filename)
{ {
if (input_file_stack->next) if (input_file_stack->next)
{ {
@ -882,7 +879,7 @@ ffelex_file_pop_ (char *input_filename)
#endif #endif
#if FFECOM_targetCURRENT == FFECOM_targetGCC #if FFECOM_targetCURRENT == FFECOM_targetGCC
static void 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 *p
= (struct file_stack *) xmalloc (sizeof (struct file_stack)); = (struct file_stack *) xmalloc (sizeof (struct file_stack));
@ -1282,7 +1279,7 @@ ffelex_hash_ (FILE *finput)
&& (ffelex_token_type (token) == FFELEX_typeNUMBER)) && (ffelex_token_type (token) == FFELEX_typeNUMBER))
{ {
int old_lineno = lineno; int old_lineno = lineno;
char *old_input_filename = input_filename; const char *old_input_filename = input_filename;
ffewhereFile wf; ffewhereFile wf;
/* subtract one, because it is the following line that /* subtract one, because it is the following line that
@ -1554,7 +1551,7 @@ ffelex_include_ ()
= ffewhere_line_filelinenum (current_wl); = ffewhere_line_filelinenum (current_wl);
#if FFECOM_targetCURRENT == FFECOM_targetGCC #if FFECOM_targetCURRENT == FFECOM_targetGCC
int old_lineno = lineno; int old_lineno = lineno;
char *old_input_filename = input_filename; const char *old_input_filename = input_filename;
#endif #endif
if (card_length != 0) if (card_length != 0)

View File

@ -1500,7 +1500,7 @@ ffestd_exec_end ()
{ {
#if FFECOM_targetCURRENT == FFECOM_targetGCC #if FFECOM_targetCURRENT == FFECOM_targetGCC
int old_lineno = lineno; int old_lineno = lineno;
char *old_input_filename = input_filename; const char *old_input_filename = input_filename;
#endif #endif
ffecom_end_transition (); ffecom_end_transition ();

View File

@ -161,7 +161,7 @@ ffewhere_file_kill (ffewhereFile wf)
/* Create file object. */ /* Create file object. */
ffewhereFile ffewhereFile
ffewhere_file_new (char *name, size_t length) ffewhere_file_new (const char *name, size_t length)
{ {
ffewhereFile wf; ffewhereFile wf;
int filepos; int filepos;

View File

@ -89,7 +89,7 @@ extern struct _ffewhere_line_ ffewhere_unknown_line_;
/* Declare functions with prototypes. */ /* Declare functions with prototypes. */
void ffewhere_file_kill (ffewhereFile wf); 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_file_set (ffewhereFile wf, bool have_num, ffewhereLineNumber ln);
void ffewhere_init_1 (void); void ffewhere_init_1 (void);
char *ffewhere_line_content (ffewhereLine l); char *ffewhere_line_content (ffewhereLine l);

View File

@ -20,7 +20,7 @@ the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
/* Name of the input .c file being compiled. */ /* Name of the input .c file being compiled. */
extern char *main_input_filename; extern const char *main_input_filename;
enum debug_info_type enum debug_info_type
{ {

View File

@ -6391,7 +6391,7 @@ use_return_register ()
void void
expand_function_end (filename, line, end_bindings) expand_function_end (filename, line, end_bindings)
char *filename; const char *filename;
int line; int line;
int end_bindings; int end_bindings;
{ {

112
gcc/gcc.c
View File

@ -146,11 +146,11 @@ static int save_temps_flag;
/* The compiler version. */ /* The compiler version. */
static char *compiler_version; static const char *compiler_version;
/* The target version specified with -V */ /* 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. */ /* 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. */ When -b is used, the value comes from the `specs' file. */
#ifdef CROSS_COMPILE #ifdef CROSS_COMPILE
static char *cross_compile = "1"; static const char *cross_compile = "1";
#else #else
static char *cross_compile = "0"; static const char *cross_compile = "0";
#endif #endif
/* The number of errors that have occurred; the link phase will not be /* 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" #define LINKER_NAME "collect2"
#endif #endif
static char *cpp_spec = CPP_SPEC; static const char *cpp_spec = CPP_SPEC;
static char *cpp_predefines = CPP_PREDEFINES; static const char *cpp_predefines = CPP_PREDEFINES;
static char *cc1_spec = CC1_SPEC; static const char *cc1_spec = CC1_SPEC;
static char *cc1plus_spec = CC1PLUS_SPEC; static const char *cc1plus_spec = CC1PLUS_SPEC;
static char *signed_char_spec = SIGNED_CHAR_SPEC; static const char *signed_char_spec = SIGNED_CHAR_SPEC;
static char *asm_spec = ASM_SPEC; static const char *asm_spec = ASM_SPEC;
static char *asm_final_spec = ASM_FINAL_SPEC; static const char *asm_final_spec = ASM_FINAL_SPEC;
static char *link_spec = LINK_SPEC; static const char *link_spec = LINK_SPEC;
static char *lib_spec = LIB_SPEC; static const char *lib_spec = LIB_SPEC;
static char *libgcc_spec = LIBGCC_SPEC; static const char *libgcc_spec = LIBGCC_SPEC;
static char *endfile_spec = ENDFILE_SPEC; static const char *endfile_spec = ENDFILE_SPEC;
static char *startfile_spec = STARTFILE_SPEC; static const char *startfile_spec = STARTFILE_SPEC;
static char *switches_need_spaces = SWITCHES_NEED_SPACES; static const char *switches_need_spaces = SWITCHES_NEED_SPACES;
static char *linker_name_spec = LINKER_NAME; static const char *linker_name_spec = LINKER_NAME;
/* Some compilers have limits on line lengths, and the multilib_select /* 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 and/or multilib_matches strings can be very long, so we build them at
run time. */ run time. */
static struct obstack multilib_obstack; static struct obstack multilib_obstack;
static char *multilib_select; static const char *multilib_select;
static char *multilib_matches; static const char *multilib_matches;
static char *multilib_defaults; static const char *multilib_defaults;
static char *multilib_exclusions; static const char *multilib_exclusions;
#include "multilib.h" #include "multilib.h"
/* Check whether a particular argument is a default argument. */ /* Check whether a particular argument is a default argument. */
@ -1119,12 +1119,12 @@ struct spec_list
{ {
/* The following 2 fields must be first */ /* The following 2 fields must be first */
/* to allow EXTRA_SPECS to be initialized */ /* to allow EXTRA_SPECS to be initialized */
char *name; /* name of the spec. */ const char *name; /* name of the spec. */
char *ptr; /* available ptr if no static pointer */ const char *ptr; /* available ptr if no static pointer */
/* The following fields are not initialized */ /* The following fields are not initialized */
/* by EXTRA_SPECS */ /* 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. */ struct spec_list *next; /* Next spec in linked list. */
int name_len; /* length of the name */ int name_len; /* length of the name */
int alloc_p; /* whether string was allocated */ 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. */ That is all that the EXTRA_SPECS macro gives us. */
struct spec_list_1 struct spec_list_1
{ {
char *name; const char *name;
char *ptr; const char *ptr;
}; };
static struct spec_list_1 extra_specs_1[] = { EXTRA_SPECS }; static struct spec_list_1 extra_specs_1[] = { EXTRA_SPECS };
@ -1230,7 +1230,7 @@ set_spec (name, spec)
const char *spec; const char *spec;
{ {
struct spec_list *sl; struct spec_list *sl;
char *old_spec; const char *old_spec;
int name_len = strlen (name); int name_len = strlen (name);
int i; int i;
@ -1278,7 +1278,7 @@ set_spec (name, spec)
/* Free the old spec. */ /* Free the old spec. */
if (old_spec && sl->alloc_p) if (old_spec && sl->alloc_p)
free (old_spec); free ((PTR) old_spec);
sl->alloc_p = 1; sl->alloc_p = 1;
} }
@ -1413,7 +1413,7 @@ static const char *tooldir_prefix;
#ifndef STANDARD_BINDIR_PREFIX #ifndef STANDARD_BINDIR_PREFIX
#define STANDARD_BINDIR_PREFIX "/usr/local/bin" #define STANDARD_BINDIR_PREFIX "/usr/local/bin"
#endif #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 /* Subdirectory to use for locating libraries. Set by
set_multilib_dir based on the compilation options. */ set_multilib_dir based on the compilation options. */
@ -1657,7 +1657,7 @@ read_specs (filename, main_p)
set_spec (p2, *(sl->ptr_spec)); set_spec (p2, *(sl->ptr_spec));
if (sl->alloc_p) if (sl->alloc_p)
free (*(sl->ptr_spec)); free ((PTR) *(sl->ptr_spec));
*(sl->ptr_spec) = ""; *(sl->ptr_spec) = "";
sl->alloc_p = 0; 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 *x = (char *) alloca (strlen (cpp_predefines) + 1);
char *buf = x; char *buf = x;
char *y; const char *y;
/* Copy all of the -D options in CPP_PREDEFINES into BUF. */ /* Copy all of the -D options in CPP_PREDEFINES into BUF. */
y = cpp_predefines; 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 *x = (char *) alloca (strlen (cpp_predefines) * 4 + 1);
char *buf = x; char *buf = x;
char *y; const char *y;
/* Copy all of CPP_PREDEFINES into BUF, /* Copy all of CPP_PREDEFINES into BUF,
but force them all into the reserved name space if they 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': case 'v':
{ {
int c1 = *p++; /* Select first or second version number. */ int c1 = *p++; /* Select first or second version number. */
char *v = compiler_version; const char *v = compiler_version;
char *q; const char *q;
static const char zeroc = '0'; static const char zeroc = '0';
/* The format of the version string is /* 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 /* Build multilib_select, et. al from the separate lines that make up each
multilib selection. */ multilib selection. */
{ {
char **q = multilib_raw; const char *const *q = multilib_raw;
int need_space; int need_space;
obstack_init (&multilib_obstack); obstack_init (&multilib_obstack);
@ -5948,8 +5948,8 @@ used_arg (p, len)
{ {
struct mswitchstr struct mswitchstr
{ {
char *str; const char *str;
char *replace; const char *replace;
int len; int len;
int rep_len; int rep_len;
}; };
@ -5961,7 +5961,7 @@ used_arg (p, len)
if (!mswitches) if (!mswitches)
{ {
struct mswitchstr *matches; struct mswitchstr *matches;
char *q; const char *q;
int cnt = 0; int cnt = 0;
/* Break multilib_matches into the component strings of string and replacement /* Break multilib_matches into the component strings of string and replacement
@ -5982,7 +5982,6 @@ used_arg (p, len)
abort (); abort ();
q++; q++;
} }
*q = '\0';
matches[i].len = q - matches[i].str; matches[i].len = q - matches[i].str;
matches[i].replace = ++q; matches[i].replace = ++q;
@ -5994,9 +5993,7 @@ used_arg (p, len)
} }
matches[i].rep_len = q - matches[i].replace; matches[i].rep_len = q - matches[i].replace;
i++; i++;
if (*q == ';') if (*q != ';')
*q++ = '\0';
else
break; break;
} }
@ -6011,7 +6008,8 @@ used_arg (p, len)
{ {
int xlen = strlen (switches[i].part1); int xlen = strlen (switches[i].part1);
for (j = 0; j < cnt; j++) 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].str = matches[j].replace;
mswitches[n_mswitches].len = matches[j].rep_len; mswitches[n_mswitches].len = matches[j].rep_len;
@ -6035,7 +6033,7 @@ default_arg (p, len)
const char *p; const char *p;
int len; int len;
{ {
char *start, *end; const char *start, *end;
for (start = multilib_defaults; *start != '\0'; start = end+1) for (start = multilib_defaults; *start != '\0'; start = end+1)
{ {
@ -6072,9 +6070,9 @@ default_arg (p, len)
static void static void
set_multilib_dir () set_multilib_dir ()
{ {
char *p; const char *p;
unsigned int this_path_len; unsigned int this_path_len;
char *this_path, *this_arg; const char *this_path, *this_arg;
int not_arg; int not_arg;
int ok; int ok;
@ -6229,8 +6227,8 @@ set_multilib_dir ()
static void static void
print_multilib_info () print_multilib_info ()
{ {
char *p = multilib_select; const char *p = multilib_select;
char *last_path = 0, *this_path; const char *last_path = 0, *this_path;
int skip; int skip;
unsigned int last_path_len = 0; 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 with the '!' in either list. If any of the exclusion rules match
all of its options with the select rule, we skip it. */ all of its options with the select rule, we skip it. */
{ {
char *e = multilib_exclusions; const char *e = multilib_exclusions;
char *this_arg; const char *this_arg;
while (*e != '\0') while (*e != '\0')
{ {
@ -6273,7 +6271,7 @@ print_multilib_info ()
/* Check the arguments. */ /* Check the arguments. */
while (*e != ';') while (*e != ';')
{ {
char *q; const char *q;
int mp = 0; int mp = 0;
if (*e == '\0') if (*e == '\0')
@ -6297,7 +6295,7 @@ print_multilib_info ()
q = p + 1; q = p + 1;
while (*q != ';') while (*q != ';')
{ {
char *arg; const char *arg;
int len = e - this_arg; int len = e - this_arg;
if (*q == '\0') if (*q == '\0')
@ -6356,12 +6354,12 @@ print_multilib_info ()
this one which does not require that default argument. */ this one which does not require that default argument. */
if (! skip) if (! skip)
{ {
char *q; const char *q;
q = p + 1; q = p + 1;
while (*q != ';') while (*q != ';')
{ {
char *arg; const char *arg;
if (*q == '\0') if (*q == '\0')
abort (); abort ();
@ -6392,7 +6390,7 @@ print_multilib_info ()
if (! skip) if (! skip)
{ {
char *p1; const char *p1;
for (p1 = last_path; p1 < p; p1++) for (p1 = last_path; p1 < p; p1++)
putchar (*p1); putchar (*p1);
@ -6437,7 +6435,7 @@ print_multilib_info ()
if (multilib_extra && *multilib_extra) if (multilib_extra && *multilib_extra)
{ {
int print_at = TRUE; int print_at = TRUE;
char *q; const char *q;
for (q = multilib_extra; *q != '\0'; q++) for (q = multilib_extra; *q != '\0'; q++)
{ {

View File

@ -107,7 +107,7 @@ exceptions=$4
extra=$5 extra=$5
exclusions=$6 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 # What we want to do is select all combinations of the sets in
# options. Each combination which includes a set of mutually # options. Each combination which includes a set of mutually
@ -285,7 +285,7 @@ echo "};"
# Note, the format of the matches is reversed compared # Note, the format of the matches is reversed compared
# to what we want, so switch them around. # to what we want, so switch them around.
echo "" echo ""
echo "static char *multilib_matches_raw[] = {" echo "static const char *const multilib_matches_raw[] = {"
for match in ${matches}; do for match in ${matches}; do
l=`echo ${match} | sed -e 's/=.*$//' -e 's/?/=/g'` l=`echo ${match} | sed -e 's/=.*$//' -e 's/?/=/g'`
r=`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 # Output the default options now
echo "" echo ""
echo "static char *multilib_extra = \"${extra}\";" echo "static const char *multilib_extra = \"${extra}\";"
# Output the exclusion rules now # Output the exclusion rules now
echo "" echo ""
echo "static char *multilib_exclusions_raw[] = {" echo "static const char *const multilib_exclusions_raw[] = {"
for rule in ${exclusions}; do for rule in ${exclusions}; do
s=`echo ${rule} | sed -e 's,/, ,g'` s=`echo ${rule} | sed -e 's,/, ,g'`
echo "\"${s};\"," echo "\"${s};\","

View File

@ -2281,10 +2281,11 @@ make_insn_sequence (insn, type)
struct decision *last; struct decision *last;
struct decision_test *test, **place; struct decision_test *test, **place;
struct decision_head head; 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)); record_insn_name (next_insn_code, (type == RECOG ? XSTR (insn, 0) : NULL));
c_test_pos[0] = '\0';
if (type == PEEPHOLE2) if (type == PEEPHOLE2)
{ {
int i, j; int i, j;
@ -2307,7 +2308,6 @@ make_insn_sequence (insn, type)
} }
XVECLEN (x, 0) = j; XVECLEN (x, 0) = j;
c_test_pos = alloca (2);
c_test_pos[0] = 'A' + j - 1; c_test_pos[0] = 'A' + j - 1;
c_test_pos[1] = '\0'; c_test_pos[1] = '\0';
} }
@ -2473,8 +2473,6 @@ main (argc, argv)
{ {
rtx desc; rtx desc;
struct decision_head recog_tree, split_tree, peephole2_tree, h; struct decision_head recog_tree, split_tree, peephole2_tree, h;
FILE *infile;
register int c;
progname = "genrecog"; progname = "genrecog";

View File

@ -20,10 +20,10 @@ the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
/* Source file current line is coming from. */ /* Source file current line is coming from. */
extern char *input_filename; extern const char *input_filename;
/* Top-level source file. */ /* Top-level source file. */
extern char *main_input_filename; extern const char *main_input_filename;
/* Line number in current source file. */ /* Line number in current source file. */
extern int lineno; extern int lineno;
@ -33,7 +33,7 @@ extern FILE *finput;
struct file_stack struct file_stack
{ {
char *name; const char *name;
struct file_stack *next; struct file_stack *next;
int line; int line;
int indent_level; int indent_level;
@ -46,5 +46,5 @@ extern struct file_stack *input_file_stack;
/* Incremented on each change to input_file_stack. */ /* Incremented on each change to input_file_stack. */
extern int input_file_stack_tick; 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)); extern void pop_srcloc PARAMS ((void));

View File

@ -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> 2000-05-08 Tom Tromey <tromey@cygnus.com>
* expr.c (build_jni_stub): Cache the result of * expr.c (build_jni_stub): Cache the result of

View File

@ -711,7 +711,7 @@ check_init (exp, before)
case EXPR_WITH_FILE_LOCATION: case EXPR_WITH_FILE_LOCATION:
{ {
char *saved_input_filename = input_filename; const char *saved_input_filename = input_filename;
tree saved_wfl = wfl; tree saved_wfl = wfl;
tree body = EXPR_WFL_NODE (exp); tree body = EXPR_WFL_NODE (exp);
int saved_lineno = lineno; int saved_lineno = lineno;

View File

@ -320,7 +320,7 @@ push_class (class_type, class_name)
tree class_type, class_name; tree class_type, class_name;
{ {
tree decl, signature; tree decl, signature;
char *save_input_filename = input_filename; const char *save_input_filename = input_filename;
int save_lineno = lineno; int save_lineno = lineno;
tree source_name = identifier_subst (class_name, "", '.', '/', ".java"); tree source_name = identifier_subst (class_name, "", '.', '/', ".java");
push_obstacks (&permanent_obstack, &permanent_obstack); push_obstacks (&permanent_obstack, &permanent_obstack);

View File

@ -758,9 +758,11 @@ extern void jcf_print_char PARAMS ((FILE *, int));
extern void jcf_print_utf8_replace PARAMS ((FILE *, const unsigned char *, extern void jcf_print_utf8_replace PARAMS ((FILE *, const unsigned char *,
int, int, int)); int, int, int));
# if JCF_USE_STDIO # 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 # 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 /* JCF_USE_STDIO */
#endif #endif
void java_debug_context PARAMS ((void)); void java_debug_context PARAMS ((void));

View File

@ -183,9 +183,10 @@ DEFUN(open_in_zip, (jcf, zipfile, zipmember, is_system),
} }
#if JCF_USE_STDIO #if JCF_USE_STDIO
char* const char *
DEFUN(open_class, (filename, jcf, stream, dep_name), 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) if (jcf)
{ {
@ -204,9 +205,9 @@ DEFUN(open_class, (filename, jcf, stream, dep_name),
return filename; return filename;
} }
#else #else
char* const char *
DEFUN(open_class, (filename, jcf, fd, dep_name), 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) if (jcf)
{ {
@ -441,9 +442,7 @@ DEFUN(find_class, (classname, classname_length, jcf, source_ok),
close (fd); /* We use STDIO for source file */ close (fd); /* We use STDIO for source file */
} }
else else
buffer = open_class (buffer, jcf, fd, dep_file); buffer = (char *) open_class (buffer, jcf, fd, dep_file);
jcf->classname = (char *) ALLOC (classname_length + 1);
strncpy (jcf->classname, classname, classname_length + 1);
jcf->classname = xstrdup (classname); jcf->classname = xstrdup (classname);
return buffer; return buffer;
#endif #endif

View File

@ -481,7 +481,7 @@ read_class (name)
{ {
JCF this_jcf, *jcf; JCF this_jcf, *jcf;
tree save_current_class = current_class; 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; JCF *save_current_jcf = current_jcf;
long saved_pos = 0; long saved_pos = 0;
if (current_jcf->read_state) if (current_jcf->read_state)
@ -665,7 +665,7 @@ static void
parse_class_file () parse_class_file ()
{ {
tree method; tree method;
char *save_input_filename = input_filename; const char *save_input_filename = input_filename;
int save_lineno = lineno; int save_lineno = lineno;
java_layout_seen_class_methods (); java_layout_seen_class_methods ();
@ -841,7 +841,7 @@ yyparse ()
if (twice) if (twice)
{ {
char *saved_input_filename = input_filename; const char *saved_input_filename = input_filename;
input_filename = value; input_filename = value;
warning ("source file seen twice on command line and will be compiled only once."); warning ("source file seen twice on command line and will be compiled only once.");
input_filename = saved_input_filename; input_filename = saved_input_filename;

View File

@ -1479,7 +1479,7 @@ generate_bytecode_insns (exp, target, state)
break; break;
case EXPR_WITH_FILE_LOCATION: case EXPR_WITH_FILE_LOCATION:
{ {
char *saved_input_filename = input_filename; const char *saved_input_filename = input_filename;
tree body = EXPR_WFL_NODE (exp); tree body = EXPR_WFL_NODE (exp);
int saved_lineno = lineno; int saved_lineno = lineno;
if (body == empty_stmt_node) if (body == empty_stmt_node)
@ -2796,7 +2796,7 @@ generate_classfile (clas, state)
struct jcf_partial *state; struct jcf_partial *state;
{ {
struct chunk *cpool_chunk; struct chunk *cpool_chunk;
char *source_file; const char *source_file, *s;
char *ptr; char *ptr;
int i; int i;
char *fields_count_ptr; char *fields_count_ptr;
@ -3064,13 +3064,13 @@ generate_classfile (clas, state)
ptr = methods_count_ptr; UNSAFE_PUT2 (methods_count); ptr = methods_count_ptr; UNSAFE_PUT2 (methods_count);
source_file = DECL_SOURCE_FILE (TYPE_NAME (clas)); source_file = DECL_SOURCE_FILE (TYPE_NAME (clas));
for (ptr = source_file; ; ptr++) for (s = source_file; ; s++)
{ {
char ch = *ptr; char ch = *ptr;
if (ch == '\0') if (ch == '\0')
break; break;
if (ch == '/' || ch == '\\') if (ch == '/' || ch == '\\')
source_file = ptr+1; source_file = s+1;
} }
ptr = append_chunk (NULL, 10, state); ptr = append_chunk (NULL, 10, state);

View File

@ -95,8 +95,8 @@ typedef struct JCF {
long zip_offset; long zip_offset;
jcf_filbuf_t filbuf; jcf_filbuf_t filbuf;
void *read_state; void *read_state;
char *filename; const char *filename;
char *classname; const char *classname;
void *zipd; /* Directory entry where it was found */ void *zipd; /* Directory entry where it was found */
JCF_u2 access_flags, this_class, super_class; JCF_u2 access_flags, this_class, super_class;
CPool cpool; CPool cpool;
@ -144,8 +144,8 @@ typedef struct JCF {
#define JCF_FINISH(JCF) { \ #define JCF_FINISH(JCF) { \
CPOOL_FINISH(&(JCF)->cpool); \ CPOOL_FINISH(&(JCF)->cpool); \
if ((JCF)->buffer) FREE ((JCF)->buffer); \ if ((JCF)->buffer) FREE ((JCF)->buffer); \
if ((JCF)->filename) FREE ((JCF)->filename); \ if ((JCF)->filename) FREE ((char *) (JCF)->filename); \
if ((JCF)->classname) FREE ((JCF)->classname); } if ((JCF)->classname) FREE ((char *) (JCF)->classname); }
#define CPOOL_INIT(CPOOL) \ #define CPOOL_INIT(CPOOL) \
((CPOOL)->capacity = 0, (CPOOL)->count = 0, (CPOOL)->tags = 0, (CPOOL)->data = 0) ((CPOOL)->capacity = 0, (CPOOL)->count = 0, (CPOOL)->tags = 0, (CPOOL)->data = 0)

View File

@ -303,9 +303,9 @@ lang_decode_option (argc, argv)
} }
FILE *finput; FILE *finput;
char * const char *
init_parse (filename) init_parse (filename)
char *filename; const char *filename;
{ {
/* Open input file. */ /* Open input file. */

View File

@ -1363,7 +1363,7 @@ java_is_eol (fp, c)
char * char *
java_get_line_col (filename, line, col) java_get_line_col (filename, line, col)
char *filename ATTRIBUTE_UNUSED; const char *filename ATTRIBUTE_UNUSED;
int line ATTRIBUTE_UNUSED, col ATTRIBUTE_UNUSED; int line ATTRIBUTE_UNUSED, col ATTRIBUTE_UNUSED;
{ {
#ifdef JC1_LITE #ifdef JC1_LITE

View File

@ -1,7 +1,6 @@
/* A Bison parser, made from ./parse.y /* 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. */ #define YYBISON 1 /* Identify Bison output. */
@ -12,113 +11,113 @@
#define yychar java_char #define yychar java_char
#define yydebug java_debug #define yydebug java_debug
#define yynerrs java_nerrs #define yynerrs java_nerrs
#define PLUS_TK 258 #define PLUS_TK 257
#define MINUS_TK 259 #define MINUS_TK 258
#define MULT_TK 260 #define MULT_TK 259
#define DIV_TK 261 #define DIV_TK 260
#define REM_TK 262 #define REM_TK 261
#define LS_TK 263 #define LS_TK 262
#define SRS_TK 264 #define SRS_TK 263
#define ZRS_TK 265 #define ZRS_TK 264
#define AND_TK 266 #define AND_TK 265
#define XOR_TK 267 #define XOR_TK 266
#define OR_TK 268 #define OR_TK 267
#define BOOL_AND_TK 269 #define BOOL_AND_TK 268
#define BOOL_OR_TK 270 #define BOOL_OR_TK 269
#define EQ_TK 271 #define EQ_TK 270
#define NEQ_TK 272 #define NEQ_TK 271
#define GT_TK 273 #define GT_TK 272
#define GTE_TK 274 #define GTE_TK 273
#define LT_TK 275 #define LT_TK 274
#define LTE_TK 276 #define LTE_TK 275
#define PLUS_ASSIGN_TK 277 #define PLUS_ASSIGN_TK 276
#define MINUS_ASSIGN_TK 278 #define MINUS_ASSIGN_TK 277
#define MULT_ASSIGN_TK 279 #define MULT_ASSIGN_TK 278
#define DIV_ASSIGN_TK 280 #define DIV_ASSIGN_TK 279
#define REM_ASSIGN_TK 281 #define REM_ASSIGN_TK 280
#define LS_ASSIGN_TK 282 #define LS_ASSIGN_TK 281
#define SRS_ASSIGN_TK 283 #define SRS_ASSIGN_TK 282
#define ZRS_ASSIGN_TK 284 #define ZRS_ASSIGN_TK 283
#define AND_ASSIGN_TK 285 #define AND_ASSIGN_TK 284
#define XOR_ASSIGN_TK 286 #define XOR_ASSIGN_TK 285
#define OR_ASSIGN_TK 287 #define OR_ASSIGN_TK 286
#define PUBLIC_TK 288 #define PUBLIC_TK 287
#define PRIVATE_TK 289 #define PRIVATE_TK 288
#define PROTECTED_TK 290 #define PROTECTED_TK 289
#define STATIC_TK 291 #define STATIC_TK 290
#define FINAL_TK 292 #define FINAL_TK 291
#define SYNCHRONIZED_TK 293 #define SYNCHRONIZED_TK 292
#define VOLATILE_TK 294 #define VOLATILE_TK 293
#define TRANSIENT_TK 295 #define TRANSIENT_TK 294
#define NATIVE_TK 296 #define NATIVE_TK 295
#define PAD_TK 297 #define PAD_TK 296
#define ABSTRACT_TK 298 #define ABSTRACT_TK 297
#define MODIFIER_TK 299 #define MODIFIER_TK 298
#define DECR_TK 300 #define DECR_TK 299
#define INCR_TK 301 #define INCR_TK 300
#define DEFAULT_TK 302 #define DEFAULT_TK 301
#define IF_TK 303 #define IF_TK 302
#define THROW_TK 304 #define THROW_TK 303
#define BOOLEAN_TK 305 #define BOOLEAN_TK 304
#define DO_TK 306 #define DO_TK 305
#define IMPLEMENTS_TK 307 #define IMPLEMENTS_TK 306
#define THROWS_TK 308 #define THROWS_TK 307
#define BREAK_TK 309 #define BREAK_TK 308
#define IMPORT_TK 310 #define IMPORT_TK 309
#define ELSE_TK 311 #define ELSE_TK 310
#define INSTANCEOF_TK 312 #define INSTANCEOF_TK 311
#define RETURN_TK 313 #define RETURN_TK 312
#define VOID_TK 314 #define VOID_TK 313
#define CATCH_TK 315 #define CATCH_TK 314
#define INTERFACE_TK 316 #define INTERFACE_TK 315
#define CASE_TK 317 #define CASE_TK 316
#define EXTENDS_TK 318 #define EXTENDS_TK 317
#define FINALLY_TK 319 #define FINALLY_TK 318
#define SUPER_TK 320 #define SUPER_TK 319
#define WHILE_TK 321 #define WHILE_TK 320
#define CLASS_TK 322 #define CLASS_TK 321
#define SWITCH_TK 323 #define SWITCH_TK 322
#define CONST_TK 324 #define CONST_TK 323
#define TRY_TK 325 #define TRY_TK 324
#define FOR_TK 326 #define FOR_TK 325
#define NEW_TK 327 #define NEW_TK 326
#define CONTINUE_TK 328 #define CONTINUE_TK 327
#define GOTO_TK 329 #define GOTO_TK 328
#define PACKAGE_TK 330 #define PACKAGE_TK 329
#define THIS_TK 331 #define THIS_TK 330
#define BYTE_TK 332 #define BYTE_TK 331
#define SHORT_TK 333 #define SHORT_TK 332
#define INT_TK 334 #define INT_TK 333
#define LONG_TK 335 #define LONG_TK 334
#define CHAR_TK 336 #define CHAR_TK 335
#define INTEGRAL_TK 337 #define INTEGRAL_TK 336
#define FLOAT_TK 338 #define FLOAT_TK 337
#define DOUBLE_TK 339 #define DOUBLE_TK 338
#define FP_TK 340 #define FP_TK 339
#define ID_TK 341 #define ID_TK 340
#define REL_QM_TK 342 #define REL_QM_TK 341
#define REL_CL_TK 343 #define REL_CL_TK 342
#define NOT_TK 344 #define NOT_TK 343
#define NEG_TK 345 #define NEG_TK 344
#define ASSIGN_ANY_TK 346 #define ASSIGN_ANY_TK 345
#define ASSIGN_TK 347 #define ASSIGN_TK 346
#define OP_TK 348 #define OP_TK 347
#define CP_TK 349 #define CP_TK 348
#define OCB_TK 350 #define OCB_TK 349
#define CCB_TK 351 #define CCB_TK 350
#define OSB_TK 352 #define OSB_TK 351
#define CSB_TK 353 #define CSB_TK 352
#define SC_TK 354 #define SC_TK 353
#define C_TK 355 #define C_TK 354
#define DOT_TK 356 #define DOT_TK 355
#define STRING_LIT_TK 357 #define STRING_LIT_TK 356
#define CHAR_LIT_TK 358 #define CHAR_LIT_TK 357
#define INT_LIT_TK 359 #define INT_LIT_TK 358
#define FP_LIT_TK 360 #define FP_LIT_TK 359
#define TRUE_TK 361 #define TRUE_TK 360
#define FALSE_TK 362 #define FALSE_TK 361
#define BOOL_LIT_TK 363 #define BOOL_LIT_TK 362
#define NULL_TK 364 #define NULL_TK 363
#line 48 "./parse.y" #line 48 "./parse.y"
@ -517,7 +516,7 @@ typedef union {
#define YYFLAG -32768 #define YYFLAG -32768
#define YYNTBASE 110 #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, 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,
@ -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, 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, 2, 2, 2, 2, 2, 1, 3, 4, 5, 6,
6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
106, 107, 108, 109 107, 108, 109
}; };
#if YYDEBUG != 0 #if YYDEBUG != 0
@ -2388,6 +2387,7 @@ static const short yycheck[] = { 3,
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ /* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line 3 "/usr/share/misc/bison.simple" #line 3 "/usr/share/misc/bison.simple"
/* This file comes from bison-1.28. */
/* Skeleton output parser for bison, /* Skeleton output parser for bison,
Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
@ -2404,47 +2404,67 @@ static const short yycheck[] = { 3,
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software 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 /* As a special exception, when this file is copied by Bison into a
Bison output file, you may use that output file without restriction. Bison output file, you may use that output file without restriction.
This special exception was added by the Free Software Foundation This special exception was added by the Free Software Foundation
in version 1.24 of Bison. */ in version 1.24 of Bison. */
#ifndef alloca
#ifdef __GNUC__
#define alloca __builtin_alloca
#else /* not GNU C. */
#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
#include <alloca.h>
#else /* not sparc */
#if defined (MSDOS) && !defined (__TURBOC__)
#include <malloc.h>
#else /* not MSDOS, or __TURBOC__ */
#if defined(_AIX)
#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 */
#endif /* __hpux */
#endif /* not _AIX */
#endif /* not MSDOS, or __TURBOC__ */
#endif /* not sparc. */
#endif /* not GNU C. */
#endif /* alloca not defined. */
/* This is the parser code that is written into each bison parser /* This is the parser code that is written into each bison parser
when the %semantic_parser declaration is not specified in the grammar. when the %semantic_parser declaration is not specified in the grammar.
It was written by Richard Stallman by simplifying the hairy parser It was written by Richard Stallman by simplifying the hairy parser
used when %semantic_parser is specified. */ 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) || (defined (__sun) && defined (__i386))
#define YYSTACK_USE_ALLOCA
#include <alloca.h>
#else /* not sparc */
/* 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)
/* 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
#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 /* YYSTACK_USE_ALLOCA not defined */
#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. /* Note: there must be only one dollar sign in this file.
It is replaced by the list of actions, each action It is replaced by the list of actions, each action
as one case of the switch. */ as one case of the switch. */
@ -2453,8 +2473,8 @@ void *alloca ();
#define yyclearin (yychar = YYEMPTY) #define yyclearin (yychar = YYEMPTY)
#define YYEMPTY -2 #define YYEMPTY -2
#define YYEOF 0 #define YYEOF 0
#define YYACCEPT return(0) #define YYACCEPT goto yyacceptlab
#define YYABORT return(1) #define YYABORT goto yyabortlab
#define YYERROR goto yyerrlab1 #define YYERROR goto yyerrlab1
/* Like YYERROR except do call yyerror. /* Like YYERROR except do call yyerror.
This remains here temporarily to ease the This remains here temporarily to ease the
@ -2535,14 +2555,12 @@ int yydebug; /* nonzero means print parse trace */
#ifndef YYMAXDEPTH #ifndef YYMAXDEPTH
#define YYMAXDEPTH 10000 #define YYMAXDEPTH 10000
#endif #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. */ #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) #define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
#else /* not GNU C or C++ */ #else /* not GNU C or C++ */
@ -2554,7 +2572,7 @@ static void
__yy_memcpy (to, from, count) __yy_memcpy (to, from, count)
char *to; char *to;
char *from; char *from;
int count; unsigned int count;
{ {
register char *f = from; register char *f = from;
register char *t = to; register char *t = to;
@ -2569,10 +2587,10 @@ __yy_memcpy (to, from, count)
/* This is the most reliable way to avoid incompatibilities /* This is the most reliable way to avoid incompatibilities
in available built-in functions on various systems. */ in available built-in functions on various systems. */
static void 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 *t = to;
register char *f = from;
register int i = count; register int i = count;
while (i-- > 0) while (i-- > 0)
@ -2582,7 +2600,7 @@ __yy_memcpy (char *to, char *from, int count)
#endif #endif
#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 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
into yyparse. The argument should have type void *. into yyparse. The argument should have type void *.
@ -2603,6 +2621,15 @@ __yy_memcpy (char *to, char *from, int count)
#define YYPARSE_PARAM_DECL #define YYPARSE_PARAM_DECL
#endif /* not YYPARSE_PARAM */ #endif /* not YYPARSE_PARAM */
/* Prevent warning if -Wstrict-prototypes. */
#ifdef __GNUC__
#ifdef YYPARSE_PARAM
int yyparse (void *);
#else
int yyparse (void);
#endif
#endif
int int
yyparse(YYPARSE_PARAM_ARG) yyparse(YYPARSE_PARAM_ARG)
YYPARSE_PARAM_DECL YYPARSE_PARAM_DECL
@ -2631,6 +2658,7 @@ yyparse(YYPARSE_PARAM_ARG)
#endif #endif
int yystacksize = YYINITDEPTH; int yystacksize = YYINITDEPTH;
int yyfree_stacks = 0;
#ifdef YYPURE #ifdef YYPURE
int yychar; int yychar;
@ -2715,18 +2743,32 @@ yynewstate:
if (yystacksize >= YYMAXDEPTH) if (yystacksize >= YYMAXDEPTH)
{ {
yyerror("parser stack overflow"); yyerror("parser stack overflow");
if (yyfree_stacks)
{
free (yyss);
free (yyvs);
#ifdef YYLSP_NEEDED
free (yyls);
#endif
}
return 2; return 2;
} }
yystacksize *= 2; yystacksize *= 2;
if (yystacksize > YYMAXDEPTH) if (yystacksize > YYMAXDEPTH)
yystacksize = YYMAXDEPTH; yystacksize = YYMAXDEPTH;
yyss = (short *) alloca (yystacksize * sizeof (*yyssp)); #ifndef YYSTACK_USE_ALLOCA
__yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp)); yyfree_stacks = 1;
yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp)); #endif
__yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp)); 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 #ifdef YYLSP_NEEDED
yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp)); yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
__yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp)); __yy_memcpy ((char *)yyls, (char *)yyls1,
size * (unsigned int) sizeof (*yylsp));
#endif #endif
#endif /* no yyoverflow */ #endif /* no yyoverflow */
@ -4978,7 +5020,7 @@ case 503:
break;} break;}
} }
/* the action file gets copied in in place of this dollarsign */ /* 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; yyvsp -= yylen;
yyssp -= yylen; yyssp -= yylen;
@ -5173,6 +5215,30 @@ yyerrhandle:
yystate = yyn; yystate = yyn;
goto yynewstate; 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" #line 2546 "./parse.y"
@ -5310,7 +5376,7 @@ static void
java_parser_context_suspend () java_parser_context_suspend ()
{ {
/* This makes debugging through java_debug_context easier */ /* 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 /* Duplicate the previous context, use it to save the globals we're
interested in */ interested in */
@ -5597,7 +5663,7 @@ issue_warning_error_from_context (cl, msg, ap)
const char *msg; const char *msg;
va_list ap; va_list ap;
{ {
char *saved, *saved_input_filename; const char *saved, *saved_input_filename;
char buffer [4096]; char buffer [4096];
vsprintf (buffer, msg, ap); vsprintf (buffer, msg, ap);
force_error = 1; force_error = 1;
@ -7791,7 +7857,7 @@ safe_layout_class (class)
tree class; tree class;
{ {
tree save_current_class = current_class; tree save_current_class = current_class;
char *save_input_filename = input_filename; const char *save_input_filename = input_filename;
int save_lineno = lineno; int save_lineno = lineno;
push_obstacks (&permanent_obstack, &permanent_obstack); push_obstacks (&permanent_obstack, &permanent_obstack);

View File

@ -705,7 +705,7 @@ typedef struct _jdeplist {
/* Parser context data structure. */ /* Parser context data structure. */
struct parser_ctxt { struct parser_ctxt {
char *filename; /* Current filename */ const char *filename; /* Current filename */
FILE *finput; /* Current file input stream */ FILE *finput; /* Current file input stream */
struct parser_ctxt *next; struct parser_ctxt *next;
@ -898,7 +898,7 @@ void java_expand_switch PARAMS ((tree));
int java_report_errors PARAMS ((void)); int java_report_errors PARAMS ((void));
extern tree do_resolve_class PARAMS ((tree, tree, tree, tree)); extern tree do_resolve_class PARAMS ((tree, tree, tree, tree));
#endif #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)); extern void reset_report PARAMS ((void));
/* Always in use, no matter what you compile */ /* Always in use, no matter what you compile */

View File

@ -2678,7 +2678,7 @@ static void
java_parser_context_suspend () java_parser_context_suspend ()
{ {
/* This makes debugging through java_debug_context easier */ /* 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 /* Duplicate the previous context, use it to save the globals we're
interested in */ interested in */
@ -2965,7 +2965,7 @@ issue_warning_error_from_context (cl, msg, ap)
const char *msg; const char *msg;
va_list ap; va_list ap;
{ {
char *saved, *saved_input_filename; const char *saved, *saved_input_filename;
char buffer [4096]; char buffer [4096];
vsprintf (buffer, msg, ap); vsprintf (buffer, msg, ap);
force_error = 1; force_error = 1;
@ -5159,7 +5159,7 @@ safe_layout_class (class)
tree class; tree class;
{ {
tree save_current_class = current_class; tree save_current_class = current_class;
char *save_input_filename = input_filename; const char *save_input_filename = input_filename;
int save_lineno = lineno; int save_lineno = lineno;
push_obstacks (&permanent_obstack, &permanent_obstack); push_obstacks (&permanent_obstack, &permanent_obstack);

View File

@ -1,7 +1,6 @@
/* A Bison parser, made from objc-parse.y /* 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. */ #define YYBISON 1 /* Identify Bison output. */
@ -102,7 +101,7 @@ const char * const language_string = "GNU Obj-C";
#line 66 "objc-parse.y" #line 66 "objc-parse.y"
typedef union {long itype; tree ttype; enum tree_code code; 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" #line 198 "objc-parse.y"
/* Number of statements (loosely speaking) and compound statements /* 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; /* 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. */ 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; static int if_stmt_line;
/* List of types and structure classes of the current declaration. */ /* 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 50, 51, 52, 53, 54, 55, 56, 57
}; };
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ /* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line 3 "/usr/lib/bison.simple" #line 3 "/usr/share/misc/bison.simple"
/* This file comes from bison-1.27. */ /* This file comes from bison-1.28. */
/* Skeleton output parser for bison, /* Skeleton output parser for bison,
Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
@ -1973,7 +1972,7 @@ __yy_memcpy (char *to, char *from, unsigned int count)
#endif #endif
#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 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
into yyparse. The argument should have type void *. into yyparse. The argument should have type void *.
@ -5096,7 +5095,7 @@ case 570:
break;} break;}
} }
/* the action file gets copied in in place of this dollarsign */ /* 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; yyvsp -= yylen;
yyssp -= yylen; yyssp -= yylen;

View File

@ -64,7 +64,7 @@ const char * const language_string = "GNU Obj-C";
%start program %start program
%union {long itype; tree ttype; enum tree_code code; %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 /* All identifiers that are not reserved words
and are not declared typedefs in the current block */ 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; /* 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. */ 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; static int if_stmt_line;
/* List of types and structure classes of the current declaration. */ /* List of types and structure classes of the current declaration. */

View File

@ -403,6 +403,13 @@ extern int sdb_begin_function_line;
#ifdef BUFSIZ #ifdef BUFSIZ
extern FILE *asm_out_file; extern FILE *asm_out_file;
#endif #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 /* Nonzero if function being compiled doesn't contain any calls
(ignoring the prologue and epilogue). This is set prior to (ignoring the prologue and epilogue). This is set prior to
local register allocation and is valid for the remaining local register allocation and is valid for the remaining

View File

@ -1311,7 +1311,7 @@ void
expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line) expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line)
tree string, outputs, inputs, clobbers; tree string, outputs, inputs, clobbers;
int vol; int vol;
char *filename; const char *filename;
int line; int line;
{ {
rtvec argvec, constraints; rtvec argvec, constraints;

View File

@ -163,7 +163,7 @@ static void pipe_closed PARAMS ((int)) ATTRIBUTE_NORETURN;
/* This might or might not be used in ASM_IDENTIFY_LANGUAGE. */ /* This might or might not be used in ASM_IDENTIFY_LANGUAGE. */
static void output_lang_identify PARAMS ((FILE *)) ATTRIBUTE_UNUSED; static void output_lang_identify PARAMS ((FILE *)) ATTRIBUTE_UNUSED;
#endif #endif
static void compile_file PARAMS ((char *)); static void compile_file PARAMS ((const char *));
static void display_help PARAMS ((void)); static void display_help PARAMS ((void));
static void mark_file_stack 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). /* Name of current original source file (what was input to cpp).
This comes from each #-command in the actual input. */ 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). /* Name of top-level original source file (what was input to cpp).
This comes from the #-command at the beginning of the actual input. 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. */ 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. */ /* Current line number in real source file. */
@ -1992,7 +1992,7 @@ check_global_declarations (vec, len)
void void
push_srcloc (file, line) push_srcloc (file, line)
char *file; const char *file;
int line; int line;
{ {
struct file_stack *fs; struct file_stack *fs;
@ -2037,7 +2037,7 @@ pop_srcloc ()
static void static void
compile_file (name) compile_file (name)
char *name; const char *name;
{ {
tree globals; tree globals;
@ -4826,7 +4826,7 @@ print_switch_values (file, pos, max, indent, sep, term)
void void
debug_start_source_file (filename) debug_start_source_file (filename)
register char *filename ATTRIBUTE_UNUSED; register const char *filename ATTRIBUTE_UNUSED;
{ {
#ifdef DBX_DEBUGGING_INFO #ifdef DBX_DEBUGGING_INFO
if (write_symbols == DBX_DEBUG) if (write_symbols == DBX_DEBUG)

View File

@ -31,7 +31,7 @@ extern int read_integral_parameter PARAMS ((const char *, const char *,
extern int count_error PARAMS ((int)); extern int count_error PARAMS ((int));
extern void strip_off_ending PARAMS ((char *, int)); extern void strip_off_ending PARAMS ((char *, int));
extern void print_time PARAMS ((const char *, long)); 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_end_source_file PARAMS ((unsigned));
extern void debug_define PARAMS ((unsigned, char *)); extern void debug_define PARAMS ((unsigned, char *));
extern void debug_undef PARAMS ((unsigned, char *)); extern void debug_undef PARAMS ((unsigned, char *));

View File

@ -44,6 +44,7 @@ Boston, MA 02111-1307, USA. */
#include "toplev.h" #include "toplev.h"
#include "ggc.h" #include "ggc.h"
#include "hashtab.h" #include "hashtab.h"
#include "output.h"
#define obstack_chunk_alloc xmalloc #define obstack_chunk_alloc xmalloc
#define obstack_chunk_free free #define obstack_chunk_free free
@ -5359,9 +5360,6 @@ dump_tree_statistics ()
#endif /* NO_DOT_IN_LABEL */ #endif /* NO_DOT_IN_LABEL */
#endif /* NO_DOLLAR_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 /* Appends 6 random characters to TEMPLATE to (hopefully) avoid name
clashes in cases where we can't reliably choose a unique 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; const char *type;
{ {
char *buf; char *buf;
register char *p; const char *p;
char *q;
if (first_global_object_name) if (first_global_object_name)
p = first_global_object_name; p = first_global_object_name;
@ -5434,10 +5433,11 @@ get_file_function_name_long (type)
if (! file) if (! file)
file = input_filename; 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); sprintf (q, "%s%s", name, file);
append_random_chars (p); append_random_chars (q);
p = q;
} }
buf = (char *) alloca (sizeof (FILE_FUNCTION_FORMAT) + strlen (p) 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. */ /* Don't need to pull weird characters out of global names. */
if (p != first_global_object_name) if (p != first_global_object_name)
{ {
for (p = buf+11; *p; p++) for (q = buf+11; *q; q++)
if (! ( ISDIGIT(*p) if (! ( ISDIGIT(*q)
#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
#ifndef NO_DOLLAR_IN_LABEL /* this for `$'; unlikely, but... -- kr */ #ifndef NO_DOLLAR_IN_LABEL /* this for `$'; unlikely, but... -- kr */
|| *p == '$' || *q == '$'
#endif #endif
#ifndef NO_DOT_IN_LABEL /* this for `.'; unlikely, but... */ #ifndef NO_DOT_IN_LABEL /* this for `.'; unlikely, but... */
|| *p == '.' || *q == '.'
#endif #endif
|| ISUPPER(*p) || ISUPPER(*q)
|| ISLOWER(*p))) || ISLOWER(*q)))
*p = '_'; *q = '_';
} }
return get_identifier (buf); return get_identifier (buf);

View File

@ -1541,7 +1541,7 @@ struct tree_type
struct tree_decl struct tree_decl
{ {
char common[sizeof (struct tree_common)]; char common[sizeof (struct tree_common)];
char *filename; const char *filename;
int linenum; int linenum;
unsigned int uid; unsigned int uid;
union tree_node *size; 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 /* Points to the name of the input file from which the current input
being parsed originally came (before it went into cpp). */ being parsed originally came (before it went into cpp). */
extern char *input_filename; extern const char *input_filename;
/* Current line number in input file. */ /* Current line number in input file. */
extern int lineno; 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 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 void finish_parse PARAMS ((void));
extern const char * const language_string; extern const char * const language_string;
@ -2656,7 +2656,7 @@ extern void print_obstack_statistics PARAMS ((const char *,
#ifdef BUFSIZ #ifdef BUFSIZ
extern void print_obstack_name PARAMS ((char *, FILE *, const char *)); extern void print_obstack_name PARAMS ((char *, FILE *, const char *));
#endif #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 void expand_function_start PARAMS ((tree, int));
extern int real_onep PARAMS ((tree)); extern int real_onep PARAMS ((tree));
extern int real_twop 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 void expand_computed_goto PARAMS ((tree));
extern struct rtx_def *label_rtx PARAMS ((tree)); extern struct rtx_def *label_rtx PARAMS ((tree));
extern void expand_asm_operands PARAMS ((tree, tree, tree, tree, int, extern void expand_asm_operands PARAMS ((tree, tree, tree, tree, int,
char *, int)); const char *, int));
extern int any_pending_cleanups PARAMS ((int)); extern int any_pending_cleanups PARAMS ((int));
extern void init_stmt PARAMS ((void)); extern void init_stmt PARAMS ((void));
extern void init_stmt_for_function PARAMS ((void)); extern void init_stmt_for_function PARAMS ((void));

View File

@ -77,8 +77,8 @@ Boston, MA 02111-1307, USA. */
extern FILE *asm_out_file; extern FILE *asm_out_file;
/* The (assembler) name of the first globally-visible object output. */ /* The (assembler) name of the first globally-visible object output. */
char *first_global_object_name; const char *first_global_object_name;
char *weak_global_object_name; const char *weak_global_object_name;
extern struct obstack *current_obstack; extern struct obstack *current_obstack;
extern struct obstack *saveable_obstack; extern struct obstack *saveable_obstack;
@ -1061,16 +1061,16 @@ assemble_start_function (decl, fnname)
if (! first_global_object_name) if (! first_global_object_name)
{ {
const char *p; const char *p;
char **name; char *name;
if (! DECL_WEAK (decl) && ! DECL_ONE_ONLY (decl))
name = &first_global_object_name;
else
name = &weak_global_object_name;
STRIP_NAME_ENCODING (p, fnname); STRIP_NAME_ENCODING (p, fnname);
*name = permalloc (strlen (p) + 1); name = permalloc (strlen (p) + 1);
strcpy (*name, p); strcpy (name, p);
if (! DECL_WEAK (decl) && ! DECL_ONE_ONLY (decl))
first_global_object_name = name;
else
weak_global_object_name = name;
} }
#ifdef ASM_WEAKEN_LABEL #ifdef ASM_WEAKEN_LABEL
@ -1438,10 +1438,12 @@ assemble_variable (decl, top_level, at_end, dont_output_data)
&& ! DECL_ONE_ONLY (decl)) && ! DECL_ONE_ONLY (decl))
{ {
const char *p; const char *p;
char *xname;
STRIP_NAME_ENCODING (p, name); STRIP_NAME_ENCODING (p, name);
first_global_object_name = permalloc (strlen (p) + 1); xname = permalloc (strlen (p) + 1);
strcpy (first_global_object_name, p); strcpy (xname, p);
first_global_object_name = xname;
} }
/* Compute the alignment of this data. */ /* Compute the alignment of this data. */