(output_init_element): Call digest_init before calling output_constant.
(output_init_element): Call digest_init before
calling output_constant. Always pass 0, 0 for last 2 args
to digest_init.
(build_binary_op): Warn about ordered comparison
between pointers to complete and incomplete types.
(digest_init): No error for a STRING_CST that already
went through digest_init.
(parser_build_binary_op): Generate a NON_LVALUE_EXPR, not NOP_EXPR,
around a constant value.
Jeff Law [Thu, 5 Aug 1993 05:45:32 +0000 (23:45 -0600)]
toplev.c (rest_of_compilation): If not optimizing, turn off DECL_INLINE for functions declared as inline.
* toplev.c (rest_of_compilation): If not optimizing, turn off
DECL_INLINE for functions declared as inline. Avoid turning on
DECL_INLINE when -finline-functions is used without -O.
Richard Kenner [Tue, 3 Aug 1993 21:31:46 +0000 (17:31 -0400)]
(force_to_mode): Now pass actual AND mask instead of number off;
generalize appropriately.
Move most cases from simplify_and_const_int in.
(simplify_and_const_int): Remove most code from here; call force_to_mode
instead.
(subst, make_extraction, make_compound_operation): Change calls to
force_to_mode.
(make_field_assignment): Likewise.
(simplify_comparison): Add call to force_to_mode when doing a sign bit
comparison.
Richard Kenner [Mon, 2 Aug 1993 22:52:56 +0000 (18:52 -0400)]
(subst): Move simple operations inside IF_THEN_ELSE if the IF_THEN_ELSE is in the second operand as well as the first.
(subst): Move simple operations inside IF_THEN_ELSE if the IF_THEN_ELSE is in
the second operand as well as the first.
(subst, case NEG): Use plus_constant to make a PLUS.
(subst, case MINUS): Simplify (minus 1 (comparison foo bar)).
(subst, case EQ): Add a number of missing cases where comparisons may be
replaced with arithmetic or logical ops.
(subst, case IF_THEN_ELSE): Handle (if_then_else COND (OP Z C1) Z) in a more
general manner.
(simplify_and_const_int): Make AND with gen_binary in case we can simplify it.
(build_shared_structure_initializer):
Call default_conversion for NAME.
(add_objc_string): Make an ADDR_EXPR to return.
(init_objc_symtab): Make ADDR_EXPR for UOBJC_SELECTOR_TABLE_decl.
Build all CONSTRUCTORs with types.
(build_constructor): New function. All CONSTRUCTOR builds changed.
(init_def_list, init_objc_symtab): New arg TYPE.
(init_module_descriptor): Likewise.
(init_objc_symtab): Pass TYPE arg to init_def_list.
(generate_objc_symtab_decl): Pass TYPE arg to init_objc_symtab.
(build_module_descriptor): Pass TYPE arg to init_module_descriptor.
(build_descriptor_table_initializer): New arg TYPE.
(generate_method_descriptors): Pass TYPE arg to
build_descriptor_table_initializer.
(generate_protocols): Pass TYPE arg to build_protocol_initializer.
(uild_protocol_initializer): New arg TYPE.
(build_ivar_list_initializer): New arg TYPE.
(generate_ivar_lists): Pass TYPE arg to build_ivar_list_initializer.
(build_dispatch_table_initializer): New arg TYPE.
(generate_dispatch_tables): Pass TYPE arg to
build_dispatch_table_initializer.
(build_category_initializer): New arg TYPE.
(build_shared_structure_initializer): New arg TYPE.
(generate_category): Pass TYPE arg to build_category_initializer.
(generate_shared_structures): Pass TYPE arg to
build_shared_structure_initializer.
Richard Kenner [Fri, 30 Jul 1993 10:49:23 +0000 (06:49 -0400)]
(mult_is_very_cheap): Delete.
(mult_cost): Delete.
(init_expmed): Delete computation of mult_cost and mult_is_very_cheap.
(expand_mult): Compute mult_cost here for every constant multiplier.
(synth_mult): Return found algorithms through a struct pointer.
Richard Kenner [Fri, 30 Jul 1993 10:47:51 +0000 (06:47 -0400)]
Remove change of July 21.
(this_basic_block): New variable.
(combine_instructions): Set it.
(try_combine, distribute_links): Use it and basic_block_head to see if
we've gone to a new basic block instead of trying to reproduce
calculation done in flow.
Richard Stallman [Fri, 30 Jul 1993 06:52:04 +0000 (06:52 +0000)]
(push_init_level): For braces around scalar, just warn.
(process_init_element): Special handling for {"foo"}.
(struct constructor_stack): New field `replacement_value'.
(push_init_level, really_start_incremental_init): Clear new field.
(pop_init_level): Return the replacement_value if any.
At top level in initializer, output that value,
and set the array size from it.
(digest_init): Delete arg TAIL. Fix all calls.
(convert_for_assignment): Mismatch in signedness
of pointer targets should not inhibit warnings for const mismatch.
Richard Kenner [Wed, 28 Jul 1993 19:38:13 +0000 (15:38 -0400)]
(copy_for_inline, case LABEL_REF): Properly copy LABEL_REF with LABEL_REF_NONLOCAL_P set.
(copy_for_inline, case LABEL_REF): Properly copy LABEL_REF
with LABEL_REF_NONLOCAL_P set.
Copy LABEL_OUTSIDE_LOOP_P flag.
(copy_rtx_and_substitute, case LABEL_REF): Likewise.
(copy_rtx_and_substitute, case CONST): Make recursive call for a LABEL_REF in
the constant pool.
Jim Wilson [Wed, 28 Jul 1993 17:15:25 +0000 (10:15 -0700)]
(assign_parms): Pass extra argument SIZE to move_block_from_reg calls.
(assign_parms): Pass extra argument SIZE to
move_block_from_reg calls.
(locate_and_pad_parm): For !ARGS_GROW_DOWNWARD case, move downward
padding pad_below call after round_up call.
expmed.c (store_split_bitfield): Fix handling of bitfields that cross word boundaries...
* expmed.c (store_split_bitfield): Fix handling of bitfields that
cross word boundaries, can only handle a word at a time.
(extract_split_bitfield): Likewise.
Richard Stallman [Tue, 27 Jul 1993 05:57:26 +0000 (05:57 +0000)]
(set_init_index): Add pedantic warning.
(set_init_label): Likewise.
(digest_init): Add `static' to definition.
(start_init): Fill in p->next.
Handle gaps in record initializers.
(constructor_bit_index): New variable.
(constructor_stack): New field bit_index.
(really_start_incremental_init, push_init_level): Save and init it.
(pop_init_level): Restore it.
(output_init_element): Update constructor_bit_index.
Use it to output gaps.
(pop_init_level): Speed up by using constructor_bit_index.
(process_init_element): Accept STRING_CST for subarray.