gcc/gcc/ch/grant.c

3057 lines
76 KiB
C
Raw Normal View History

/* Implement grant-file output & seize-file input for CHILL.
diagnostic.h (set_internal_error_function): Renamed. * diagnostic.h (set_internal_error_function): Renamed. * toplev.h (internal_error): Renamed from fatal. (pfatal_with_name): Deleted. (fatal_io_error): Now has printf-style arguments. * diagnostic.c (pfatal_with_name): Deleted. (fatal_io_error): Rework to have args in printf-style. (set_internal_error_function): Renamed from set_fatal_function. (internal_error): Renamed from fatal. (error_recursion, fancy_abort): Call internal_error instead of fatal. * dwarf2out.c (get_cfa_from_loc_descr): Likewise. * emit-rtl.c (gen_realpart, gen_imagpart): Likewise. * expr.c (check_max_integer_computation_mode, expand_expr): Likewise. * flow.c (verify_flow_info): Likewise. * config/arm/arm.c (thumb_unexpanded_epilogue): Likewise. * config/mips/mips.c (save_restore_insns): Likewise. * cp/init.c (build_java_class_ref): Likewise. (dsp16xx_reg_class_from_letter): Likewise. (limit_reload_class, double_reg_to_memory): Likewise. (print_operand_address, emit_1600_code_shift): Likewise. (gen_tst_reg, gen_compare_reg): Likewise. * config/m68hc11/m68hc11.c (m68hc11_emit_libcall): Likewise. * cp/decl.c (pushdecl): Likewise. * java/check-init.c (check_init): Likewise. * java/expr.c (java_lang_expand_expr): Likewise. * java/jcf-parse.c (get_constant): Likewise. * java/mangle.c (java_mangle_decl): Likewise. * java/parse.y (make_nested_class_name, java_complete_lhs): Likewise. (operator_string): Likewise. * except.c (duplicate_eh_handlers): Call abort instead of fatal. * flow.c (verify_flow_info): Likewise. * ch/convert.c (convert): Likewise. * ch/except.c (pop_handler, chill_check_no_handlers): Likewise. * ch/expr.c (chill_expand_expr): Likewise. * ch/parse.c (peek_token_, pushback_token, require): Likewise. * config/arm/arm.c (thumb_load_double_from_address): Likewise. * config/avr/avr.c (pttreg_to_str, unique_section): Likewise. (avr_normalize_condition): Likewise. * config/c4x/c4x.c (c4x_emit_libcall, c4x_valid_operands): Likewise. * config/dsp16xx/dsp16xx.c (dsp16xx_reg_class_from_letter): Likewise. (limit_reload_class, double_reg_to_memory): Likewise. (print_operand_address, emit_1600_code_shift): Likewise. (gen_tst_reg, gen_compare_reg): Likewise. * config/m68hc11/m68hc11.c (m68hc11_emit_libcall): Likewise. * cp/decl.c (pushdecl): Likewise. * java/check-init.c (check_init): Likewise. * java/class.c (build_class_ref): Likewise. * java/constants.c (write_constant_pool): Likewise. * java/decl.c (start_java_method): Likewise. * java/expr.c (push_type, java_stack_pop, java_stack_swap): Likewise. (java_stack_dup, encode_newarray_type): Likewise. (build_java_array_length_access): Likewise. (build_java_check_indexed_type, expand_java_pushc): Likewise. (build_java_soft_divmod, build_invokeinterface): Likewise. * java/java-tree.h (INNER_CLASS_P): Likewise. * java/jcf-parse.c (parse_signature, get_name_constant): Likewise. (give_name_to_class, get_class_constant): Likewise. * java/jcf-write.c (CHECK_PUT, CHECK_OP, get_access_flags): Likewise. (find_constant_index, generate_bytecode_conditional): Likewise. (generate_bytecode_insns, perform_relocations): Likewise. * java/lex.c (java_unget_unicode, java_lex): Likewise. * java/mangle.c (mangle_type, mangle_record_type): Likewise. (mangle_pointer_type, mangle_array_type, init_mangling): Likewise. (finish_mangling): Likewise. * java/parse.h (MARK_FINAL_PARMS): Likewise. * java/parse.y (pop_current_osb, unreachable_stmt_error): Likewise. (obtain_incomplete_type, java_complete_class): Likewise. (java_check_regular_methods, java_complete_expand_method): Likewise. (cut_identifier_in_qualified, check_deprecation): Likewise. (patch_invoke, find_applicable_accessible_methods_list): Likewise. (java_complete_lhs, lookup_name_in_blocks): Likewise. (check_final_variable_indirect_assignment, build_unaryop): Likewise. * java/typeck.c (set_local_type, parse_signature_type): Likewise. (parse_signature_string, build_java_signature): Likewise; (set_java_signature): Likewise. * java/verify.c (type_stack_dup, CHECK_PC_IN_RANGE): Likewise. * c-parse.in (methoddef): Call fatal_error instead of fatal. * objc/objc-act.c (build_ivar_chain): Likewise. * cp/except.c (decl_is_java_type): Likewise. * cp/init.c (build_java_class_ref): Likewise. * cp/init.c (build_new_1): Likewise. * f/com.c (ffecom_init_0): Likewise. * java/class.c (add_method, build_static_field_ref): Likewise. * java/expr.c (build_known_method_ref, expand_invoke): Likewise. * java/jcf-parse.c (get_constant, jcf_parse): Likewise. * java/lex.c (java_new_new_lexer): Likewise. * java/jv-scan.c (main): Likewise. (fatal_error): Renamed from fatal. * dwarfout.c (dwarfout_init): Call fatal_io_error instead of pfatal_with_name. * graph.c (clean_graph_dump_file): Likewise. * profile.c (init_branch_prob): Likewise. * ch/grant.c (write_grant_file): Likewise. * ch/lex.c (init_parse, same_file, yywrap): Likewise. * f/com.c (init_parse): Likewise. * java/jcf-parse.c (yyparse): Likewise. * objc/objc-act.c (objc_init): Likewise. * java/jcf-parse.c (jcf_parse_source): Call fatal_io_error, not fatal. (yyparse): Likewise. * java/jcf-write.c (make_class_file_name, write_classfile): Likewise. * java/lex.c (java_get_line_col): Likewise. * hash.c (hash_allocate): Don't check for failure returns from obstack functions that can't fail. (hash_table_init_n, hash_table_init): Likewise; also now return void. * hash.h (hash_table_init_n, hash_table_init): Now return void. * cp/decl.c (build_typename_type): hash_table_init now returns void. * ch/lang.c (GNU_xref_begin, GNU_xref_end): Deleted. * ch/lex.c (convert_bitstring): Delete check for alloca failure. * config/dsp16xx/dsp16xx.c (dsp16xx_invalid_register_for_compare): Deleted. * config/dsp16xx/dsp16xx.md (unnamed cmphi): Call abort instead of it. * f/com.c (ffecom_decode_include_option_): Make errors non-fatal. * f/lex.c (ffelex_cfelex_, ffelex_get_directive_line_): Likewise. (ffelex_hash_): Likewise. * config/arm/arm.c (arm_override_options): Likewise. * config/avr/avr.c (avr_override_options): Likewise. * config/c4x/c4x.c (c4x_expand_prologue): Likewise. * config/dsp16xx/dsp16xx.c (function_prologue): Likewise. * config/h8300/h8300.c (h8300_init_once): Likewise. * config/mips/mips.c (override_options): Likewise. * config/i386/i386.c (override_options): Likewise, rework. * config/m68k/m68k.c (override_options): Likewise. * cp/decl.c (init_decl_processing): Likewise. * java/jcf-parse.c (load_class): Likewise. * config/dsp16xx/dsp16xx.c (print_operand): Call output_operand_lossage instead of fatal. * config/mips/mips.c (print_operand): Likewise. * java/lex.c (byteswap_init, need_byteswap): Only #ifdef HAVE_ICONV. * objc/objc_act.c (objc_check_decl): Remove unneeded fatal call. (get_object_reference): Likewise. From-SVN: r39444
2001-02-05 00:18:43 +01:00
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
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, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include "config.h"
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 08:43:23 +02:00
#include "system.h"
#include "tree.h"
#include "ch-tree.h"
#include "lex.h"
#include "flags.h"
#include "actions.h"
#include "input.h"
#include "rtl.h"
#include "tasking.h"
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 08:43:23 +02:00
#include "toplev.h"
#include "output.h"
#include "target.h"
#define APPEND(X,Y) X = append (X, Y)
#define PREPEND(X,Y) X = prepend (X, Y);
#define FREE(x) strfree (x)
#define ALLOCAMOUNT 10000
/* may be we can handle this in a more exciting way,
but this also should work for the moment */
#define MAYBE_NEWLINE(X) \
do \
{ \
if (X->len && X->str[X->len - 1] != '\n') \
APPEND (X, ";\n"); \
} while (0)
extern tree process_type;
extern char *asm_file_name;
extern char *dump_base_name;
/* forward declarations */
/* variable indicates compilation at module level */
int chill_at_module_level = 0;
/* mark that a SPEC MODULE was generated */
static int spec_module_generated = 0;
/* define a faster string handling */
typedef struct
{
char *str;
int len;
int allocated;
} MYSTRING;
/* structure used for handling multiple grant files */
char *grant_file_name;
MYSTRING *gstring = NULL;
MYSTRING *selective_gstring = NULL;
static MYSTRING *decode_decl PARAMS ((tree));
static MYSTRING *decode_constant PARAMS ((tree));
static void grant_one_decl PARAMS ((tree));
static MYSTRING *get_type PARAMS ((tree));
static MYSTRING *decode_mode PARAMS ((tree));
static MYSTRING *decode_prefix_rename PARAMS ((tree));
static MYSTRING *decode_constant_selective PARAMS ((tree, tree));
static MYSTRING *decode_mode_selective PARAMS ((tree, tree));
static MYSTRING *get_type_selective PARAMS ((tree, tree));
static MYSTRING *decode_decl_selective PARAMS ((tree, tree));
static MYSTRING *newstring PARAMS ((const char *));
static void strfree PARAMS ((MYSTRING *));
static MYSTRING *append PARAMS ((MYSTRING *, const char *));
static MYSTRING *prepend PARAMS ((MYSTRING *, const char *));
static void grant_use_seizefile PARAMS ((const char *));
static MYSTRING *decode_layout PARAMS ((tree));
static MYSTRING *grant_array_type PARAMS ((tree));
static MYSTRING *grant_array_type_selective PARAMS ((tree, tree));
static MYSTRING *get_tag_value PARAMS ((tree));
static MYSTRING *get_tag_value_selective PARAMS ((tree, tree));
static MYSTRING *print_enumeral PARAMS ((tree));
static MYSTRING *print_enumeral_selective PARAMS ((tree, tree));
static MYSTRING *print_integer_type PARAMS ((tree));
static tree find_enum_parent PARAMS ((tree, tree));
static MYSTRING *print_integer_selective PARAMS ((tree, tree));
static MYSTRING *print_struct PARAMS ((tree));
static MYSTRING *print_struct_selective PARAMS ((tree, tree));
static MYSTRING *print_proc_exceptions PARAMS ((tree));
static MYSTRING *print_proc_tail PARAMS ((tree, tree, int));
static MYSTRING *print_proc_tail_selective PARAMS ((tree, tree, tree));
static tree find_in_decls PARAMS ((tree, tree));
static int in_ridpointers PARAMS ((tree));
static void grant_seized_identifier PARAMS ((tree));
static void globalize_decl PARAMS ((tree));
static void grant_one_decl_selective PARAMS ((tree, tree));
static int compare_memory_file PARAMS ((const char *, const char *));
static int search_in_list PARAMS ((tree, tree));
static int really_grant_this PARAMS ((tree, tree));
/* list of the VAR_DECLs of the module initializer entries */
tree module_init_list = NULL_TREE;
/* handle different USE_SEIZE_FILE's in case of selective granting */
typedef struct SEIZEFILELIST
{
struct SEIZEFILELIST *next;
tree filename;
MYSTRING *seizes;
} seizefile_list;
static seizefile_list *selective_seizes = 0;
static MYSTRING *
newstring (str)
Makefile.in (ch-version.c): Constify a char*. * Makefile.in (ch-version.c): Constify a char*. * actions.c (id_cmp, warn_unhandled, adjust_return_value, update_else_range_for_int_const, update_else_range_for_range, update_else_range_for_range_expr, update_else_range_for_type, compute_else_range, check_case_value, chill_handle_case_label_range, chill_handle_multi_case_label_range, chill_handle_multi_case_else_label, chill_handle_multi_case_label, chill_handle_multi_case_label_list print_missing_cases): Add static prototypes. (build_exception_variant): Cast the function argument of qsort. (build_rts_call, warn_unhandled, chill_convert_for_assignment, adjust_return_value, chill_expand_result, build_multi_case_selector_expression, print_missing_cases): Constify a char*. (print_missing_cases): Introduce an intermediary non-const ptr. Add brackets and indent. * ch-tree.h (maybe_building_objc_message_expr, maybe_objc_comptypes, comptypes_record_hook): Remove declarations. (push_handler, pop_handler): Add prototypes. (builtin_function, valid_array_index_p, build_chill_exception_decl, build_rts_call, chill_convert_for_assignment, display_int_cst, build_chill_addr_expr, check_have_mode, get_identifier3, build_chill_string, register_seize_path, get_unique_identifier, add_taskstuff_to_list, gnuchill_version): Constify a char*. (finish_chill_function): Add void prototype argument. * convert.c (convert_to_reference, convert_to_boolean, convert_to_char, base_type_size_in_bytes, remove_tree_element, check_ps_range, digest_powerset_tuple, digest_structure_tuple, digest_array_tuple, convert1): Add static prototypes. (base_type_size_in_bytes): Hide unused function. (display_int_cst, digest_array_tuple): Constify a char*. * decl.c (set_nesting_level, make_chill_variants, fix_identifier, proclaim_decl, maybe_acons, push_scope_decls, pop_scope_decls, build_implied_names, bind_sub_modules, layout_array_type, do_based_decl, handle_one_level, label_value_cmp, find_implied_types): Add static prototypes. (boolean_code_name, chill_tree_code_type, chill_tree_code_name): Constify a char*. (layout_chill_variants): Cast the function argument of qsort. (start_chill_function, fix_identifier, init_decl_processing): Constify a char*. (init_decl_processing): Prefer memcpy over bcopy to avoid casts. Use xcalloc instead of xmalloc/bzero. (builtin_function, build_chill_exception_decl, finish_outer_function): Constify a char*. * except.c (start_handler_array, finish_handler_array): Add static prototypes. * expr.c (chill_expand_expr, chill_expand_case_expr, check_arglist_length, internal_build_compound_expr, is_really_instance, invalid_operand, invalid_right_operand, build_chill_abstime, build_allocate_memory_call, build_allocate_global_memory_call, build_return_memory, build_chill_duration, build_chill_floatcall, build_allocate_getstack, build_chill_allocate, build_chill_getstack, build_chill_terminate, build_chill_inttime, build_chill_lower_or_upper, build_max_min, build_chill_pred_or_succ, expand_packed_set, fold_set_expr, build_compare_set_expr, scalar_to_string, build_concat_expr, build_compare_string_expr, compare_records, string_char_rep, build_boring_bitstring): Add static prototypes. (check_have_mode, chill_expand_expr, build_chill_floatcall, build_allocate_getstack, build_max_min, build_chill_function_call, expand_packed_set, build_compare_set_expr, build_chill_addr_expr, string_char_rep): Constify a char*. * gperf (hash, in_word_set): Add prototypes. * grant.c (newstring, strfree, append, prepend, grant_use_seizefile, decode_layout, grant_array_type, grant_array_type_selective, get_tag_value, get_tag_value_selective, print_enumeral, print_enumeral_selective, print_integer_type, find_enum_parent, print_integer_selective, print_struct, print_struct_selective, print_proc_exceptions, print_proc_tail, print_proc_tail_selective, find_in_decls, in_ridpointers, grant_seized_identifier, globalize_decl, grant_one_decl_selective, compare_memory_file, search_in_list, really_grant_this): Add static prototypes. (newstring, append, prepend, grant_use_seizefile, print_integer_type, decode_constant, grant_one_decl_selective, header_template): Constify a char *. * inout.c (add_enum_to_list, build_chill_io_list_type, build_io_types, declare_predefined_file, build_access_part, textlocation_mode, check_assoc, assoc_call, check_transfer, connect_process_optionals, connect_text, connect_access, check_access, check_text, get_final_type_and_range, process_io_list, check_format_string, get_max_size, check_exprlist): Add static prototypes. (declare_predefined_file, check_assoc, assoc_call, check_transfer, check_access, check_text, process_io_list): Constify a char*. * lang.c (deep_const_expr, chill_print_error_function): Add static prototypes. * lex.c (close_input_file, maybe_number, string_or_char): Constify a char*. (ch_lex_init, skip_directive, same_file, getlc, yywrap, yy_refill): Add static prototypes. (build_chill_string, same_file, register_seize_path): Constify a char*. * lex.h (finish_chill_seizes): Remove unused prototypes. * loop.c (build_temporary_variable, maybe_make_for_temp, get_unique_identifier): Constify a char*. * parse.c (ch_parse_init, check_end_label, end_function, build_prefix_clause, PEEK_TOKEN, peek_token_, pushback_token, forward_token_, require, check_token, expect, define__PROCNAME__): Add static prototypes. (build_prefix_clause, expect): Constify a char*. (parse_expression, parse_primval, parse_untyped_expr, parse_opt_untyped_expr, parse_opt_actions): Add void prototype argument. (parse_opt_name_string, parse_simple_name_string, parse_name_string, parse_defining_occurrence, parse_name, parse_optlabel, parse_opt_end_label_semi_colon, parse_modulion, parse_spec_module, parse_semi_colon, parse_defining_occurrence_list, parse_mode_definition, parse_mode_definition_statement, parse_synonym_definition, parse_synonym_definition_statement, parse_on_exception_list, parse_on_alternatives, parse_loc_declaration, parse_declaration_statement, parse_optforbid, parse_postfix, parse_postfix_list, parse_rename_clauses, parse_opt_prefix_clause, parse_grant_statement, parse_seize_statement, parse_param_name_list, parse_param_attr, parse_formpar, parse_formparlist, parse_opt_result_spec, parse_opt_except, parse_opt_recursive, parse_procedureattr, parse_proc_body, parse_procedure_definition, parse_processpar, parse_processparlist, parse_process_definition, parse_signal_definition, parse_signal_definition_statement, parse_then_clause, parse_opt_else_clause, parse_expr_list, parse_range_list_clause, pushback_paren_expr, parse_case_label, parse_case_label_list, parse_case_label_specification, parse_single_dimension_case_action, parse_multi_dimension_case_action, parse_case_action, parse_asm_operands, parse_asm_clobbers, ch_expand_asm_operands, parse_asm_action, parse_begin_end_block, parse_if_action, parse_iteration, parse_delay_case_event_list, parse_delay_case_action, parse_do_action, parse_receive_spec, parse_receive_case_action, parse_send_action, parse_start_action, parse_call, parse_tuple_fieldname_list, parse_tuple_element, parse_opt_element_list, parse_tuple, parse_operand6, parse_operand5, parse_operand4, parse_operand3, parse_operand2, parse_operand1, parse_operand0, parse_case_expression, parse_then_alternative, parse_else_alternative, parse_if_expression, parse_index_mode, parse_set_mode, parse_pos, parse_step, parse_opt_layout, parse_field_name_list, parse_fixed_field, parse_variant_field_list, parse_variant_alternative, parse_field, parse_structure_mode, parse_opt_queue_size, parse_procedure_mode, parse_program, parse_pass_1_2): Add static prototypes. (parse_process_definition): Remove extra argument in function call. (parse_range_list_clause): Likewise. * satisfy.c (satisfy, cycle_error_print, safe_satisfy_decl, satisfy_list, satisfy_list_values): Add static prototype. (safe_satisfy_decl): Cast DECL_TASKING_CODE_DECL() to (tree). * tasking.c (make_process_struct): Remove unused prototype. (validate_process_parameters, get_struct_variable_name, decl_tasking_code_variable, get_struct_debug_type_name, get_process_wrapper_name, build_tasking_enum, build_tasking_message_type, build_receive_signal_case_label, build_receive_buffer_case_label, build_receive_buffer_case_end, build_receive_signal_case_end): Add static prototypes. (struct_name, struct_debug_name, data_name, wrapper_name, get_struct_type_name, get_struct_debug_type_name, get_tasking_code_name, get_struct_variable_name, get_process_wrapper_name): Constify a char*. (validate_process_parameters, get_struct_variable_name, decl_tasking_code_variable): Hide unused functions. (build_start_process, add_taskstuff_to_list, build_queue_length): Constify a char*. * tree.c (make_powerset_type): Add static prototype. (get_identifier3, build_alias_decl, decl_check_rename): Constify a char*. * typeck.c (extract_constant_from_buffer, expand_constant_to_buffer, build_empty_string, make_chill_pointer_type, make_chill_range_type, apply_chill_array_layout, field_decl_cmp, make_chill_struct_type, apply_chill_field_layout): Add static prototype. (valid_array_index_p, extract_constant_from_buffer, chill_expand_tuple): Constify a char*. (layout_chill_struct_type): Cast the function argument of qsort. From-SVN: r28965
1999-08-29 15:34:10 +02:00
const char *str;
{
MYSTRING *tmp = (MYSTRING *) xmalloc (sizeof (MYSTRING));
unsigned len = strlen (str);
tmp->allocated = len + ALLOCAMOUNT;
tmp->str = xmalloc ((unsigned)tmp->allocated);
strcpy (tmp->str, str);
tmp->len = len;
return (tmp);
}
static void
strfree (str)
MYSTRING *str;
{
free (str->str);
free (str);
}
static MYSTRING *
append (inout, in)
MYSTRING *inout;
Makefile.in (ch-version.c): Constify a char*. * Makefile.in (ch-version.c): Constify a char*. * actions.c (id_cmp, warn_unhandled, adjust_return_value, update_else_range_for_int_const, update_else_range_for_range, update_else_range_for_range_expr, update_else_range_for_type, compute_else_range, check_case_value, chill_handle_case_label_range, chill_handle_multi_case_label_range, chill_handle_multi_case_else_label, chill_handle_multi_case_label, chill_handle_multi_case_label_list print_missing_cases): Add static prototypes. (build_exception_variant): Cast the function argument of qsort. (build_rts_call, warn_unhandled, chill_convert_for_assignment, adjust_return_value, chill_expand_result, build_multi_case_selector_expression, print_missing_cases): Constify a char*. (print_missing_cases): Introduce an intermediary non-const ptr. Add brackets and indent. * ch-tree.h (maybe_building_objc_message_expr, maybe_objc_comptypes, comptypes_record_hook): Remove declarations. (push_handler, pop_handler): Add prototypes. (builtin_function, valid_array_index_p, build_chill_exception_decl, build_rts_call, chill_convert_for_assignment, display_int_cst, build_chill_addr_expr, check_have_mode, get_identifier3, build_chill_string, register_seize_path, get_unique_identifier, add_taskstuff_to_list, gnuchill_version): Constify a char*. (finish_chill_function): Add void prototype argument. * convert.c (convert_to_reference, convert_to_boolean, convert_to_char, base_type_size_in_bytes, remove_tree_element, check_ps_range, digest_powerset_tuple, digest_structure_tuple, digest_array_tuple, convert1): Add static prototypes. (base_type_size_in_bytes): Hide unused function. (display_int_cst, digest_array_tuple): Constify a char*. * decl.c (set_nesting_level, make_chill_variants, fix_identifier, proclaim_decl, maybe_acons, push_scope_decls, pop_scope_decls, build_implied_names, bind_sub_modules, layout_array_type, do_based_decl, handle_one_level, label_value_cmp, find_implied_types): Add static prototypes. (boolean_code_name, chill_tree_code_type, chill_tree_code_name): Constify a char*. (layout_chill_variants): Cast the function argument of qsort. (start_chill_function, fix_identifier, init_decl_processing): Constify a char*. (init_decl_processing): Prefer memcpy over bcopy to avoid casts. Use xcalloc instead of xmalloc/bzero. (builtin_function, build_chill_exception_decl, finish_outer_function): Constify a char*. * except.c (start_handler_array, finish_handler_array): Add static prototypes. * expr.c (chill_expand_expr, chill_expand_case_expr, check_arglist_length, internal_build_compound_expr, is_really_instance, invalid_operand, invalid_right_operand, build_chill_abstime, build_allocate_memory_call, build_allocate_global_memory_call, build_return_memory, build_chill_duration, build_chill_floatcall, build_allocate_getstack, build_chill_allocate, build_chill_getstack, build_chill_terminate, build_chill_inttime, build_chill_lower_or_upper, build_max_min, build_chill_pred_or_succ, expand_packed_set, fold_set_expr, build_compare_set_expr, scalar_to_string, build_concat_expr, build_compare_string_expr, compare_records, string_char_rep, build_boring_bitstring): Add static prototypes. (check_have_mode, chill_expand_expr, build_chill_floatcall, build_allocate_getstack, build_max_min, build_chill_function_call, expand_packed_set, build_compare_set_expr, build_chill_addr_expr, string_char_rep): Constify a char*. * gperf (hash, in_word_set): Add prototypes. * grant.c (newstring, strfree, append, prepend, grant_use_seizefile, decode_layout, grant_array_type, grant_array_type_selective, get_tag_value, get_tag_value_selective, print_enumeral, print_enumeral_selective, print_integer_type, find_enum_parent, print_integer_selective, print_struct, print_struct_selective, print_proc_exceptions, print_proc_tail, print_proc_tail_selective, find_in_decls, in_ridpointers, grant_seized_identifier, globalize_decl, grant_one_decl_selective, compare_memory_file, search_in_list, really_grant_this): Add static prototypes. (newstring, append, prepend, grant_use_seizefile, print_integer_type, decode_constant, grant_one_decl_selective, header_template): Constify a char *. * inout.c (add_enum_to_list, build_chill_io_list_type, build_io_types, declare_predefined_file, build_access_part, textlocation_mode, check_assoc, assoc_call, check_transfer, connect_process_optionals, connect_text, connect_access, check_access, check_text, get_final_type_and_range, process_io_list, check_format_string, get_max_size, check_exprlist): Add static prototypes. (declare_predefined_file, check_assoc, assoc_call, check_transfer, check_access, check_text, process_io_list): Constify a char*. * lang.c (deep_const_expr, chill_print_error_function): Add static prototypes. * lex.c (close_input_file, maybe_number, string_or_char): Constify a char*. (ch_lex_init, skip_directive, same_file, getlc, yywrap, yy_refill): Add static prototypes. (build_chill_string, same_file, register_seize_path): Constify a char*. * lex.h (finish_chill_seizes): Remove unused prototypes. * loop.c (build_temporary_variable, maybe_make_for_temp, get_unique_identifier): Constify a char*. * parse.c (ch_parse_init, check_end_label, end_function, build_prefix_clause, PEEK_TOKEN, peek_token_, pushback_token, forward_token_, require, check_token, expect, define__PROCNAME__): Add static prototypes. (build_prefix_clause, expect): Constify a char*. (parse_expression, parse_primval, parse_untyped_expr, parse_opt_untyped_expr, parse_opt_actions): Add void prototype argument. (parse_opt_name_string, parse_simple_name_string, parse_name_string, parse_defining_occurrence, parse_name, parse_optlabel, parse_opt_end_label_semi_colon, parse_modulion, parse_spec_module, parse_semi_colon, parse_defining_occurrence_list, parse_mode_definition, parse_mode_definition_statement, parse_synonym_definition, parse_synonym_definition_statement, parse_on_exception_list, parse_on_alternatives, parse_loc_declaration, parse_declaration_statement, parse_optforbid, parse_postfix, parse_postfix_list, parse_rename_clauses, parse_opt_prefix_clause, parse_grant_statement, parse_seize_statement, parse_param_name_list, parse_param_attr, parse_formpar, parse_formparlist, parse_opt_result_spec, parse_opt_except, parse_opt_recursive, parse_procedureattr, parse_proc_body, parse_procedure_definition, parse_processpar, parse_processparlist, parse_process_definition, parse_signal_definition, parse_signal_definition_statement, parse_then_clause, parse_opt_else_clause, parse_expr_list, parse_range_list_clause, pushback_paren_expr, parse_case_label, parse_case_label_list, parse_case_label_specification, parse_single_dimension_case_action, parse_multi_dimension_case_action, parse_case_action, parse_asm_operands, parse_asm_clobbers, ch_expand_asm_operands, parse_asm_action, parse_begin_end_block, parse_if_action, parse_iteration, parse_delay_case_event_list, parse_delay_case_action, parse_do_action, parse_receive_spec, parse_receive_case_action, parse_send_action, parse_start_action, parse_call, parse_tuple_fieldname_list, parse_tuple_element, parse_opt_element_list, parse_tuple, parse_operand6, parse_operand5, parse_operand4, parse_operand3, parse_operand2, parse_operand1, parse_operand0, parse_case_expression, parse_then_alternative, parse_else_alternative, parse_if_expression, parse_index_mode, parse_set_mode, parse_pos, parse_step, parse_opt_layout, parse_field_name_list, parse_fixed_field, parse_variant_field_list, parse_variant_alternative, parse_field, parse_structure_mode, parse_opt_queue_size, parse_procedure_mode, parse_program, parse_pass_1_2): Add static prototypes. (parse_process_definition): Remove extra argument in function call. (parse_range_list_clause): Likewise. * satisfy.c (satisfy, cycle_error_print, safe_satisfy_decl, satisfy_list, satisfy_list_values): Add static prototype. (safe_satisfy_decl): Cast DECL_TASKING_CODE_DECL() to (tree). * tasking.c (make_process_struct): Remove unused prototype. (validate_process_parameters, get_struct_variable_name, decl_tasking_code_variable, get_struct_debug_type_name, get_process_wrapper_name, build_tasking_enum, build_tasking_message_type, build_receive_signal_case_label, build_receive_buffer_case_label, build_receive_buffer_case_end, build_receive_signal_case_end): Add static prototypes. (struct_name, struct_debug_name, data_name, wrapper_name, get_struct_type_name, get_struct_debug_type_name, get_tasking_code_name, get_struct_variable_name, get_process_wrapper_name): Constify a char*. (validate_process_parameters, get_struct_variable_name, decl_tasking_code_variable): Hide unused functions. (build_start_process, add_taskstuff_to_list, build_queue_length): Constify a char*. * tree.c (make_powerset_type): Add static prototype. (get_identifier3, build_alias_decl, decl_check_rename): Constify a char*. * typeck.c (extract_constant_from_buffer, expand_constant_to_buffer, build_empty_string, make_chill_pointer_type, make_chill_range_type, apply_chill_array_layout, field_decl_cmp, make_chill_struct_type, apply_chill_field_layout): Add static prototype. (valid_array_index_p, extract_constant_from_buffer, chill_expand_tuple): Constify a char*. (layout_chill_struct_type): Cast the function argument of qsort. From-SVN: r28965
1999-08-29 15:34:10 +02:00
const char *in;
{
int inlen = strlen (in);
int amount = ALLOCAMOUNT;
if (inlen >= amount)
amount += inlen;
if ((inout->len + inlen) >= inout->allocated)
inout->str = xrealloc (inout->str, inout->allocated += amount);
strcpy (inout->str + inout->len, in);
inout->len += inlen;
return (inout);
}
static MYSTRING *
prepend (inout, in)
MYSTRING *inout;
Makefile.in (ch-version.c): Constify a char*. * Makefile.in (ch-version.c): Constify a char*. * actions.c (id_cmp, warn_unhandled, adjust_return_value, update_else_range_for_int_const, update_else_range_for_range, update_else_range_for_range_expr, update_else_range_for_type, compute_else_range, check_case_value, chill_handle_case_label_range, chill_handle_multi_case_label_range, chill_handle_multi_case_else_label, chill_handle_multi_case_label, chill_handle_multi_case_label_list print_missing_cases): Add static prototypes. (build_exception_variant): Cast the function argument of qsort. (build_rts_call, warn_unhandled, chill_convert_for_assignment, adjust_return_value, chill_expand_result, build_multi_case_selector_expression, print_missing_cases): Constify a char*. (print_missing_cases): Introduce an intermediary non-const ptr. Add brackets and indent. * ch-tree.h (maybe_building_objc_message_expr, maybe_objc_comptypes, comptypes_record_hook): Remove declarations. (push_handler, pop_handler): Add prototypes. (builtin_function, valid_array_index_p, build_chill_exception_decl, build_rts_call, chill_convert_for_assignment, display_int_cst, build_chill_addr_expr, check_have_mode, get_identifier3, build_chill_string, register_seize_path, get_unique_identifier, add_taskstuff_to_list, gnuchill_version): Constify a char*. (finish_chill_function): Add void prototype argument. * convert.c (convert_to_reference, convert_to_boolean, convert_to_char, base_type_size_in_bytes, remove_tree_element, check_ps_range, digest_powerset_tuple, digest_structure_tuple, digest_array_tuple, convert1): Add static prototypes. (base_type_size_in_bytes): Hide unused function. (display_int_cst, digest_array_tuple): Constify a char*. * decl.c (set_nesting_level, make_chill_variants, fix_identifier, proclaim_decl, maybe_acons, push_scope_decls, pop_scope_decls, build_implied_names, bind_sub_modules, layout_array_type, do_based_decl, handle_one_level, label_value_cmp, find_implied_types): Add static prototypes. (boolean_code_name, chill_tree_code_type, chill_tree_code_name): Constify a char*. (layout_chill_variants): Cast the function argument of qsort. (start_chill_function, fix_identifier, init_decl_processing): Constify a char*. (init_decl_processing): Prefer memcpy over bcopy to avoid casts. Use xcalloc instead of xmalloc/bzero. (builtin_function, build_chill_exception_decl, finish_outer_function): Constify a char*. * except.c (start_handler_array, finish_handler_array): Add static prototypes. * expr.c (chill_expand_expr, chill_expand_case_expr, check_arglist_length, internal_build_compound_expr, is_really_instance, invalid_operand, invalid_right_operand, build_chill_abstime, build_allocate_memory_call, build_allocate_global_memory_call, build_return_memory, build_chill_duration, build_chill_floatcall, build_allocate_getstack, build_chill_allocate, build_chill_getstack, build_chill_terminate, build_chill_inttime, build_chill_lower_or_upper, build_max_min, build_chill_pred_or_succ, expand_packed_set, fold_set_expr, build_compare_set_expr, scalar_to_string, build_concat_expr, build_compare_string_expr, compare_records, string_char_rep, build_boring_bitstring): Add static prototypes. (check_have_mode, chill_expand_expr, build_chill_floatcall, build_allocate_getstack, build_max_min, build_chill_function_call, expand_packed_set, build_compare_set_expr, build_chill_addr_expr, string_char_rep): Constify a char*. * gperf (hash, in_word_set): Add prototypes. * grant.c (newstring, strfree, append, prepend, grant_use_seizefile, decode_layout, grant_array_type, grant_array_type_selective, get_tag_value, get_tag_value_selective, print_enumeral, print_enumeral_selective, print_integer_type, find_enum_parent, print_integer_selective, print_struct, print_struct_selective, print_proc_exceptions, print_proc_tail, print_proc_tail_selective, find_in_decls, in_ridpointers, grant_seized_identifier, globalize_decl, grant_one_decl_selective, compare_memory_file, search_in_list, really_grant_this): Add static prototypes. (newstring, append, prepend, grant_use_seizefile, print_integer_type, decode_constant, grant_one_decl_selective, header_template): Constify a char *. * inout.c (add_enum_to_list, build_chill_io_list_type, build_io_types, declare_predefined_file, build_access_part, textlocation_mode, check_assoc, assoc_call, check_transfer, connect_process_optionals, connect_text, connect_access, check_access, check_text, get_final_type_and_range, process_io_list, check_format_string, get_max_size, check_exprlist): Add static prototypes. (declare_predefined_file, check_assoc, assoc_call, check_transfer, check_access, check_text, process_io_list): Constify a char*. * lang.c (deep_const_expr, chill_print_error_function): Add static prototypes. * lex.c (close_input_file, maybe_number, string_or_char): Constify a char*. (ch_lex_init, skip_directive, same_file, getlc, yywrap, yy_refill): Add static prototypes. (build_chill_string, same_file, register_seize_path): Constify a char*. * lex.h (finish_chill_seizes): Remove unused prototypes. * loop.c (build_temporary_variable, maybe_make_for_temp, get_unique_identifier): Constify a char*. * parse.c (ch_parse_init, check_end_label, end_function, build_prefix_clause, PEEK_TOKEN, peek_token_, pushback_token, forward_token_, require, check_token, expect, define__PROCNAME__): Add static prototypes. (build_prefix_clause, expect): Constify a char*. (parse_expression, parse_primval, parse_untyped_expr, parse_opt_untyped_expr, parse_opt_actions): Add void prototype argument. (parse_opt_name_string, parse_simple_name_string, parse_name_string, parse_defining_occurrence, parse_name, parse_optlabel, parse_opt_end_label_semi_colon, parse_modulion, parse_spec_module, parse_semi_colon, parse_defining_occurrence_list, parse_mode_definition, parse_mode_definition_statement, parse_synonym_definition, parse_synonym_definition_statement, parse_on_exception_list, parse_on_alternatives, parse_loc_declaration, parse_declaration_statement, parse_optforbid, parse_postfix, parse_postfix_list, parse_rename_clauses, parse_opt_prefix_clause, parse_grant_statement, parse_seize_statement, parse_param_name_list, parse_param_attr, parse_formpar, parse_formparlist, parse_opt_result_spec, parse_opt_except, parse_opt_recursive, parse_procedureattr, parse_proc_body, parse_procedure_definition, parse_processpar, parse_processparlist, parse_process_definition, parse_signal_definition, parse_signal_definition_statement, parse_then_clause, parse_opt_else_clause, parse_expr_list, parse_range_list_clause, pushback_paren_expr, parse_case_label, parse_case_label_list, parse_case_label_specification, parse_single_dimension_case_action, parse_multi_dimension_case_action, parse_case_action, parse_asm_operands, parse_asm_clobbers, ch_expand_asm_operands, parse_asm_action, parse_begin_end_block, parse_if_action, parse_iteration, parse_delay_case_event_list, parse_delay_case_action, parse_do_action, parse_receive_spec, parse_receive_case_action, parse_send_action, parse_start_action, parse_call, parse_tuple_fieldname_list, parse_tuple_element, parse_opt_element_list, parse_tuple, parse_operand6, parse_operand5, parse_operand4, parse_operand3, parse_operand2, parse_operand1, parse_operand0, parse_case_expression, parse_then_alternative, parse_else_alternative, parse_if_expression, parse_index_mode, parse_set_mode, parse_pos, parse_step, parse_opt_layout, parse_field_name_list, parse_fixed_field, parse_variant_field_list, parse_variant_alternative, parse_field, parse_structure_mode, parse_opt_queue_size, parse_procedure_mode, parse_program, parse_pass_1_2): Add static prototypes. (parse_process_definition): Remove extra argument in function call. (parse_range_list_clause): Likewise. * satisfy.c (satisfy, cycle_error_print, safe_satisfy_decl, satisfy_list, satisfy_list_values): Add static prototype. (safe_satisfy_decl): Cast DECL_TASKING_CODE_DECL() to (tree). * tasking.c (make_process_struct): Remove unused prototype. (validate_process_parameters, get_struct_variable_name, decl_tasking_code_variable, get_struct_debug_type_name, get_process_wrapper_name, build_tasking_enum, build_tasking_message_type, build_receive_signal_case_label, build_receive_buffer_case_label, build_receive_buffer_case_end, build_receive_signal_case_end): Add static prototypes. (struct_name, struct_debug_name, data_name, wrapper_name, get_struct_type_name, get_struct_debug_type_name, get_tasking_code_name, get_struct_variable_name, get_process_wrapper_name): Constify a char*. (validate_process_parameters, get_struct_variable_name, decl_tasking_code_variable): Hide unused functions. (build_start_process, add_taskstuff_to_list, build_queue_length): Constify a char*. * tree.c (make_powerset_type): Add static prototype. (get_identifier3, build_alias_decl, decl_check_rename): Constify a char*. * typeck.c (extract_constant_from_buffer, expand_constant_to_buffer, build_empty_string, make_chill_pointer_type, make_chill_range_type, apply_chill_array_layout, field_decl_cmp, make_chill_struct_type, apply_chill_field_layout): Add static prototype. (valid_array_index_p, extract_constant_from_buffer, chill_expand_tuple): Constify a char*. (layout_chill_struct_type): Cast the function argument of qsort. From-SVN: r28965
1999-08-29 15:34:10 +02:00
const char *in;
{
MYSTRING *res = inout;
if (strlen (in))
{
res = newstring (in);
res = APPEND (res, inout->str);
FREE (inout);
}
return res;
}
Makefile.in (ch-version.c): Constify a char*. * Makefile.in (ch-version.c): Constify a char*. * actions.c (id_cmp, warn_unhandled, adjust_return_value, update_else_range_for_int_const, update_else_range_for_range, update_else_range_for_range_expr, update_else_range_for_type, compute_else_range, check_case_value, chill_handle_case_label_range, chill_handle_multi_case_label_range, chill_handle_multi_case_else_label, chill_handle_multi_case_label, chill_handle_multi_case_label_list print_missing_cases): Add static prototypes. (build_exception_variant): Cast the function argument of qsort. (build_rts_call, warn_unhandled, chill_convert_for_assignment, adjust_return_value, chill_expand_result, build_multi_case_selector_expression, print_missing_cases): Constify a char*. (print_missing_cases): Introduce an intermediary non-const ptr. Add brackets and indent. * ch-tree.h (maybe_building_objc_message_expr, maybe_objc_comptypes, comptypes_record_hook): Remove declarations. (push_handler, pop_handler): Add prototypes. (builtin_function, valid_array_index_p, build_chill_exception_decl, build_rts_call, chill_convert_for_assignment, display_int_cst, build_chill_addr_expr, check_have_mode, get_identifier3, build_chill_string, register_seize_path, get_unique_identifier, add_taskstuff_to_list, gnuchill_version): Constify a char*. (finish_chill_function): Add void prototype argument. * convert.c (convert_to_reference, convert_to_boolean, convert_to_char, base_type_size_in_bytes, remove_tree_element, check_ps_range, digest_powerset_tuple, digest_structure_tuple, digest_array_tuple, convert1): Add static prototypes. (base_type_size_in_bytes): Hide unused function. (display_int_cst, digest_array_tuple): Constify a char*. * decl.c (set_nesting_level, make_chill_variants, fix_identifier, proclaim_decl, maybe_acons, push_scope_decls, pop_scope_decls, build_implied_names, bind_sub_modules, layout_array_type, do_based_decl, handle_one_level, label_value_cmp, find_implied_types): Add static prototypes. (boolean_code_name, chill_tree_code_type, chill_tree_code_name): Constify a char*. (layout_chill_variants): Cast the function argument of qsort. (start_chill_function, fix_identifier, init_decl_processing): Constify a char*. (init_decl_processing): Prefer memcpy over bcopy to avoid casts. Use xcalloc instead of xmalloc/bzero. (builtin_function, build_chill_exception_decl, finish_outer_function): Constify a char*. * except.c (start_handler_array, finish_handler_array): Add static prototypes. * expr.c (chill_expand_expr, chill_expand_case_expr, check_arglist_length, internal_build_compound_expr, is_really_instance, invalid_operand, invalid_right_operand, build_chill_abstime, build_allocate_memory_call, build_allocate_global_memory_call, build_return_memory, build_chill_duration, build_chill_floatcall, build_allocate_getstack, build_chill_allocate, build_chill_getstack, build_chill_terminate, build_chill_inttime, build_chill_lower_or_upper, build_max_min, build_chill_pred_or_succ, expand_packed_set, fold_set_expr, build_compare_set_expr, scalar_to_string, build_concat_expr, build_compare_string_expr, compare_records, string_char_rep, build_boring_bitstring): Add static prototypes. (check_have_mode, chill_expand_expr, build_chill_floatcall, build_allocate_getstack, build_max_min, build_chill_function_call, expand_packed_set, build_compare_set_expr, build_chill_addr_expr, string_char_rep): Constify a char*. * gperf (hash, in_word_set): Add prototypes. * grant.c (newstring, strfree, append, prepend, grant_use_seizefile, decode_layout, grant_array_type, grant_array_type_selective, get_tag_value, get_tag_value_selective, print_enumeral, print_enumeral_selective, print_integer_type, find_enum_parent, print_integer_selective, print_struct, print_struct_selective, print_proc_exceptions, print_proc_tail, print_proc_tail_selective, find_in_decls, in_ridpointers, grant_seized_identifier, globalize_decl, grant_one_decl_selective, compare_memory_file, search_in_list, really_grant_this): Add static prototypes. (newstring, append, prepend, grant_use_seizefile, print_integer_type, decode_constant, grant_one_decl_selective, header_template): Constify a char *. * inout.c (add_enum_to_list, build_chill_io_list_type, build_io_types, declare_predefined_file, build_access_part, textlocation_mode, check_assoc, assoc_call, check_transfer, connect_process_optionals, connect_text, connect_access, check_access, check_text, get_final_type_and_range, process_io_list, check_format_string, get_max_size, check_exprlist): Add static prototypes. (declare_predefined_file, check_assoc, assoc_call, check_transfer, check_access, check_text, process_io_list): Constify a char*. * lang.c (deep_const_expr, chill_print_error_function): Add static prototypes. * lex.c (close_input_file, maybe_number, string_or_char): Constify a char*. (ch_lex_init, skip_directive, same_file, getlc, yywrap, yy_refill): Add static prototypes. (build_chill_string, same_file, register_seize_path): Constify a char*. * lex.h (finish_chill_seizes): Remove unused prototypes. * loop.c (build_temporary_variable, maybe_make_for_temp, get_unique_identifier): Constify a char*. * parse.c (ch_parse_init, check_end_label, end_function, build_prefix_clause, PEEK_TOKEN, peek_token_, pushback_token, forward_token_, require, check_token, expect, define__PROCNAME__): Add static prototypes. (build_prefix_clause, expect): Constify a char*. (parse_expression, parse_primval, parse_untyped_expr, parse_opt_untyped_expr, parse_opt_actions): Add void prototype argument. (parse_opt_name_string, parse_simple_name_string, parse_name_string, parse_defining_occurrence, parse_name, parse_optlabel, parse_opt_end_label_semi_colon, parse_modulion, parse_spec_module, parse_semi_colon, parse_defining_occurrence_list, parse_mode_definition, parse_mode_definition_statement, parse_synonym_definition, parse_synonym_definition_statement, parse_on_exception_list, parse_on_alternatives, parse_loc_declaration, parse_declaration_statement, parse_optforbid, parse_postfix, parse_postfix_list, parse_rename_clauses, parse_opt_prefix_clause, parse_grant_statement, parse_seize_statement, parse_param_name_list, parse_param_attr, parse_formpar, parse_formparlist, parse_opt_result_spec, parse_opt_except, parse_opt_recursive, parse_procedureattr, parse_proc_body, parse_procedure_definition, parse_processpar, parse_processparlist, parse_process_definition, parse_signal_definition, parse_signal_definition_statement, parse_then_clause, parse_opt_else_clause, parse_expr_list, parse_range_list_clause, pushback_paren_expr, parse_case_label, parse_case_label_list, parse_case_label_specification, parse_single_dimension_case_action, parse_multi_dimension_case_action, parse_case_action, parse_asm_operands, parse_asm_clobbers, ch_expand_asm_operands, parse_asm_action, parse_begin_end_block, parse_if_action, parse_iteration, parse_delay_case_event_list, parse_delay_case_action, parse_do_action, parse_receive_spec, parse_receive_case_action, parse_send_action, parse_start_action, parse_call, parse_tuple_fieldname_list, parse_tuple_element, parse_opt_element_list, parse_tuple, parse_operand6, parse_operand5, parse_operand4, parse_operand3, parse_operand2, parse_operand1, parse_operand0, parse_case_expression, parse_then_alternative, parse_else_alternative, parse_if_expression, parse_index_mode, parse_set_mode, parse_pos, parse_step, parse_opt_layout, parse_field_name_list, parse_fixed_field, parse_variant_field_list, parse_variant_alternative, parse_field, parse_structure_mode, parse_opt_queue_size, parse_procedure_mode, parse_program, parse_pass_1_2): Add static prototypes. (parse_process_definition): Remove extra argument in function call. (parse_range_list_clause): Likewise. * satisfy.c (satisfy, cycle_error_print, safe_satisfy_decl, satisfy_list, satisfy_list_values): Add static prototype. (safe_satisfy_decl): Cast DECL_TASKING_CODE_DECL() to (tree). * tasking.c (make_process_struct): Remove unused prototype. (validate_process_parameters, get_struct_variable_name, decl_tasking_code_variable, get_struct_debug_type_name, get_process_wrapper_name, build_tasking_enum, build_tasking_message_type, build_receive_signal_case_label, build_receive_buffer_case_label, build_receive_buffer_case_end, build_receive_signal_case_end): Add static prototypes. (struct_name, struct_debug_name, data_name, wrapper_name, get_struct_type_name, get_struct_debug_type_name, get_tasking_code_name, get_struct_variable_name, get_process_wrapper_name): Constify a char*. (validate_process_parameters, get_struct_variable_name, decl_tasking_code_variable): Hide unused functions. (build_start_process, add_taskstuff_to_list, build_queue_length): Constify a char*. * tree.c (make_powerset_type): Add static prototype. (get_identifier3, build_alias_decl, decl_check_rename): Constify a char*. * typeck.c (extract_constant_from_buffer, expand_constant_to_buffer, build_empty_string, make_chill_pointer_type, make_chill_range_type, apply_chill_array_layout, field_decl_cmp, make_chill_struct_type, apply_chill_field_layout): Add static prototype. (valid_array_index_p, extract_constant_from_buffer, chill_expand_tuple): Constify a char*. (layout_chill_struct_type): Cast the function argument of qsort. From-SVN: r28965
1999-08-29 15:34:10 +02:00
static void
grant_use_seizefile (seize_filename)
Makefile.in (ch-version.c): Constify a char*. * Makefile.in (ch-version.c): Constify a char*. * actions.c (id_cmp, warn_unhandled, adjust_return_value, update_else_range_for_int_const, update_else_range_for_range, update_else_range_for_range_expr, update_else_range_for_type, compute_else_range, check_case_value, chill_handle_case_label_range, chill_handle_multi_case_label_range, chill_handle_multi_case_else_label, chill_handle_multi_case_label, chill_handle_multi_case_label_list print_missing_cases): Add static prototypes. (build_exception_variant): Cast the function argument of qsort. (build_rts_call, warn_unhandled, chill_convert_for_assignment, adjust_return_value, chill_expand_result, build_multi_case_selector_expression, print_missing_cases): Constify a char*. (print_missing_cases): Introduce an intermediary non-const ptr. Add brackets and indent. * ch-tree.h (maybe_building_objc_message_expr, maybe_objc_comptypes, comptypes_record_hook): Remove declarations. (push_handler, pop_handler): Add prototypes. (builtin_function, valid_array_index_p, build_chill_exception_decl, build_rts_call, chill_convert_for_assignment, display_int_cst, build_chill_addr_expr, check_have_mode, get_identifier3, build_chill_string, register_seize_path, get_unique_identifier, add_taskstuff_to_list, gnuchill_version): Constify a char*. (finish_chill_function): Add void prototype argument. * convert.c (convert_to_reference, convert_to_boolean, convert_to_char, base_type_size_in_bytes, remove_tree_element, check_ps_range, digest_powerset_tuple, digest_structure_tuple, digest_array_tuple, convert1): Add static prototypes. (base_type_size_in_bytes): Hide unused function. (display_int_cst, digest_array_tuple): Constify a char*. * decl.c (set_nesting_level, make_chill_variants, fix_identifier, proclaim_decl, maybe_acons, push_scope_decls, pop_scope_decls, build_implied_names, bind_sub_modules, layout_array_type, do_based_decl, handle_one_level, label_value_cmp, find_implied_types): Add static prototypes. (boolean_code_name, chill_tree_code_type, chill_tree_code_name): Constify a char*. (layout_chill_variants): Cast the function argument of qsort. (start_chill_function, fix_identifier, init_decl_processing): Constify a char*. (init_decl_processing): Prefer memcpy over bcopy to avoid casts. Use xcalloc instead of xmalloc/bzero. (builtin_function, build_chill_exception_decl, finish_outer_function): Constify a char*. * except.c (start_handler_array, finish_handler_array): Add static prototypes. * expr.c (chill_expand_expr, chill_expand_case_expr, check_arglist_length, internal_build_compound_expr, is_really_instance, invalid_operand, invalid_right_operand, build_chill_abstime, build_allocate_memory_call, build_allocate_global_memory_call, build_return_memory, build_chill_duration, build_chill_floatcall, build_allocate_getstack, build_chill_allocate, build_chill_getstack, build_chill_terminate, build_chill_inttime, build_chill_lower_or_upper, build_max_min, build_chill_pred_or_succ, expand_packed_set, fold_set_expr, build_compare_set_expr, scalar_to_string, build_concat_expr, build_compare_string_expr, compare_records, string_char_rep, build_boring_bitstring): Add static prototypes. (check_have_mode, chill_expand_expr, build_chill_floatcall, build_allocate_getstack, build_max_min, build_chill_function_call, expand_packed_set, build_compare_set_expr, build_chill_addr_expr, string_char_rep): Constify a char*. * gperf (hash, in_word_set): Add prototypes. * grant.c (newstring, strfree, append, prepend, grant_use_seizefile, decode_layout, grant_array_type, grant_array_type_selective, get_tag_value, get_tag_value_selective, print_enumeral, print_enumeral_selective, print_integer_type, find_enum_parent, print_integer_selective, print_struct, print_struct_selective, print_proc_exceptions, print_proc_tail, print_proc_tail_selective, find_in_decls, in_ridpointers, grant_seized_identifier, globalize_decl, grant_one_decl_selective, compare_memory_file, search_in_list, really_grant_this): Add static prototypes. (newstring, append, prepend, grant_use_seizefile, print_integer_type, decode_constant, grant_one_decl_selective, header_template): Constify a char *. * inout.c (add_enum_to_list, build_chill_io_list_type, build_io_types, declare_predefined_file, build_access_part, textlocation_mode, check_assoc, assoc_call, check_transfer, connect_process_optionals, connect_text, connect_access, check_access, check_text, get_final_type_and_range, process_io_list, check_format_string, get_max_size, check_exprlist): Add static prototypes. (declare_predefined_file, check_assoc, assoc_call, check_transfer, check_access, check_text, process_io_list): Constify a char*. * lang.c (deep_const_expr, chill_print_error_function): Add static prototypes. * lex.c (close_input_file, maybe_number, string_or_char): Constify a char*. (ch_lex_init, skip_directive, same_file, getlc, yywrap, yy_refill): Add static prototypes. (build_chill_string, same_file, register_seize_path): Constify a char*. * lex.h (finish_chill_seizes): Remove unused prototypes. * loop.c (build_temporary_variable, maybe_make_for_temp, get_unique_identifier): Constify a char*. * parse.c (ch_parse_init, check_end_label, end_function, build_prefix_clause, PEEK_TOKEN, peek_token_, pushback_token, forward_token_, require, check_token, expect, define__PROCNAME__): Add static prototypes. (build_prefix_clause, expect): Constify a char*. (parse_expression, parse_primval, parse_untyped_expr, parse_opt_untyped_expr, parse_opt_actions): Add void prototype argument. (parse_opt_name_string, parse_simple_name_string, parse_name_string, parse_defining_occurrence, parse_name, parse_optlabel, parse_opt_end_label_semi_colon, parse_modulion, parse_spec_module, parse_semi_colon, parse_defining_occurrence_list, parse_mode_definition, parse_mode_definition_statement, parse_synonym_definition, parse_synonym_definition_statement, parse_on_exception_list, parse_on_alternatives, parse_loc_declaration, parse_declaration_statement, parse_optforbid, parse_postfix, parse_postfix_list, parse_rename_clauses, parse_opt_prefix_clause, parse_grant_statement, parse_seize_statement, parse_param_name_list, parse_param_attr, parse_formpar, parse_formparlist, parse_opt_result_spec, parse_opt_except, parse_opt_recursive, parse_procedureattr, parse_proc_body, parse_procedure_definition, parse_processpar, parse_processparlist, parse_process_definition, parse_signal_definition, parse_signal_definition_statement, parse_then_clause, parse_opt_else_clause, parse_expr_list, parse_range_list_clause, pushback_paren_expr, parse_case_label, parse_case_label_list, parse_case_label_specification, parse_single_dimension_case_action, parse_multi_dimension_case_action, parse_case_action, parse_asm_operands, parse_asm_clobbers, ch_expand_asm_operands, parse_asm_action, parse_begin_end_block, parse_if_action, parse_iteration, parse_delay_case_event_list, parse_delay_case_action, parse_do_action, parse_receive_spec, parse_receive_case_action, parse_send_action, parse_start_action, parse_call, parse_tuple_fieldname_list, parse_tuple_element, parse_opt_element_list, parse_tuple, parse_operand6, parse_operand5, parse_operand4, parse_operand3, parse_operand2, parse_operand1, parse_operand0, parse_case_expression, parse_then_alternative, parse_else_alternative, parse_if_expression, parse_index_mode, parse_set_mode, parse_pos, parse_step, parse_opt_layout, parse_field_name_list, parse_fixed_field, parse_variant_field_list, parse_variant_alternative, parse_field, parse_structure_mode, parse_opt_queue_size, parse_procedure_mode, parse_program, parse_pass_1_2): Add static prototypes. (parse_process_definition): Remove extra argument in function call. (parse_range_list_clause): Likewise. * satisfy.c (satisfy, cycle_error_print, safe_satisfy_decl, satisfy_list, satisfy_list_values): Add static prototype. (safe_satisfy_decl): Cast DECL_TASKING_CODE_DECL() to (tree). * tasking.c (make_process_struct): Remove unused prototype. (validate_process_parameters, get_struct_variable_name, decl_tasking_code_variable, get_struct_debug_type_name, get_process_wrapper_name, build_tasking_enum, build_tasking_message_type, build_receive_signal_case_label, build_receive_buffer_case_label, build_receive_buffer_case_end, build_receive_signal_case_end): Add static prototypes. (struct_name, struct_debug_name, data_name, wrapper_name, get_struct_type_name, get_struct_debug_type_name, get_tasking_code_name, get_struct_variable_name, get_process_wrapper_name): Constify a char*. (validate_process_parameters, get_struct_variable_name, decl_tasking_code_variable): Hide unused functions. (build_start_process, add_taskstuff_to_list, build_queue_length): Constify a char*. * tree.c (make_powerset_type): Add static prototype. (get_identifier3, build_alias_decl, decl_check_rename): Constify a char*. * typeck.c (extract_constant_from_buffer, expand_constant_to_buffer, build_empty_string, make_chill_pointer_type, make_chill_range_type, apply_chill_array_layout, field_decl_cmp, make_chill_struct_type, apply_chill_field_layout): Add static prototype. (valid_array_index_p, extract_constant_from_buffer, chill_expand_tuple): Constify a char*. (layout_chill_struct_type): Cast the function argument of qsort. From-SVN: r28965
1999-08-29 15:34:10 +02:00
const char *seize_filename;
{
APPEND (gstring, "<> USE_SEIZE_FILE \"");
APPEND (gstring, seize_filename);
APPEND (gstring, "\" <>\n");
}
static MYSTRING *
decode_layout (layout)
tree layout;
{
tree temp;
tree stepsize = NULL_TREE;
int was_step = 0;
MYSTRING *result = newstring ("");
MYSTRING *work;
if (layout == integer_zero_node) /* NOPACK */
{
APPEND (result, " NOPACK");
return result;
}
if (layout == integer_one_node) /* PACK */
{
APPEND (result, " PACK");
return result;
}
APPEND (result, " ");
temp = layout;
if (TREE_PURPOSE (temp) == NULL_TREE)
{
APPEND (result, "STEP(");
was_step = 1;
temp = TREE_VALUE (temp);
stepsize = TREE_VALUE (temp);
}
APPEND (result, "POS(");
/* Get the starting word */
temp = TREE_PURPOSE (temp);
work = decode_constant (TREE_PURPOSE (temp));
APPEND (result, work->str);
FREE (work);
temp = TREE_VALUE (temp);
if (temp != NULL_TREE)
{
/* Get the starting bit */
APPEND (result, ", ");
work = decode_constant (TREE_PURPOSE (temp));
APPEND (result, work->str);
FREE (work);
temp = TREE_VALUE (temp);
if (temp != NULL_TREE)
{
/* Get the length or the ending bit */
tree what = TREE_PURPOSE (temp);
if (what == integer_zero_node) /* length */
{
APPEND (result, ", ");
}
else
{
APPEND (result, ":");
}
work = decode_constant (TREE_VALUE (temp));
APPEND (result, work->str);
FREE (work);
}
}
APPEND (result, ")");
if (was_step)
{
if (stepsize != NULL_TREE)
{
APPEND (result, ", ");
work = decode_constant (stepsize);
APPEND (result, work->str);
FREE (work);
}
APPEND (result, ")");
}
return result;
}
static MYSTRING *
grant_array_type (type)
tree type;
{
MYSTRING *result = newstring ("");
MYSTRING *mode_string;
tree layout;
int varying = 0;
if (chill_varying_type_p (type))
{
varying = 1;
type = CH_VARYING_ARRAY_TYPE (type);
}
if (CH_STRING_TYPE_P (type))
{
tree fields = TYPE_DOMAIN (type);
tree maxval = TYPE_MAX_VALUE (fields);
if (TREE_CODE (TREE_TYPE (type)) == CHAR_TYPE)
APPEND (result, "CHARS (");
else
APPEND (result, "BOOLS (");
if (TREE_CODE (maxval) == INTEGER_CST)
{
char wrk[20];
sprintf (wrk, HOST_WIDE_INT_PRINT_DEC,
TREE_INT_CST_LOW (maxval) + 1);
APPEND (result, wrk);
}
else if (TREE_CODE (maxval) == MINUS_EXPR
&& TREE_OPERAND (maxval, 1) == integer_one_node)
{
mode_string = decode_constant (TREE_OPERAND (maxval, 0));
APPEND (result, mode_string->str);
FREE (mode_string);
}
else
{
mode_string = decode_constant (maxval);
APPEND (result, mode_string->str);
FREE (mode_string);
APPEND (result, "+1");
}
APPEND (result, ")");
if (varying)
APPEND (result, " VARYING");
return result;
}
APPEND (result, "ARRAY (");
if (TREE_CODE (TYPE_DOMAIN (type)) == INTEGER_TYPE
&& TREE_TYPE (TYPE_DOMAIN (type)) == ridpointers[(int) RID_RANGE])
{
mode_string = decode_constant (TYPE_MIN_VALUE (TYPE_DOMAIN (type)));
APPEND (result, mode_string->str);
FREE (mode_string);
APPEND (result, ":");
mode_string = decode_constant (TYPE_MAX_VALUE (TYPE_DOMAIN (type)));
APPEND (result, mode_string->str);
FREE (mode_string);
}
else
{
mode_string = decode_mode (TYPE_DOMAIN (type));
APPEND (result, mode_string->str);
FREE (mode_string);
}
APPEND (result, ") ");
if (varying)
APPEND (result, "VARYING ");
mode_string = get_type (TREE_TYPE (type));
APPEND (result, mode_string->str);
FREE (mode_string);
layout = TYPE_ATTRIBUTES (type);
if (layout != NULL_TREE)
{
mode_string = decode_layout (layout);
APPEND (result, mode_string->str);
FREE (mode_string);
}
return result;
}
static MYSTRING *
grant_array_type_selective (type, all_decls)
tree type;
tree all_decls;
{
MYSTRING *result = newstring ("");
MYSTRING *mode_string;
int varying = 0;
if (chill_varying_type_p (type))
{
varying = 1;
type = CH_VARYING_ARRAY_TYPE (type);
}
if (CH_STRING_TYPE_P (type))
{
tree fields = TYPE_DOMAIN (type);
tree maxval = TYPE_MAX_VALUE (fields);
if (TREE_CODE (maxval) != INTEGER_CST)
{
if (TREE_CODE (maxval) == MINUS_EXPR
&& TREE_OPERAND (maxval, 1) == integer_one_node)
{
mode_string = decode_constant_selective (TREE_OPERAND (maxval, 0), all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
}
else
{
mode_string = decode_constant_selective (maxval, all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
}
}
return result;
}
if (TREE_CODE (TYPE_DOMAIN (type)) == INTEGER_TYPE
&& TREE_TYPE (TYPE_DOMAIN (type)) == ridpointers[(int) RID_RANGE])
{
mode_string = decode_constant_selective (TYPE_MIN_VALUE (TYPE_DOMAIN (type)), all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
mode_string = decode_constant_selective (TYPE_MAX_VALUE (TYPE_DOMAIN (type)), all_decls);
if (mode_string->len)
{
MAYBE_NEWLINE (result);
APPEND (result, mode_string->str);
}
FREE (mode_string);
}
else
{
mode_string = decode_mode_selective (TYPE_DOMAIN (type), all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
}
mode_string = get_type_selective (TREE_TYPE (type), all_decls);
if (mode_string->len)
{
MAYBE_NEWLINE (result);
APPEND (result, mode_string->str);
}
FREE (mode_string);
return result;
}
static MYSTRING *
get_tag_value (val)
tree val;
{
MYSTRING *result;
if (TREE_CODE (val) == CONST_DECL && DECL_NAME (val))
{
result = newstring (IDENTIFIER_POINTER (DECL_NAME (val)));
}
else if (TREE_CODE (val) == CONST_DECL)
{
/* it's a synonym -- get the value */
result = decode_constant (DECL_INITIAL (val));
}
else
{
result = decode_constant (val);
}
return (result);
}
static MYSTRING *
get_tag_value_selective (val, all_decls)
tree val;
tree all_decls;
{
MYSTRING *result;
if (TREE_CODE (val) == CONST_DECL && DECL_NAME (val))
result = newstring ("");
else if (TREE_CODE (val) == CONST_DECL)
{
/* it's a synonym -- get the value */
result = decode_constant_selective (DECL_INITIAL (val), all_decls);
}
else
{
result = decode_constant_selective (val, all_decls);
}
return (result);
}
static MYSTRING *
print_enumeral (type)
tree type;
{
MYSTRING *result = newstring ("");
tree fields;
#if 0
if (TYPE_LANG_SPECIFIC (type) == NULL)
#endif
{
APPEND (result, "SET (");
for (fields = TYPE_VALUES (type);
fields != NULL_TREE;
fields = TREE_CHAIN (fields))
{
if (TREE_PURPOSE (fields) == NULL_TREE)
APPEND (result, "*");
else
{
tree decl = TREE_VALUE (fields);
APPEND (result, IDENTIFIER_POINTER (TREE_PURPOSE (fields)));
if (TREE_CODE (decl) == CONST_DECL && DECL_INITIAL (decl))
{
MYSTRING *val_string = decode_constant (DECL_INITIAL (decl));
APPEND (result, " = ");
APPEND (result, val_string->str);
FREE (val_string);
}
}
if (TREE_CHAIN (fields) != NULL_TREE)
APPEND (result, ",\n ");
}
APPEND (result, ")");
}
return result;
}
static MYSTRING *
print_enumeral_selective (type, all_decls)
tree type;
tree all_decls;
{
MYSTRING *result = newstring ("");
tree fields;
for (fields = TYPE_VALUES (type);
fields != NULL_TREE;
fields = TREE_CHAIN (fields))
{
if (TREE_PURPOSE (fields) != NULL_TREE)
{
tree decl = TREE_VALUE (fields);
if (TREE_CODE (decl) == CONST_DECL && DECL_INITIAL (decl))
{
MYSTRING *val_string = decode_constant_selective (DECL_INITIAL (decl), all_decls);
if (val_string->len)
APPEND (result, val_string->str);
FREE (val_string);
}
}
}
return result;
}
static MYSTRING *
print_integer_type (type)
tree type;
{
MYSTRING *result = newstring ("");
MYSTRING *mode_string;
Makefile.in (ch-version.c): Constify a char*. * Makefile.in (ch-version.c): Constify a char*. * actions.c (id_cmp, warn_unhandled, adjust_return_value, update_else_range_for_int_const, update_else_range_for_range, update_else_range_for_range_expr, update_else_range_for_type, compute_else_range, check_case_value, chill_handle_case_label_range, chill_handle_multi_case_label_range, chill_handle_multi_case_else_label, chill_handle_multi_case_label, chill_handle_multi_case_label_list print_missing_cases): Add static prototypes. (build_exception_variant): Cast the function argument of qsort. (build_rts_call, warn_unhandled, chill_convert_for_assignment, adjust_return_value, chill_expand_result, build_multi_case_selector_expression, print_missing_cases): Constify a char*. (print_missing_cases): Introduce an intermediary non-const ptr. Add brackets and indent. * ch-tree.h (maybe_building_objc_message_expr, maybe_objc_comptypes, comptypes_record_hook): Remove declarations. (push_handler, pop_handler): Add prototypes. (builtin_function, valid_array_index_p, build_chill_exception_decl, build_rts_call, chill_convert_for_assignment, display_int_cst, build_chill_addr_expr, check_have_mode, get_identifier3, build_chill_string, register_seize_path, get_unique_identifier, add_taskstuff_to_list, gnuchill_version): Constify a char*. (finish_chill_function): Add void prototype argument. * convert.c (convert_to_reference, convert_to_boolean, convert_to_char, base_type_size_in_bytes, remove_tree_element, check_ps_range, digest_powerset_tuple, digest_structure_tuple, digest_array_tuple, convert1): Add static prototypes. (base_type_size_in_bytes): Hide unused function. (display_int_cst, digest_array_tuple): Constify a char*. * decl.c (set_nesting_level, make_chill_variants, fix_identifier, proclaim_decl, maybe_acons, push_scope_decls, pop_scope_decls, build_implied_names, bind_sub_modules, layout_array_type, do_based_decl, handle_one_level, label_value_cmp, find_implied_types): Add static prototypes. (boolean_code_name, chill_tree_code_type, chill_tree_code_name): Constify a char*. (layout_chill_variants): Cast the function argument of qsort. (start_chill_function, fix_identifier, init_decl_processing): Constify a char*. (init_decl_processing): Prefer memcpy over bcopy to avoid casts. Use xcalloc instead of xmalloc/bzero. (builtin_function, build_chill_exception_decl, finish_outer_function): Constify a char*. * except.c (start_handler_array, finish_handler_array): Add static prototypes. * expr.c (chill_expand_expr, chill_expand_case_expr, check_arglist_length, internal_build_compound_expr, is_really_instance, invalid_operand, invalid_right_operand, build_chill_abstime, build_allocate_memory_call, build_allocate_global_memory_call, build_return_memory, build_chill_duration, build_chill_floatcall, build_allocate_getstack, build_chill_allocate, build_chill_getstack, build_chill_terminate, build_chill_inttime, build_chill_lower_or_upper, build_max_min, build_chill_pred_or_succ, expand_packed_set, fold_set_expr, build_compare_set_expr, scalar_to_string, build_concat_expr, build_compare_string_expr, compare_records, string_char_rep, build_boring_bitstring): Add static prototypes. (check_have_mode, chill_expand_expr, build_chill_floatcall, build_allocate_getstack, build_max_min, build_chill_function_call, expand_packed_set, build_compare_set_expr, build_chill_addr_expr, string_char_rep): Constify a char*. * gperf (hash, in_word_set): Add prototypes. * grant.c (newstring, strfree, append, prepend, grant_use_seizefile, decode_layout, grant_array_type, grant_array_type_selective, get_tag_value, get_tag_value_selective, print_enumeral, print_enumeral_selective, print_integer_type, find_enum_parent, print_integer_selective, print_struct, print_struct_selective, print_proc_exceptions, print_proc_tail, print_proc_tail_selective, find_in_decls, in_ridpointers, grant_seized_identifier, globalize_decl, grant_one_decl_selective, compare_memory_file, search_in_list, really_grant_this): Add static prototypes. (newstring, append, prepend, grant_use_seizefile, print_integer_type, decode_constant, grant_one_decl_selective, header_template): Constify a char *. * inout.c (add_enum_to_list, build_chill_io_list_type, build_io_types, declare_predefined_file, build_access_part, textlocation_mode, check_assoc, assoc_call, check_transfer, connect_process_optionals, connect_text, connect_access, check_access, check_text, get_final_type_and_range, process_io_list, check_format_string, get_max_size, check_exprlist): Add static prototypes. (declare_predefined_file, check_assoc, assoc_call, check_transfer, check_access, check_text, process_io_list): Constify a char*. * lang.c (deep_const_expr, chill_print_error_function): Add static prototypes. * lex.c (close_input_file, maybe_number, string_or_char): Constify a char*. (ch_lex_init, skip_directive, same_file, getlc, yywrap, yy_refill): Add static prototypes. (build_chill_string, same_file, register_seize_path): Constify a char*. * lex.h (finish_chill_seizes): Remove unused prototypes. * loop.c (build_temporary_variable, maybe_make_for_temp, get_unique_identifier): Constify a char*. * parse.c (ch_parse_init, check_end_label, end_function, build_prefix_clause, PEEK_TOKEN, peek_token_, pushback_token, forward_token_, require, check_token, expect, define__PROCNAME__): Add static prototypes. (build_prefix_clause, expect): Constify a char*. (parse_expression, parse_primval, parse_untyped_expr, parse_opt_untyped_expr, parse_opt_actions): Add void prototype argument. (parse_opt_name_string, parse_simple_name_string, parse_name_string, parse_defining_occurrence, parse_name, parse_optlabel, parse_opt_end_label_semi_colon, parse_modulion, parse_spec_module, parse_semi_colon, parse_defining_occurrence_list, parse_mode_definition, parse_mode_definition_statement, parse_synonym_definition, parse_synonym_definition_statement, parse_on_exception_list, parse_on_alternatives, parse_loc_declaration, parse_declaration_statement, parse_optforbid, parse_postfix, parse_postfix_list, parse_rename_clauses, parse_opt_prefix_clause, parse_grant_statement, parse_seize_statement, parse_param_name_list, parse_param_attr, parse_formpar, parse_formparlist, parse_opt_result_spec, parse_opt_except, parse_opt_recursive, parse_procedureattr, parse_proc_body, parse_procedure_definition, parse_processpar, parse_processparlist, parse_process_definition, parse_signal_definition, parse_signal_definition_statement, parse_then_clause, parse_opt_else_clause, parse_expr_list, parse_range_list_clause, pushback_paren_expr, parse_case_label, parse_case_label_list, parse_case_label_specification, parse_single_dimension_case_action, parse_multi_dimension_case_action, parse_case_action, parse_asm_operands, parse_asm_clobbers, ch_expand_asm_operands, parse_asm_action, parse_begin_end_block, parse_if_action, parse_iteration, parse_delay_case_event_list, parse_delay_case_action, parse_do_action, parse_receive_spec, parse_receive_case_action, parse_send_action, parse_start_action, parse_call, parse_tuple_fieldname_list, parse_tuple_element, parse_opt_element_list, parse_tuple, parse_operand6, parse_operand5, parse_operand4, parse_operand3, parse_operand2, parse_operand1, parse_operand0, parse_case_expression, parse_then_alternative, parse_else_alternative, parse_if_expression, parse_index_mode, parse_set_mode, parse_pos, parse_step, parse_opt_layout, parse_field_name_list, parse_fixed_field, parse_variant_field_list, parse_variant_alternative, parse_field, parse_structure_mode, parse_opt_queue_size, parse_procedure_mode, parse_program, parse_pass_1_2): Add static prototypes. (parse_process_definition): Remove extra argument in function call. (parse_range_list_clause): Likewise. * satisfy.c (satisfy, cycle_error_print, safe_satisfy_decl, satisfy_list, satisfy_list_values): Add static prototype. (safe_satisfy_decl): Cast DECL_TASKING_CODE_DECL() to (tree). * tasking.c (make_process_struct): Remove unused prototype. (validate_process_parameters, get_struct_variable_name, decl_tasking_code_variable, get_struct_debug_type_name, get_process_wrapper_name, build_tasking_enum, build_tasking_message_type, build_receive_signal_case_label, build_receive_buffer_case_label, build_receive_buffer_case_end, build_receive_signal_case_end): Add static prototypes. (struct_name, struct_debug_name, data_name, wrapper_name, get_struct_type_name, get_struct_debug_type_name, get_tasking_code_name, get_struct_variable_name, get_process_wrapper_name): Constify a char*. (validate_process_parameters, get_struct_variable_name, decl_tasking_code_variable): Hide unused functions. (build_start_process, add_taskstuff_to_list, build_queue_length): Constify a char*. * tree.c (make_powerset_type): Add static prototype. (get_identifier3, build_alias_decl, decl_check_rename): Constify a char*. * typeck.c (extract_constant_from_buffer, expand_constant_to_buffer, build_empty_string, make_chill_pointer_type, make_chill_range_type, apply_chill_array_layout, field_decl_cmp, make_chill_struct_type, apply_chill_field_layout): Add static prototype. (valid_array_index_p, extract_constant_from_buffer, chill_expand_tuple): Constify a char*. (layout_chill_struct_type): Cast the function argument of qsort. From-SVN: r28965
1999-08-29 15:34:10 +02:00
const char *name_ptr;
tree base_type;
if (TREE_TYPE (type))
{
mode_string = decode_mode (TREE_TYPE (type));
APPEND (result, mode_string->str);
FREE (mode_string);
APPEND (result, "(");
mode_string = decode_constant (TYPE_MIN_VALUE (type));
APPEND (result, mode_string->str);
FREE (mode_string);
if (TREE_TYPE (type) != ridpointers[(int) RID_BIN])
{
APPEND (result, ":");
mode_string = decode_constant (TYPE_MAX_VALUE (type));
APPEND (result, mode_string->str);
FREE (mode_string);
}
APPEND (result, ")");
return result;
}
/* We test TYPE_MAIN_VARIANT because pushdecl often builds
a copy of a built-in type node, which is logically id-
entical but has a different address, and the same
TYPE_MAIN_VARIANT. */
/* FIXME this should not be needed! */
base_type = TREE_TYPE (type) ? TREE_TYPE (type) : type;
if (TREE_UNSIGNED (base_type))
{
if (base_type == chill_unsigned_type_node
|| TYPE_MAIN_VARIANT(base_type) ==
TYPE_MAIN_VARIANT (chill_unsigned_type_node))
name_ptr = "UINT";
else if (base_type == long_integer_type_node
|| TYPE_MAIN_VARIANT(base_type) ==
TYPE_MAIN_VARIANT (long_unsigned_type_node))
name_ptr = "ULONG";
else if (type == unsigned_char_type_node
|| TYPE_MAIN_VARIANT(base_type) ==
TYPE_MAIN_VARIANT (unsigned_char_type_node))
name_ptr = "UBYTE";
else if (type == duration_timing_type_node
|| TYPE_MAIN_VARIANT (base_type) ==
TYPE_MAIN_VARIANT (duration_timing_type_node))
name_ptr = "DURATION";
else if (type == abs_timing_type_node
|| TYPE_MAIN_VARIANT (base_type) ==
TYPE_MAIN_VARIANT (abs_timing_type_node))
name_ptr = "TIME";
else
name_ptr = "UINT";
}
else
{
if (base_type == chill_integer_type_node
|| TYPE_MAIN_VARIANT (base_type) ==
TYPE_MAIN_VARIANT (chill_integer_type_node))
name_ptr = "INT";
else if (base_type == long_integer_type_node
|| TYPE_MAIN_VARIANT (base_type) ==
TYPE_MAIN_VARIANT (long_integer_type_node))
name_ptr = "LONG";
else if (type == signed_char_type_node
|| TYPE_MAIN_VARIANT (base_type) ==
TYPE_MAIN_VARIANT (signed_char_type_node))
name_ptr = "BYTE";
else
name_ptr = "INT";
}
APPEND (result, name_ptr);
/* see if we have a range */
if (TREE_TYPE (type) != NULL)
{
mode_string = decode_constant (TYPE_MIN_VALUE (type));
APPEND (result, mode_string->str);
FREE (mode_string);
APPEND (result, ":");
mode_string = decode_constant (TYPE_MAX_VALUE (type));
APPEND (result, mode_string->str);
FREE (mode_string);
}
return result;
}
static tree
find_enum_parent (enumname, all_decls)
tree enumname;
tree all_decls;
{
tree wrk;
for (wrk = all_decls; wrk != NULL_TREE; wrk = TREE_CHAIN (wrk))
{
if (TREE_TYPE (wrk) != NULL_TREE && TREE_CODE (wrk) != CONST_DECL &&
TREE_CODE (TREE_TYPE (wrk)) == ENUMERAL_TYPE)
{
tree list;
for (list = TYPE_VALUES (TREE_TYPE (wrk)); list != NULL_TREE; list = TREE_CHAIN (list))
{
if (DECL_NAME (TREE_VALUE (list)) == enumname)
return wrk;
}
}
}
return NULL_TREE;
}
static MYSTRING *
print_integer_selective (type, all_decls)
tree type;
tree all_decls;
{
MYSTRING *result = newstring ("");
MYSTRING *mode_string;
if (TREE_TYPE (type))
{
mode_string = decode_mode_selective (TREE_TYPE (type), all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
if (TREE_TYPE (type) == ridpointers[(int)RID_RANGE] &&
TREE_CODE (TYPE_MIN_VALUE (type)) == IDENTIFIER_NODE &&
TREE_CODE (TYPE_MAX_VALUE (type)) == IDENTIFIER_NODE)
{
/* we have a range of a set. Find parant mode and write it
to SPEC MODULE. This will loose if the parent mode was SEIZED from
another file.*/
tree minparent = find_enum_parent (TYPE_MIN_VALUE (type), all_decls);
tree maxparent = find_enum_parent (TYPE_MAX_VALUE (type), all_decls);
if (minparent != NULL_TREE)
{
if (! CH_ALREADY_GRANTED (minparent))
{
mode_string = decode_decl (minparent);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
CH_ALREADY_GRANTED (minparent) = 1;
}
}
if (minparent != maxparent && maxparent != NULL_TREE)
{
if (!CH_ALREADY_GRANTED (maxparent))
{
mode_string = decode_decl (maxparent);
if (mode_string->len)
{
MAYBE_NEWLINE (result);
APPEND (result, mode_string->str);
}
FREE (mode_string);
CH_ALREADY_GRANTED (maxparent) = 1;
}
}
}
else
{
mode_string = decode_constant_selective (TYPE_MIN_VALUE (type), all_decls);
if (mode_string->len)
{
MAYBE_NEWLINE (result);
APPEND (result, mode_string->str);
}
FREE (mode_string);
mode_string = decode_constant_selective (TYPE_MAX_VALUE (type), all_decls);
if (mode_string->len)
{
MAYBE_NEWLINE (result);
APPEND (result, mode_string->str);
}
FREE (mode_string);
}
return result;
}
/* see if we have a range */
if (TREE_TYPE (type) != NULL)
{
mode_string = decode_constant_selective (TYPE_MIN_VALUE (type), all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
mode_string = decode_constant_selective (TYPE_MAX_VALUE (type), all_decls);
if (mode_string->len)
{
MAYBE_NEWLINE (result);
APPEND (result, mode_string->str);
}
FREE (mode_string);
}
return result;
}
static MYSTRING *
print_struct (type)
tree type;
{
MYSTRING *result = newstring ("");
MYSTRING *mode_string;
tree fields;
if (chill_varying_type_p (type))
{
mode_string = grant_array_type (type);
APPEND (result, mode_string->str);
FREE (mode_string);
}
else
{
fields = TYPE_FIELDS (type);
APPEND (result, "STRUCT (");
while (fields != NULL_TREE)
{
if (TREE_CODE (TREE_TYPE (fields)) == UNION_TYPE)
{
tree variants;
/* Format a tagged variant record type. */
APPEND (result, " CASE ");
if (TYPE_TAGFIELDS (TREE_TYPE (fields)) != NULL_TREE)
{
tree tag_list = TYPE_TAGFIELDS (TREE_TYPE (fields));
for (;;)
{
tree tag_name = DECL_NAME (TREE_VALUE (tag_list));
APPEND (result, IDENTIFIER_POINTER (tag_name));
tag_list = TREE_CHAIN (tag_list);
if (tag_list == NULL_TREE)
break;
APPEND (result, ", ");
}
}
APPEND (result, " OF\n");
variants = TYPE_FIELDS (TREE_TYPE (fields));
/* Each variant is a FIELD_DECL whose type is an anonymous
struct within the anonymous union. */
while (variants != NULL_TREE)
{
tree tag_list = TYPE_TAG_VALUES (TREE_TYPE (variants));
tree struct_elts = TYPE_FIELDS (TREE_TYPE (variants));
while (tag_list != NULL_TREE)
{
tree tag_values = TREE_VALUE (tag_list);
APPEND (result, " (");
while (tag_values != NULL_TREE)
{
mode_string = get_tag_value (TREE_VALUE (tag_values));
APPEND (result, mode_string->str);
FREE (mode_string);
if (TREE_CHAIN (tag_values) != NULL_TREE)
{
APPEND (result, ",\n ");
tag_values = TREE_CHAIN (tag_values);
}
else break;
}
APPEND (result, ")");
tag_list = TREE_CHAIN (tag_list);
if (tag_list)
APPEND (result, ",");
else
break;
}
APPEND (result, " : ");
while (struct_elts != NULL_TREE)
{
mode_string = decode_decl (struct_elts);
APPEND (result, mode_string->str);
FREE (mode_string);
if (TREE_CHAIN (struct_elts) != NULL_TREE)
APPEND (result, ",\n ");
struct_elts = TREE_CHAIN (struct_elts);
}
variants = TREE_CHAIN (variants);
if (variants != NULL_TREE
&& TREE_CHAIN (variants) == NULL_TREE
&& DECL_NAME (variants) == ELSE_VARIANT_NAME)
{
tree else_elts = TYPE_FIELDS (TREE_TYPE (variants));
APPEND (result, "\n ELSE ");
while (else_elts != NULL_TREE)
{
mode_string = decode_decl (else_elts);
APPEND (result, mode_string->str);
FREE (mode_string);
if (TREE_CHAIN (else_elts) != NULL_TREE)
APPEND (result, ",\n ");
else_elts = TREE_CHAIN (else_elts);
}
break;
}
if (variants != NULL_TREE)
APPEND (result, ",\n");
}
APPEND (result, "\n ESAC");
}
else
{
mode_string = decode_decl (fields);
APPEND (result, mode_string->str);
FREE (mode_string);
}
fields = TREE_CHAIN (fields);
if (fields != NULL_TREE)
APPEND (result, ",\n ");
}
APPEND (result, ")");
}
return result;
}
static MYSTRING *
print_struct_selective (type, all_decls)
tree type;
tree all_decls;
{
MYSTRING *result = newstring ("");
MYSTRING *mode_string;
tree fields;
if (chill_varying_type_p (type))
{
mode_string = grant_array_type_selective (type, all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
}
else
{
fields = TYPE_FIELDS (type);
while (fields != NULL_TREE)
{
if (TREE_CODE (TREE_TYPE (fields)) == UNION_TYPE)
{
tree variants;
/* Format a tagged variant record type. */
variants = TYPE_FIELDS (TREE_TYPE (fields));
/* Each variant is a FIELD_DECL whose type is an anonymous
struct within the anonymous union. */
while (variants != NULL_TREE)
{
tree tag_list = TYPE_TAG_VALUES (TREE_TYPE (variants));
tree struct_elts = TYPE_FIELDS (TREE_TYPE (variants));
while (tag_list != NULL_TREE)
{
tree tag_values = TREE_VALUE (tag_list);
while (tag_values != NULL_TREE)
{
mode_string = get_tag_value_selective (TREE_VALUE (tag_values),
all_decls);
if (mode_string->len)
{
MAYBE_NEWLINE (result);
APPEND (result, mode_string->str);
}
FREE (mode_string);
if (TREE_CHAIN (tag_values) != NULL_TREE)
tag_values = TREE_CHAIN (tag_values);
else break;
}
tag_list = TREE_CHAIN (tag_list);
if (!tag_list)
break;
}
while (struct_elts != NULL_TREE)
{
mode_string = decode_decl_selective (struct_elts, all_decls);
if (mode_string->len)
{
MAYBE_NEWLINE (result);
APPEND (result, mode_string->str);
}
FREE (mode_string);
struct_elts = TREE_CHAIN (struct_elts);
}
variants = TREE_CHAIN (variants);
if (variants != NULL_TREE
&& TREE_CHAIN (variants) == NULL_TREE
&& DECL_NAME (variants) == ELSE_VARIANT_NAME)
{
tree else_elts = TYPE_FIELDS (TREE_TYPE (variants));
while (else_elts != NULL_TREE)
{
mode_string = decode_decl_selective (else_elts, all_decls);
if (mode_string->len)
{
MAYBE_NEWLINE (result);
APPEND (result, mode_string->str);
}
FREE (mode_string);
else_elts = TREE_CHAIN (else_elts);
}
break;
}
}
}
else
{
mode_string = decode_decl_selective (fields, all_decls);
APPEND (result, mode_string->str);
FREE (mode_string);
}
fields = TREE_CHAIN (fields);
}
}
return result;
}
static MYSTRING *
print_proc_exceptions (ex)
tree ex;
{
MYSTRING *result = newstring ("");
if (ex != NULL_TREE)
{
APPEND (result, "\n EXCEPTIONS (");
for ( ; ex != NULL_TREE; ex = TREE_CHAIN (ex))
{
APPEND (result, IDENTIFIER_POINTER (TREE_VALUE (ex)));
if (TREE_CHAIN (ex) != NULL_TREE)
APPEND (result, ",\n ");
}
APPEND (result, ")");
}
return result;
}
static MYSTRING *
print_proc_tail (type, args, print_argnames)
tree type;
tree args;
int print_argnames;
{
MYSTRING *result = newstring ("");
MYSTRING *mode_string;
int count = 0;
int stopat = list_length (args) - 3;
/* do the argument modes */
for ( ; args != NULL_TREE;
args = TREE_CHAIN (args), count++)
{
char buf[20];
tree argmode = TREE_VALUE (args);
tree attribute = TREE_PURPOSE (args);
if (argmode == void_type_node)
continue;
/* if we have exceptions don't print last 2 arguments */
if (TYPE_RAISES_EXCEPTIONS (type) && count == stopat)
break;
if (count)
APPEND (result, ",\n ");
if (print_argnames)
{
sprintf(buf, "arg%d ", count);
APPEND (result, buf);
}
if (attribute == ridpointers[(int) RID_LOC])
argmode = TREE_TYPE (argmode);
mode_string = get_type (argmode);
APPEND (result, mode_string->str);
FREE (mode_string);
if (attribute != NULL_TREE)
{
sprintf (buf, " %s", IDENTIFIER_POINTER (attribute));
APPEND (result, buf);
}
}
APPEND (result, ")");
/* return type */
{
tree retn_type = TREE_TYPE (type);
if (retn_type != NULL_TREE
&& TREE_CODE (retn_type) != VOID_TYPE)
{
mode_string = get_type (retn_type);
APPEND (result, "\n RETURNS (");
APPEND (result, mode_string->str);
FREE (mode_string);
if (TREE_CODE (retn_type) == REFERENCE_TYPE)
APPEND (result, " LOC");
APPEND (result, ")");
}
}
mode_string = print_proc_exceptions (TYPE_RAISES_EXCEPTIONS (type));
APPEND (result, mode_string->str);
FREE (mode_string);
return result;
}
static MYSTRING *
print_proc_tail_selective (type, args, all_decls)
tree type;
tree args;
tree all_decls;
{
MYSTRING *result = newstring ("");
MYSTRING *mode_string;
int count = 0;
int stopat = list_length (args) - 3;
/* do the argument modes */
for ( ; args != NULL_TREE;
args = TREE_CHAIN (args), count++)
{
tree argmode = TREE_VALUE (args);
tree attribute = TREE_PURPOSE (args);
if (argmode == void_type_node)
continue;
/* if we have exceptions don't process last 2 arguments */
if (TYPE_RAISES_EXCEPTIONS (type) && count == stopat)
break;
if (attribute == ridpointers[(int) RID_LOC])
argmode = TREE_TYPE (argmode);
mode_string = get_type_selective (argmode, all_decls);
if (mode_string->len)
{
MAYBE_NEWLINE (result);
APPEND (result, mode_string->str);
}
FREE (mode_string);
}
/* return type */
{
tree retn_type = TREE_TYPE (type);
if (retn_type != NULL_TREE
&& TREE_CODE (retn_type) != VOID_TYPE)
{
mode_string = get_type_selective (retn_type, all_decls);
if (mode_string->len)
{
MAYBE_NEWLINE (result);
APPEND (result, mode_string->str);
}
FREE (mode_string);
}
}
return result;
}
/* output a mode (or type). */
static MYSTRING *
decode_mode (type)
tree type;
{
MYSTRING *result = newstring ("");
MYSTRING *mode_string;
switch ((enum chill_tree_code)TREE_CODE (type))
{
case TYPE_DECL:
if (DECL_NAME (type))
{
APPEND (result, IDENTIFIER_POINTER (DECL_NAME (type)));
return result;
}
type = TREE_TYPE (type);
break;
case IDENTIFIER_NODE:
APPEND (result, IDENTIFIER_POINTER (type));
return result;
case LANG_TYPE:
/* LANG_TYPE are only used until satisfy is done,
as place-holders for 'READ T', NEWMODE/SYNMODE modes,
parameterised modes, and old-fashioned CHAR(N). */
if (TYPE_READONLY (type))
APPEND (result, "READ ");
mode_string = get_type (TREE_TYPE (type));
APPEND (result, mode_string->str);
if (TYPE_DOMAIN (type) != NULL_TREE)
{
/* Parameterized mode,
or old-fashioned CHAR(N) string declaration.. */
APPEND (result, "(");
mode_string = decode_constant (TYPE_DOMAIN (type));
APPEND (result, mode_string->str);
APPEND (result, ")");
}
FREE (mode_string);
break;
case ARRAY_TYPE:
mode_string = grant_array_type (type);
APPEND (result, mode_string->str);
FREE (mode_string);
break;
case BOOLEAN_TYPE:
APPEND (result, "BOOL");
break;
case CHAR_TYPE:
APPEND (result, "CHAR");
break;
case ENUMERAL_TYPE:
mode_string = print_enumeral (type);
APPEND (result, mode_string->str);
FREE (mode_string);
break;
case FUNCTION_TYPE:
{
tree args = TYPE_ARG_TYPES (type);
APPEND (result, "PROC (");
mode_string = print_proc_tail (type, args, 0);
APPEND (result, mode_string->str);
FREE (mode_string);
}
break;
case INTEGER_TYPE:
mode_string = print_integer_type (type);
APPEND (result, mode_string->str);
FREE (mode_string);
break;
case RECORD_TYPE:
if (CH_IS_INSTANCE_MODE (type))
{
APPEND (result, "INSTANCE");
return result;
}
else if (CH_IS_BUFFER_MODE (type) || CH_IS_EVENT_MODE (type))
{ tree bufsize = max_queue_size (type);
APPEND (result, CH_IS_BUFFER_MODE (type) ? "BUFFER " : "EVENT ");
if (bufsize != NULL_TREE)
{
APPEND (result, "(");
mode_string = decode_constant (bufsize);
APPEND (result, mode_string->str);
APPEND (result, ") ");
FREE (mode_string);
}
if (CH_IS_BUFFER_MODE (type))
{
mode_string = decode_mode (buffer_element_mode (type));
APPEND (result, mode_string->str);
FREE (mode_string);
}
break;
}
else if (CH_IS_ACCESS_MODE (type))
{
tree indexmode, recordmode, dynamic;
APPEND (result, "ACCESS");
recordmode = access_recordmode (type);
indexmode = access_indexmode (type);
dynamic = access_dynamic (type);
if (indexmode != void_type_node)
{
mode_string = decode_mode (indexmode);
APPEND (result, " (");
APPEND (result, mode_string->str);
APPEND (result, ")");
FREE (mode_string);
}
if (recordmode != void_type_node)
{
mode_string = decode_mode (recordmode);
APPEND (result, " ");
APPEND (result, mode_string->str);
FREE (mode_string);
}
if (dynamic != integer_zero_node)
APPEND (result, " DYNAMIC");
break;
}
else if (CH_IS_TEXT_MODE (type))
{
tree indexmode, dynamic, length;
APPEND (result, "TEXT (");
length = text_length (type);
indexmode = text_indexmode (type);
dynamic = text_dynamic (type);
mode_string = decode_constant (length);
APPEND (result, mode_string->str);
FREE (mode_string);
APPEND (result, ")");
if (indexmode != void_type_node)
{
APPEND (result, " ");
mode_string = decode_mode (indexmode);
APPEND (result, mode_string->str);
FREE (mode_string);
}
if (dynamic != integer_zero_node)
APPEND (result, " DYNAMIC");
return result;
}
mode_string = print_struct (type);
APPEND (result, mode_string->str);
FREE (mode_string);
break;
case POINTER_TYPE:
if (TREE_CODE (TREE_TYPE (type)) == VOID_TYPE)
APPEND (result, "PTR");
else
{
if (TREE_CODE (TREE_TYPE (type)) == FUNCTION_TYPE)
{
mode_string = get_type (TREE_TYPE (type));
APPEND (result, mode_string->str);
FREE (mode_string);
}
else
{
APPEND (result, "REF ");
mode_string = get_type (TREE_TYPE (type));
APPEND (result, mode_string->str);
FREE (mode_string);
}
}
break;
case REAL_TYPE:
if (TREE_INT_CST_LOW (TYPE_SIZE (type)) == 32)
APPEND (result, "REAL");
else
APPEND (result, "LONG_REAL");
break;
case SET_TYPE:
if (CH_BOOLS_TYPE_P (type))
mode_string = grant_array_type (type);
else
{
APPEND (result, "POWERSET ");
mode_string = get_type (TYPE_DOMAIN (type));
}
APPEND (result, mode_string->str);
FREE (mode_string);
break;
case REFERENCE_TYPE:
mode_string = get_type (TREE_TYPE (type));
APPEND (result, mode_string->str);
FREE (mode_string);
break;
default:
APPEND (result, "/* ---- not implemented ---- */");
break;
}
return (result);
}
static tree
find_in_decls (id, all_decls)
tree id;
tree all_decls;
{
tree wrk;
for (wrk = all_decls; wrk != NULL_TREE; wrk = TREE_CHAIN (wrk))
{
if (DECL_NAME (wrk) == id || DECL_POSTFIX (wrk) == id)
return wrk;
}
return NULL_TREE;
}
static int
in_ridpointers (id)
tree id;
{
int i;
for (i = RID_UNUSED; i < RID_MAX; i++)
{
if (id == ridpointers[i])
return 1;
}
return 0;
}
static void
grant_seized_identifier (decl)
tree decl;
{
seizefile_list *wrk = selective_seizes;
MYSTRING *mode_string;
CH_ALREADY_GRANTED (decl) = 1;
/* comes from a SPEC MODULE in the module */
if (DECL_SEIZEFILE (decl) == NULL_TREE)
return;
/* search file already in process */
while (wrk != 0)
{
if (wrk->filename == DECL_SEIZEFILE (decl))
break;
wrk = wrk->next;
}
if (!wrk)
{
wrk = (seizefile_list *)xmalloc (sizeof (seizefile_list));
wrk->next = selective_seizes;
selective_seizes = wrk;
wrk->filename = DECL_SEIZEFILE (decl);
wrk->seizes = newstring ("<> USE_SEIZE_FILE \"");
APPEND (wrk->seizes, IDENTIFIER_POINTER (DECL_SEIZEFILE (decl)));
APPEND (wrk->seizes, "\" <>\n");
}
APPEND (wrk->seizes, "SEIZE ");
mode_string = decode_prefix_rename (decl);
APPEND (wrk->seizes, mode_string->str);
FREE (mode_string);
APPEND (wrk->seizes, ";\n");
}
static MYSTRING *
decode_mode_selective (type, all_decls)
tree type;
tree all_decls;
{
MYSTRING *result = newstring ("");
MYSTRING *mode_string;
tree decl;
switch ((enum chill_tree_code)TREE_CODE (type))
{
case TYPE_DECL:
/* FIXME: could this ever happen ?? */
if (DECL_NAME (type))
{
FREE (result);
result = decode_mode_selective (DECL_NAME (type), all_decls);
return result;
}
break;
case IDENTIFIER_NODE:
if (in_ridpointers (type))
/* it's a predefined, we must not search the whole list */
return result;
decl = find_in_decls (type, all_decls);
if (decl != NULL_TREE)
{
if (CH_ALREADY_GRANTED (decl))
/* already processed */
return result;
if (TREE_CODE (decl) == ALIAS_DECL && DECL_POSTFIX (decl) != NULL_TREE)
{
/* If CH_DECL_GRANTED, decl was granted into this scope, and
so wasn't in the source code. */
if (!CH_DECL_GRANTED (decl))
{
grant_seized_identifier (decl);
}
}
else
{
result = decode_decl (decl);
mode_string = decode_decl_selective (decl, all_decls);
if (mode_string->len)
{
PREPEND (result, mode_string->str);
}
FREE (mode_string);
}
}
return result;
case LANG_TYPE:
mode_string = get_type_selective (TREE_TYPE (type), all_decls);
APPEND (result, mode_string->str);
FREE (mode_string);
break;
case ARRAY_TYPE:
mode_string = grant_array_type_selective (type, all_decls);
APPEND (result, mode_string->str);
FREE (mode_string);
break;
case BOOLEAN_TYPE:
return result;
break;
case CHAR_TYPE:
return result;
break;
case ENUMERAL_TYPE:
mode_string = print_enumeral_selective (type, all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
break;
case FUNCTION_TYPE:
{
tree args = TYPE_ARG_TYPES (type);
mode_string = print_proc_tail_selective (type, args, all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
}
break;
case INTEGER_TYPE:
mode_string = print_integer_selective (type, all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
break;
case RECORD_TYPE:
if (CH_IS_INSTANCE_MODE (type))
{
return result;
}
else if (CH_IS_BUFFER_MODE (type) || CH_IS_EVENT_MODE (type))
{
tree bufsize = max_queue_size (type);
if (bufsize != NULL_TREE)
{
mode_string = decode_constant_selective (bufsize, all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
}
if (CH_IS_BUFFER_MODE (type))
{
mode_string = decode_mode_selective (buffer_element_mode (type), all_decls);
if (mode_string->len)
{
MAYBE_NEWLINE (result);
APPEND (result, mode_string->str);
}
FREE (mode_string);
}
break;
}
else if (CH_IS_ACCESS_MODE (type))
{
tree indexmode = access_indexmode (type);
tree recordmode = access_recordmode (type);
if (indexmode != void_type_node)
{
mode_string = decode_mode_selective (indexmode, all_decls);
if (mode_string->len)
{
if (result->len && result->str[result->len - 1] != '\n')
APPEND (result, ";\n");
APPEND (result, mode_string->str);
}
FREE (mode_string);
}
if (recordmode != void_type_node)
{
mode_string = decode_mode_selective (recordmode, all_decls);
if (mode_string->len)
{
if (result->len && result->str[result->len - 1] != '\n')
APPEND (result, ";\n");
APPEND (result, mode_string->str);
}
FREE (mode_string);
}
break;
}
else if (CH_IS_TEXT_MODE (type))
{
tree indexmode = text_indexmode (type);
tree length = text_length (type);
mode_string = decode_constant_selective (length, all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
if (indexmode != void_type_node)
{
mode_string = decode_mode_selective (indexmode, all_decls);
if (mode_string->len)
{
if (result->len && result->str[result->len - 1] != '\n')
APPEND (result, ";\n");
APPEND (result, mode_string->str);
}
FREE (mode_string);
}
break;
}
mode_string = print_struct_selective (type, all_decls);
if (mode_string->len)
{
MAYBE_NEWLINE (result);
APPEND (result, mode_string->str);
}
FREE (mode_string);
break;
case POINTER_TYPE:
if (TREE_CODE (TREE_TYPE (type)) == VOID_TYPE)
break;
else
{
if (TREE_CODE (TREE_TYPE (type)) == FUNCTION_TYPE)
{
mode_string = get_type_selective (TREE_TYPE (type), all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
}
else
{
mode_string = get_type_selective (TREE_TYPE (type), all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
}
}
break;
case REAL_TYPE:
return result;
break;
case SET_TYPE:
if (CH_BOOLS_TYPE_P (type))
mode_string = grant_array_type_selective (type, all_decls);
else
mode_string = get_type_selective (TYPE_DOMAIN (type), all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
break;
case REFERENCE_TYPE:
mode_string = get_type_selective (TREE_TYPE (type), all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
break;
default:
APPEND (result, "/* ---- not implemented ---- */");
break;
}
return (result);
}
static MYSTRING *
get_type (type)
tree type;
{
if (type == NULL_TREE || TREE_CODE (type) == ERROR_MARK)
return newstring ("");
return (decode_mode (type));
}
static MYSTRING *
get_type_selective (type, all_decls)
tree type;
tree all_decls;
{
if (type == NULL_TREE || TREE_CODE (type) == ERROR_MARK)
return newstring ("");
return (decode_mode_selective (type, all_decls));
}
#if 0
static int
is_forbidden (str, forbid)
tree str;
tree forbid;
{
if (forbid == NULL_TREE)
return (0);
if (TREE_CODE (forbid) == INTEGER_CST)
return (1);
while (forbid != NULL_TREE)
{
if (TREE_VALUE (forbid) == str)
return (1);
forbid = TREE_CHAIN (forbid);
}
/* nothing found */
return (0);
}
#endif
static MYSTRING *
decode_constant (init)
tree init;
{
MYSTRING *result = newstring ("");
MYSTRING *tmp_string;
tree type = TREE_TYPE (init);
tree val = init;
Makefile.in (ch-version.c): Constify a char*. * Makefile.in (ch-version.c): Constify a char*. * actions.c (id_cmp, warn_unhandled, adjust_return_value, update_else_range_for_int_const, update_else_range_for_range, update_else_range_for_range_expr, update_else_range_for_type, compute_else_range, check_case_value, chill_handle_case_label_range, chill_handle_multi_case_label_range, chill_handle_multi_case_else_label, chill_handle_multi_case_label, chill_handle_multi_case_label_list print_missing_cases): Add static prototypes. (build_exception_variant): Cast the function argument of qsort. (build_rts_call, warn_unhandled, chill_convert_for_assignment, adjust_return_value, chill_expand_result, build_multi_case_selector_expression, print_missing_cases): Constify a char*. (print_missing_cases): Introduce an intermediary non-const ptr. Add brackets and indent. * ch-tree.h (maybe_building_objc_message_expr, maybe_objc_comptypes, comptypes_record_hook): Remove declarations. (push_handler, pop_handler): Add prototypes. (builtin_function, valid_array_index_p, build_chill_exception_decl, build_rts_call, chill_convert_for_assignment, display_int_cst, build_chill_addr_expr, check_have_mode, get_identifier3, build_chill_string, register_seize_path, get_unique_identifier, add_taskstuff_to_list, gnuchill_version): Constify a char*. (finish_chill_function): Add void prototype argument. * convert.c (convert_to_reference, convert_to_boolean, convert_to_char, base_type_size_in_bytes, remove_tree_element, check_ps_range, digest_powerset_tuple, digest_structure_tuple, digest_array_tuple, convert1): Add static prototypes. (base_type_size_in_bytes): Hide unused function. (display_int_cst, digest_array_tuple): Constify a char*. * decl.c (set_nesting_level, make_chill_variants, fix_identifier, proclaim_decl, maybe_acons, push_scope_decls, pop_scope_decls, build_implied_names, bind_sub_modules, layout_array_type, do_based_decl, handle_one_level, label_value_cmp, find_implied_types): Add static prototypes. (boolean_code_name, chill_tree_code_type, chill_tree_code_name): Constify a char*. (layout_chill_variants): Cast the function argument of qsort. (start_chill_function, fix_identifier, init_decl_processing): Constify a char*. (init_decl_processing): Prefer memcpy over bcopy to avoid casts. Use xcalloc instead of xmalloc/bzero. (builtin_function, build_chill_exception_decl, finish_outer_function): Constify a char*. * except.c (start_handler_array, finish_handler_array): Add static prototypes. * expr.c (chill_expand_expr, chill_expand_case_expr, check_arglist_length, internal_build_compound_expr, is_really_instance, invalid_operand, invalid_right_operand, build_chill_abstime, build_allocate_memory_call, build_allocate_global_memory_call, build_return_memory, build_chill_duration, build_chill_floatcall, build_allocate_getstack, build_chill_allocate, build_chill_getstack, build_chill_terminate, build_chill_inttime, build_chill_lower_or_upper, build_max_min, build_chill_pred_or_succ, expand_packed_set, fold_set_expr, build_compare_set_expr, scalar_to_string, build_concat_expr, build_compare_string_expr, compare_records, string_char_rep, build_boring_bitstring): Add static prototypes. (check_have_mode, chill_expand_expr, build_chill_floatcall, build_allocate_getstack, build_max_min, build_chill_function_call, expand_packed_set, build_compare_set_expr, build_chill_addr_expr, string_char_rep): Constify a char*. * gperf (hash, in_word_set): Add prototypes. * grant.c (newstring, strfree, append, prepend, grant_use_seizefile, decode_layout, grant_array_type, grant_array_type_selective, get_tag_value, get_tag_value_selective, print_enumeral, print_enumeral_selective, print_integer_type, find_enum_parent, print_integer_selective, print_struct, print_struct_selective, print_proc_exceptions, print_proc_tail, print_proc_tail_selective, find_in_decls, in_ridpointers, grant_seized_identifier, globalize_decl, grant_one_decl_selective, compare_memory_file, search_in_list, really_grant_this): Add static prototypes. (newstring, append, prepend, grant_use_seizefile, print_integer_type, decode_constant, grant_one_decl_selective, header_template): Constify a char *. * inout.c (add_enum_to_list, build_chill_io_list_type, build_io_types, declare_predefined_file, build_access_part, textlocation_mode, check_assoc, assoc_call, check_transfer, connect_process_optionals, connect_text, connect_access, check_access, check_text, get_final_type_and_range, process_io_list, check_format_string, get_max_size, check_exprlist): Add static prototypes. (declare_predefined_file, check_assoc, assoc_call, check_transfer, check_access, check_text, process_io_list): Constify a char*. * lang.c (deep_const_expr, chill_print_error_function): Add static prototypes. * lex.c (close_input_file, maybe_number, string_or_char): Constify a char*. (ch_lex_init, skip_directive, same_file, getlc, yywrap, yy_refill): Add static prototypes. (build_chill_string, same_file, register_seize_path): Constify a char*. * lex.h (finish_chill_seizes): Remove unused prototypes. * loop.c (build_temporary_variable, maybe_make_for_temp, get_unique_identifier): Constify a char*. * parse.c (ch_parse_init, check_end_label, end_function, build_prefix_clause, PEEK_TOKEN, peek_token_, pushback_token, forward_token_, require, check_token, expect, define__PROCNAME__): Add static prototypes. (build_prefix_clause, expect): Constify a char*. (parse_expression, parse_primval, parse_untyped_expr, parse_opt_untyped_expr, parse_opt_actions): Add void prototype argument. (parse_opt_name_string, parse_simple_name_string, parse_name_string, parse_defining_occurrence, parse_name, parse_optlabel, parse_opt_end_label_semi_colon, parse_modulion, parse_spec_module, parse_semi_colon, parse_defining_occurrence_list, parse_mode_definition, parse_mode_definition_statement, parse_synonym_definition, parse_synonym_definition_statement, parse_on_exception_list, parse_on_alternatives, parse_loc_declaration, parse_declaration_statement, parse_optforbid, parse_postfix, parse_postfix_list, parse_rename_clauses, parse_opt_prefix_clause, parse_grant_statement, parse_seize_statement, parse_param_name_list, parse_param_attr, parse_formpar, parse_formparlist, parse_opt_result_spec, parse_opt_except, parse_opt_recursive, parse_procedureattr, parse_proc_body, parse_procedure_definition, parse_processpar, parse_processparlist, parse_process_definition, parse_signal_definition, parse_signal_definition_statement, parse_then_clause, parse_opt_else_clause, parse_expr_list, parse_range_list_clause, pushback_paren_expr, parse_case_label, parse_case_label_list, parse_case_label_specification, parse_single_dimension_case_action, parse_multi_dimension_case_action, parse_case_action, parse_asm_operands, parse_asm_clobbers, ch_expand_asm_operands, parse_asm_action, parse_begin_end_block, parse_if_action, parse_iteration, parse_delay_case_event_list, parse_delay_case_action, parse_do_action, parse_receive_spec, parse_receive_case_action, parse_send_action, parse_start_action, parse_call, parse_tuple_fieldname_list, parse_tuple_element, parse_opt_element_list, parse_tuple, parse_operand6, parse_operand5, parse_operand4, parse_operand3, parse_operand2, parse_operand1, parse_operand0, parse_case_expression, parse_then_alternative, parse_else_alternative, parse_if_expression, parse_index_mode, parse_set_mode, parse_pos, parse_step, parse_opt_layout, parse_field_name_list, parse_fixed_field, parse_variant_field_list, parse_variant_alternative, parse_field, parse_structure_mode, parse_opt_queue_size, parse_procedure_mode, parse_program, parse_pass_1_2): Add static prototypes. (parse_process_definition): Remove extra argument in function call. (parse_range_list_clause): Likewise. * satisfy.c (satisfy, cycle_error_print, safe_satisfy_decl, satisfy_list, satisfy_list_values): Add static prototype. (safe_satisfy_decl): Cast DECL_TASKING_CODE_DECL() to (tree). * tasking.c (make_process_struct): Remove unused prototype. (validate_process_parameters, get_struct_variable_name, decl_tasking_code_variable, get_struct_debug_type_name, get_process_wrapper_name, build_tasking_enum, build_tasking_message_type, build_receive_signal_case_label, build_receive_buffer_case_label, build_receive_buffer_case_end, build_receive_signal_case_end): Add static prototypes. (struct_name, struct_debug_name, data_name, wrapper_name, get_struct_type_name, get_struct_debug_type_name, get_tasking_code_name, get_struct_variable_name, get_process_wrapper_name): Constify a char*. (validate_process_parameters, get_struct_variable_name, decl_tasking_code_variable): Hide unused functions. (build_start_process, add_taskstuff_to_list, build_queue_length): Constify a char*. * tree.c (make_powerset_type): Add static prototype. (get_identifier3, build_alias_decl, decl_check_rename): Constify a char*. * typeck.c (extract_constant_from_buffer, expand_constant_to_buffer, build_empty_string, make_chill_pointer_type, make_chill_range_type, apply_chill_array_layout, field_decl_cmp, make_chill_struct_type, apply_chill_field_layout): Add static prototype. (valid_array_index_p, extract_constant_from_buffer, chill_expand_tuple): Constify a char*. (layout_chill_struct_type): Cast the function argument of qsort. From-SVN: r28965
1999-08-29 15:34:10 +02:00
const char *op;
char wrk[256];
MYSTRING *mode_string;
switch ((enum chill_tree_code)TREE_CODE (val))
{
case CALL_EXPR:
tmp_string = decode_constant (TREE_OPERAND (val, 0));
APPEND (result, tmp_string->str);
FREE (tmp_string);
val = TREE_OPERAND (val, 1); /* argument list */
if (val != NULL_TREE && TREE_CODE (val) != TREE_LIST)
{
APPEND (result, " ");
tmp_string = decode_constant (val);
APPEND (result, tmp_string->str);
FREE (tmp_string);
}
else
{
APPEND (result, " (");
if (val != NULL_TREE)
{
for (;;)
{
tmp_string = decode_constant (TREE_VALUE (val));
APPEND (result, tmp_string->str);
FREE (tmp_string);
val = TREE_CHAIN (val);
if (val == NULL_TREE)
break;
APPEND (result, ", ");
}
}
APPEND (result, ")");
}
return result;
case NOP_EXPR:
/* Generate an "expression conversion" expression (a cast). */
tmp_string = decode_mode (type);
APPEND (result, tmp_string->str);
FREE (tmp_string);
APPEND (result, "(");
val = TREE_OPERAND (val, 0);
type = TREE_TYPE (val);
/* If the coercee is a tuple, make sure it is prefixed by its mode. */
if (TREE_CODE (val) == CONSTRUCTOR
&& !CH_BOOLS_TYPE_P (type) && !chill_varying_type_p (type))
{
tmp_string = decode_mode (type);
APPEND (result, tmp_string->str);
FREE (tmp_string);
APPEND (result, " ");
}
tmp_string = decode_constant (val);
APPEND (result, tmp_string->str);
FREE (tmp_string);
APPEND (result, ")");
return result;
case IDENTIFIER_NODE:
APPEND (result, IDENTIFIER_POINTER (val));
return result;
case PAREN_EXPR:
APPEND (result, "(");
tmp_string = decode_constant (TREE_OPERAND (val, 0));
APPEND (result, tmp_string->str);
FREE (tmp_string);
APPEND (result, ")");
return result;
case UNDEFINED_EXPR:
APPEND (result, "*");
return result;
case PLUS_EXPR: op = "+"; goto binary;
case MINUS_EXPR: op = "-"; goto binary;
case MULT_EXPR: op = "*"; goto binary;
case TRUNC_DIV_EXPR: op = "/"; goto binary;
case FLOOR_MOD_EXPR: op = " MOD "; goto binary;
case TRUNC_MOD_EXPR: op = " REM "; goto binary;
case CONCAT_EXPR: op = "//"; goto binary;
case BIT_IOR_EXPR: op = " OR "; goto binary;
case BIT_XOR_EXPR: op = " XOR "; goto binary;
case TRUTH_ORIF_EXPR: op = " ORIF "; goto binary;
case BIT_AND_EXPR: op = " AND "; goto binary;
case TRUTH_ANDIF_EXPR: op = " ANDIF "; goto binary;
case GT_EXPR: op = ">"; goto binary;
case GE_EXPR: op = ">="; goto binary;
case SET_IN_EXPR: op = " IN "; goto binary;
case LT_EXPR: op = "<"; goto binary;
case LE_EXPR: op = "<="; goto binary;
case EQ_EXPR: op = "="; goto binary;
case NE_EXPR: op = "/="; goto binary;
case RANGE_EXPR:
if (TREE_OPERAND (val, 0) == NULL_TREE)
{
APPEND (result, TREE_OPERAND (val, 1) == NULL_TREE ? "*" : "ELSE");
return result;
}
op = ":"; goto binary;
binary:
tmp_string = decode_constant (TREE_OPERAND (val, 0));
APPEND (result, tmp_string->str);
FREE (tmp_string);
APPEND (result, op);
tmp_string = decode_constant (TREE_OPERAND (val, 1));
APPEND (result, tmp_string->str);
FREE (tmp_string);
return result;
case REPLICATE_EXPR:
APPEND (result, "(");
tmp_string = decode_constant (TREE_OPERAND (val, 0));
APPEND (result, tmp_string->str);
FREE (tmp_string);
APPEND (result, ")");
tmp_string = decode_constant (TREE_OPERAND (val, 1));
APPEND (result, tmp_string->str);
FREE (tmp_string);
return result;
case NEGATE_EXPR: op = "-"; goto unary;
case BIT_NOT_EXPR: op = " NOT "; goto unary;
case ADDR_EXPR: op = "->"; goto unary;
unary:
APPEND (result, op);
tmp_string = decode_constant (TREE_OPERAND (val, 0));
APPEND (result, tmp_string->str);
FREE (tmp_string);
return result;
case INTEGER_CST:
APPEND (result, display_int_cst (val));
return result;
case REAL_CST:
REAL_VALUE_TO_DECIMAL (TREE_REAL_CST (val), "%.20g", wrk);
APPEND (result, wrk);
return result;
case STRING_CST:
{
Makefile.in (ch-version.c): Constify a char*. * Makefile.in (ch-version.c): Constify a char*. * actions.c (id_cmp, warn_unhandled, adjust_return_value, update_else_range_for_int_const, update_else_range_for_range, update_else_range_for_range_expr, update_else_range_for_type, compute_else_range, check_case_value, chill_handle_case_label_range, chill_handle_multi_case_label_range, chill_handle_multi_case_else_label, chill_handle_multi_case_label, chill_handle_multi_case_label_list print_missing_cases): Add static prototypes. (build_exception_variant): Cast the function argument of qsort. (build_rts_call, warn_unhandled, chill_convert_for_assignment, adjust_return_value, chill_expand_result, build_multi_case_selector_expression, print_missing_cases): Constify a char*. (print_missing_cases): Introduce an intermediary non-const ptr. Add brackets and indent. * ch-tree.h (maybe_building_objc_message_expr, maybe_objc_comptypes, comptypes_record_hook): Remove declarations. (push_handler, pop_handler): Add prototypes. (builtin_function, valid_array_index_p, build_chill_exception_decl, build_rts_call, chill_convert_for_assignment, display_int_cst, build_chill_addr_expr, check_have_mode, get_identifier3, build_chill_string, register_seize_path, get_unique_identifier, add_taskstuff_to_list, gnuchill_version): Constify a char*. (finish_chill_function): Add void prototype argument. * convert.c (convert_to_reference, convert_to_boolean, convert_to_char, base_type_size_in_bytes, remove_tree_element, check_ps_range, digest_powerset_tuple, digest_structure_tuple, digest_array_tuple, convert1): Add static prototypes. (base_type_size_in_bytes): Hide unused function. (display_int_cst, digest_array_tuple): Constify a char*. * decl.c (set_nesting_level, make_chill_variants, fix_identifier, proclaim_decl, maybe_acons, push_scope_decls, pop_scope_decls, build_implied_names, bind_sub_modules, layout_array_type, do_based_decl, handle_one_level, label_value_cmp, find_implied_types): Add static prototypes. (boolean_code_name, chill_tree_code_type, chill_tree_code_name): Constify a char*. (layout_chill_variants): Cast the function argument of qsort. (start_chill_function, fix_identifier, init_decl_processing): Constify a char*. (init_decl_processing): Prefer memcpy over bcopy to avoid casts. Use xcalloc instead of xmalloc/bzero. (builtin_function, build_chill_exception_decl, finish_outer_function): Constify a char*. * except.c (start_handler_array, finish_handler_array): Add static prototypes. * expr.c (chill_expand_expr, chill_expand_case_expr, check_arglist_length, internal_build_compound_expr, is_really_instance, invalid_operand, invalid_right_operand, build_chill_abstime, build_allocate_memory_call, build_allocate_global_memory_call, build_return_memory, build_chill_duration, build_chill_floatcall, build_allocate_getstack, build_chill_allocate, build_chill_getstack, build_chill_terminate, build_chill_inttime, build_chill_lower_or_upper, build_max_min, build_chill_pred_or_succ, expand_packed_set, fold_set_expr, build_compare_set_expr, scalar_to_string, build_concat_expr, build_compare_string_expr, compare_records, string_char_rep, build_boring_bitstring): Add static prototypes. (check_have_mode, chill_expand_expr, build_chill_floatcall, build_allocate_getstack, build_max_min, build_chill_function_call, expand_packed_set, build_compare_set_expr, build_chill_addr_expr, string_char_rep): Constify a char*. * gperf (hash, in_word_set): Add prototypes. * grant.c (newstring, strfree, append, prepend, grant_use_seizefile, decode_layout, grant_array_type, grant_array_type_selective, get_tag_value, get_tag_value_selective, print_enumeral, print_enumeral_selective, print_integer_type, find_enum_parent, print_integer_selective, print_struct, print_struct_selective, print_proc_exceptions, print_proc_tail, print_proc_tail_selective, find_in_decls, in_ridpointers, grant_seized_identifier, globalize_decl, grant_one_decl_selective, compare_memory_file, search_in_list, really_grant_this): Add static prototypes. (newstring, append, prepend, grant_use_seizefile, print_integer_type, decode_constant, grant_one_decl_selective, header_template): Constify a char *. * inout.c (add_enum_to_list, build_chill_io_list_type, build_io_types, declare_predefined_file, build_access_part, textlocation_mode, check_assoc, assoc_call, check_transfer, connect_process_optionals, connect_text, connect_access, check_access, check_text, get_final_type_and_range, process_io_list, check_format_string, get_max_size, check_exprlist): Add static prototypes. (declare_predefined_file, check_assoc, assoc_call, check_transfer, check_access, check_text, process_io_list): Constify a char*. * lang.c (deep_const_expr, chill_print_error_function): Add static prototypes. * lex.c (close_input_file, maybe_number, string_or_char): Constify a char*. (ch_lex_init, skip_directive, same_file, getlc, yywrap, yy_refill): Add static prototypes. (build_chill_string, same_file, register_seize_path): Constify a char*. * lex.h (finish_chill_seizes): Remove unused prototypes. * loop.c (build_temporary_variable, maybe_make_for_temp, get_unique_identifier): Constify a char*. * parse.c (ch_parse_init, check_end_label, end_function, build_prefix_clause, PEEK_TOKEN, peek_token_, pushback_token, forward_token_, require, check_token, expect, define__PROCNAME__): Add static prototypes. (build_prefix_clause, expect): Constify a char*. (parse_expression, parse_primval, parse_untyped_expr, parse_opt_untyped_expr, parse_opt_actions): Add void prototype argument. (parse_opt_name_string, parse_simple_name_string, parse_name_string, parse_defining_occurrence, parse_name, parse_optlabel, parse_opt_end_label_semi_colon, parse_modulion, parse_spec_module, parse_semi_colon, parse_defining_occurrence_list, parse_mode_definition, parse_mode_definition_statement, parse_synonym_definition, parse_synonym_definition_statement, parse_on_exception_list, parse_on_alternatives, parse_loc_declaration, parse_declaration_statement, parse_optforbid, parse_postfix, parse_postfix_list, parse_rename_clauses, parse_opt_prefix_clause, parse_grant_statement, parse_seize_statement, parse_param_name_list, parse_param_attr, parse_formpar, parse_formparlist, parse_opt_result_spec, parse_opt_except, parse_opt_recursive, parse_procedureattr, parse_proc_body, parse_procedure_definition, parse_processpar, parse_processparlist, parse_process_definition, parse_signal_definition, parse_signal_definition_statement, parse_then_clause, parse_opt_else_clause, parse_expr_list, parse_range_list_clause, pushback_paren_expr, parse_case_label, parse_case_label_list, parse_case_label_specification, parse_single_dimension_case_action, parse_multi_dimension_case_action, parse_case_action, parse_asm_operands, parse_asm_clobbers, ch_expand_asm_operands, parse_asm_action, parse_begin_end_block, parse_if_action, parse_iteration, parse_delay_case_event_list, parse_delay_case_action, parse_do_action, parse_receive_spec, parse_receive_case_action, parse_send_action, parse_start_action, parse_call, parse_tuple_fieldname_list, parse_tuple_element, parse_opt_element_list, parse_tuple, parse_operand6, parse_operand5, parse_operand4, parse_operand3, parse_operand2, parse_operand1, parse_operand0, parse_case_expression, parse_then_alternative, parse_else_alternative, parse_if_expression, parse_index_mode, parse_set_mode, parse_pos, parse_step, parse_opt_layout, parse_field_name_list, parse_fixed_field, parse_variant_field_list, parse_variant_alternative, parse_field, parse_structure_mode, parse_opt_queue_size, parse_procedure_mode, parse_program, parse_pass_1_2): Add static prototypes. (parse_process_definition): Remove extra argument in function call. (parse_range_list_clause): Likewise. * satisfy.c (satisfy, cycle_error_print, safe_satisfy_decl, satisfy_list, satisfy_list_values): Add static prototype. (safe_satisfy_decl): Cast DECL_TASKING_CODE_DECL() to (tree). * tasking.c (make_process_struct): Remove unused prototype. (validate_process_parameters, get_struct_variable_name, decl_tasking_code_variable, get_struct_debug_type_name, get_process_wrapper_name, build_tasking_enum, build_tasking_message_type, build_receive_signal_case_label, build_receive_buffer_case_label, build_receive_buffer_case_end, build_receive_signal_case_end): Add static prototypes. (struct_name, struct_debug_name, data_name, wrapper_name, get_struct_type_name, get_struct_debug_type_name, get_tasking_code_name, get_struct_variable_name, get_process_wrapper_name): Constify a char*. (validate_process_parameters, get_struct_variable_name, decl_tasking_code_variable): Hide unused functions. (build_start_process, add_taskstuff_to_list, build_queue_length): Constify a char*. * tree.c (make_powerset_type): Add static prototype. (get_identifier3, build_alias_decl, decl_check_rename): Constify a char*. * typeck.c (extract_constant_from_buffer, expand_constant_to_buffer, build_empty_string, make_chill_pointer_type, make_chill_range_type, apply_chill_array_layout, field_decl_cmp, make_chill_struct_type, apply_chill_field_layout): Add static prototype. (valid_array_index_p, extract_constant_from_buffer, chill_expand_tuple): Constify a char*. (layout_chill_struct_type): Cast the function argument of qsort. From-SVN: r28965
1999-08-29 15:34:10 +02:00
const char *ptr = TREE_STRING_POINTER (val);
int i = TREE_STRING_LENGTH (val);
APPEND (result, "\"");
while (--i >= 0)
{
char buf[10];
unsigned char c = *ptr++;
if (c == '^')
APPEND (result, "^^");
else if (c == '"')
APPEND (result, "\"\"");
else if (c == '\n')
APPEND (result, "^J");
else if (c < ' ' || c > '~')
{
sprintf (buf, "^(%u)", c);
APPEND (result, buf);
}
else
{
buf[0] = c;
buf[1] = 0;
APPEND (result, buf);
}
}
APPEND (result, "\"");
return result;
}
case CONSTRUCTOR:
val = TREE_OPERAND (val, 1);
if (type != NULL && TREE_CODE (type) == SET_TYPE
&& CH_BOOLS_TYPE_P (type))
{
/* It's a bitstring. */
tree domain = TYPE_DOMAIN (type);
tree domain_max = TYPE_MAX_VALUE (domain);
char *buf;
register char *ptr;
int len;
if (TREE_CODE (domain_max) != INTEGER_CST
|| (val && TREE_CODE (val) != TREE_LIST))
goto fail;
len = TREE_INT_CST_LOW (domain_max) + 1;
if (TREE_CODE (init) != CONSTRUCTOR)
goto fail;
buf = (char *) alloca (len + 10);
ptr = buf;
*ptr++ = ' ';
*ptr++ = 'B';
*ptr++ = '\'';
if (get_set_constructor_bits (init, ptr, len))
goto fail;
for (; --len >= 0; ptr++)
*ptr += '0';
*ptr++ = '\'';
*ptr = '\0';
APPEND (result, buf);
return result;
}
else
{ /* It's some kind of tuple */
if (type != NULL_TREE)
{
mode_string = get_type (type);
APPEND (result, mode_string->str);
FREE (mode_string);
APPEND (result, " ");
}
if (val == NULL_TREE
|| TREE_CODE (val) == ERROR_MARK)
APPEND (result, "[ ]");
else if (TREE_CODE (val) != TREE_LIST)
goto fail;
else
{
APPEND (result, "[");
for ( ; ; )
{
tree lo_val = TREE_PURPOSE (val);
tree hi_val = TREE_VALUE (val);
MYSTRING *val_string;
if (TUPLE_NAMED_FIELD (val))
APPEND(result, ".");
if (lo_val != NULL_TREE)
{
val_string = decode_constant (lo_val);
APPEND (result, val_string->str);
FREE (val_string);
APPEND (result, ":");
}
val_string = decode_constant (hi_val);
APPEND (result, val_string->str);
FREE (val_string);
val = TREE_CHAIN (val);
if (val == NULL_TREE)
break;
APPEND (result, ", ");
}
APPEND (result, "]");
}
}
return result;
case COMPONENT_REF:
{
tree op1;
mode_string = decode_constant (TREE_OPERAND (init, 0));
APPEND (result, mode_string->str);
FREE (mode_string);
op1 = TREE_OPERAND (init, 1);
if (TREE_CODE (op1) != IDENTIFIER_NODE)
{
error ("decode_constant: invalid component_ref");
break;
}
APPEND (result, ".");
APPEND (result, IDENTIFIER_POINTER (op1));
return result;
}
fail:
error ("decode_constant: mode and value mismatch");
break;
default:
error ("decode_constant: cannot decode this mode");
break;
}
return result;
}
static MYSTRING *
decode_constant_selective (init, all_decls)
tree init;
tree all_decls;
{
MYSTRING *result = newstring ("");
MYSTRING *tmp_string;
tree type = TREE_TYPE (init);
tree val = init;
MYSTRING *mode_string;
switch ((enum chill_tree_code)TREE_CODE (val))
{
case CALL_EXPR:
tmp_string = decode_constant_selective (TREE_OPERAND (val, 0), all_decls);
if (tmp_string->len)
APPEND (result, tmp_string->str);
FREE (tmp_string);
val = TREE_OPERAND (val, 1); /* argument list */
if (val != NULL_TREE && TREE_CODE (val) != TREE_LIST)
{
tmp_string = decode_constant_selective (val, all_decls);
if (tmp_string->len)
{
MAYBE_NEWLINE (result);
APPEND (result, tmp_string->str);
}
FREE (tmp_string);
}
else
{
if (val != NULL_TREE)
{
for (;;)
{
tmp_string = decode_constant_selective (TREE_VALUE (val), all_decls);
if (tmp_string->len)
{
MAYBE_NEWLINE (result);
APPEND (result, tmp_string->str);
}
FREE (tmp_string);
val = TREE_CHAIN (val);
if (val == NULL_TREE)
break;
}
}
}
return result;
case NOP_EXPR:
/* Generate an "expression conversion" expression (a cast). */
tmp_string = decode_mode_selective (type, all_decls);
if (tmp_string->len)
APPEND (result, tmp_string->str);
FREE (tmp_string);
val = TREE_OPERAND (val, 0);
type = TREE_TYPE (val);
/* If the coercee is a tuple, make sure it is prefixed by its mode. */
if (TREE_CODE (val) == CONSTRUCTOR
&& !CH_BOOLS_TYPE_P (type) && !chill_varying_type_p (type))
{
tmp_string = decode_mode_selective (type, all_decls);
if (tmp_string->len)
APPEND (result, tmp_string->str);
FREE (tmp_string);
}
tmp_string = decode_constant_selective (val, all_decls);
if (tmp_string->len)
APPEND (result, tmp_string->str);
FREE (tmp_string);
return result;
case IDENTIFIER_NODE:
tmp_string = decode_mode_selective (val, all_decls);
if (tmp_string->len)
APPEND (result, tmp_string->str);
FREE (tmp_string);
return result;
case PAREN_EXPR:
tmp_string = decode_constant_selective (TREE_OPERAND (val, 0), all_decls);
if (tmp_string->len)
APPEND (result, tmp_string->str);
FREE (tmp_string);
return result;
case UNDEFINED_EXPR:
return result;
case PLUS_EXPR:
case MINUS_EXPR:
case MULT_EXPR:
case TRUNC_DIV_EXPR:
case FLOOR_MOD_EXPR:
case TRUNC_MOD_EXPR:
case CONCAT_EXPR:
case BIT_IOR_EXPR:
case BIT_XOR_EXPR:
case TRUTH_ORIF_EXPR:
case BIT_AND_EXPR:
case TRUTH_ANDIF_EXPR:
case GT_EXPR:
case GE_EXPR:
case SET_IN_EXPR:
case LT_EXPR:
case LE_EXPR:
case EQ_EXPR:
case NE_EXPR:
goto binary;
case RANGE_EXPR:
if (TREE_OPERAND (val, 0) == NULL_TREE)
return result;
binary:
tmp_string = decode_constant_selective (TREE_OPERAND (val, 0), all_decls);
if (tmp_string->len)
APPEND (result, tmp_string->str);
FREE (tmp_string);
tmp_string = decode_constant_selective (TREE_OPERAND (val, 1), all_decls);
if (tmp_string->len)
{
MAYBE_NEWLINE (result);
APPEND (result, tmp_string->str);
}
FREE (tmp_string);
return result;
case REPLICATE_EXPR:
tmp_string = decode_constant_selective (TREE_OPERAND (val, 0), all_decls);
if (tmp_string->len)
APPEND (result, tmp_string->str);
FREE (tmp_string);
tmp_string = decode_constant_selective (TREE_OPERAND (val, 1), all_decls);
if (tmp_string->len)
{
MAYBE_NEWLINE (result);
APPEND (result, tmp_string->str);
}
FREE (tmp_string);
return result;
case NEGATE_EXPR:
case BIT_NOT_EXPR:
case ADDR_EXPR:
tmp_string = decode_constant_selective (TREE_OPERAND (val, 0), all_decls);
if (tmp_string->len)
APPEND (result, tmp_string->str);
FREE (tmp_string);
return result;
case INTEGER_CST:
return result;
case REAL_CST:
return result;
case STRING_CST:
return result;
case CONSTRUCTOR:
val = TREE_OPERAND (val, 1);
if (type != NULL && TREE_CODE (type) == SET_TYPE
&& CH_BOOLS_TYPE_P (type))
/* It's a bitstring. */
return result;
else
{ /* It's some kind of tuple */
if (type != NULL_TREE)
{
mode_string = get_type_selective (type, all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
}
if (val == NULL_TREE
|| TREE_CODE (val) == ERROR_MARK)
return result;
else if (TREE_CODE (val) != TREE_LIST)
goto fail;
else
{
for ( ; ; )
{
tree lo_val = TREE_PURPOSE (val);
tree hi_val = TREE_VALUE (val);
MYSTRING *val_string;
if (lo_val != NULL_TREE)
{
val_string = decode_constant_selective (lo_val, all_decls);
if (val_string->len)
APPEND (result, val_string->str);
FREE (val_string);
}
val_string = decode_constant_selective (hi_val, all_decls);
if (val_string->len)
{
MAYBE_NEWLINE (result);
APPEND (result, val_string->str);
}
FREE (val_string);
val = TREE_CHAIN (val);
if (val == NULL_TREE)
break;
}
}
}
return result;
case COMPONENT_REF:
{
mode_string = decode_constant_selective (TREE_OPERAND (init, 0), all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
return result;
}
fail:
error ("decode_constant_selective: mode and value mismatch");
break;
default:
error ("decode_constant_selective: cannot decode this mode");
break;
}
return result;
}
/* Assuming DECL is an ALIAS_DECL, return its prefix rename clause. */
static MYSTRING *
decode_prefix_rename (decl)
tree decl;
{
MYSTRING *result = newstring ("");
if (DECL_OLD_PREFIX (decl) || DECL_NEW_PREFIX (decl))
{
APPEND (result, "(");
if (DECL_OLD_PREFIX (decl))
APPEND (result, IDENTIFIER_POINTER (DECL_OLD_PREFIX (decl)));
APPEND (result, "->");
if (DECL_NEW_PREFIX (decl))
APPEND (result, IDENTIFIER_POINTER (DECL_NEW_PREFIX (decl)));
APPEND (result, ")!");
}
if (DECL_POSTFIX_ALL (decl))
APPEND (result, "ALL");
else
APPEND (result, IDENTIFIER_POINTER (DECL_POSTFIX (decl)));
return result;
}
static MYSTRING *
decode_decl (decl)
tree decl;
{
MYSTRING *result = newstring ("");
MYSTRING *mode_string;
tree type;
switch ((enum chill_tree_code)TREE_CODE (decl))
{
case VAR_DECL:
case BASED_DECL:
APPEND (result, "DCL ");
APPEND (result, IDENTIFIER_POINTER (DECL_NAME (decl)));
APPEND (result, " ");
mode_string = get_type (TREE_TYPE (decl));
APPEND (result, mode_string->str);
FREE (mode_string);
if ((enum chill_tree_code)TREE_CODE (decl) == BASED_DECL)
{
APPEND (result, " BASED (");
APPEND (result, IDENTIFIER_POINTER (DECL_ABSTRACT_ORIGIN (decl)));
APPEND (result, ")");
}
break;
case TYPE_DECL:
if (CH_DECL_SIGNAL (decl))
{
/* this is really a signal */
tree fields = TYPE_FIELDS (TREE_TYPE (decl));
tree signame = DECL_NAME (decl);
tree sigdest;
APPEND (result, "SIGNAL ");
APPEND (result, IDENTIFIER_POINTER (signame));
if (IDENTIFIER_SIGNAL_DATA (signame))
{
APPEND (result, " = (");
for ( ; fields != NULL_TREE;
fields = TREE_CHAIN (fields))
{
MYSTRING *mode_string;
mode_string = get_type (TREE_TYPE (fields));
APPEND (result, mode_string->str);
FREE (mode_string);
if (TREE_CHAIN (fields) != NULL_TREE)
APPEND (result, ", ");
}
APPEND (result, ")");
}
sigdest = IDENTIFIER_SIGNAL_DEST (signame);
if (sigdest != NULL_TREE)
{
APPEND (result, " TO ");
APPEND (result, IDENTIFIER_POINTER (DECL_NAME (sigdest)));
}
}
else
{
/* avoid defining a mode as itself */
if (CH_NOVELTY (TREE_TYPE (decl)) == decl)
APPEND (result, "NEWMODE ");
else
APPEND (result, "SYNMODE ");
APPEND (result, IDENTIFIER_POINTER (DECL_NAME (decl)));
APPEND (result, " = ");
mode_string = decode_mode (TREE_TYPE (decl));
APPEND (result, mode_string->str);
FREE (mode_string);
}
break;
case FUNCTION_DECL:
{
tree args;
type = TREE_TYPE (decl);
args = TYPE_ARG_TYPES (type);
APPEND (result, IDENTIFIER_POINTER (DECL_NAME (decl)));
if (CH_DECL_PROCESS (decl))
APPEND (result, ": PROCESS (");
else
APPEND (result, ": PROC (");
args = TYPE_ARG_TYPES (type);
mode_string = print_proc_tail (type, args, 1);
APPEND (result, mode_string->str);
FREE (mode_string);
/* generality */
if (CH_DECL_GENERAL (decl))
APPEND (result, " GENERAL");
if (CH_DECL_SIMPLE (decl))
APPEND (result, " SIMPLE");
if (DECL_INLINE (decl))
APPEND (result, " INLINE");
if (CH_DECL_RECURSIVE (decl))
APPEND (result, " RECURSIVE");
APPEND (result, " END");
}
break;
case FIELD_DECL:
APPEND (result, IDENTIFIER_POINTER (DECL_NAME (decl)));
APPEND (result, " ");
mode_string = get_type (TREE_TYPE (decl));
APPEND (result, mode_string->str);
FREE (mode_string);
if (DECL_INITIAL (decl) != NULL_TREE)
{
mode_string = decode_layout (DECL_INITIAL (decl));
APPEND (result, mode_string->str);
FREE (mode_string);
}
#if 0
if (is_forbidden (DECL_NAME (decl), forbid))
APPEND (result, " FORBID");
#endif
break;
case CONST_DECL:
if (DECL_INITIAL (decl) == NULL_TREE
|| TREE_CODE (DECL_INITIAL (decl)) == ERROR_MARK)
break;
APPEND (result, "SYN ");
APPEND (result, IDENTIFIER_POINTER (DECL_NAME (decl)));
APPEND (result, " ");
mode_string = get_type (TREE_TYPE (decl));
APPEND (result, mode_string->str);
FREE (mode_string);
APPEND (result, " = ");
mode_string = decode_constant (DECL_INITIAL (decl));
APPEND (result, mode_string->str);
FREE (mode_string);
break;
case ALIAS_DECL:
/* If CH_DECL_GRANTED, decl was granted into this scope, and
so wasn't in the source code. */
if (!CH_DECL_GRANTED (decl))
{
static int restricted = 0;
if (DECL_SEIZEFILE (decl) != use_seizefile_name
&& DECL_SEIZEFILE (decl))
{
use_seizefile_name = DECL_SEIZEFILE (decl);
restricted = use_seizefile_name == NULL_TREE ? 0 : CH_USE_SEIZEFILE_RESTRICTED (use_seizefile_name);
if (! restricted)
grant_use_seizefile (IDENTIFIER_POINTER (use_seizefile_name));
mark_use_seizefile_written (use_seizefile_name);
}
if (! restricted)
{
APPEND (result, "SEIZE ");
mode_string = decode_prefix_rename (decl);
APPEND (result, mode_string->str);
FREE (mode_string);
}
}
break;
default:
APPEND (result, "----- not implemented ------");
break;
}
return (result);
}
static MYSTRING *
decode_decl_selective (decl, all_decls)
tree decl;
tree all_decls;
{
MYSTRING *result = newstring ("");
MYSTRING *mode_string;
tree type;
if (CH_ALREADY_GRANTED (decl))
/* do nothing */
return result;
CH_ALREADY_GRANTED (decl) = 1;
switch ((int)TREE_CODE (decl))
{
case VAR_DECL:
case BASED_DECL:
mode_string = get_type_selective (TREE_TYPE (decl), all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
if ((enum chill_tree_code)TREE_CODE (decl) == BASED_DECL)
{
mode_string = decode_mode_selective (DECL_ABSTRACT_ORIGIN (decl), all_decls);
if (mode_string->len)
PREPEND (result, mode_string->str);
FREE (mode_string);
}
break;
case TYPE_DECL:
if (CH_DECL_SIGNAL (decl))
{
/* this is really a signal */
tree fields = TYPE_FIELDS (TREE_TYPE (decl));
tree signame = DECL_NAME (decl);
tree sigdest;
if (IDENTIFIER_SIGNAL_DATA (signame))
{
for ( ; fields != NULL_TREE;
fields = TREE_CHAIN (fields))
{
MYSTRING *mode_string;
mode_string = get_type_selective (TREE_TYPE (fields),
all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
}
}
sigdest = IDENTIFIER_SIGNAL_DEST (signame);
if (sigdest != NULL_TREE)
{
mode_string = decode_mode_selective (DECL_NAME (sigdest), all_decls);
if (mode_string->len)
{
MAYBE_NEWLINE (result);
APPEND (result, mode_string->str);
}
FREE (mode_string);
}
}
else
{
/* avoid defining a mode as itself */
mode_string = decode_mode_selective (TREE_TYPE (decl), all_decls);
APPEND (result, mode_string->str);
FREE (mode_string);
}
break;
case FUNCTION_DECL:
{
tree args;
type = TREE_TYPE (decl);
args = TYPE_ARG_TYPES (type);
args = TYPE_ARG_TYPES (type);
mode_string = print_proc_tail_selective (type, args, all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
}
break;
case FIELD_DECL:
mode_string = get_type_selective (TREE_TYPE (decl), all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
break;
case CONST_DECL:
if (DECL_INITIAL (decl) == NULL_TREE
|| TREE_CODE (DECL_INITIAL (decl)) == ERROR_MARK)
break;
mode_string = get_type_selective (TREE_TYPE (decl), all_decls);
if (mode_string->len)
APPEND (result, mode_string->str);
FREE (mode_string);
mode_string = decode_constant_selective (DECL_INITIAL (decl), all_decls);
if (mode_string->len)
{
MAYBE_NEWLINE (result);
APPEND (result, mode_string->str);
}
FREE (mode_string);
break;
}
MAYBE_NEWLINE (result);
return (result);
}
static void
globalize_decl (decl)
tree decl;
{
if (!TREE_PUBLIC (decl) && DECL_NAME (decl) &&
(TREE_CODE (decl) == VAR_DECL || TREE_CODE (decl) == FUNCTION_DECL))
{
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
2000-05-09 21:56:01 +02:00
const char *name = XSTR (XEXP (DECL_RTL (decl), 0), 0);
if (!first_global_object_name)
first_global_object_name = name + (name[0] == '*');
ASM_GLOBALIZE_LABEL (asm_out_file, name);
}
}
static void
grant_one_decl (decl)
tree decl;
{
MYSTRING *result;
if (DECL_SOURCE_LINE (decl) == 0)
return;
result = decode_decl (decl);
if (result->len)
{
APPEND (result, ";\n");
APPEND (gstring, result->str);
}
FREE (result);
}
static void
grant_one_decl_selective (decl, all_decls)
tree decl;
tree all_decls;
{
MYSTRING *result;
MYSTRING *fixups;
tree d = DECL_ABSTRACT_ORIGIN (decl);
if (CH_ALREADY_GRANTED (d))
/* already done */
return;
result = decode_decl (d);
if (!result->len)
{
/* nothing to do */
FREE (result);
return;
}
APPEND (result, ";\n");
/* now process all undefined items in the decl */
fixups = decode_decl_selective (d, all_decls);
if (fixups->len)
{
PREPEND (result, fixups->str);
}
FREE (fixups);
/* we have finished a decl */
APPEND (selective_gstring, result->str);
FREE (result);
}
static int
compare_memory_file (fname, buf)
Makefile.in (ch-version.c): Constify a char*. * Makefile.in (ch-version.c): Constify a char*. * actions.c (id_cmp, warn_unhandled, adjust_return_value, update_else_range_for_int_const, update_else_range_for_range, update_else_range_for_range_expr, update_else_range_for_type, compute_else_range, check_case_value, chill_handle_case_label_range, chill_handle_multi_case_label_range, chill_handle_multi_case_else_label, chill_handle_multi_case_label, chill_handle_multi_case_label_list print_missing_cases): Add static prototypes. (build_exception_variant): Cast the function argument of qsort. (build_rts_call, warn_unhandled, chill_convert_for_assignment, adjust_return_value, chill_expand_result, build_multi_case_selector_expression, print_missing_cases): Constify a char*. (print_missing_cases): Introduce an intermediary non-const ptr. Add brackets and indent. * ch-tree.h (maybe_building_objc_message_expr, maybe_objc_comptypes, comptypes_record_hook): Remove declarations. (push_handler, pop_handler): Add prototypes. (builtin_function, valid_array_index_p, build_chill_exception_decl, build_rts_call, chill_convert_for_assignment, display_int_cst, build_chill_addr_expr, check_have_mode, get_identifier3, build_chill_string, register_seize_path, get_unique_identifier, add_taskstuff_to_list, gnuchill_version): Constify a char*. (finish_chill_function): Add void prototype argument. * convert.c (convert_to_reference, convert_to_boolean, convert_to_char, base_type_size_in_bytes, remove_tree_element, check_ps_range, digest_powerset_tuple, digest_structure_tuple, digest_array_tuple, convert1): Add static prototypes. (base_type_size_in_bytes): Hide unused function. (display_int_cst, digest_array_tuple): Constify a char*. * decl.c (set_nesting_level, make_chill_variants, fix_identifier, proclaim_decl, maybe_acons, push_scope_decls, pop_scope_decls, build_implied_names, bind_sub_modules, layout_array_type, do_based_decl, handle_one_level, label_value_cmp, find_implied_types): Add static prototypes. (boolean_code_name, chill_tree_code_type, chill_tree_code_name): Constify a char*. (layout_chill_variants): Cast the function argument of qsort. (start_chill_function, fix_identifier, init_decl_processing): Constify a char*. (init_decl_processing): Prefer memcpy over bcopy to avoid casts. Use xcalloc instead of xmalloc/bzero. (builtin_function, build_chill_exception_decl, finish_outer_function): Constify a char*. * except.c (start_handler_array, finish_handler_array): Add static prototypes. * expr.c (chill_expand_expr, chill_expand_case_expr, check_arglist_length, internal_build_compound_expr, is_really_instance, invalid_operand, invalid_right_operand, build_chill_abstime, build_allocate_memory_call, build_allocate_global_memory_call, build_return_memory, build_chill_duration, build_chill_floatcall, build_allocate_getstack, build_chill_allocate, build_chill_getstack, build_chill_terminate, build_chill_inttime, build_chill_lower_or_upper, build_max_min, build_chill_pred_or_succ, expand_packed_set, fold_set_expr, build_compare_set_expr, scalar_to_string, build_concat_expr, build_compare_string_expr, compare_records, string_char_rep, build_boring_bitstring): Add static prototypes. (check_have_mode, chill_expand_expr, build_chill_floatcall, build_allocate_getstack, build_max_min, build_chill_function_call, expand_packed_set, build_compare_set_expr, build_chill_addr_expr, string_char_rep): Constify a char*. * gperf (hash, in_word_set): Add prototypes. * grant.c (newstring, strfree, append, prepend, grant_use_seizefile, decode_layout, grant_array_type, grant_array_type_selective, get_tag_value, get_tag_value_selective, print_enumeral, print_enumeral_selective, print_integer_type, find_enum_parent, print_integer_selective, print_struct, print_struct_selective, print_proc_exceptions, print_proc_tail, print_proc_tail_selective, find_in_decls, in_ridpointers, grant_seized_identifier, globalize_decl, grant_one_decl_selective, compare_memory_file, search_in_list, really_grant_this): Add static prototypes. (newstring, append, prepend, grant_use_seizefile, print_integer_type, decode_constant, grant_one_decl_selective, header_template): Constify a char *. * inout.c (add_enum_to_list, build_chill_io_list_type, build_io_types, declare_predefined_file, build_access_part, textlocation_mode, check_assoc, assoc_call, check_transfer, connect_process_optionals, connect_text, connect_access, check_access, check_text, get_final_type_and_range, process_io_list, check_format_string, get_max_size, check_exprlist): Add static prototypes. (declare_predefined_file, check_assoc, assoc_call, check_transfer, check_access, check_text, process_io_list): Constify a char*. * lang.c (deep_const_expr, chill_print_error_function): Add static prototypes. * lex.c (close_input_file, maybe_number, string_or_char): Constify a char*. (ch_lex_init, skip_directive, same_file, getlc, yywrap, yy_refill): Add static prototypes. (build_chill_string, same_file, register_seize_path): Constify a char*. * lex.h (finish_chill_seizes): Remove unused prototypes. * loop.c (build_temporary_variable, maybe_make_for_temp, get_unique_identifier): Constify a char*. * parse.c (ch_parse_init, check_end_label, end_function, build_prefix_clause, PEEK_TOKEN, peek_token_, pushback_token, forward_token_, require, check_token, expect, define__PROCNAME__): Add static prototypes. (build_prefix_clause, expect): Constify a char*. (parse_expression, parse_primval, parse_untyped_expr, parse_opt_untyped_expr, parse_opt_actions): Add void prototype argument. (parse_opt_name_string, parse_simple_name_string, parse_name_string, parse_defining_occurrence, parse_name, parse_optlabel, parse_opt_end_label_semi_colon, parse_modulion, parse_spec_module, parse_semi_colon, parse_defining_occurrence_list, parse_mode_definition, parse_mode_definition_statement, parse_synonym_definition, parse_synonym_definition_statement, parse_on_exception_list, parse_on_alternatives, parse_loc_declaration, parse_declaration_statement, parse_optforbid, parse_postfix, parse_postfix_list, parse_rename_clauses, parse_opt_prefix_clause, parse_grant_statement, parse_seize_statement, parse_param_name_list, parse_param_attr, parse_formpar, parse_formparlist, parse_opt_result_spec, parse_opt_except, parse_opt_recursive, parse_procedureattr, parse_proc_body, parse_procedure_definition, parse_processpar, parse_processparlist, parse_process_definition, parse_signal_definition, parse_signal_definition_statement, parse_then_clause, parse_opt_else_clause, parse_expr_list, parse_range_list_clause, pushback_paren_expr, parse_case_label, parse_case_label_list, parse_case_label_specification, parse_single_dimension_case_action, parse_multi_dimension_case_action, parse_case_action, parse_asm_operands, parse_asm_clobbers, ch_expand_asm_operands, parse_asm_action, parse_begin_end_block, parse_if_action, parse_iteration, parse_delay_case_event_list, parse_delay_case_action, parse_do_action, parse_receive_spec, parse_receive_case_action, parse_send_action, parse_start_action, parse_call, parse_tuple_fieldname_list, parse_tuple_element, parse_opt_element_list, parse_tuple, parse_operand6, parse_operand5, parse_operand4, parse_operand3, parse_operand2, parse_operand1, parse_operand0, parse_case_expression, parse_then_alternative, parse_else_alternative, parse_if_expression, parse_index_mode, parse_set_mode, parse_pos, parse_step, parse_opt_layout, parse_field_name_list, parse_fixed_field, parse_variant_field_list, parse_variant_alternative, parse_field, parse_structure_mode, parse_opt_queue_size, parse_procedure_mode, parse_program, parse_pass_1_2): Add static prototypes. (parse_process_definition): Remove extra argument in function call. (parse_range_list_clause): Likewise. * satisfy.c (satisfy, cycle_error_print, safe_satisfy_decl, satisfy_list, satisfy_list_values): Add static prototype. (safe_satisfy_decl): Cast DECL_TASKING_CODE_DECL() to (tree). * tasking.c (make_process_struct): Remove unused prototype. (validate_process_parameters, get_struct_variable_name, decl_tasking_code_variable, get_struct_debug_type_name, get_process_wrapper_name, build_tasking_enum, build_tasking_message_type, build_receive_signal_case_label, build_receive_buffer_case_label, build_receive_buffer_case_end, build_receive_signal_case_end): Add static prototypes. (struct_name, struct_debug_name, data_name, wrapper_name, get_struct_type_name, get_struct_debug_type_name, get_tasking_code_name, get_struct_variable_name, get_process_wrapper_name): Constify a char*. (validate_process_parameters, get_struct_variable_name, decl_tasking_code_variable): Hide unused functions. (build_start_process, add_taskstuff_to_list, build_queue_length): Constify a char*. * tree.c (make_powerset_type): Add static prototype. (get_identifier3, build_alias_decl, decl_check_rename): Constify a char*. * typeck.c (extract_constant_from_buffer, expand_constant_to_buffer, build_empty_string, make_chill_pointer_type, make_chill_range_type, apply_chill_array_layout, field_decl_cmp, make_chill_struct_type, apply_chill_field_layout): Add static prototype. (valid_array_index_p, extract_constant_from_buffer, chill_expand_tuple): Constify a char*. (layout_chill_struct_type): Cast the function argument of qsort. From-SVN: r28965
1999-08-29 15:34:10 +02:00
const char *fname;
const char *buf;
{
FILE *fb;
int c;
/* check if we have something to write */
if (!buf || !strlen (buf))
return (0);
if ((fb = fopen (fname, "r")) == NULL)
return (1);
while ((c = getc (fb)) != EOF)
{
if (c != *buf++)
{
fclose (fb);
return (1);
}
}
fclose (fb);
return (*buf ? 1 : 0);
}
void
write_grant_file ()
{
FILE *fb;
/* We only write out the grant file if it has changed,
to avoid changing its time-stamp and triggering an
unnecessary 'make' action. Return if no change. */
if (gstring == NULL || !spec_module_generated ||
!compare_memory_file (grant_file_name, gstring->str))
return;
fb = fopen (grant_file_name, "w");
if (fb == NULL)
diagnostic.h (set_internal_error_function): Renamed. * diagnostic.h (set_internal_error_function): Renamed. * toplev.h (internal_error): Renamed from fatal. (pfatal_with_name): Deleted. (fatal_io_error): Now has printf-style arguments. * diagnostic.c (pfatal_with_name): Deleted. (fatal_io_error): Rework to have args in printf-style. (set_internal_error_function): Renamed from set_fatal_function. (internal_error): Renamed from fatal. (error_recursion, fancy_abort): Call internal_error instead of fatal. * dwarf2out.c (get_cfa_from_loc_descr): Likewise. * emit-rtl.c (gen_realpart, gen_imagpart): Likewise. * expr.c (check_max_integer_computation_mode, expand_expr): Likewise. * flow.c (verify_flow_info): Likewise. * config/arm/arm.c (thumb_unexpanded_epilogue): Likewise. * config/mips/mips.c (save_restore_insns): Likewise. * cp/init.c (build_java_class_ref): Likewise. (dsp16xx_reg_class_from_letter): Likewise. (limit_reload_class, double_reg_to_memory): Likewise. (print_operand_address, emit_1600_code_shift): Likewise. (gen_tst_reg, gen_compare_reg): Likewise. * config/m68hc11/m68hc11.c (m68hc11_emit_libcall): Likewise. * cp/decl.c (pushdecl): Likewise. * java/check-init.c (check_init): Likewise. * java/expr.c (java_lang_expand_expr): Likewise. * java/jcf-parse.c (get_constant): Likewise. * java/mangle.c (java_mangle_decl): Likewise. * java/parse.y (make_nested_class_name, java_complete_lhs): Likewise. (operator_string): Likewise. * except.c (duplicate_eh_handlers): Call abort instead of fatal. * flow.c (verify_flow_info): Likewise. * ch/convert.c (convert): Likewise. * ch/except.c (pop_handler, chill_check_no_handlers): Likewise. * ch/expr.c (chill_expand_expr): Likewise. * ch/parse.c (peek_token_, pushback_token, require): Likewise. * config/arm/arm.c (thumb_load_double_from_address): Likewise. * config/avr/avr.c (pttreg_to_str, unique_section): Likewise. (avr_normalize_condition): Likewise. * config/c4x/c4x.c (c4x_emit_libcall, c4x_valid_operands): Likewise. * config/dsp16xx/dsp16xx.c (dsp16xx_reg_class_from_letter): Likewise. (limit_reload_class, double_reg_to_memory): Likewise. (print_operand_address, emit_1600_code_shift): Likewise. (gen_tst_reg, gen_compare_reg): Likewise. * config/m68hc11/m68hc11.c (m68hc11_emit_libcall): Likewise. * cp/decl.c (pushdecl): Likewise. * java/check-init.c (check_init): Likewise. * java/class.c (build_class_ref): Likewise. * java/constants.c (write_constant_pool): Likewise. * java/decl.c (start_java_method): Likewise. * java/expr.c (push_type, java_stack_pop, java_stack_swap): Likewise. (java_stack_dup, encode_newarray_type): Likewise. (build_java_array_length_access): Likewise. (build_java_check_indexed_type, expand_java_pushc): Likewise. (build_java_soft_divmod, build_invokeinterface): Likewise. * java/java-tree.h (INNER_CLASS_P): Likewise. * java/jcf-parse.c (parse_signature, get_name_constant): Likewise. (give_name_to_class, get_class_constant): Likewise. * java/jcf-write.c (CHECK_PUT, CHECK_OP, get_access_flags): Likewise. (find_constant_index, generate_bytecode_conditional): Likewise. (generate_bytecode_insns, perform_relocations): Likewise. * java/lex.c (java_unget_unicode, java_lex): Likewise. * java/mangle.c (mangle_type, mangle_record_type): Likewise. (mangle_pointer_type, mangle_array_type, init_mangling): Likewise. (finish_mangling): Likewise. * java/parse.h (MARK_FINAL_PARMS): Likewise. * java/parse.y (pop_current_osb, unreachable_stmt_error): Likewise. (obtain_incomplete_type, java_complete_class): Likewise. (java_check_regular_methods, java_complete_expand_method): Likewise. (cut_identifier_in_qualified, check_deprecation): Likewise. (patch_invoke, find_applicable_accessible_methods_list): Likewise. (java_complete_lhs, lookup_name_in_blocks): Likewise. (check_final_variable_indirect_assignment, build_unaryop): Likewise. * java/typeck.c (set_local_type, parse_signature_type): Likewise. (parse_signature_string, build_java_signature): Likewise; (set_java_signature): Likewise. * java/verify.c (type_stack_dup, CHECK_PC_IN_RANGE): Likewise. * c-parse.in (methoddef): Call fatal_error instead of fatal. * objc/objc-act.c (build_ivar_chain): Likewise. * cp/except.c (decl_is_java_type): Likewise. * cp/init.c (build_java_class_ref): Likewise. * cp/init.c (build_new_1): Likewise. * f/com.c (ffecom_init_0): Likewise. * java/class.c (add_method, build_static_field_ref): Likewise. * java/expr.c (build_known_method_ref, expand_invoke): Likewise. * java/jcf-parse.c (get_constant, jcf_parse): Likewise. * java/lex.c (java_new_new_lexer): Likewise. * java/jv-scan.c (main): Likewise. (fatal_error): Renamed from fatal. * dwarfout.c (dwarfout_init): Call fatal_io_error instead of pfatal_with_name. * graph.c (clean_graph_dump_file): Likewise. * profile.c (init_branch_prob): Likewise. * ch/grant.c (write_grant_file): Likewise. * ch/lex.c (init_parse, same_file, yywrap): Likewise. * f/com.c (init_parse): Likewise. * java/jcf-parse.c (yyparse): Likewise. * objc/objc-act.c (objc_init): Likewise. * java/jcf-parse.c (jcf_parse_source): Call fatal_io_error, not fatal. (yyparse): Likewise. * java/jcf-write.c (make_class_file_name, write_classfile): Likewise. * java/lex.c (java_get_line_col): Likewise. * hash.c (hash_allocate): Don't check for failure returns from obstack functions that can't fail. (hash_table_init_n, hash_table_init): Likewise; also now return void. * hash.h (hash_table_init_n, hash_table_init): Now return void. * cp/decl.c (build_typename_type): hash_table_init now returns void. * ch/lang.c (GNU_xref_begin, GNU_xref_end): Deleted. * ch/lex.c (convert_bitstring): Delete check for alloca failure. * config/dsp16xx/dsp16xx.c (dsp16xx_invalid_register_for_compare): Deleted. * config/dsp16xx/dsp16xx.md (unnamed cmphi): Call abort instead of it. * f/com.c (ffecom_decode_include_option_): Make errors non-fatal. * f/lex.c (ffelex_cfelex_, ffelex_get_directive_line_): Likewise. (ffelex_hash_): Likewise. * config/arm/arm.c (arm_override_options): Likewise. * config/avr/avr.c (avr_override_options): Likewise. * config/c4x/c4x.c (c4x_expand_prologue): Likewise. * config/dsp16xx/dsp16xx.c (function_prologue): Likewise. * config/h8300/h8300.c (h8300_init_once): Likewise. * config/mips/mips.c (override_options): Likewise. * config/i386/i386.c (override_options): Likewise, rework. * config/m68k/m68k.c (override_options): Likewise. * cp/decl.c (init_decl_processing): Likewise. * java/jcf-parse.c (load_class): Likewise. * config/dsp16xx/dsp16xx.c (print_operand): Call output_operand_lossage instead of fatal. * config/mips/mips.c (print_operand): Likewise. * java/lex.c (byteswap_init, need_byteswap): Only #ifdef HAVE_ICONV. * objc/objc_act.c (objc_check_decl): Remove unneeded fatal call. (get_object_reference): Likewise. From-SVN: r39444
2001-02-05 00:18:43 +01:00
fatal_io_error ("can't open %s", grant_file_name);
/* write file. Due to problems with record sizes on VAX/VMS
write string to '\n' */
#ifdef VMS
/* do it this way for VMS, cause of problems with
record sizes */
p = gstring->str;
while (*p)
{
p1 = strchr (p, '\n');
c = *++p1;
*p1 = '\0';
fprintf (fb, "%s", p);
*p1 = c;
p = p1;
}
#else
/* faster way to write */
if (write (fileno (fb), gstring->str, gstring->len) < 0)
{
int save_errno = errno;
diagnostic.h (set_internal_error_function): Renamed. * diagnostic.h (set_internal_error_function): Renamed. * toplev.h (internal_error): Renamed from fatal. (pfatal_with_name): Deleted. (fatal_io_error): Now has printf-style arguments. * diagnostic.c (pfatal_with_name): Deleted. (fatal_io_error): Rework to have args in printf-style. (set_internal_error_function): Renamed from set_fatal_function. (internal_error): Renamed from fatal. (error_recursion, fancy_abort): Call internal_error instead of fatal. * dwarf2out.c (get_cfa_from_loc_descr): Likewise. * emit-rtl.c (gen_realpart, gen_imagpart): Likewise. * expr.c (check_max_integer_computation_mode, expand_expr): Likewise. * flow.c (verify_flow_info): Likewise. * config/arm/arm.c (thumb_unexpanded_epilogue): Likewise. * config/mips/mips.c (save_restore_insns): Likewise. * cp/init.c (build_java_class_ref): Likewise. (dsp16xx_reg_class_from_letter): Likewise. (limit_reload_class, double_reg_to_memory): Likewise. (print_operand_address, emit_1600_code_shift): Likewise. (gen_tst_reg, gen_compare_reg): Likewise. * config/m68hc11/m68hc11.c (m68hc11_emit_libcall): Likewise. * cp/decl.c (pushdecl): Likewise. * java/check-init.c (check_init): Likewise. * java/expr.c (java_lang_expand_expr): Likewise. * java/jcf-parse.c (get_constant): Likewise. * java/mangle.c (java_mangle_decl): Likewise. * java/parse.y (make_nested_class_name, java_complete_lhs): Likewise. (operator_string): Likewise. * except.c (duplicate_eh_handlers): Call abort instead of fatal. * flow.c (verify_flow_info): Likewise. * ch/convert.c (convert): Likewise. * ch/except.c (pop_handler, chill_check_no_handlers): Likewise. * ch/expr.c (chill_expand_expr): Likewise. * ch/parse.c (peek_token_, pushback_token, require): Likewise. * config/arm/arm.c (thumb_load_double_from_address): Likewise. * config/avr/avr.c (pttreg_to_str, unique_section): Likewise. (avr_normalize_condition): Likewise. * config/c4x/c4x.c (c4x_emit_libcall, c4x_valid_operands): Likewise. * config/dsp16xx/dsp16xx.c (dsp16xx_reg_class_from_letter): Likewise. (limit_reload_class, double_reg_to_memory): Likewise. (print_operand_address, emit_1600_code_shift): Likewise. (gen_tst_reg, gen_compare_reg): Likewise. * config/m68hc11/m68hc11.c (m68hc11_emit_libcall): Likewise. * cp/decl.c (pushdecl): Likewise. * java/check-init.c (check_init): Likewise. * java/class.c (build_class_ref): Likewise. * java/constants.c (write_constant_pool): Likewise. * java/decl.c (start_java_method): Likewise. * java/expr.c (push_type, java_stack_pop, java_stack_swap): Likewise. (java_stack_dup, encode_newarray_type): Likewise. (build_java_array_length_access): Likewise. (build_java_check_indexed_type, expand_java_pushc): Likewise. (build_java_soft_divmod, build_invokeinterface): Likewise. * java/java-tree.h (INNER_CLASS_P): Likewise. * java/jcf-parse.c (parse_signature, get_name_constant): Likewise. (give_name_to_class, get_class_constant): Likewise. * java/jcf-write.c (CHECK_PUT, CHECK_OP, get_access_flags): Likewise. (find_constant_index, generate_bytecode_conditional): Likewise. (generate_bytecode_insns, perform_relocations): Likewise. * java/lex.c (java_unget_unicode, java_lex): Likewise. * java/mangle.c (mangle_type, mangle_record_type): Likewise. (mangle_pointer_type, mangle_array_type, init_mangling): Likewise. (finish_mangling): Likewise. * java/parse.h (MARK_FINAL_PARMS): Likewise. * java/parse.y (pop_current_osb, unreachable_stmt_error): Likewise. (obtain_incomplete_type, java_complete_class): Likewise. (java_check_regular_methods, java_complete_expand_method): Likewise. (cut_identifier_in_qualified, check_deprecation): Likewise. (patch_invoke, find_applicable_accessible_methods_list): Likewise. (java_complete_lhs, lookup_name_in_blocks): Likewise. (check_final_variable_indirect_assignment, build_unaryop): Likewise. * java/typeck.c (set_local_type, parse_signature_type): Likewise. (parse_signature_string, build_java_signature): Likewise; (set_java_signature): Likewise. * java/verify.c (type_stack_dup, CHECK_PC_IN_RANGE): Likewise. * c-parse.in (methoddef): Call fatal_error instead of fatal. * objc/objc-act.c (build_ivar_chain): Likewise. * cp/except.c (decl_is_java_type): Likewise. * cp/init.c (build_java_class_ref): Likewise. * cp/init.c (build_new_1): Likewise. * f/com.c (ffecom_init_0): Likewise. * java/class.c (add_method, build_static_field_ref): Likewise. * java/expr.c (build_known_method_ref, expand_invoke): Likewise. * java/jcf-parse.c (get_constant, jcf_parse): Likewise. * java/lex.c (java_new_new_lexer): Likewise. * java/jv-scan.c (main): Likewise. (fatal_error): Renamed from fatal. * dwarfout.c (dwarfout_init): Call fatal_io_error instead of pfatal_with_name. * graph.c (clean_graph_dump_file): Likewise. * profile.c (init_branch_prob): Likewise. * ch/grant.c (write_grant_file): Likewise. * ch/lex.c (init_parse, same_file, yywrap): Likewise. * f/com.c (init_parse): Likewise. * java/jcf-parse.c (yyparse): Likewise. * objc/objc-act.c (objc_init): Likewise. * java/jcf-parse.c (jcf_parse_source): Call fatal_io_error, not fatal. (yyparse): Likewise. * java/jcf-write.c (make_class_file_name, write_classfile): Likewise. * java/lex.c (java_get_line_col): Likewise. * hash.c (hash_allocate): Don't check for failure returns from obstack functions that can't fail. (hash_table_init_n, hash_table_init): Likewise; also now return void. * hash.h (hash_table_init_n, hash_table_init): Now return void. * cp/decl.c (build_typename_type): hash_table_init now returns void. * ch/lang.c (GNU_xref_begin, GNU_xref_end): Deleted. * ch/lex.c (convert_bitstring): Delete check for alloca failure. * config/dsp16xx/dsp16xx.c (dsp16xx_invalid_register_for_compare): Deleted. * config/dsp16xx/dsp16xx.md (unnamed cmphi): Call abort instead of it. * f/com.c (ffecom_decode_include_option_): Make errors non-fatal. * f/lex.c (ffelex_cfelex_, ffelex_get_directive_line_): Likewise. (ffelex_hash_): Likewise. * config/arm/arm.c (arm_override_options): Likewise. * config/avr/avr.c (avr_override_options): Likewise. * config/c4x/c4x.c (c4x_expand_prologue): Likewise. * config/dsp16xx/dsp16xx.c (function_prologue): Likewise. * config/h8300/h8300.c (h8300_init_once): Likewise. * config/mips/mips.c (override_options): Likewise. * config/i386/i386.c (override_options): Likewise, rework. * config/m68k/m68k.c (override_options): Likewise. * cp/decl.c (init_decl_processing): Likewise. * java/jcf-parse.c (load_class): Likewise. * config/dsp16xx/dsp16xx.c (print_operand): Call output_operand_lossage instead of fatal. * config/mips/mips.c (print_operand): Likewise. * java/lex.c (byteswap_init, need_byteswap): Only #ifdef HAVE_ICONV. * objc/objc_act.c (objc_check_decl): Remove unneeded fatal call. (get_object_reference): Likewise. From-SVN: r39444
2001-02-05 00:18:43 +01:00
unlink (grant_file_name);
errno = save_errno;
diagnostic.h (set_internal_error_function): Renamed. * diagnostic.h (set_internal_error_function): Renamed. * toplev.h (internal_error): Renamed from fatal. (pfatal_with_name): Deleted. (fatal_io_error): Now has printf-style arguments. * diagnostic.c (pfatal_with_name): Deleted. (fatal_io_error): Rework to have args in printf-style. (set_internal_error_function): Renamed from set_fatal_function. (internal_error): Renamed from fatal. (error_recursion, fancy_abort): Call internal_error instead of fatal. * dwarf2out.c (get_cfa_from_loc_descr): Likewise. * emit-rtl.c (gen_realpart, gen_imagpart): Likewise. * expr.c (check_max_integer_computation_mode, expand_expr): Likewise. * flow.c (verify_flow_info): Likewise. * config/arm/arm.c (thumb_unexpanded_epilogue): Likewise. * config/mips/mips.c (save_restore_insns): Likewise. * cp/init.c (build_java_class_ref): Likewise. (dsp16xx_reg_class_from_letter): Likewise. (limit_reload_class, double_reg_to_memory): Likewise. (print_operand_address, emit_1600_code_shift): Likewise. (gen_tst_reg, gen_compare_reg): Likewise. * config/m68hc11/m68hc11.c (m68hc11_emit_libcall): Likewise. * cp/decl.c (pushdecl): Likewise. * java/check-init.c (check_init): Likewise. * java/expr.c (java_lang_expand_expr): Likewise. * java/jcf-parse.c (get_constant): Likewise. * java/mangle.c (java_mangle_decl): Likewise. * java/parse.y (make_nested_class_name, java_complete_lhs): Likewise. (operator_string): Likewise. * except.c (duplicate_eh_handlers): Call abort instead of fatal. * flow.c (verify_flow_info): Likewise. * ch/convert.c (convert): Likewise. * ch/except.c (pop_handler, chill_check_no_handlers): Likewise. * ch/expr.c (chill_expand_expr): Likewise. * ch/parse.c (peek_token_, pushback_token, require): Likewise. * config/arm/arm.c (thumb_load_double_from_address): Likewise. * config/avr/avr.c (pttreg_to_str, unique_section): Likewise. (avr_normalize_condition): Likewise. * config/c4x/c4x.c (c4x_emit_libcall, c4x_valid_operands): Likewise. * config/dsp16xx/dsp16xx.c (dsp16xx_reg_class_from_letter): Likewise. (limit_reload_class, double_reg_to_memory): Likewise. (print_operand_address, emit_1600_code_shift): Likewise. (gen_tst_reg, gen_compare_reg): Likewise. * config/m68hc11/m68hc11.c (m68hc11_emit_libcall): Likewise. * cp/decl.c (pushdecl): Likewise. * java/check-init.c (check_init): Likewise. * java/class.c (build_class_ref): Likewise. * java/constants.c (write_constant_pool): Likewise. * java/decl.c (start_java_method): Likewise. * java/expr.c (push_type, java_stack_pop, java_stack_swap): Likewise. (java_stack_dup, encode_newarray_type): Likewise. (build_java_array_length_access): Likewise. (build_java_check_indexed_type, expand_java_pushc): Likewise. (build_java_soft_divmod, build_invokeinterface): Likewise. * java/java-tree.h (INNER_CLASS_P): Likewise. * java/jcf-parse.c (parse_signature, get_name_constant): Likewise. (give_name_to_class, get_class_constant): Likewise. * java/jcf-write.c (CHECK_PUT, CHECK_OP, get_access_flags): Likewise. (find_constant_index, generate_bytecode_conditional): Likewise. (generate_bytecode_insns, perform_relocations): Likewise. * java/lex.c (java_unget_unicode, java_lex): Likewise. * java/mangle.c (mangle_type, mangle_record_type): Likewise. (mangle_pointer_type, mangle_array_type, init_mangling): Likewise. (finish_mangling): Likewise. * java/parse.h (MARK_FINAL_PARMS): Likewise. * java/parse.y (pop_current_osb, unreachable_stmt_error): Likewise. (obtain_incomplete_type, java_complete_class): Likewise. (java_check_regular_methods, java_complete_expand_method): Likewise. (cut_identifier_in_qualified, check_deprecation): Likewise. (patch_invoke, find_applicable_accessible_methods_list): Likewise. (java_complete_lhs, lookup_name_in_blocks): Likewise. (check_final_variable_indirect_assignment, build_unaryop): Likewise. * java/typeck.c (set_local_type, parse_signature_type): Likewise. (parse_signature_string, build_java_signature): Likewise; (set_java_signature): Likewise. * java/verify.c (type_stack_dup, CHECK_PC_IN_RANGE): Likewise. * c-parse.in (methoddef): Call fatal_error instead of fatal. * objc/objc-act.c (build_ivar_chain): Likewise. * cp/except.c (decl_is_java_type): Likewise. * cp/init.c (build_java_class_ref): Likewise. * cp/init.c (build_new_1): Likewise. * f/com.c (ffecom_init_0): Likewise. * java/class.c (add_method, build_static_field_ref): Likewise. * java/expr.c (build_known_method_ref, expand_invoke): Likewise. * java/jcf-parse.c (get_constant, jcf_parse): Likewise. * java/lex.c (java_new_new_lexer): Likewise. * java/jv-scan.c (main): Likewise. (fatal_error): Renamed from fatal. * dwarfout.c (dwarfout_init): Call fatal_io_error instead of pfatal_with_name. * graph.c (clean_graph_dump_file): Likewise. * profile.c (init_branch_prob): Likewise. * ch/grant.c (write_grant_file): Likewise. * ch/lex.c (init_parse, same_file, yywrap): Likewise. * f/com.c (init_parse): Likewise. * java/jcf-parse.c (yyparse): Likewise. * objc/objc-act.c (objc_init): Likewise. * java/jcf-parse.c (jcf_parse_source): Call fatal_io_error, not fatal. (yyparse): Likewise. * java/jcf-write.c (make_class_file_name, write_classfile): Likewise. * java/lex.c (java_get_line_col): Likewise. * hash.c (hash_allocate): Don't check for failure returns from obstack functions that can't fail. (hash_table_init_n, hash_table_init): Likewise; also now return void. * hash.h (hash_table_init_n, hash_table_init): Now return void. * cp/decl.c (build_typename_type): hash_table_init now returns void. * ch/lang.c (GNU_xref_begin, GNU_xref_end): Deleted. * ch/lex.c (convert_bitstring): Delete check for alloca failure. * config/dsp16xx/dsp16xx.c (dsp16xx_invalid_register_for_compare): Deleted. * config/dsp16xx/dsp16xx.md (unnamed cmphi): Call abort instead of it. * f/com.c (ffecom_decode_include_option_): Make errors non-fatal. * f/lex.c (ffelex_cfelex_, ffelex_get_directive_line_): Likewise. (ffelex_hash_): Likewise. * config/arm/arm.c (arm_override_options): Likewise. * config/avr/avr.c (avr_override_options): Likewise. * config/c4x/c4x.c (c4x_expand_prologue): Likewise. * config/dsp16xx/dsp16xx.c (function_prologue): Likewise. * config/h8300/h8300.c (h8300_init_once): Likewise. * config/mips/mips.c (override_options): Likewise. * config/i386/i386.c (override_options): Likewise, rework. * config/m68k/m68k.c (override_options): Likewise. * cp/decl.c (init_decl_processing): Likewise. * java/jcf-parse.c (load_class): Likewise. * config/dsp16xx/dsp16xx.c (print_operand): Call output_operand_lossage instead of fatal. * config/mips/mips.c (print_operand): Likewise. * java/lex.c (byteswap_init, need_byteswap): Only #ifdef HAVE_ICONV. * objc/objc_act.c (objc_check_decl): Remove unneeded fatal call. (get_object_reference): Likewise. From-SVN: r39444
2001-02-05 00:18:43 +01:00
fatal_io_error ("can't write to %s", grant_file_name);
}
#endif
fclose (fb);
}
/* handle grant statement */
void
set_default_grant_file ()
{
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
2000-05-09 21:56:01 +02:00
char *p, *tmp;
const char *fname;
if (dump_base_name)
fname = dump_base_name; /* Probably invoked via gcc */
else
{ /* Probably invoked directly (not via gcc) */
fname = asm_file_name;
if (!fname)
fname = main_input_filename ? main_input_filename : input_filename;
if (!fname)
return;
}
p = strrchr (fname, '.');
if (!p)
{
tmp = (char *) alloca (strlen (fname) + 10);
strcpy (tmp, fname);
}
else
{
int i = p - fname;
tmp = (char *) alloca (i + 10);
strncpy (tmp, fname, i);
tmp[i] = '\0';
}
strcat (tmp, ".grt");
default_grant_file = build_string (strlen (tmp), tmp);
grant_file_name = TREE_STRING_POINTER (default_grant_file);
if (gstring == NULL)
gstring = newstring ("");
if (selective_gstring == NULL)
selective_gstring = newstring ("");
}
/* Make DECL visible under the name NAME in the (fake) outermost scope. */
void
push_granted (name, decl)
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 08:43:23 +02:00
tree name ATTRIBUTE_UNUSED, decl ATTRIBUTE_UNUSED;
{
#if 0
IDENTIFIER_GRANTED_VALUE (name) = decl;
granted_decls = tree_cons (name, decl, granted_decls);
#endif
}
void
chill_grant (old_prefix, new_prefix, postfix, forbid)
tree old_prefix;
tree new_prefix;
tree postfix;
tree forbid;
{
if (pass == 1)
{
#if 0
tree old_name = old_prefix == NULL_TREE ? postfix
: get_identifier3 (IDENTIFIER_POINTER (old_prefix),
"!", IDENTIFIER_POINTER (postfix));
tree new_name = new_prefix == NULL_TREE ? postfix
: get_identifier3 (IDENTIFIER_POINTER (new_prefix),
"!", IDENTIFIER_POINTER (postfix));
#endif
tree alias = build_alias_decl (old_prefix, new_prefix, postfix);
CH_DECL_GRANTED (alias) = 1;
DECL_SEIZEFILE (alias) = current_seizefile_name;
TREE_CHAIN (alias) = current_module->granted_decls;
current_module->granted_decls = alias;
if (forbid)
warning ("FORBID is not yet implemented"); /* FIXME */
}
}
/* flag GRANT ALL only once. Avoids search in case of GRANT ALL. */
static int grant_all_seen = 0;
/* check if a decl is in the list of granted decls. */
static int
search_in_list (name, granted_decls)
tree name;
tree granted_decls;
{
tree vars;
for (vars = granted_decls; vars != NULL_TREE; vars = TREE_CHAIN (vars))
if (DECL_SOURCE_LINE (vars))
{
if (DECL_POSTFIX_ALL (vars))
{
grant_all_seen = 1;
return 1;
}
else if (name == DECL_NAME (vars))
return 1;
}
/* not found */
return 0;
}
static int
really_grant_this (decl, granted_decls)
tree decl;
tree granted_decls;
{
/* we never grant labels at module level */
if ((enum chill_tree_code)TREE_CODE (decl) == LABEL_DECL)
return 0;
if (grant_all_seen)
return 1;
switch ((enum chill_tree_code)TREE_CODE (decl))
{
case VAR_DECL:
case BASED_DECL:
case FUNCTION_DECL:
return search_in_list (DECL_NAME (decl), granted_decls);
case ALIAS_DECL:
case CONST_DECL:
return 1;
case TYPE_DECL:
if (CH_DECL_SIGNAL (decl))
return search_in_list (DECL_NAME (decl), granted_decls);
else
return 1;
default:
break;
}
/* this nerver should happen */
c-decl.c (grokdeclarator): Use ISO word. * c-decl.c (grokdeclarator): Use ISO word. * cppinit.c: Remove leading capital from diagnostic messages, as per GNU coding standards. * diagnostic.c: Similarly. * emit-rtl.c: Similarly. * final.c: Similarly. * gcc.c: Similarly. * tradcpp.c: Similarly. * config/arm/arm.c: Similarly. * config/arm/arm.h: Similarly. * config/avr/avr.c: Similarly. * config/avr/avr.h: Similarly. * config/c4x/c4x.c: Similarly. * config/cris/cris.c: Similarly. * config/cris/cris.h: Similarly. * config/d30v/d30v.c: Similarly. * config/dsp16xx/dsp16xx.c: Similarly. * config/dsp16xx/dsp16xx.h: Similarly. * config/h8300/h8300.c: Similarly. * config/i386/i386.c: Similarly. * config/i386/xm-djgpp.h: Similarly. * config/i960/i960.h: Similarly. * config/m32r/m32r.c: Similarly. * config/m68hc11/m68hc11.c: Similarly. * config/m88k/m88k.c: Similarly. * config/m88k/m88k.h: Similarly. * config/mcore/mcore.c: Similarly. * config/mcore/mcore.h: Similarly. * config/mips/mips.c: Similarly. * config/mmix/mmix.c: Similarly. * config/pa/pa.c: Similarly. * config/rs6000/rs6000.c: Similarly. * config/rs6000/sysv4.h: Similarly. * config/s390/s390.c: Similarly. * config/sparc/sparc.c: Similarly. * config/v850/v850-c.c: Similarly. * config/v850/v850.c: Similarly. ch: * actions.c: Remove leading capital from diagnostic messages, as per GNU coding standards. * decl.c: Similarly. * expr.c: Similarly. * inout.c: Similarly. * lang.c: Similarly. * loop.c: Similarly. * nloop.c: Similarly. * parse.c: Similarly. * satisfy.c: Similarly. * tasking.c: Similarly. * tree.c: Similarly. * typeck.c: Similarly. cp: * typeck2.c: Remove leading capital from diagnostic messages, as per GNU coding standards. f: * com.c: Remove leading capital from diagnostic messages, as per GNU coding standards. * g77spec.c: Similarly. * lex.c: Similarly. java: * expr.c: Remove leading capital from diagnostic messages, as per GNU coding standards. * jcf-io.c: Similarly. * jcf-parse.c: Similarly. * jv-scan.c: Similarly. * jvspec.c: Similarly. * mangle.c: Similarly. From-SVN: r47558
2001-12-03 20:15:19 +01:00
error_with_decl (decl, "function \"really_grant_this\" called for `%s'");
return 1;
}
/* Write a SPEC MODULE using the declarations in the list DECLS. */
static int header_written = 0;
#define HEADER_TEMPLATE "--\n-- WARNING: this file was generated by\n\
-- GNUCHILL version %s\n-- based on gcc version %s\n--\n"
void
write_spec_module (decls, granted_decls)
tree decls;
tree granted_decls;
{
tree vars;
char *hdr;
if (granted_decls == NULL_TREE)
return;
use_seizefile_name = NULL_TREE;
if (!header_written)
{
hdr = (char*) alloca (strlen (gnuchill_version)
+ strlen (version_string)
+ sizeof (HEADER_TEMPLATE) /* includes \0 */);
sprintf (hdr, HEADER_TEMPLATE, gnuchill_version, version_string);
APPEND (gstring, hdr);
header_written = 1;
}
APPEND (gstring, IDENTIFIER_POINTER (current_module->name));
APPEND (gstring, ": SPEC MODULE\n");
/* first of all we look for GRANT ALL specified */
search_in_list (NULL_TREE, granted_decls);
if (grant_all_seen != 0)
{
/* write all identifiers to grant file */
for (vars = decls; vars != NULL_TREE; vars = TREE_CHAIN (vars))
{
if (DECL_SOURCE_LINE (vars))
{
if (DECL_NAME (vars))
{
if ((TREE_CODE (vars) != CONST_DECL || !CH_DECL_ENUM (vars)) &&
really_grant_this (vars, granted_decls))
grant_one_decl (vars);
}
else if (DECL_POSTFIX_ALL (vars))
{
static int restricted = 0;
if (DECL_SEIZEFILE (vars) != use_seizefile_name
&& DECL_SEIZEFILE (vars))
{
use_seizefile_name = DECL_SEIZEFILE (vars);
restricted = use_seizefile_name == NULL_TREE ? 0 : CH_USE_SEIZEFILE_RESTRICTED (use_seizefile_name);
if (! restricted)
grant_use_seizefile (IDENTIFIER_POINTER (use_seizefile_name));
mark_use_seizefile_written (use_seizefile_name);
}
if (! restricted)
{
APPEND (gstring, "SEIZE ALL;\n");
}
}
}
}
}
else
{
seizefile_list *wrk, *x;
/* do a selective write to the grantfile. This will reduce the
size of a grantfile and speed up compilation of
modules depending on this grant file */
if (selective_gstring == 0)
selective_gstring = newstring ("");
/* first of all process all SEIZE ALL's */
for (vars = decls; vars != NULL_TREE; vars = TREE_CHAIN (vars))
{
if (DECL_SOURCE_LINE (vars)
&& DECL_POSTFIX_ALL (vars))
grant_seized_identifier (vars);
}
/* now walk through granted decls */
granted_decls = nreverse (granted_decls);
for (vars = granted_decls; vars != NULL_TREE; vars = TREE_CHAIN (vars))
{
grant_one_decl_selective (vars, decls);
}
granted_decls = nreverse (granted_decls);
/* append all SEIZES */
wrk = selective_seizes;
while (wrk != 0)
{
x = wrk->next;
APPEND (gstring, wrk->seizes->str);
FREE (wrk->seizes);
free (wrk);
wrk = x;
}
selective_seizes = 0;
/* append generated string to grant file */
APPEND (gstring, selective_gstring->str);
FREE (selective_gstring);
selective_gstring = NULL;
}
for (vars = granted_decls; vars != NULL_TREE; vars = TREE_CHAIN (vars))
if (DECL_SOURCE_LINE (vars))
{
MYSTRING *mode_string = decode_prefix_rename (vars);
APPEND (gstring, "GRANT ");
APPEND (gstring, mode_string->str);
FREE (mode_string);
APPEND (gstring, ";\n");
}
APPEND (gstring, "END;\n");
spec_module_generated = 1;
/* initialize this for next spec module */
grant_all_seen = 0;
}
/*
* after the dark comes, after all of the modules are at rest,
* we tuck the compilation unit to bed... A story in pass 1
* and a hug-and-a-kiss goodnight in pass 2.
*/
void
chill_finish_compile ()
{
tree global_list;
tree chill_init_function;
tasking_setup ();
build_enum_tables ();
/* We only need an initializer function for the source file if
a) there's module-level code to be called, or
b) tasking-related stuff to be initialized. */
if (module_init_list != NULL_TREE || tasking_list != NULL_TREE)
{
extern tree initializer_type;
static tree chill_init_name;
/* declare the global initializer list */
global_list = do_decl (get_identifier ("_ch_init_list"),
build_chill_pointer_type (initializer_type), 1, 0,
NULL_TREE, 1);
/* Now, we're building the function which is the *real*
constructor - if there's any module-level code in this
source file, the compiler puts the file's initializer entry
onto the global initializer list, so each module's body code
will eventually get called, after all of the processes have
been started up. */
/* This is better done in pass 2 (when first_global_object_name
may have been set), but that is too late.
Perhaps rewrite this so nothing is done in pass 1. */
if (pass == 1)
{
/* If we don't do this spoof, we get the name of the first
tasking_code variable, and not the file name. */
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
2000-05-09 21:56:01 +02:00
char *q;
const char *tmp = first_global_object_name;
first_global_object_name = NULL;
chill_init_name = get_file_function_name ('I');
first_global_object_name = tmp;
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
2000-05-09 21:56:01 +02:00
/* strip off the file's extension, if any. */
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
2000-05-09 21:56:01 +02:00
q = strrchr (IDENTIFIER_POINTER (chill_init_name), '.');
if (q)
*q = '\0';
}
start_chill_function (chill_init_name, void_type_node, NULL_TREE,
NULL_TREE, NULL_TREE);
TREE_PUBLIC (current_function_decl) = 1;
chill_init_function = current_function_decl;
/* For each module that we've compiled, that had module-level
code to be called, add its entry to the global initializer
list. */
if (pass == 2)
{
tree module_init;
for (module_init = module_init_list;
module_init != NULL_TREE;
module_init = TREE_CHAIN (module_init))
{
tree init_entry = TREE_VALUE (module_init);
/* assign module_entry.next := _ch_init_list; */
expand_expr_stmt (
build_chill_modify_expr (
build_component_ref (init_entry,
get_identifier ("__INIT_NEXT")),
global_list));
/* assign _ch_init_list := &module_entry; */
expand_expr_stmt (
build_chill_modify_expr (global_list,
build1 (ADDR_EXPR, ptr_type_node, init_entry)));
}
}
tasking_registry ();
make_decl_rtl (current_function_decl, NULL, 1);
finish_chill_function ();
if (pass == 2 && targetm.have_ctors_dtors)
(* targetm.asm_out.constructor)
(XEXP (DECL_RTL (chill_init_function), 0), DEFAULT_INIT_PRIORITY);
/* ready now to link decls onto this list in pass 2. */
module_init_list = NULL_TREE;
tasking_list = NULL_TREE;
}
}