8sa1-gcc/gcc/ch/lang.c
Kaveh R. Ghazi 7511142254 Warning fixes:
* Makefile.in (actions.o, convert.o, decl.o, expr.o, lang.o,
	lex.o, loop.o, parse.o, satisfy.o, timing.o, tasking.o, tree.o,
	typeck.o): Depend on system.h and toplev.h.
	(except.o): Depend on toplev.h.
	(grant.o): Depend on system.h, toplev.h and output.h.
	* actions.c: Include system.h and toplev.h.  Remove redundant
 	prototypes.
	(build_cause_exception): Add default case in switch.
	(update_else_range_for_range): Add parentheses around && within ||.
	(chill_handle_multi_case_label_list): Remove unused variable
	`selector_value'.
	(print_missing_cases): Reconcile format specifiers vs arguments in
 	calls to sprintf.
	* ch-tree.h: Don't include stdio.h.  Wrap prototypes using FILE*
 	with macro BUFSIZ.  Add missing prototypes.
	* convert.c: Include system.h and toplev.h.  Remove redundant
	prototypes.
  	(convert): Remove unused variable `errstr'.
	* decl.c: Include system.h and toplev.h.  Remove redundant
 	prototypes.
	(builtin_scope): Add missing initializers.
	(clear_scope): Likewise.
	(allocate_lang_decl): Mark parameter `t' with ATTRIBUTE_UNUSED.
	(copy_lang_decl): Likewise for parameter `node'.
	(c_decode_option): Likewise for parameter `argc'.
	(push_extern_function): Likewise for parameter `granting'.
	(switch_to_pass_2): Hide declaration of errorcount/sorrycount.
	(pushdecl): Remove unused variable `t'.
	(lookup_name_current_level): Make static and hide.
	(lookup_name_for_seizing): Make static.
	(finish_decl): Remove unused variable `type'.
	(maybe_build_cleanup): Mark parameter `decl' with ATTRIBUTE_UNUSED.
	(complete_array_type): Mark parameters `type', `initial_value' and
 	`do_default' with ATTRIBUTE_UNUSED.
	(start_struct): Mark parameter `name' with ATTRIBUTE_UNUSED.
	(start_enum): Likewise.
	(shadow_record_fields): Remove unused variables `type' and `parent'.
	* except.c: Include toplev.h.  Remove redundant prototypes.
	* expr.c: Include system.h and toplev.h.  Don't define NULL.
  	Remove redundant prototypes.
	(internal_build_compound_expr): Mark parameter `first_p' with
	ATTRIBUTE_UNUSED.
	(build_allocate_getstack): Remove unused variable `init'.
	(build_chill_pred_or_succ): Likewise for variable `limit'.
	(varying_to_slice): Likewise for variable `doamin' [sic].
	(finish_chill_binary_op): Likewise for variables `code0' and
	`code1'.  Remove unused label `finish'.  Add explicit braces to
	avoid ambiguous `else'.
	(build_chill_addr_expr): Remove extra parameter in call to `error'.
	(build_chill_unary_op): Remove unused variables `class' and `type0'.
	(powersetlen): Remove unused variables `domain' and `temp'.
	* grant.c: Include system.h, toplev.h and output.h.  Don't handle
 	strchr/strrchr.  Remove redundant prototypes.
  	(decode_constant_selective): Remove unused variables `op' and `wrk'.
	(push_granted): Mark parameters `name' and `decl' with
 	ATTRIBUTE_UNUSED.
	* inout.c: Include system.h and toplev.h.  Remove redundant
 	prototypes.
	(textlocation_mode): Use &&, not &, when comparing two truth
	values.
	(scanformcont): Remove unused label `do_the_action'.
	* lang.c: Include system.h and toplev.h.  Remove redundant
 	prototypes.
	(lookup_interface): Mark parameter `arg' with ATTRIBUTE_UNUSED.
	(maybe_objc_comptypes): Likewise for parameters `lhs' and `rhs'.
	(lang_print_xnode): Likewise for parameters `file', `node' and
	`indent'.
	(lang_decode_option): Explicitly declare `explicit_ignore_case'.
	(incomplete_type_error): Mark parameters `value' and `type' with
	ATTRIBUTE_UNUSED.
	* lex.c: Include system.h and toplev.h.  Remove redundant
 	prototypes.  Don't handle strchr/strrchr.  Use CAPITALIZED
	versions of ctype macros from system.h.  Cast ctype arguments to
	unsigned char when necessary.
	(last_token, RETURN_TOKEN): Hide definition.
	(push_back): Remove unused function.
	(readstring): Change variable `i' to unsigned.
	(yywrap): Remove unused variable `node'.
	* loop.c: Include system.h and toplev.h.  Remove redundant
	prototypes.
	(chill_unsigned_type): Hide prototype and definition.
	(begin_loop_scope): Remove unused variable `firstp'.
	(nonvalue_begin_loop_scope): Likewise.
	* parse.c: Include system.h and toplev.h.  Remove redundant
	prototypes.
	(quasi_signal): Hide.
	(PEEK_TOKEN): Change return type to `enum terminal'.
	(parse_mode_definition_statement): Remove unused variable `names'.
	(parse_formpar): Remove unused parameter `in_spec_module'.  All
	callers changed.
	(parse_formparlist): Likewise.
	(parse_processpar): Remove unused variable `parms'.
	(parse_definition): Add explicit braces to avoid ambiguous `else'.
	(parse_multi_dimension_case_action): Initialize variable
	`begin_test_label'.  Remove unused variable `new_test'.
	(parse_case_action): Remove unused variable `caseaction_flag'.
	(parse_asm_clobbers): Remove unused variable `expr'.
	(parse_delay_case_action): Initialize variable `label_cnt'.
	(parse_action): Make function static.
	(parse_tuple_element): Remove unused variable `list'.
	(parse_primval): Add default case in switch.
	(parse_variant_alternative): Remove unused variables `x' and
	`variant_fields'.
	* satisfy.c: Include system.h and toplev.h.  Remove redundant
	prototypes.
	* tasking.c Include system.h and toplev.h.  Remove redundant
	prototypes.
	(data_name): Hide.
	(get_struct_variable_name): Likewise.
	(validate_process_parameters): Mark parameter `parms' with
	ATTRIBUTE_UNUSED.
	(build_start_process): Initialize variable `tuple'.
	(build_receive_buffer_case_end): Remove unused variable `buffer_ptr'.
	* timing.c: Include system.h and toplev.h.
	(build_after_timeout_start): Remove unused variable `goto_where'.
	* tree.c: Include system.h and toplev.h.  Remove redundant
	prototypes.
	* typeck.c: Include system.h and toplev.h.  Remove redundant
	prototypes.
	(extract_constant_from_buffer): Make function static.  Add
 	explicit braces to avoid ambiguous `else'.
	(expand_constant_to_buffer): Likewise.
	(build_chill_slice): remove unused variable `is_static'.
	(chill_compatible): Add explicit braces to avoid ambiguous `else'.
	(apply_chill_array_layout): Remove unused variable `offset'.
	(smash_dummy_type): Remove unused variable `save_lang_specific'.
	(initializer_constant_valid_p): Add default case in switch.

From-SVN: r22493
1998-09-20 06:43:23 +00:00

300 lines
7.1 KiB
C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* Language-specific hook definitions for CHILL front end.
Copyright (C) 1992, 93, 1994 Free Software Foundation, Inc.
This file is part of GNU CC.
GNU CC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU CC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "config.h"
#include "system.h"
#include "tree.h"
#include "ch-tree.h"
#include "lex.h"
#include "input.h"
#include "toplev.h"
/* Type node for boolean types. */
tree boolean_type_node;
/* True if STRING(INDEX) yields a CHARS(1) (or BOOLS(1)) rather than
a CHAR (or BOOL). Also, makes CHARS(1) similar for CHAR,
and BOOLS(1) similar to BOOL. This is for compatibility
for the 1984 version of Z.200.*/
int flag_old_strings = 0;
/* This is set non-zero to force user input tokens to lower case.
This is non-standard. See Z.200, page 8. */
int ignore_case = 1;
/* True if reserved and predefined words ('special' words in the Z.200
terminology) are in uppercase. Obviously, this had better not be
true if we're ignoring input case. */
int special_UC = 0;
/* The actual name of the input file, regardless of any #line directives */
char* chill_real_input_filename;
extern FILE* finput;
extern int maximum_field_alignment;
/* return 1 if the expression tree given has all
constant nodes as its leaves; return 0 otherwise. */
int
deep_const_expr (exp)
tree exp;
{
enum chill_tree_code code;
int length;
int i;
if (exp == NULL_TREE)
return 0;
code = TREE_CODE (exp);
length = tree_code_length[(int) code];
/* constant leaf? return TRUE */
if (TREE_CODE_CLASS (code) == 'c')
return 1;
/* recursively check next level down */
for (i = 0; i < length; i++)
if (! deep_const_expr (TREE_OPERAND (exp, i)))
return 0;
return 1;
}
tree
const_expr (exp)
tree exp;
{
if (TREE_CODE (exp) == INTEGER_CST)
return exp;
if (TREE_CODE (exp) == CONST_DECL)
return const_expr (DECL_INITIAL (exp));
if (TREE_CODE_CLASS (TREE_CODE (exp)) == 'd'
&& DECL_INITIAL (exp) != NULL_TREE
&& TREE_READONLY (exp))
return DECL_INITIAL (exp);
if (deep_const_expr (exp))
return exp;
if (TREE_CODE (exp) != ERROR_MARK)
error ("non-constant expression");
return error_mark_node;
}
/* Each of the functions defined here
is an alternative to a function in objc-actions.c. */
/* Used by c-lex.c, but only for objc. */
tree
lookup_interface (arg)
tree arg ATTRIBUTE_UNUSED;
{
return 0;
}
int
maybe_objc_comptypes (lhs, rhs)
tree lhs ATTRIBUTE_UNUSED, rhs ATTRIBUTE_UNUSED;
{
return -1;
}
tree
maybe_building_objc_message_expr ()
{
return 0;
}
int
recognize_objc_keyword ()
{
return 0;
}
void
lang_init_options ()
{
}
/* used by print-tree.c */
void
lang_print_xnode (file, node, indent)
FILE *file ATTRIBUTE_UNUSED;
tree node ATTRIBUTE_UNUSED;
int indent ATTRIBUTE_UNUSED;
{
}
void
GNU_xref_begin ()
{
fatal ("GCC does not yet support XREF");
}
void
GNU_xref_end ()
{
fatal ("GCC does not yet support XREF");
}
/*
* process chill-specific compiler command-line options
*/
int
lang_decode_option (argc, argv)
int argc;
char **argv;
{
char *p = argv[0];
static int explicit_ignore_case = 0;
if (!strcmp(p, "-lang-chill"))
; /* do nothing */
else if (!strcmp (p, "-fruntime-checking"))
{
range_checking = 1;
empty_checking = 1;
}
else if (!strcmp (p, "-fno-runtime-checking"))
{
range_checking = 0;
empty_checking = 0;
runtime_checking_flag = 0;
}
else if (!strcmp (p, "-flocal-loop-counter"))
flag_local_loop_counter = 1;
else if (!strcmp (p, "-fno-local-loop-counter"))
flag_local_loop_counter = 0;
else if (!strcmp (p, "-fold-strings"))
flag_old_strings = 1;
else if (!strcmp (p, "-fno-old-strings"))
flag_old_strings = 0;
else if (!strcmp (p, "-fignore-case"))
{
explicit_ignore_case = 1;
if (special_UC)
{
error ("Ignoring case upon input and");
error ("making special words uppercase wouldn't work.");
}
else
ignore_case = 1;
}
else if (!strcmp (p, "-fno-ignore-case"))
ignore_case = 0;
else if (!strcmp (p, "-fspecial_UC"))
{
if (explicit_ignore_case)
{
error ("Making special words uppercase and");
error (" ignoring case upon input wouldn't work.");
}
else
special_UC = 1, ignore_case = 0;
}
else if (!strcmp (p, "-fspecial_LC"))
special_UC = 0;
else if (!strcmp (p, "-fpack"))
maximum_field_alignment = BITS_PER_UNIT;
else if (!strcmp (p, "-fno-pack"))
maximum_field_alignment = 0;
else if (!strcmp (p, "-fchill-grant-only"))
grant_only_flag = 1;
else if (!strcmp (p, "-fgrant-only"))
grant_only_flag = 1;
/* user has specified a seize-file path */
else if (p[0] == '-' && p[1] == 'I')
register_seize_path (&p[2]);
if (!strcmp(p, "-itu")) /* Force Z.200 semantics */
{
pedantic = 1; /* FIXME: new flag name? */
flag_local_loop_counter = 1;
}
else
return c_decode_option (argc, argv);
return 1;
}
void
chill_print_error_function (file)
char *file;
{
static tree last_error_function = NULL_TREE;
static struct module *last_error_module = NULL;
if (last_error_function == current_function_decl
&& last_error_module == current_module)
return;
last_error_function = current_function_decl;
last_error_module = current_module;
if (file)
fprintf (stderr, "%s: ", file);
if (current_function_decl == global_function_decl
|| current_function_decl == NULL_TREE)
{
if (current_module == NULL)
fprintf (stderr, "At top level:\n");
else
fprintf (stderr, "In module %s:\n",
IDENTIFIER_POINTER (current_module->name));
}
else
{
char *kind = "function";
char *name = (*decl_printable_name) (current_function_decl, 2);
fprintf (stderr, "In %s `%s':\n", kind, name);
}
}
/* Print an error message for invalid use of an incomplete type.
VALUE is the expression that was used (or 0 if that isn't known)
and TYPE is the type that was invalid. */
void
incomplete_type_error (value, type)
tree value ATTRIBUTE_UNUSED;
tree type ATTRIBUTE_UNUSED;
{
error ("internal error - use of undefined type");
}
void
lang_init ()
{
extern void (*print_error_function) PROTO((char*));
chill_real_input_filename = input_filename;
/* the beginning of the file is a new line; check for # */
/* With luck, we discover the real source file's name from that
and put it in input_filename. */
ungetc (check_newline (), finput);
/* set default grant file */
set_default_grant_file ();
print_error_function = chill_print_error_function;
}