* expr.c (store_constructor): Allow variable bounds of array type.
(expand_expr): Don't blow up if type is ERROR_MARK.
* varasm.c (output_constructor): Don't access lower bound of array
type unless need it if index is supplied (so it can be a variable
if no index is supplied).
Use tree_low_cst; use HOST_WIDE_INT for sizes; change BITPOS to POS.
Other minor cleanups.
From-SVN: r36060
2000-08-16 Andrew Haley <aph@cygnus.com>
* typeck.c (build_java_array_type): Rewrite code to do array
alignment. Take into account back-end macros when aligning array
data. Remove setting of TYPE_USER_ALIGN; Java doesn't allow the
user to set alignment. Fixes gcj/252 and 160.
(This fixes gcj/252 and 160:
http://sources.redhat.com/ml/java-prs/2000-q2/msg00254.html
<couldn't find an archive entry for gcj/160>
http://gcc.gnu.org/ml/gcc-patches/2000-08/msg00907.html)
From-SVN: r36057
* c-common.c (declare_function_name): Use func_id_node,
function_id_node, and pretty_function_id_node. Do not make
__func__ visible at file scope.
* c-common.h (c_tree_index): Add CTI_FUNCTION_ID,
CTI_PRETTY_FUNCTION_ID, and CTI_FUNC_ID.
(function_id_node, pretty_function_id_node, func_id_node): New
macros.
* c-decl.c (init_decl_processing): Initialize function_id_node,
pretty_function_id_node, and func_id_node.
(c_make_fname_decl): Correct comment.
* tree.h (struct tree_identifier): Constify pointer member.
* c-decl.c (pushdecl, implicit_decl_warning): Constify a char *.
* c-pragma.h (struct weak_syms): Constify name and value members.
(add_weak): Constify arguments.
* calls.c (special_function_p): Constify a char *.
(expand_call): Remove variable which is initialized and then
never used.
* dependence.c (struct def_use, struct induction, struct subscript):
Constify 'variable' member.
(get_low_bound, have_induction_variable): Constify char * argument.
(find_induction_variable): Add braces to avoid dangling else.
(classify_dependence): Constify char * arrays.
* profile.c (output_func_start_profiler): Constify a char *.
* stor-layout.c (finalize_record_size): Constify a char *.
* tree.c (is_attribute_p): Constify a char *.
* varasm.c (add_weak, remove_from_pending_weak_list): Constify argument.
* varasm.c (make_function_rtl, make_decl_rtl): Rearrange code
for comprehensibility. Do not call get_identifier if we did
not change the DECL_ASSEMBLER_NAME of the decl. Use alloca to
create temporary string constants, not ggc_alloc_string. No
need to copy result of ASM_FORMAT_PRIVATE_NAME. Use const
char * to hold IDENTIFIER_POINTERs.
ch:
* inout.c (add_enum_to_list): Use DECL_NAME directly, don't get
its IDENTIFIER_POINTER and immediately call get_identifier on it.
* lex.c (yywrap): Constify a char *.
cp:
* class.c (build_secondary_vtable): Constify a char *.
* decl.c (init_decl_processing): Initialize function_id_node,
pretty_function_id_node, and func_id_node.
* input.c (struct input_source): Constify 'str'.
(feed_input): Constify first argument.
* mangle.c (write_identifier): Constify argument.
* pt.c (mangle_class_name_for_template): Constify argument.
f:
* ansify.c: Use #line, not # <number>.
java:
* jcf-parse.c (set_source_filename): Constify a char *.
* jcf-write.c (append_innerclasses_attribute,
make_class_file_name): Constify a char *. Don't recycle a
variable for an unrelated purpose.
* parse.y: (build_alias_initializer_parameter_list): Constify a char *.
(breakdown_qualified): Do not modify IDENTIFIER_POINTER strings.
From-SVN: r36055
* config/ia64/ia64.md (reload_inti): Use a TImode scratch. Use
the half that does not conflict with the reload register.
(reload_outti): Likewise.
From-SVN: r36053
* flags.h (time_report, mem_report): New global flags.
* toplev.c: Define time_report and mem_report.
(f_options): Add -ftime-report and -fmem-report.
(compile_file): Turn on time_report if quiet_flag is off.
Call ggc_print_statistics at very end if mem_report is on.
* timevar.c (TIMEVAR_ENABLE): Examine time_report, not quiet_flag.
* ggc-common.c (ggc_print_statistics): Rename to
ggc_print_common_statistics; all callers changed. Scale
quantities above 10K to kilobytes and above 10M to megabytes.
* ggc-page.c (ggc_page_print_statistics): Rename to
ggc_print_statistics. Report memory consumed by internal data
structures for each allocation bucket. Scale quantities above
10K to kilobytes and above 10M to megabytes.
* ggc-simple.c: Prototype debug_ggc_tree to avoid warning.
Cast PTR_KEY(p) to unsigned long in fprintf call to avoid warning.
Define tally_leaves always.
(ggc_print_statistics): New function.
* ggc.h: Adjust for renamed functions.
From-SVN: r36049
* config/avr/avr-protos.h: (avr_output_ascii) Removed.
(avr_progmem_p): New prototype.
(output_movsisf): Prototype declaration changed.
(output_movqi): New prototype.
(output_movhi): New prototype.
(call_insn_operand): Likewise.
(final_prescan_insn): Likewise.
(avr_simplify_comparision_p): Likewise.
(avr_normalize_condition): Likewise.
(compare_eq_p): Likewise.
(out_shift_with_cnt): Likewise.
(const_int_pow2_p): Likewise.
(output_reload_inhi): Prototype declaration changed.
* config/avr/avr.c: (debug_hard_reg_set): Prototype declared.
(ldi_reg_rtx): New. rtx for r31.
(avr_init_stack): Initialize as "__stack".
(function_prologue): Use it.
Replace all TARGET_ENHANCED with AVR_ENHANCED.
(avr_mcu_name): Initialize as "avr2".
(avr_enhanced_p, avr_mega_p): New variables.
(mcu_types, avr_override_options): Handle all known MCU types.
Also handle avr1 (only preprocess, assemble and link).
(print_operand): Using of `%K' in output template removed.
(out_movqi_r_mr): Optimized.
(out_movhi_r_mr): Likewise.
(output_movqi): New function.
(output_movhi): Likewise.
(out_movsi_r_mr): Optimized.
(output_movsisf): Compute insn length for `adjust_insn_length'
(out_movqi_mr_r): Optimized.
(out_movhi_mr_r): Optimized.
(adjust_insn_length): Use output_movsisf, output_movqi,
output_movhi for insn length adjusting.
(reg_unused_after): Use dead_or_set_p.
(preferred_reload_class): Now havn't any restriction.
(reg_was_0): New function.
(io_address_p): Likewise.
(const_int_pow2_p): Likewise.
(output_reload_inhi): Likewise.
(output_reload_insisf): Likewise.
* config/avr/avr.h (MULTILIB_DEFAULTS): Define.
(LIB_SPEC): Use -lc for all supported devices.
(LIBGCC_SPEC): Use -lgcc for all supported devices.
(AVR_MEGA): Define as avr_mega_p.
(AVR_ENHANCED): New, define as avr_enhanced_p.
(TARGET_SWITCHES): Remove -menhanced, now handled by -mmcu=...
(CPP_SPEC, LINK_SPEC): Handle all known MCU types.
(CRT_BINUTILS_SPECS): Handle all known MCU types.
Rename gcrt1-*.o to make file names unique on 8.3 filesystems.
(EXTRA_SPECS): Add CPP_AVR[1-5]_SPEC.
(ASM_SPEC): Pass -mmcu=... to the assembler.
Change all -DAVR_* to -D__AVR_*__.
(INIT_TARGET_OPTABS), config/avr/libgcc.S:
Rename library functions to start with two underscores.
(ASM_OUTPUT_COMMON): Outputs `.comm VAR,VAR-SIZE,1' to avoid
alignment.
(ASM_WEAKEN_LABEL): Declared for __attribute__((weak)).
(SUPPORTS_WEAK): Likewise.
(LDI_REG_REGNO): New. Register r31 will be used as temporary
register for loading constants to r0-r14.
* config/avr/avr.md: Replace all TARGET_ENHANCED with
AVR_ENHANCED.
(*mov_r_sp): Removed. Handled by output_movhi.
(*mov_sp_r): Likewise.
(*mov_sp_r_no_interrupts): Likewise
(*mov_sp_r_tiny): Likewise.
(*movqi): Use output_movqi.
(*reload_inqi): New.
(*movhi): Use output_movhi.
(*reload_inhi): New.
(*negsi2): Optimized.
(*negsf2): Likewise.
Added peepholes (define_peephole2) for loading constants to r0-r14
and for using `cpse' command.
* config/avr/libgcc.S: Rename library functions to start with two
underscores.
Add support for enhanced core.
(_moqhi3): Fix typo, now _modqi3.
(__divsi_raw): Use __zero_reg__ as loop counter, smaller by 1 word.
(__prologue_saves__): Remove test for stack adjust by 0.
(__tablejump__): New.
* config/avr/t-avr: Build libgcc2 with -mcall-prologues.
Add multilib support.
From-SVN: r36047
* loop.c (prescan_loop): Don't check unknown_address_altered
when deciding if insert_loop_mem is safe. Add BLKmode MEMs
to loop_store_mems as necessary.
(loop_invariant_p): Don't check unknown_address_altered
or unknown_constant_address_altered.
From-SVN: r36045
* cpperror.c (print_file_and_line): If line is (unsigned int)-1,
print just the filename.
* cpplex.c (_cpp_run_directive): Add additional argument, the
name to give the synthetic buffer. This defaults to
translated "<command line>".
* cpplib.c (cpp_define, cpp_undef, cpp_assert, cpp_unassert):
Adjust to match.
(_cpp_define_builtin): New function.
* cppinit.c (initialize_builtins): Use _cpp_define_builtin.
* cpphash.h: Update prototypes.
* tradcpp.c (main): Process -D and -U simultaneously, in the
order they appeared on the command line.
From-SVN: r36043
* c-decl.c (define_label): Call warning_with_file_and_line and
error_with_file_and_line instead of plain warning or error.
* c-parse.in (label): Use save_filename/save_lineno to ensure
correct values for calls to define_label.
From-SVN: r36040
* calls.c (expand_call): Don't create a VAR_DECL just to throw it
away.
* expr.c (expand_expr, case TARGET_EXPR): Don't call
mark_addressable.
* tree.h (get_file_function_name): Remove two duplicate
declarations.
* typeck.c (mark_addressable): Remove code that pokes around in
RTL.
From-SVN: r36038
* dwarf2out.c (attr_checksum): Also ignore DW_AT_producer.
* dwarf2out.c (dwarf2out_finish): Don't bother calling
break_out_includes if it won't do anything.
From-SVN: r36030
2000-08-28 Daniel Berlin <dberlin@redhat.com>
* dwarf2out.c (DIE_LABEL_PREFIX): Remove leading "__".
(print_die): If we don't know the offset of the
target die, try the symbol. Add a trailing newline.
(reverse_all_dies): New fn.
(dwarf2out_finish): Call it.
(break_out_includes): Reorganize for clarity.
(add_sibling_attributes): Don't call reverse_die_lists.
(output_comp_unit): Rename from output_comdat_comp_unit. Use for
primary CU, too.
* flags.h: Add flag_eliminate_dwarf2_dups.
* toplev.c (f_options): Support -feliminate-dwarf2-dups.
2000-08-28 Jason Merrill <jason@redhat.com>
* dwarf2.h (DW_TAG_GNU_BINCL, DW_TAG_GNU_EINCL): New tags.
* dwarf2out.c: #include "md5.h".
(DIE_LABEL_PREFIX): New macro.
(dw_val_struct): Add 'external' flag to val_die_ref.
(add_AT_die_ref, AT_ref): Adjust.
(AT_ref_external, set_AT_ref_external): New fns.
(build_abbrev_table): Call set_AT_ref_external.
(value_format): Call AT_ref_external.
(die_struct): Add die_symbol field.
(new_die): Clear it.
(dwarf_tag_name): Handle BINCL/EINCL.
(dwarf2out_start_source_file): Add BINCL DIE.
(dwarf2out_end_source_file): Add EINCL DIE.
(push_new_compile_unit, pop_compile_unit, clear_die_sizes): New fns.
(loc_checksum, attr_checksum, die_checksum): New fns.
(is_type_die, is_comdat_die, is_symbol_die): New fns.
(compute_section_prefix, assign_symbol_names): New fns.
(gen_internal_sym, output_die_symbol, output_symbolic_ref): New fns.
(output_die): Call output_die_symbol and AT_ref_external.
(output_comdat_comp_unit): New fn, split out from...
(dwarf2out_finish): ...here. Also call add_sibling_attributes for
secondary CUs.
(output_pubnames, output_aranges): Abort if we see entries from
secondary CUs.
* toplev.h: Declare file_name_nondirectory.
* toplev.c (file_name_nondirectory): New fn, moved from C++ frontend.
(rest_of_type_compilation): Call dwarf2out_decl if at toplevel.
(debug_start_source_file): Call dwarf2out_start_source_file
regardless of debug verbosity.
(debug_end_source_file): Similarly.
* tree.h: Declare clean_symbol_name.
* tree.c (clean_symbol_name): Split out from...
(get_file_function_name_long): ...here.
* dwarf2out.c (new_loc_descr): Use calloc.
(splice_child_die): Remove the die from the right parent.
(gen_struct_or_union_die): Don't add AT_name to a specification DIE.
gcc/cp:
2000-08-28 Jason Merrill <jason@redhat.com>
* lex.c (file_name_nondirectory): Move to toplev.c.
libiberty:
2000-08-28 Jason Merrill <jason@redhat.com>
* Makefile.in (REQUIRED_OFILES): Add md5.o.
(CFILES): Add md5.c.
* md5.c: New file.
include:
2000-08-28 Jason Merrill <jason@redhat.com>
* md5.h: New file.
gcc/cp:
2000-08-28 Jason Merrill <jason@redhat.com>
* cp-tree.h (LOCAL_CLASS_P): New macro.
* class.c (finish_struct_1): Use it.
From-SVN: r36022
* dwarf2out.c (new_loc_descr): Use calloc.
(splice_child_die): Remove the die from the right parent.
(gen_struct_or_union_die): Don't add AT_name to a specification DIE.
From-SVN: r36021
* toplev.c (decode_g_option): Don't give warning for unknown -g
option; return 0 instead.
(main): If -g option is not recognized by front end or
language-independent code, give warning.
From-SVN: r36020
* cp-demangle.c (demangle_name): Initialize template_p in local
name case. Don't re-add substitutions as candidates.
(demangle_nested_name): Use <unqualified-name>.
(demangle_prefix): Likewise. Don't add template names as
substitution candidates twice, or re-add a substitution or the
last prefix component.
(demangle_local_name): Adjust output format.
From-SVN: r36014
* mangle.c (CLASSTYPE_TEMPLATE_ID_P): Remove unexplained voodoo.
(write_encoding): Pass another argument to write_name.
(write_name): Add ignore_local_scope parameter. Fix handling of
local names.
(write_nested_name): Use write_unqualified_name.
(write_prefix): Likewise. Skip out on FUNCTION_DECLs.
(write_template_prefix): Use write_unqualified_name.
(write_component): Remove.
(write_local_name): Add parameter. Use direct local entity to
discriminator calculation.
(write_class_enum_type): Pass another argument to write_name.
(write_template_template_arg): Likewise.
(make_guard_variable): Likewise.
From-SVN: r36013
* c-decl.c (duplicate_decls): Don't set TREE_STATIC or clear
DECL_EXTERNAL on a local extern. Don't set DECL_IGNORED_P or
TREE_ASM_WRITTEN, either.
(finish_decl): Adjust.
From-SVN: r36012
* decl.c (pushdecl): Matching decls for local externs are found in
the current level. Propagate linkage information from previous
declarations.
From-SVN: r36011