gcc/gcc/ch/tree.c

295 lines
8.2 KiB
C
Raw Normal View History

/* Language-dependent node constructors for parse phase of GNU compiler.
builtins.c (c_strlen): Use size_diffop and return ssizetype value. * builtins.c (c_strlen): Use size_diffop and return ssizetype value. (expand_builtin_strcpy): Pass correct type to size_binop. (expand_builtin_strcmp): Likewise. Clean up conditional structure. * c-decl.c (init_decl_processing): Don't call set_sizetype twice. (complete_array_type): Don't use size_binop for MAXINDEX. * c-typeck.c (c_sizeof): Use size_one_node and TYPE_SIZE_UNIT. (c_sizeof_nowarn, c_size_in_bytes): Likewise. (c_alignof): Use size_one_node. (build_unary_op): Pass arg of proper type to size_binop. (really_start_incremental_init, push_init_level): Use sizetype for constructor{,_bit,_unfilled}_index. (pop_init_label, output_init_element): Likewise. (output_pending_init_elements, process_init_element): Likewise. * calls.c (compute_argument_block_size): Field VAR is ssizetype. * expr.c (store_expr): Use size_int. (store_constructor): Use proper types for size_binop args. (get_inner_reference, expand_expr, case ARRAY_REF): Likewise. (expand_expr_unaligned): Likewise. (string_contant): Return object of sizetype. * expr.h (SUB_PARM_SIZE): Call size_diffop and pass proper types. (ARGS_SIZE_RTX): Call ARGS_SIZE_TREE. (ARGS_SIZE_TREE): Pass proper types to size_binop. * fold-const.c (int_const_binop): Refine when size_int is called. (fold_convert): Likewise. (size_int_wide): Rework to take KIND as arg, only take low order bits, handle new sizetype_tab datatype, and chain entries in size_table. (size_int_type_wide): New function. (size_binop): Validate types of arguments. (ssize_binop): Deleted. (size_diffop): New function. (extract_muldiv): Only fold division into multiplication for sizetypes. * function.c (assign_parms): Use size_diffop and make sure VAR field is of ssizetype; also pass proper type to size_binop. (locate_and_pad_parm, pad_to_arg_alignment): Likewise. (round_down): Deleted from here. * store-layout.c (sizetype_tab): Now an array. (sizetype_set, early_root_list): New variables. (variable_size): Use size_one_node. (round_up): Pass proper type to size_binop. (round_down): Moved to here and corrected as above. (layout_record): Pass proper arg types to size_binop. (layout_type): Likewise. If sizetype_set is zero, record the type just laid out. (make_unsigned_type): Don't call set_sizetype; (make_signed_type): Likewise; also, call fixup_signed_type. (initialize_sizetypes): New function. (set_sizetype): Make copy of types, set TYPE_IS_SIZETYPE, and set name of bitsizetype to "bit_size_type". Fix up type of sizes of all types made before call. * tm.texi (ROUND_TYPE_SIZE_UNIT): New macro. * tree.c (fix_sizetype): Deleted. (build_common_tree_nodes): Call initialize_sizetypes. (build_common_tree_nodes_2): Don't call fix_sizetype. * tree.h (TYPE_IS_SIZETYPE): New macro. (initialize_sizetype): New declaration. (enum size_type_kind): New type. (struct sizetype_tab): Deleted. (sizetype_tab): Now array; adjust sizetype macros. (size_diffop, size_int_type_wide): New functions. (size_int_wide): Change number of args and type; access macros changed. (ssize_int, sbitsize_int): New macros. * config/i960/i960.h (ROUND_TYPE_SIZE): Use size_int. (ROUND_TYPE_SIZE_UNIT): New macro. * ch/actions.c (chill_convert_for_assignment): Don't use size_binop for things that aren't sizes. (expand_varying_length_assignment): Likewise. * ch/convert.c (digest_array_tuple, convert): Likewise. * ch/typeck.c (build_chill_slice, smash_dummy_type): Likewise. (build_chill_slice_with_range): Likewise. (build_chill_slice_with_length): Likewise. (build_array_from_set): Adjust types for size_binop. * ch/expr.c (build_concat_expr, build_chill_repetition_op): Likewise. (build_chill_sizeof): Use TYPE_SIZE_UNIT. * ch/tree.c (build_string_type): Pass proper type to size_binop. * cp/class.c (dfs_build_vtable_offset_vtbl_entries): Don't use size_binop on things that are not sizes; ssize_binop deleted. Call size_diffop when appropriate. (dfs_build_vcall_offset_vtbl_entries): Likewise. (build_primary_vtable, build_secondary_vtable): Likewise. (dfs_set_offset_for_unshared_vbases, dfs_modify_vtables): Likewise. Variable I is HOST_WIDE_INT. (get_vfield_offset): Pass proper types to size_binop. (size_extra_vtbl_entries, layout_virtual_bases): Likewise. (finish_struct_1): Likewise. (skip_rtti_stuff): Arg N is now pointer to signed. (layout_class_type): Use size_zero_node. * cp/cp-tree.h (skip_rtti_stuff): Arg N is pointer to signed. * cp/cvt.c (cp_convert_to_pointer): Pass proper types to size_binop. * cp/decl.c (complete_arry_type): Pass proper types to size_binop. (xref_basetypes): BINFO_OFFSET is sizetype. * cp/error.c (dump_expr): Don't use size_binop non-sizes. * cp/expr.c (cplus_expand_constant): Pass proper types to size_binop. * cp/init.c (construct_virtual_bases): Fix type error. (build_vec_delete_1): Pass proper type to size_binop and don't fold result. * cp/lex.c (cp_make_lang_type): BINFO_OFFSET is sizetype. * cp/rtti.c (get_base_offset): Pass proper type to size_binop. * cp/search.c (dfs_find_vbases): Fix type error. (expand_upcast_fixups): Arg to skip_rtti_stuff is pointer to signed. (dfs_get_vbase_types): BINFO_OFFSET is sizetype. * cp/tree.c (debug_binfo): Variable N is signed. Use HOST_WIDE_INT_PRINT_DEC. * cp/typeck.c (comptypes): sizetype is same as equivalent integer type. (c_sizeof, c_sizeof_nowarn, expr_sizeof): Use TYPE_SIZE_UNIT, size_one_node and size_zero_node. (c_alignof): Use size_one_node. (build_component_addr): Pass proper types to size_binop. (expand_ptrmemfunc_cst): Don't use size_binop on non-sizes. * f/com.c (ffecom_arrayref_): Convert args to size_binop to proper type. (ffecom_tree_canonize_ptr_): Don't use size_binop for non-sizes. (ffecom_tree_canonize_ref_): Likewise. (type_for_mode): Handle TImode. * f/ste.c (ffeste_io_dofio_, ffeste_io_douio_): Use TYPE_SIZE_UNIT. (ffeste_io_ciclist_): Likewise. * java/expr.c (build_java_ret): Pass proper type to size_binop. From-SVN: r32225
2000-02-27 22:39:40 +01:00
Copyright (C) 1992, 1993, 1994, 1998, 1999, 2000
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 "obstack.h"
#include "tree.h"
#include "ch-tree.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"
extern struct obstack permanent_obstack;
/* This is special sentinel used to communicate from build_string_type
to layout_chill_range_type for the index range of a string. */
tree string_index_type_dummy;
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 tree make_powerset_type PARAMS ((tree));
/* Build a chill string type.
For a character string, ELT_TYPE==char_type_node;
for a bit-string, ELT_TYPE==boolean_type_node. */
tree
build_string_type (elt_type, length)
tree elt_type;
tree length;
{
register tree t;
if (TREE_CODE (elt_type) == ERROR_MARK || TREE_CODE (length) == ERROR_MARK)
return error_mark_node;
/* Allocate the array after the pointer type,
in case we free it in type_hash_canon. */
if (pass > 0 && TREE_CODE (length) == INTEGER_CST
&& ! tree_int_cst_equal (length, integer_zero_node)
&& compare_int_csts (LT_EXPR, TYPE_MAX_VALUE (chill_unsigned_type_node),
length))
{
error ("string length > UPPER (UINT)");
length = integer_one_node;
}
/* Subtract 1 from length to get max index value.
Note we cannot use size_binop for pass 1 expressions. */
if (TREE_CODE (length) == INTEGER_CST || pass != 1)
builtins.c (c_strlen): Use size_diffop and return ssizetype value. * builtins.c (c_strlen): Use size_diffop and return ssizetype value. (expand_builtin_strcpy): Pass correct type to size_binop. (expand_builtin_strcmp): Likewise. Clean up conditional structure. * c-decl.c (init_decl_processing): Don't call set_sizetype twice. (complete_array_type): Don't use size_binop for MAXINDEX. * c-typeck.c (c_sizeof): Use size_one_node and TYPE_SIZE_UNIT. (c_sizeof_nowarn, c_size_in_bytes): Likewise. (c_alignof): Use size_one_node. (build_unary_op): Pass arg of proper type to size_binop. (really_start_incremental_init, push_init_level): Use sizetype for constructor{,_bit,_unfilled}_index. (pop_init_label, output_init_element): Likewise. (output_pending_init_elements, process_init_element): Likewise. * calls.c (compute_argument_block_size): Field VAR is ssizetype. * expr.c (store_expr): Use size_int. (store_constructor): Use proper types for size_binop args. (get_inner_reference, expand_expr, case ARRAY_REF): Likewise. (expand_expr_unaligned): Likewise. (string_contant): Return object of sizetype. * expr.h (SUB_PARM_SIZE): Call size_diffop and pass proper types. (ARGS_SIZE_RTX): Call ARGS_SIZE_TREE. (ARGS_SIZE_TREE): Pass proper types to size_binop. * fold-const.c (int_const_binop): Refine when size_int is called. (fold_convert): Likewise. (size_int_wide): Rework to take KIND as arg, only take low order bits, handle new sizetype_tab datatype, and chain entries in size_table. (size_int_type_wide): New function. (size_binop): Validate types of arguments. (ssize_binop): Deleted. (size_diffop): New function. (extract_muldiv): Only fold division into multiplication for sizetypes. * function.c (assign_parms): Use size_diffop and make sure VAR field is of ssizetype; also pass proper type to size_binop. (locate_and_pad_parm, pad_to_arg_alignment): Likewise. (round_down): Deleted from here. * store-layout.c (sizetype_tab): Now an array. (sizetype_set, early_root_list): New variables. (variable_size): Use size_one_node. (round_up): Pass proper type to size_binop. (round_down): Moved to here and corrected as above. (layout_record): Pass proper arg types to size_binop. (layout_type): Likewise. If sizetype_set is zero, record the type just laid out. (make_unsigned_type): Don't call set_sizetype; (make_signed_type): Likewise; also, call fixup_signed_type. (initialize_sizetypes): New function. (set_sizetype): Make copy of types, set TYPE_IS_SIZETYPE, and set name of bitsizetype to "bit_size_type". Fix up type of sizes of all types made before call. * tm.texi (ROUND_TYPE_SIZE_UNIT): New macro. * tree.c (fix_sizetype): Deleted. (build_common_tree_nodes): Call initialize_sizetypes. (build_common_tree_nodes_2): Don't call fix_sizetype. * tree.h (TYPE_IS_SIZETYPE): New macro. (initialize_sizetype): New declaration. (enum size_type_kind): New type. (struct sizetype_tab): Deleted. (sizetype_tab): Now array; adjust sizetype macros. (size_diffop, size_int_type_wide): New functions. (size_int_wide): Change number of args and type; access macros changed. (ssize_int, sbitsize_int): New macros. * config/i960/i960.h (ROUND_TYPE_SIZE): Use size_int. (ROUND_TYPE_SIZE_UNIT): New macro. * ch/actions.c (chill_convert_for_assignment): Don't use size_binop for things that aren't sizes. (expand_varying_length_assignment): Likewise. * ch/convert.c (digest_array_tuple, convert): Likewise. * ch/typeck.c (build_chill_slice, smash_dummy_type): Likewise. (build_chill_slice_with_range): Likewise. (build_chill_slice_with_length): Likewise. (build_array_from_set): Adjust types for size_binop. * ch/expr.c (build_concat_expr, build_chill_repetition_op): Likewise. (build_chill_sizeof): Use TYPE_SIZE_UNIT. * ch/tree.c (build_string_type): Pass proper type to size_binop. * cp/class.c (dfs_build_vtable_offset_vtbl_entries): Don't use size_binop on things that are not sizes; ssize_binop deleted. Call size_diffop when appropriate. (dfs_build_vcall_offset_vtbl_entries): Likewise. (build_primary_vtable, build_secondary_vtable): Likewise. (dfs_set_offset_for_unshared_vbases, dfs_modify_vtables): Likewise. Variable I is HOST_WIDE_INT. (get_vfield_offset): Pass proper types to size_binop. (size_extra_vtbl_entries, layout_virtual_bases): Likewise. (finish_struct_1): Likewise. (skip_rtti_stuff): Arg N is now pointer to signed. (layout_class_type): Use size_zero_node. * cp/cp-tree.h (skip_rtti_stuff): Arg N is pointer to signed. * cp/cvt.c (cp_convert_to_pointer): Pass proper types to size_binop. * cp/decl.c (complete_arry_type): Pass proper types to size_binop. (xref_basetypes): BINFO_OFFSET is sizetype. * cp/error.c (dump_expr): Don't use size_binop non-sizes. * cp/expr.c (cplus_expand_constant): Pass proper types to size_binop. * cp/init.c (construct_virtual_bases): Fix type error. (build_vec_delete_1): Pass proper type to size_binop and don't fold result. * cp/lex.c (cp_make_lang_type): BINFO_OFFSET is sizetype. * cp/rtti.c (get_base_offset): Pass proper type to size_binop. * cp/search.c (dfs_find_vbases): Fix type error. (expand_upcast_fixups): Arg to skip_rtti_stuff is pointer to signed. (dfs_get_vbase_types): BINFO_OFFSET is sizetype. * cp/tree.c (debug_binfo): Variable N is signed. Use HOST_WIDE_INT_PRINT_DEC. * cp/typeck.c (comptypes): sizetype is same as equivalent integer type. (c_sizeof, c_sizeof_nowarn, expr_sizeof): Use TYPE_SIZE_UNIT, size_one_node and size_zero_node. (c_alignof): Use size_one_node. (build_component_addr): Pass proper types to size_binop. (expand_ptrmemfunc_cst): Don't use size_binop on non-sizes. * f/com.c (ffecom_arrayref_): Convert args to size_binop to proper type. (ffecom_tree_canonize_ptr_): Don't use size_binop for non-sizes. (ffecom_tree_canonize_ref_): Likewise. (type_for_mode): Handle TImode. * f/ste.c (ffeste_io_dofio_, ffeste_io_douio_): Use TYPE_SIZE_UNIT. (ffeste_io_ciclist_): Likewise. * java/expr.c (build_java_ret): Pass proper type to size_binop. From-SVN: r32225
2000-02-27 22:39:40 +01:00
length = size_binop (MINUS_EXPR, length, size_one_node);
else
builtins.c (c_strlen): Use size_diffop and return ssizetype value. * builtins.c (c_strlen): Use size_diffop and return ssizetype value. (expand_builtin_strcpy): Pass correct type to size_binop. (expand_builtin_strcmp): Likewise. Clean up conditional structure. * c-decl.c (init_decl_processing): Don't call set_sizetype twice. (complete_array_type): Don't use size_binop for MAXINDEX. * c-typeck.c (c_sizeof): Use size_one_node and TYPE_SIZE_UNIT. (c_sizeof_nowarn, c_size_in_bytes): Likewise. (c_alignof): Use size_one_node. (build_unary_op): Pass arg of proper type to size_binop. (really_start_incremental_init, push_init_level): Use sizetype for constructor{,_bit,_unfilled}_index. (pop_init_label, output_init_element): Likewise. (output_pending_init_elements, process_init_element): Likewise. * calls.c (compute_argument_block_size): Field VAR is ssizetype. * expr.c (store_expr): Use size_int. (store_constructor): Use proper types for size_binop args. (get_inner_reference, expand_expr, case ARRAY_REF): Likewise. (expand_expr_unaligned): Likewise. (string_contant): Return object of sizetype. * expr.h (SUB_PARM_SIZE): Call size_diffop and pass proper types. (ARGS_SIZE_RTX): Call ARGS_SIZE_TREE. (ARGS_SIZE_TREE): Pass proper types to size_binop. * fold-const.c (int_const_binop): Refine when size_int is called. (fold_convert): Likewise. (size_int_wide): Rework to take KIND as arg, only take low order bits, handle new sizetype_tab datatype, and chain entries in size_table. (size_int_type_wide): New function. (size_binop): Validate types of arguments. (ssize_binop): Deleted. (size_diffop): New function. (extract_muldiv): Only fold division into multiplication for sizetypes. * function.c (assign_parms): Use size_diffop and make sure VAR field is of ssizetype; also pass proper type to size_binop. (locate_and_pad_parm, pad_to_arg_alignment): Likewise. (round_down): Deleted from here. * store-layout.c (sizetype_tab): Now an array. (sizetype_set, early_root_list): New variables. (variable_size): Use size_one_node. (round_up): Pass proper type to size_binop. (round_down): Moved to here and corrected as above. (layout_record): Pass proper arg types to size_binop. (layout_type): Likewise. If sizetype_set is zero, record the type just laid out. (make_unsigned_type): Don't call set_sizetype; (make_signed_type): Likewise; also, call fixup_signed_type. (initialize_sizetypes): New function. (set_sizetype): Make copy of types, set TYPE_IS_SIZETYPE, and set name of bitsizetype to "bit_size_type". Fix up type of sizes of all types made before call. * tm.texi (ROUND_TYPE_SIZE_UNIT): New macro. * tree.c (fix_sizetype): Deleted. (build_common_tree_nodes): Call initialize_sizetypes. (build_common_tree_nodes_2): Don't call fix_sizetype. * tree.h (TYPE_IS_SIZETYPE): New macro. (initialize_sizetype): New declaration. (enum size_type_kind): New type. (struct sizetype_tab): Deleted. (sizetype_tab): Now array; adjust sizetype macros. (size_diffop, size_int_type_wide): New functions. (size_int_wide): Change number of args and type; access macros changed. (ssize_int, sbitsize_int): New macros. * config/i960/i960.h (ROUND_TYPE_SIZE): Use size_int. (ROUND_TYPE_SIZE_UNIT): New macro. * ch/actions.c (chill_convert_for_assignment): Don't use size_binop for things that aren't sizes. (expand_varying_length_assignment): Likewise. * ch/convert.c (digest_array_tuple, convert): Likewise. * ch/typeck.c (build_chill_slice, smash_dummy_type): Likewise. (build_chill_slice_with_range): Likewise. (build_chill_slice_with_length): Likewise. (build_array_from_set): Adjust types for size_binop. * ch/expr.c (build_concat_expr, build_chill_repetition_op): Likewise. (build_chill_sizeof): Use TYPE_SIZE_UNIT. * ch/tree.c (build_string_type): Pass proper type to size_binop. * cp/class.c (dfs_build_vtable_offset_vtbl_entries): Don't use size_binop on things that are not sizes; ssize_binop deleted. Call size_diffop when appropriate. (dfs_build_vcall_offset_vtbl_entries): Likewise. (build_primary_vtable, build_secondary_vtable): Likewise. (dfs_set_offset_for_unshared_vbases, dfs_modify_vtables): Likewise. Variable I is HOST_WIDE_INT. (get_vfield_offset): Pass proper types to size_binop. (size_extra_vtbl_entries, layout_virtual_bases): Likewise. (finish_struct_1): Likewise. (skip_rtti_stuff): Arg N is now pointer to signed. (layout_class_type): Use size_zero_node. * cp/cp-tree.h (skip_rtti_stuff): Arg N is pointer to signed. * cp/cvt.c (cp_convert_to_pointer): Pass proper types to size_binop. * cp/decl.c (complete_arry_type): Pass proper types to size_binop. (xref_basetypes): BINFO_OFFSET is sizetype. * cp/error.c (dump_expr): Don't use size_binop non-sizes. * cp/expr.c (cplus_expand_constant): Pass proper types to size_binop. * cp/init.c (construct_virtual_bases): Fix type error. (build_vec_delete_1): Pass proper type to size_binop and don't fold result. * cp/lex.c (cp_make_lang_type): BINFO_OFFSET is sizetype. * cp/rtti.c (get_base_offset): Pass proper type to size_binop. * cp/search.c (dfs_find_vbases): Fix type error. (expand_upcast_fixups): Arg to skip_rtti_stuff is pointer to signed. (dfs_get_vbase_types): BINFO_OFFSET is sizetype. * cp/tree.c (debug_binfo): Variable N is signed. Use HOST_WIDE_INT_PRINT_DEC. * cp/typeck.c (comptypes): sizetype is same as equivalent integer type. (c_sizeof, c_sizeof_nowarn, expr_sizeof): Use TYPE_SIZE_UNIT, size_one_node and size_zero_node. (c_alignof): Use size_one_node. (build_component_addr): Pass proper types to size_binop. (expand_ptrmemfunc_cst): Don't use size_binop on non-sizes. * f/com.c (ffecom_arrayref_): Convert args to size_binop to proper type. (ffecom_tree_canonize_ptr_): Don't use size_binop for non-sizes. (ffecom_tree_canonize_ref_): Likewise. (type_for_mode): Handle TImode. * f/ste.c (ffeste_io_dofio_, ffeste_io_douio_): Use TYPE_SIZE_UNIT. (ffeste_io_ciclist_): Likewise. * java/expr.c (build_java_ret): Pass proper type to size_binop. From-SVN: r32225
2000-02-27 22:39:40 +01:00
length = build (MINUS_EXPR, sizetype, length, size_one_node);
t = make_node (elt_type == boolean_type_node ? SET_TYPE : ARRAY_TYPE);
TREE_TYPE (t) = elt_type;
MARK_AS_STRING_TYPE (t);
TYPE_DOMAIN (t) = build_chill_range_type (string_index_type_dummy,
integer_zero_node, length);
if (pass == 1 && TREE_CODE (length) == INTEGER_CST)
TYPE_DOMAIN (t) = layout_chill_range_type (TYPE_DOMAIN (t), 0);
if (pass != 1
|| (TREE_CODE (length) == INTEGER_CST && TYPE_SIZE (elt_type)))
{
if (TREE_CODE (t) == SET_TYPE)
t = layout_powerset_type (t);
else
t = layout_chill_array_type (t);
}
return t;
}
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 tree
make_powerset_type (domain)
tree domain;
{
tree t = make_node (SET_TYPE);
TREE_TYPE (t) = boolean_type_node;
TYPE_DOMAIN (t) = domain;
return t;
}
/* Used to layout both bitstring and powerset types. */
tree
layout_powerset_type (type)
tree type;
{
tree domain = TYPE_DOMAIN (type);
if (! discrete_type_p (domain))
{
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 ("can only build a powerset from a discrete mode");
return error_mark_node;
}
if (TREE_CODE (TYPE_MAX_VALUE (domain)) == ERROR_MARK ||
TREE_CODE (TYPE_MIN_VALUE (domain)) == ERROR_MARK)
return error_mark_node;
if (TREE_CODE (TYPE_MAX_VALUE (domain)) != INTEGER_CST
|| TREE_CODE (TYPE_MIN_VALUE (domain)) != INTEGER_CST)
{
if (CH_BOOLS_TYPE_P (type))
error ("non-constant bitstring size invalid");
else
error ("non-constant powerset size invalid");
return error_mark_node;
}
if (TYPE_SIZE (type) == 0)
layout_type (type);
return type;
}
/* Build a SET_TYPE node whose elements are from the set of values
in TYPE. TYPE must be a discrete mode; we check for that here. */
tree
build_powerset_type (type)
tree type;
{
tree t = make_powerset_type (type);
if (pass != 1)
t = layout_powerset_type (t);
return t;
}
tree
build_bitstring_type (size_in_bits)
tree size_in_bits;
{
return build_string_type (boolean_type_node, size_in_bits);
}
/* Return get_identifier (the concatenations of part1, part2, and part3). */
tree
get_identifier3 (part1, part2, part3)
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 *part1, *part2, *part3;
{
char *buf = (char*)
alloca (strlen(part1) + strlen(part2) + strlen(part3) + 1);
sprintf (buf, "%s%s%s", part1, part2, part3);
return get_identifier (buf);
}
/* Build an ALIAS_DECL for the prefix renamed clause:
(OLD_PREFIX -> NEW_PREFIX) ! POSTFIX. */
tree
build_alias_decl (old_prefix, new_prefix, postfix)
tree old_prefix, new_prefix, postfix;
{
tree decl = make_node (ALIAS_DECL);
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 *postfix_pointer = IDENTIFIER_POINTER (postfix);
int postfix_length = IDENTIFIER_LENGTH (postfix);
int old_length = old_prefix ? IDENTIFIER_LENGTH(old_prefix) : 0;
int new_length = new_prefix ? IDENTIFIER_LENGTH(new_prefix) : 0;
char *buf = (char*) alloca (old_length + new_length + postfix_length + 3);
/* Convert (OP->NP)!P!ALL to (OP!P->NP!P)!ALL */
if (postfix_length > 1 && postfix_pointer[postfix_length-1] == '*')
{
int chopped_length = postfix_length - 2; /* Without final "!*" */
if (old_prefix)
sprintf (buf, "%s!%.*s", IDENTIFIER_POINTER (old_prefix),
chopped_length, postfix_pointer);
else
sprintf (buf, "%.*s", chopped_length, postfix_pointer);
old_prefix = get_identifier (buf);
if (new_prefix)
sprintf (buf, "%s!%.*s", IDENTIFIER_POINTER (new_prefix),
chopped_length, postfix_pointer);
else
sprintf (buf, "%.*s", chopped_length, postfix_pointer);
new_prefix = get_identifier (buf);
postfix = ALL_POSTFIX;
}
DECL_OLD_PREFIX (decl) = old_prefix;
DECL_NEW_PREFIX (decl) = new_prefix;
DECL_POSTFIX (decl) = postfix;
if (DECL_POSTFIX_ALL (decl))
DECL_NAME (decl) = NULL_TREE;
else if (new_prefix == NULL_TREE)
DECL_NAME (decl) = postfix;
else
DECL_NAME (decl) = get_identifier3 (IDENTIFIER_POINTER (new_prefix),
"!", IDENTIFIER_POINTER (postfix));
return decl;
}
/* Return the "old name string" of an ALIAS_DECL. */
tree
decl_old_name (decl)
tree decl;
{
if (DECL_OLD_PREFIX (decl) == NULL_TREE)
return DECL_POSTFIX (decl);
return get_identifier3 (IDENTIFIER_POINTER (DECL_OLD_PREFIX (decl)),
"!", IDENTIFIER_POINTER (DECL_POSTFIX (decl)));
}
/* See if OLD_NAME (an identifier) matches the OLD_PREFIX!POSTFIX
of ALIAS. If so, return the corresponding NEW_NEW!POSTFIX. */
tree
decl_check_rename (alias, old_name)
tree alias, old_name;
{
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 *old_pointer = IDENTIFIER_POINTER (old_name);
int old_len = IDENTIFIER_LENGTH (old_name);
if (DECL_OLD_PREFIX (alias))
{
int old_prefix_len = IDENTIFIER_LENGTH (DECL_OLD_PREFIX (alias));
if (old_prefix_len >= old_len
|| old_pointer[old_prefix_len] != '!'
|| strncmp (old_pointer, IDENTIFIER_POINTER (DECL_OLD_PREFIX (alias)), old_prefix_len) != 0)
return NULL_TREE;
/* Skip the old prefix. */
old_pointer += old_prefix_len + 1; /* Also skip the '!', */
}
if (DECL_POSTFIX_ALL (alias)
|| strcmp (IDENTIFIER_POINTER (DECL_POSTFIX (alias)), old_pointer) == 0)
{
if (DECL_NEW_PREFIX (alias))
return get_identifier3 (IDENTIFIER_POINTER (DECL_NEW_PREFIX (alias)),
"!", old_pointer);
else if (old_pointer == IDENTIFIER_POINTER (old_name))
return old_name;
else
return get_identifier (old_pointer);
}
else
return NULL_TREE;
}
/* 'EXIT foo' is treated like 'GOTO EXIT!foo'.
This function converts LABEL into a labal name for EXIT. */
tree
munge_exit_label (label)
tree label;
{
return get_identifier3 ("EXIT", "!", IDENTIFIER_POINTER (label));
}
/* Make SAVE_EXPRs as needed, but don't turn a location into a non-location. */
tree
save_if_needed (exp)
tree exp;
{
return CH_REFERABLE (exp) ? stabilize_reference (exp) : save_expr (exp);
}
/* Return the number of elements in T, which must be a discrete type. */
tree
discrete_count (t)
tree t;
{
tree hi = convert (sizetype, TYPE_MAX_VALUE (t));
builtins.c (c_strlen): Use size_diffop and return ssizetype value. * builtins.c (c_strlen): Use size_diffop and return ssizetype value. (expand_builtin_strcpy): Pass correct type to size_binop. (expand_builtin_strcmp): Likewise. Clean up conditional structure. * c-decl.c (init_decl_processing): Don't call set_sizetype twice. (complete_array_type): Don't use size_binop for MAXINDEX. * c-typeck.c (c_sizeof): Use size_one_node and TYPE_SIZE_UNIT. (c_sizeof_nowarn, c_size_in_bytes): Likewise. (c_alignof): Use size_one_node. (build_unary_op): Pass arg of proper type to size_binop. (really_start_incremental_init, push_init_level): Use sizetype for constructor{,_bit,_unfilled}_index. (pop_init_label, output_init_element): Likewise. (output_pending_init_elements, process_init_element): Likewise. * calls.c (compute_argument_block_size): Field VAR is ssizetype. * expr.c (store_expr): Use size_int. (store_constructor): Use proper types for size_binop args. (get_inner_reference, expand_expr, case ARRAY_REF): Likewise. (expand_expr_unaligned): Likewise. (string_contant): Return object of sizetype. * expr.h (SUB_PARM_SIZE): Call size_diffop and pass proper types. (ARGS_SIZE_RTX): Call ARGS_SIZE_TREE. (ARGS_SIZE_TREE): Pass proper types to size_binop. * fold-const.c (int_const_binop): Refine when size_int is called. (fold_convert): Likewise. (size_int_wide): Rework to take KIND as arg, only take low order bits, handle new sizetype_tab datatype, and chain entries in size_table. (size_int_type_wide): New function. (size_binop): Validate types of arguments. (ssize_binop): Deleted. (size_diffop): New function. (extract_muldiv): Only fold division into multiplication for sizetypes. * function.c (assign_parms): Use size_diffop and make sure VAR field is of ssizetype; also pass proper type to size_binop. (locate_and_pad_parm, pad_to_arg_alignment): Likewise. (round_down): Deleted from here. * store-layout.c (sizetype_tab): Now an array. (sizetype_set, early_root_list): New variables. (variable_size): Use size_one_node. (round_up): Pass proper type to size_binop. (round_down): Moved to here and corrected as above. (layout_record): Pass proper arg types to size_binop. (layout_type): Likewise. If sizetype_set is zero, record the type just laid out. (make_unsigned_type): Don't call set_sizetype; (make_signed_type): Likewise; also, call fixup_signed_type. (initialize_sizetypes): New function. (set_sizetype): Make copy of types, set TYPE_IS_SIZETYPE, and set name of bitsizetype to "bit_size_type". Fix up type of sizes of all types made before call. * tm.texi (ROUND_TYPE_SIZE_UNIT): New macro. * tree.c (fix_sizetype): Deleted. (build_common_tree_nodes): Call initialize_sizetypes. (build_common_tree_nodes_2): Don't call fix_sizetype. * tree.h (TYPE_IS_SIZETYPE): New macro. (initialize_sizetype): New declaration. (enum size_type_kind): New type. (struct sizetype_tab): Deleted. (sizetype_tab): Now array; adjust sizetype macros. (size_diffop, size_int_type_wide): New functions. (size_int_wide): Change number of args and type; access macros changed. (ssize_int, sbitsize_int): New macros. * config/i960/i960.h (ROUND_TYPE_SIZE): Use size_int. (ROUND_TYPE_SIZE_UNIT): New macro. * ch/actions.c (chill_convert_for_assignment): Don't use size_binop for things that aren't sizes. (expand_varying_length_assignment): Likewise. * ch/convert.c (digest_array_tuple, convert): Likewise. * ch/typeck.c (build_chill_slice, smash_dummy_type): Likewise. (build_chill_slice_with_range): Likewise. (build_chill_slice_with_length): Likewise. (build_array_from_set): Adjust types for size_binop. * ch/expr.c (build_concat_expr, build_chill_repetition_op): Likewise. (build_chill_sizeof): Use TYPE_SIZE_UNIT. * ch/tree.c (build_string_type): Pass proper type to size_binop. * cp/class.c (dfs_build_vtable_offset_vtbl_entries): Don't use size_binop on things that are not sizes; ssize_binop deleted. Call size_diffop when appropriate. (dfs_build_vcall_offset_vtbl_entries): Likewise. (build_primary_vtable, build_secondary_vtable): Likewise. (dfs_set_offset_for_unshared_vbases, dfs_modify_vtables): Likewise. Variable I is HOST_WIDE_INT. (get_vfield_offset): Pass proper types to size_binop. (size_extra_vtbl_entries, layout_virtual_bases): Likewise. (finish_struct_1): Likewise. (skip_rtti_stuff): Arg N is now pointer to signed. (layout_class_type): Use size_zero_node. * cp/cp-tree.h (skip_rtti_stuff): Arg N is pointer to signed. * cp/cvt.c (cp_convert_to_pointer): Pass proper types to size_binop. * cp/decl.c (complete_arry_type): Pass proper types to size_binop. (xref_basetypes): BINFO_OFFSET is sizetype. * cp/error.c (dump_expr): Don't use size_binop non-sizes. * cp/expr.c (cplus_expand_constant): Pass proper types to size_binop. * cp/init.c (construct_virtual_bases): Fix type error. (build_vec_delete_1): Pass proper type to size_binop and don't fold result. * cp/lex.c (cp_make_lang_type): BINFO_OFFSET is sizetype. * cp/rtti.c (get_base_offset): Pass proper type to size_binop. * cp/search.c (dfs_find_vbases): Fix type error. (expand_upcast_fixups): Arg to skip_rtti_stuff is pointer to signed. (dfs_get_vbase_types): BINFO_OFFSET is sizetype. * cp/tree.c (debug_binfo): Variable N is signed. Use HOST_WIDE_INT_PRINT_DEC. * cp/typeck.c (comptypes): sizetype is same as equivalent integer type. (c_sizeof, c_sizeof_nowarn, expr_sizeof): Use TYPE_SIZE_UNIT, size_one_node and size_zero_node. (c_alignof): Use size_one_node. (build_component_addr): Pass proper types to size_binop. (expand_ptrmemfunc_cst): Don't use size_binop on non-sizes. * f/com.c (ffecom_arrayref_): Convert args to size_binop to proper type. (ffecom_tree_canonize_ptr_): Don't use size_binop for non-sizes. (ffecom_tree_canonize_ref_): Likewise. (type_for_mode): Handle TImode. * f/ste.c (ffeste_io_dofio_, ffeste_io_douio_): Use TYPE_SIZE_UNIT. (ffeste_io_ciclist_): Likewise. * java/expr.c (build_java_ret): Pass proper type to size_binop. From-SVN: r32225
2000-02-27 22:39:40 +01:00
if (TYPE_MIN_VALUE (t))
hi = size_binop (MINUS_EXPR, hi, convert (sizetype, TYPE_MIN_VALUE (t)));
builtins.c (c_strlen): Use size_diffop and return ssizetype value. * builtins.c (c_strlen): Use size_diffop and return ssizetype value. (expand_builtin_strcpy): Pass correct type to size_binop. (expand_builtin_strcmp): Likewise. Clean up conditional structure. * c-decl.c (init_decl_processing): Don't call set_sizetype twice. (complete_array_type): Don't use size_binop for MAXINDEX. * c-typeck.c (c_sizeof): Use size_one_node and TYPE_SIZE_UNIT. (c_sizeof_nowarn, c_size_in_bytes): Likewise. (c_alignof): Use size_one_node. (build_unary_op): Pass arg of proper type to size_binop. (really_start_incremental_init, push_init_level): Use sizetype for constructor{,_bit,_unfilled}_index. (pop_init_label, output_init_element): Likewise. (output_pending_init_elements, process_init_element): Likewise. * calls.c (compute_argument_block_size): Field VAR is ssizetype. * expr.c (store_expr): Use size_int. (store_constructor): Use proper types for size_binop args. (get_inner_reference, expand_expr, case ARRAY_REF): Likewise. (expand_expr_unaligned): Likewise. (string_contant): Return object of sizetype. * expr.h (SUB_PARM_SIZE): Call size_diffop and pass proper types. (ARGS_SIZE_RTX): Call ARGS_SIZE_TREE. (ARGS_SIZE_TREE): Pass proper types to size_binop. * fold-const.c (int_const_binop): Refine when size_int is called. (fold_convert): Likewise. (size_int_wide): Rework to take KIND as arg, only take low order bits, handle new sizetype_tab datatype, and chain entries in size_table. (size_int_type_wide): New function. (size_binop): Validate types of arguments. (ssize_binop): Deleted. (size_diffop): New function. (extract_muldiv): Only fold division into multiplication for sizetypes. * function.c (assign_parms): Use size_diffop and make sure VAR field is of ssizetype; also pass proper type to size_binop. (locate_and_pad_parm, pad_to_arg_alignment): Likewise. (round_down): Deleted from here. * store-layout.c (sizetype_tab): Now an array. (sizetype_set, early_root_list): New variables. (variable_size): Use size_one_node. (round_up): Pass proper type to size_binop. (round_down): Moved to here and corrected as above. (layout_record): Pass proper arg types to size_binop. (layout_type): Likewise. If sizetype_set is zero, record the type just laid out. (make_unsigned_type): Don't call set_sizetype; (make_signed_type): Likewise; also, call fixup_signed_type. (initialize_sizetypes): New function. (set_sizetype): Make copy of types, set TYPE_IS_SIZETYPE, and set name of bitsizetype to "bit_size_type". Fix up type of sizes of all types made before call. * tm.texi (ROUND_TYPE_SIZE_UNIT): New macro. * tree.c (fix_sizetype): Deleted. (build_common_tree_nodes): Call initialize_sizetypes. (build_common_tree_nodes_2): Don't call fix_sizetype. * tree.h (TYPE_IS_SIZETYPE): New macro. (initialize_sizetype): New declaration. (enum size_type_kind): New type. (struct sizetype_tab): Deleted. (sizetype_tab): Now array; adjust sizetype macros. (size_diffop, size_int_type_wide): New functions. (size_int_wide): Change number of args and type; access macros changed. (ssize_int, sbitsize_int): New macros. * config/i960/i960.h (ROUND_TYPE_SIZE): Use size_int. (ROUND_TYPE_SIZE_UNIT): New macro. * ch/actions.c (chill_convert_for_assignment): Don't use size_binop for things that aren't sizes. (expand_varying_length_assignment): Likewise. * ch/convert.c (digest_array_tuple, convert): Likewise. * ch/typeck.c (build_chill_slice, smash_dummy_type): Likewise. (build_chill_slice_with_range): Likewise. (build_chill_slice_with_length): Likewise. (build_array_from_set): Adjust types for size_binop. * ch/expr.c (build_concat_expr, build_chill_repetition_op): Likewise. (build_chill_sizeof): Use TYPE_SIZE_UNIT. * ch/tree.c (build_string_type): Pass proper type to size_binop. * cp/class.c (dfs_build_vtable_offset_vtbl_entries): Don't use size_binop on things that are not sizes; ssize_binop deleted. Call size_diffop when appropriate. (dfs_build_vcall_offset_vtbl_entries): Likewise. (build_primary_vtable, build_secondary_vtable): Likewise. (dfs_set_offset_for_unshared_vbases, dfs_modify_vtables): Likewise. Variable I is HOST_WIDE_INT. (get_vfield_offset): Pass proper types to size_binop. (size_extra_vtbl_entries, layout_virtual_bases): Likewise. (finish_struct_1): Likewise. (skip_rtti_stuff): Arg N is now pointer to signed. (layout_class_type): Use size_zero_node. * cp/cp-tree.h (skip_rtti_stuff): Arg N is pointer to signed. * cp/cvt.c (cp_convert_to_pointer): Pass proper types to size_binop. * cp/decl.c (complete_arry_type): Pass proper types to size_binop. (xref_basetypes): BINFO_OFFSET is sizetype. * cp/error.c (dump_expr): Don't use size_binop non-sizes. * cp/expr.c (cplus_expand_constant): Pass proper types to size_binop. * cp/init.c (construct_virtual_bases): Fix type error. (build_vec_delete_1): Pass proper type to size_binop and don't fold result. * cp/lex.c (cp_make_lang_type): BINFO_OFFSET is sizetype. * cp/rtti.c (get_base_offset): Pass proper type to size_binop. * cp/search.c (dfs_find_vbases): Fix type error. (expand_upcast_fixups): Arg to skip_rtti_stuff is pointer to signed. (dfs_get_vbase_types): BINFO_OFFSET is sizetype. * cp/tree.c (debug_binfo): Variable N is signed. Use HOST_WIDE_INT_PRINT_DEC. * cp/typeck.c (comptypes): sizetype is same as equivalent integer type. (c_sizeof, c_sizeof_nowarn, expr_sizeof): Use TYPE_SIZE_UNIT, size_one_node and size_zero_node. (c_alignof): Use size_one_node. (build_component_addr): Pass proper types to size_binop. (expand_ptrmemfunc_cst): Don't use size_binop on non-sizes. * f/com.c (ffecom_arrayref_): Convert args to size_binop to proper type. (ffecom_tree_canonize_ptr_): Don't use size_binop for non-sizes. (ffecom_tree_canonize_ref_): Likewise. (type_for_mode): Handle TImode. * f/ste.c (ffeste_io_dofio_, ffeste_io_douio_): Use TYPE_SIZE_UNIT. (ffeste_io_ciclist_): Likewise. * java/expr.c (build_java_ret): Pass proper type to size_binop. From-SVN: r32225
2000-02-27 22:39:40 +01:00
return size_binop (PLUS_EXPR, hi, integer_one_node);
}