Bob Manson [Mon, 6 Apr 1998 20:51:28 +0000 (20:51 +0000)]
gcc.c: Add linker spec.
* gcc.c: Add linker spec.
(link_command_spec): Use %(linker) instead of ld.
(main): If collect2 is requested as the linker, see if it exists;
if not, use ld instead.
* Makefile.in (USE_COLLECT2): It's named collect2 now, not ld.
(ld:) Deleted.
(install-collect2): Install as collect2, not ld.
* configure.in(will_use_collect2): It's named collect2 now.
* collect2: Remove checks to see if we were invoked recursively.
(collect_execute): Use _spawnvp under cygwin32.
gansidecl.h: Check if compiler supports __attribute__.
* gansidecl.h: Check if compiler supports __attribute__. Provide
definitions for ATTRIBUTE_UNUSED and ATTRIBUTE_PRINTF using
__attribute__ when its available. Also provide definitions for
ATTRIBUTE_PRINTF_1, ATTRIBUTE_PRINTF_2 and ATTRIBUTE_PRINTF_3 in
terms of ATTRIBUTE_PRINTF.
* genoutput.c (process_template): Use ATTRIBUTE_UNUSED in place
of __attribute__.
John Wehle [Sun, 5 Apr 1998 20:32:31 +0000 (20:32 +0000)]
i386.md (movsf_push, movsf_mem): Remove.
* i386.md (movsf_push, movsf_mem): Remove.
(movsf_push): Rename from movsf_push_nomove and move in front of
movsf. Use nonmemory_operand predicate and don't bother checking
TARGET_MOVE.
(movsf_push_memory): New pattern.
(movsf): Don't bother checking for push_operand. If TARGET_MOVE and
both operands refer to memory then force operand[1] into a register.
(movsf_normal): Change to unnamed pattern.
Likewise for movdf, movxf, and friends.
i386.c (asm_output_function_prefix, [...]): Use ASM_GENERATE_INTERNAL_LABEL properly.
* i386.c (asm_output_function_prefix, load_pic_register):
Use ASM_GENERATE_INTERNAL_LABEL properly.
(output_pic_addr_const): Recognize %X to supress any PIC sym suffix.
(print_operand): Ignore it.
(load_pic_register): Use it for the got load call.
* i386.md (prologue_set_got, prologue_get_pc): Likewise.
(prologue_get_pc_and_set_got): Likewise.
* i386.h: Update print_operand docs.
alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '(' for s/sv/svi.
* alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '(' for s/sv/svi.
* alpha.c (print_operand): Handle it.
* alpha.md (fix_truncsfdi2): Use it. Add earlyclobber pattern
for ALPHA_TP_INSN.
(fix_truncdfdi2): Likewise.
* com.c (ffecom_expr_): Revert Oct 22 change. Instead take a WIDENP
argument so that we can respect the signedness of the original type.
(ffecom_init_0): Do sizetype initialization first.
tree.h (sizetype_tab[2], [...]): Merge all of these into a single struct, with additional [us]sizetype entries.
* tree.h (sizetype_tab[2], sbitsizetype, ubitsizetype): Merge all
of these into a single struct, with additional [us]sizetype entries.
* stor-layout.c (set_sizetype): Initialize [us]sizetype.
* fold-const.c (size_int_wide): Don't rely on sizetype_tab being
an array.
Jason Merrill [Fri, 3 Apr 1998 14:13:24 +0000 (14:13 +0000)]
Implement empty base optimization.
* class.c (finish_struct_1): Add vbase fields earlier. Set
CLASSTYPE_SIZE of an empty base to 0. Types with bases can be empty.
* search.c (dfs_check_overlap, dfs_no_overlap_yet): New fns.
(types_overlap_p): New fn.
* tree.c (avoid_overlap): New fn.
(build_base_fields): Use it to avoid overlapping empty bases.
* cp-tree.h, decl2.c, lang-options.h: Add -fnew-abi.
Jason Merrill [Fri, 3 Apr 1998 03:41:20 +0000 (22:41 -0500)]
Re-implement allocation of base class subobjects.
* tree.c (unshare_base_binfos): New fn.
(layout_basetypes): Use it. Now handles offsets of both virtual and
non-virtual bases, after layout_type.
(layout_vbasetypes): Remove.
(build_base_fields): Generate FIELD_DECLs for each non-virtual base.
(build_vbase_pointer_fields): Split out from old layout_basetypes.
* class.c (finish_base_struct): Lose offset handling code.
Move nonvdtor warning here. Don't mess with t_binfo anymore.
(finish_struct_1): Don't mess with t_binfo anymore. Use fns above.
* cp-tree.h: Adjust.
Mike Stump [Thu, 2 Apr 1998 23:15:06 +0000 (23:15 +0000)]
gthr.h: Support systems that don't have weak, but have threads.
* gthr.h: Support systems that don't have weak, but have threads.
* configure.in (*wrs-vxworks*): Use VxWorks threads by default.
* gthr-vxworks.h: New file.
* objc/thr-vxworks.h: Dummy file from thr-single.c for now.
Jeffrey A Law [Wed, 1 Apr 1998 23:18:11 +0000 (23:18 +0000)]
c-lex.c (yylex): Initialize traditional_type, ansi_type and type.
* c-lex.c (yylex): Initialize traditional_type, ansi_type and type.
* caller-save.c (insert_save_restore): Initialize pat, code and
numregs.
* emit-rtl.c (push_to_sequence): Initialize top.
(push_topmost_sequence): Likewise.
* genattrtab.c (simplify_by_exploding): Initialize defval.
* profile.c (branch_prob): Initialize dest.
* rtl.h (note_stores): Remove duplicate prototype.
(GEN_INT): Re-instate cast of second arg to HOST_WIDE_INT.
Fix some warnings.
* cplus-dem.c (gnu_special): Don't get confused by .<digits>
strings that are not actually lengths.
A change from libiberty that didn't make it into the gcc copy.
Jeffrey A Law [Wed, 1 Apr 1998 22:44:48 +0000 (22:44 +0000)]
genattrtab.c: Make generated file use system.h, instead of including stdio.h, etc directly.
* genattrtab.c: Make generated file use system.h, instead of
including stdio.h, etc directly.
* genextract.c, genopinit.c, genoutput.c: Likewise.
* genpeep.c, genrecog.c: Likewise
* genoutput.c (process_template): Mark operands in the generated
function as potentially unused if compiling with GNU CC.
Jason Merrill [Wed, 1 Apr 1998 17:05:25 +0000 (17:05 +0000)]
friend.c (is_friend): Fix access control for local classes.
* friend.c (is_friend): Fix access control for local classes.
* class.c (is_empty_class): New fn.
* call.c (build_call): Don't pass empty class objects to a function.
Mark Mitchell [Wed, 1 Apr 1998 13:48:48 +0000 (13:48 +0000)]
cplus-dem.c (optable): Add sizeof.
* cplus-dem.c (optable): Add sizeof.
(demangle_template_value_parm): New function containing code
previously found in demangle_template.
(demangle_integral_value): New function which handles complicated
integral expressions.
(demangle_template): Use them.
Mark Mitchell [Wed, 1 Apr 1998 13:45:40 +0000 (13:45 +0000)]
varasm.c (make_decl_rtl): Update the DECL_ASSEMBLER_NAME for a entity in a local scope.
* varasm.c (make_decl_rtl): Update the DECL_ASSEMBLER_NAME for a
entity in a local scope.
* fold-const.c (fold): Call truthvalue_conversion for values which
are folded to boolean type.
Jason Merrill [Mon, 30 Mar 1998 10:56:25 +0000 (10:56 +0000)]
tree.c (member_p): New fn.
* tree.c (member_p): New fn.
* decl2.c (finish_file): Only set DECL_STATIC_FUNCTION_P for
initializing class members.
* cp-tree.def (TEMPLATE_PARM_INDEX): Class 'x'.
* ptree.c (lang_print_xnode): Handle TEMPLATE_PARM_INDEX.