Dave Brolley [Wed, 16 Dec 1998 13:38:14 +0000 (13:38 +0000)]
lang-specs.h (default_compilers): Pass -MD, -MMD and -MG to cc1plus if configured with cpplib.
Wed Dec 16 16:33:58 1998 Dave Brolley <brolley@cygnus.com>
* lang-specs.h (default_compilers): Pass -MD, -MMD and -MG to cc1plus
if configured with cpplib.
Zack Weinberg [Wed, 16 Dec 1998 13:23:47 +0000 (13:23 +0000)]
cpplib.c (do_include): Treat #include_next in the primary source file as #include plus warning.
1998-12-16 Zack Weinberg <zack@rabi.phys.columbia.edu>
* cpplib.c (do_include): Treat #include_next in the
primary source file as #include plus warning. Treat
#include_next in a file included by absolute path as an
error. fp == CPP_NULL_BUFFER is a fatal inconsistency.
Michael Hayes [Tue, 15 Dec 1998 20:31:18 +0000 (20:31 +0000)]
loop.h (loop_info): New field 'vtop'.
* loop.h (loop_info): New field 'vtop'.
* loop.c (check_dbra_loop): Use loop_info->vtop rather than
scanning loop for vtop.
* unroll.c (subtract_reg_term, find_common_reg_term): New functions.
(loop_iterations): Use them to determine if loop has a constant
number of iterations. Set loop_info->vtop. Don't subtract
common reg term from initial_value and final_value if have a
do-while loop.
Zack Weinberg [Tue, 15 Dec 1998 11:17:06 +0000 (11:17 +0000)]
cpplib.c: Make all directive handlers read their own arguments.
1998-12-14 00:56 -0500 Zack Weinberg <zack@rabi.phys.columbia.edu>
* cpplib.c: Make all directive handlers read their own
arguments.
(struct directive): Remove last two arguments from FUNC
member prototype. Remove `command_reads_line' member
entirely.
(directive_table): Remove initializations of
command_reads_line flag. Pretty-print.
(eval_if_expression, do_define, do_line, do_include,
do_undef, do_error, do_pragma, do_ident, do_if, do_xifdef,
do_else, do_elif, do_sccs, do_assert, do_unassert,
do_warning): Take only two args.
(cpp_define): Call do_define with two args and the text to
define stuffed into a buffer.
(make_assertion): Call do_assert with two args.
(handle_directive): Call do_line with two args. Call
kt->func with two args. Remove command_reads_line
processing.
(do_define, do_undef, do_error, do_warning, do_pragma,
do_sccs): Read the rest of the line here.
(do_ident): Gobble rest of line, as cccp does.
(cpp_undef): New function.
(cpp_start_read): Call cpp_undef instead of do_undef.
Zack Weinberg [Tue, 15 Dec 1998 11:09:16 +0000 (11:09 +0000)]
cpphash.h (union hash_value): Remove `keydef' member, add a `struct hashnode *aschain' member for #assert.
1998-12-15 Zack Weinberg <zack@rabi.phys.columbia.edu>
* cpphash.h (union hash_value): Remove `keydef' member, add a
`struct hashnode *aschain' member for #assert.
* cpplib.c (struct tokenlist_list, struct
assertion_hashnode): Delete structure definitions.
(assertion_install, assertion_lookup, delete_assertion,
check_assertion, compare_token_lists, reverse_token_list,
read_token_list, free_token_list): Delete functions.
(parse_assertion): New function.
(cpp_cleanup): Don't destroy the assertion_hashtable.
(do_assert): Gut and rewrite. #assert foo (bar) places
entries for `#foo' and `#foo(bar)' in the macro hash table,
type T_ASSERT. The value union's `aschain' member is used
to chain all answers for a given predicate together.
(do_unassert): Also rewritten. Take an un-asserted
answer off the chain from its predicate and call
delete_macro on the hashnode, or walk a predicate chain
calling delete_macro on all the entries.
(cpp_read_check_assertion): Simply call parse_assertion to
get the canonical assertion name, and look that up in the
hash table.
* cpplib.h (ASSERTION_HASHNODE,ASSERTION_HASHSIZE,assertion_hashtab):
Removed.
* cpphash.c (install): Use bcopy instead of an explicit loop
to copy the macro name.
* cppexp.c (cpp_lex): Convert the result of
cpp_read_check_assertion to a `struct operation' directly;
don't go through parse_number.
Per Bothner [Mon, 14 Dec 1998 19:22:30 +0000 (11:22 -0800)]
parse.y (fold_constant_for_init): New function.
* parse.y (fold_constant_for_init): New function.
(resolve_expression_name): Don't replace static final
constant-initialized fields by its value.
(java_complete_lhs): New. Same as java_complete_tree, except does
not replace static final constant-initialized fields by their values.
(register_fields): If there is an initializer, set DECL_INITIAL and
MODIFY_EXPR_FROM_INITIALIZATION_P.
(java_complete_tree): For MODIFY_EXPR, use java_complete_lhs for lhs.
Only call patch_initialized_static_field if
MODIFY_EXPR_FROM_INITIALIZATION_P.
(patch_initialized_static_field): If not valid constant, clear
DECL_INITIAL.
* parse.y (lookup_field_wrapper): Fix thinko.
* parse.y (java_complete_tree): In EXPR_WITH_FILE_LOCATION,
set and restore global lineno.
Per Bothner [Mon, 14 Dec 1998 19:22:28 +0000 (11:22 -0800)]
parse.y (fold_constant_for_init): New function.
d
* parse.y (fold_constant_for_init): New function.
(resolve_expression_name): Don't replace static final
constant-initialized fields by its value.
(java_complete_lhs): New. Same as java_complete_tree, except does
not replace static final constant-initialized fields by their values.
(register_fields): If there is an initializer, set DECL_INITIAL and
MODIFY_EXPR_FROM_INITIALIZATION_P.
(java_complete_tree): For MODIFY_EXPR, use java_complete_lhs for lhs.
Only call patch_initialized_static_field if
MODIFY_EXPR_FROM_INITIALIZATION_P.
(patch_initialized_static_field): If not valid constant, clear
DECL_INITIAL.
* parse.y (lookup_field_wrapper): Fix thinko.
* parse.y (java_complete_tree): In EXPR_WITH_FILE_LOCATION,
set and restore global lineno.
Mark Mitchell [Mon, 14 Dec 1998 15:35:40 +0000 (15:35 +0000)]
class.c (pushclass): Tweak handling of class-level bindings.
* class.c (pushclass): Tweak handling of class-level bindings.
(resolve_address_of_overloaded_function): Update pointer-to-member
handling.
(instantiate_type): Likewise.
* cvt.c (cp_convert_to_pointer): Likewise.
* decl.c (pop_binding): Take the DECL to pop, not just the name.
Deal with `struct stat' hack.
(binding_level): Add to documentation.
(push_binding): Clear BINDING_TYPE.
(add_binding): New function.
(push_local_binding): Use it.
(push_class_binding): Likewise.
(poplevel): Adjust calls to pop_binding.
(poplevel_class): Likewise.
(pushdecl): Adjust handling of TYPE_DECLs; add bindings for hidden
declarations to current binding level.
(push_class_level_binding): Likewise.
(push_overloaded_decl): Adjust handling of OVERLOADs in local
bindings.
(lookup_namespace_name): Don't crash when confronted with a
TEMPLATE_DECL.
(lookup_name_real): Do `struct stat' hack in local binding
contexts.
(build_ptrmemfunc_type): Adjust documentation.
(grokdeclarator): Don't avoid building real array types when
processing templates unless really necessary.
(finish_method): Adjust calls to pop_binding.
* decl2.c (reparse_absdcl_as_expr): Recursively call ourselves,
not reparse_decl_as_expr.
(build_expr_from_tree): Deal with a template-id as the function to
call in a METHOD_CALL_EXPR.
* pt.c (convert_nontype_argument): Tweak pointer-to-member handling.
(maybe_adjust_types_For_deduction): Don't do peculiar things with
METHOD_TYPEs here.
(resolve_overloaded_unification): Handle COMPONENT_REFs. Build
pointer-to-member types where necessary.
* tree.c (build_cplus_array_type_1): Don't avoid building real
array types when processing templates unless really necessary.
(build_exception_variant): Compare the exception lists correctly.
Andrew MacLeod [Mon, 14 Dec 1998 14:19:48 +0000 (14:19 +0000)]
output.h (force_data_section): New prototype.
* output.h (force_data_section): New prototype.
* varasm.c (force_data_section): New function to force the
data section, regardless of what in_section thinks.
* dwarf2out.c (output_call_frame_info): Call force_data_section
since varasm may not realize we've changes sections.
Per Bothner [Sun, 13 Dec 1998 17:51:06 +0000 (09:51 -0800)]
parse.y (patch_method_invocation): If class_decl is null (e.g.
* parse.y (patch_method_invocation): If class_decl is null
(e.g. an array type), use original type.
* parse.y (check_thrown_exceptions): Temporary hack to suppress
errors about uncaught exception from clone (of array, specifically).
Per Bothner [Sun, 13 Dec 1998 17:51:04 +0000 (09:51 -0800)]
parse.y (patch_method_invocation): If class_decl is null (e.g.
d
* parse.y (patch_method_invocation): If class_decl is null
(e.g. an array type), use original type.
* parse.y (check_thrown_exceptions): Temporary hack to suppress
errors about uncaught exception from clone (of array, specifically).
Per Bothner [Sun, 13 Dec 1998 17:51:02 +0000 (09:51 -0800)]
parse.y (patch_method_invocation): If class_decl is null (e.g.
�
* parse.y (patch_method_invocation): If class_decl is null
(e.g. an array type), use original type.
* parse.y (check_thrown_exceptions): Temporary hack to suppress
errors about uncaught exception from clone (of array, specifically).
Tom Tromey [Sun, 13 Dec 1998 15:24:48 +0000 (15:24 +0000)]
gjavah.c (decompile_method): Handle all types of `return' opcode.
* gjavah.c (decompile_method): Handle all types of `return'
opcode. Decompile `return this' and `return'.
(method_access): New global.
(print_method_info): Set it.
(decompile_method): Don't decompile a synchronized method.
* cp-tree.def (CPLUS_BINDING): Update documentation.
* cp-tree.h (LOCAL_BINDING_P): New macro.
(lang_identifier): Rename local_value to bindings.
(tree_binding): Make `scope' of type `void*', not `tree'.
(BINDING_SCOPE): Update documentation.
(IDENTIFIER_LOCAL_VALUE): Remove.
(IDENTIFIER_CLASS_VALUE): Document.
(IDENTIFIER_BINDING): New macro.
(IDENTIFIER_VALUE): Likewise.
(TIME_IDENTIFIER_TIME): Likewise.
(TIME_IDENTIFIER_FILEINFO): Likewise.
(IMPLICIT_TYPENAME_P): Likewise.
(set_identifier_local_value): Remove.
(push_local_binding): New function.
(push_class_binding): Likewise.
* class.c (pushclass): Update comments; use push_class_binding.
* decl.c (set_identifier_local_value_with_scope): Remove.
(set_identifier_local_value): Likewise.
(push_binding): New function.
(pop_binding): Likewise.
(binding_level): Update documentation. Remove shadowed.
(BINDING_LEVEL): New macro.
(free_binding_nodes): New variable.
(poplevel): Adjust for new name-lookup scheme. Don't mess up
BLOCK_VARs when doing for-scope extension. Remove effectively
dead code.
(pushlevel_class): Tweak formatting.
(poplevel_class): Adjust for new name-lookup scheme.
(print_binding_level): Likewise.
(store_bindings): Likewise.
(pushdecl): Likewise.
(pushdecl_class_level): Likewise.
(push_class_level_binding): Likewise.
(push_overloaded_decl): Update comments. Adjust for new
name-lookup scheme.
(lookup_name_real): Likewise.
(lookup_name_current_level): Likewise.
(cp_finish_decl): Likewise.
(require_complete_types_for_parms): Likewise. Remove misleading
#if 0'd code.
(grok_parms): Likewise. Don't call
require_complete_types_for_parms here.
(grok_ctor_properties): Don't treat templates as copy
constructors.
(grop_op_properties): Or as assignment operators.
(start_function): Document. Adjust for new name-lookup scheme.
(finish_function): Likewise.
* decl2.c (do_local_using_decl): Use push_local_binding.
* lex.c (begin_definition_of_inclass_inline): New function, split
out from ...
(do_pending_inlines): Here, and ...
(process_next_inline): Here.
(get_time_identifier): Use TIME_IDENTIFIER_* macros.
(init_filename_times): Likewise.
(extract_interface_info): Likewise.
(ste_typedecl_interface_info): Likewise.
(check_newline): Likewise.
(dump_time_statistics): Likewise.
(handle_cp_pragma): Likewise.
(do_identifier): Adjust for new name-lookup scheme.
* parse.y (function_try_block): Return ctor_initializer_opt value.
(fndef): Use it.
(fn.defpen): Pass appropriate values to start_function.
(pending_inline): Use functor_try_block value, and pass
appropriate values to finish_function.
* pt.c (is_member_template): Update documentation; remove handling
of FUNCTION_DECLs. As per name, this function should deal only in
TEMPLATE_DECLs.
(decl_template_parm_p): Change name of olddecl parameter to decl.
(check_template_shadow): Adjust for new name-lookup scheme.
(lookup_template_class): Likewise.
(tsubst_decl): Tweak so as not to confuse member templates with
copy constructors and assignment operators.
(unify): Handle UNION_TYPEs.
* ptree.c (print_lang_identifier): Adjust for new name-lookup scheme.
(lang_print_xnode): Adjust for new name-lookup scheme.
* typeck.c (mark_addressable): Likewise.
(c_expand_return): Likewise.
* jcf-reader.c (jcf_parse_one_method): Recognize
HANDLE_END_METHOD.
* gjavah.c (HANDLE_END_METHOD): New macro.
(HANDLE_CODE_ATTRIBUTE): New macro.
(decompile_method): New function.
(print_method_info): Don't print `;\n' at end of function decl.
Include java-opcodes.h.
(decompiled): New global.
Jeffrey A Law [Sat, 12 Dec 1998 23:03:54 +0000 (23:03 +0000)]
rtlanal.c (multiple_sets): New function.
* rtlanal.c (multiple_sets): New function.
* rtl.h (multiple_sets): Declare it.
* local-alloc.c (wipe_dead_reg): Use it.
* global.c (global_conflicts): Likewise.
Should fix the m68k bootstrap problems.
parse.y (<type_declaration>): Do maybe_generate_clinit last.
* parse.y (<type_declaration>): Do maybe_generate_clinit last.
(register_fields): If a static fields has an initializer, just
chain it on ctxp->static_initialized, and handle later.
(java_complete_expand_methods): Force <clinit> first.
(resolve_expression_name, resolve_field_access): Just get DECL_INITIAL
- it's already been completed.
(patch_initialized_static_field): New function.
(java_complete_field): Call it.
parse.y (<type_declaration>): Do maybe_generate_clinit last.
�
* parse.y (<type_declaration>): Do maybe_generate_clinit last.
(register_fields): If a static fields has an initializer, just
chain it on ctxp->static_initialized, and handle later.
(java_complete_expand_methods): Force <clinit> first.
(resolve_expression_name, resolve_field_access): Just get DECL_INITIAL
- it's already been completed.
(patch_initialized_static_field): New function.
(java_complete_field): Call it.
Per Bothner [Sat, 12 Dec 1998 19:25:01 +0000 (11:25 -0800)]
expr.c (encode_newarray_type, [...]): New functions.
d
* expr.c (encode_newarray_type, build_new_array): New functions.
* java-tree.h: Declare build_new_array.
* jcf-write.c (patch_newarray): Use build_new_array.
* expr.c (java_lang_expand_exp): Support NEW_ARRAY_INIT.
* jcf-write.c (generate_bytecode_insns): Support NEW_ARRAY_INIT.
* parse.y (patch_new_array_init): Re-organize.
Now is passed the actual array (pointer) type of the value.
Set the type of the CONSTRUCTOR to be an ARRAY_TYPE.
(patch_array_constructor): Removed - merged into patch_new_array_init.
(java_complete_tree): Update patch_new_array_init.
* jcf-write.c (find_constant_index): New function.
(generate_bytecode_insns): Use find_constant_index.
(generate_classfile): Use find_constant_index for ConstantValue.
Per Bothner [Sat, 12 Dec 1998 19:24:59 +0000 (11:24 -0800)]
expr.c (encode_newarray_type, [...]): New functions.
a
* expr.c (encode_newarray_type, build_new_array): New functions.
* java-tree.h: Declare build_new_array.
* jcf-write.c (patch_newarray): Use build_new_array.
* expr.c (java_lang_expand_exp): Support NEW_ARRAY_INIT.
* jcf-write.c (generate_bytecode_insns): Support NEW_ARRAY_INIT.
* parse.y (patch_new_array_init): Re-organize.
Now is passed the actual array (pointer) type of the value.
Set the type of the CONSTRUCTOR to be an ARRAY_TYPE.
(patch_array_constructor): Removed - merged into patch_new_array_init.
(java_complete_tree): Update patch_new_array_init.
* jcf-write.c (find_constant_index): New function.
(generate_bytecode_insns): Use find_constant_index.
(generate_classfile): Use find_constant_index for ConstantValue.
Per Bothner [Sat, 12 Dec 1998 19:24:56 +0000 (11:24 -0800)]
expr.c (encode_newarray_type, [...]): New functions.
* expr.c (encode_newarray_type, build_new_array): New functions.
* java-tree.h: Declare build_new_array.
* jcf-write.c (patch_newarray): Use build_new_array.
* expr.c (java_lang_expand_exp): Support NEW_ARRAY_INIT.
* jcf-write.c (generate_bytecode_insns): Support NEW_ARRAY_INIT.
* parse.y (patch_new_array_init): Re-organize.
Now is passed the actual array (pointer) type of the value.
Set the type of the CONSTRUCTOR to be an ARRAY_TYPE.
(patch_array_constructor): Removed - merged into patch_new_array_init.
(java_complete_tree): Update patch_new_array_init.
* jcf-write.c (find_constant_index): New function.
(generate_bytecode_insns): Use find_constant_index.
(generate_classfile): Use find_constant_index for ConstantValue.
Jason Merrill [Sat, 12 Dec 1998 16:41:15 +0000 (16:41 +0000)]
decl.c (grokdeclarator): Allow field with same name as class in extern "C".
* decl.c (grokdeclarator): Allow field with same name as class
in extern "C".
* decl.c (lookup_name_real): Don't limit field lookup to types.
* class.c (check_member_decl_is_same_in_complete_scope): No error
if icv and x are the same.
* lex.c (do_identifier): Tweak error message.
decl.c (long_zero_node, [...]): New global variables, initialized.
Thu Dec 10 20:00:54 1998 Alexandre Petit-Bianco <apbianco@sendai.cygnus.com>
* decl.c (long_zero_node, float_zero_node, double_zero_node): New
global variables, initialized.
* java-tree.h (long_zero_node, float_zero_node, double_zero_node):
Declared new global variables.
* lex.c (java_lex): Return long_zero_node, float_zero_node,
double_zero_node, integer_zero_node upon direct matching.
* parse.y (purify_type_name): Added function prototype.
(duplicate_declaration_error_p): Consider new_type as potentially
being a incomplete type. Use purify_type_name on type string.
(method_header): saved_type: unused variable removed. Don't figure
return type if method name is invalid.
(java_complete_tree): Set CAN_COMPLETE_NORMALLY after `node' was
processed by patch_unaryop.
(patch_unaryop): Fixed typo in comment. Re-convert pre/post
increment/decrement node into its original type after binary
numeric promotion on its operands.
Fixes a bug occuring when an error occurs in constructor
declaration. Fixes a bug on ++/-- operators on non integer operands.
Jim Wilson [Thu, 10 Dec 1998 17:21:35 +0000 (17:21 +0000)]
Fix alpha-x-m32r-elf bugs.
* cse.c (simplify_unary_operation): Sign-extend constants when
they have the most significant bit set for the target.
* real.c (endian): Sign-extend 32 bit output values on a 64 bit
host.
* m32r/m32r.c (m32r_expand_prologue): Store pretend_size in
HOST_WIDE_INT temporary before negating it.
* m32r/m32r.md (movsi_insn+1): Use ~0xffff instead of 0xffff0000.
parse.y (array_initializer:): Array init operand is NULL_TREE instead of a TREE_LIST of NULL_TREEs when...
Thu Dec 10 11:02:49 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (array_initializer:): Array init operand is NULL_TREE
instead of a TREE_LIST of NULL_TREEs when parsing `{}'. `{,}' is
now an error. Fixed indentation problems.
(patch_string): Handle error_mark_node as an argument.
(patch_new_array_init): Fixed indentation problems.
(array_constructor_check_entry): Removed check on null wfl_value.
Return an error if wfl_value's walk returns an error.
Fixes and cleanups for array initializers.
Mark Mitchell [Wed, 9 Dec 1998 16:20:05 +0000 (16:20 +0000)]
cp-tree.h (most_specialized_instantiation): New function.
* cp-tree.h (most_specialized_instantiation): New function.
(print_candidates): Likewise.
* class.c (validate_lhs): Remove.
(resolve_address_of_overloaded_function): New function, split out
and then substantially reworked, from ...
(instantiate_type): Use it. Simplify.
* cvt.c (convert_to_reference): Complain when caller has indicated
that's the right thing to do. Don't crash if instantiate_type
fails.
* pt.c: Substitute `parameters' for `paramters' throughout.
(print_candidates): Don't make it static.
(most_specialized_instantiation): Split out from ...
(most_specialized): Here.
java-tree.def (NEW_ARRAY_INIT): New Java tree code.
Wed Dec 9 15:37:05 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
* java-tree.def (NEW_ARRAY_INIT): New Java tree code.
* lex.c (java_lex): Remember column position before advancing one
token. Retain location information on OCB_TK.
* lex.h (typedef struct java_lc): Added new field.
* parse.h (GET_SKIP_TYPE): New macro.
(QUAL_DECL_TYPE): Redefined using GET_SKIP_TYPE.
* parse.y (build_new_array_init, patch_new_array_init,
patch_array_constructor, maybe_build_array_element_wfl,
array_constructor_check_entry): New function prototypes.
(switch_block:): Tagged <node>.
(OCB_TK): Tagged <operator>.
(array_initializer:): Installed actions.
(variable_initializer): Build location information on element if
necessary.
(switch_statement:): Fixed indentation typo.
(switch_block:): Redefined default action.
(java_complete_tree): Handle NEW_ARRAY_INIT in MODIFY_EXPR:.
(patch_assignment): Removed duplicate code.
(maybe_build_array_element_wfl, build_new_array_init,
patch_new_array_init, patch_array_constructor,
array_constructor_check_entry): New functions.
Parse and walk array initializer nodes.
Mark Mitchell [Wed, 9 Dec 1998 11:46:02 +0000 (11:46 +0000)]
decl.c (grokdeclarator): Update the name of the TEMPLATE_DECL...
* decl.c (grokdeclarator): Update the name of the TEMPLATE_DECL, as
well as the TYPE_DECL, when a typedef name is assigned to a
previously anonymous type.