blob: af668a3be8965fcbe3c32bce9f8dcd19ed01cd5f [file] [log] [blame]
Mon Jan 13 19:12:18 1992 Jim Wilson (wilson at
* unroll.c (find_splittable_givs): When completely unrolling loop,
use biv initial value stored in splittable_regs instead of
bl->initial_value, since the later may not be safe.
* sched.c (schedule_block): When calculating whether a register
crosses a call, must do this after registers are killed and before
new registers are made live.
* x-rs6000: Define INSTALL as /usr/ucb/install -c. /etc/install
(the SYS V version) does not handle -c option as
intends it.
Mon Jan 13 11:21:24 1992 Michael Meissner (meissner at
* mips-tfile (parse_stabs_common): Don't relocate N_LBRAC and
N_RBRAC stabs for compatibility with other stabs implementations.
Mon Jan 13 07:41:32 1992 Michael Tiemann (tiemann at
* cp-decl.c (grokdeclarator): Don't set TREE_PRIVATE here.
TREE_PRIVATE is only for visibility.
(start_function): Don't test TREE_PRIVATE here. #pragma
interface/implementation should properly handle the case of static
(i.e. non-public) defns in implementation section now.
Mon Jan 13 07:31:38 1992 Richard Kenner (kenner at
* rs6000.c (output_ascii): The AIX assembler silently truncates
strings longer than 666 characters, so break them up well before that.
Mon Jan 13 00:26:47 1992 Richard Stallman (rms at
* c-decl.c (pushdecl): Warn about shadowing at top level any symbol
that was declared among the function parms. But don't warn for
parms in a nested function.
* tree.c (chain_member): New function.
* sparc.c (output_return): Handle structure value in all the cases.
* toplev.c (main): -gstabs+ means use stabs with gdb extensions.
* fixincludes: Insert #undef NULL before #define NULL.
* gvarargs.h (va_list): Check some macros to avoid redefinition.
* tree.h (DECL_PACKED): New macro.
* c-common.c (decl_attribute): Handle `packed'.
* stor-layout.c (layout_record): Handle DECL_PACKED.
* c-parse.y (attrib): Accept `packed' with no arg.
* c-decl.c (shadow_tag): For useless keyword, just warn.
(duplicate_decls): Don't preserve volatile bit from old decl
if that is just a default declaration for abort, exit, etc.
* cccp.c (do_assert, do_unassert, check_assertion):
No pedantic warnings in system header files.
* ultrix.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE): Defined.
* i386.h (HI_REGISTER_NAMES): Add a name for dummy reg 16.
* dbxout.c (flag_minimal_debug): Make it static.
Sun Jan 12 18:10:46 1992 Richard Stallman (rms at
* c-lex.c (check_newline): Check #line for `3' meaning system header.
* cccp.c (output_line_command): Output `3' if system header.
* c-tree.h (system_header_p): Declare it.
(ridpointers): Declaration deleted.
* dwarfout.c (fundemental_type_code): Treat OFFSET_TYPE like integer.
(type_is_fundamental, output_type): Likewise.
* optabs.c (expand_float): Abort if FROM has VOIDmode.
* expr.c (expand_expr, FLOAT_EXPR case): Don't pass a VOIDmode.
Sun Jan 12 16:11:40 1992 Michael Meissner (meissner at
* mips.h (ASM_OUTPUT_SPACE): If assembler is gas, don't use the
.space directive, since the table PREDICATE_CODES generates tickles
a bug.
Sun Jan 12 15:59:41 1992 Richard Kenner (kenner at
* expmed.c: Include real.h.
(make_tree): Properly handle CONST_INT and handle many more rtl codes.
(expand_mult_add): Don't do folding here; just call make_tree and fold.
* (expmed.o): Includes real.h.
Sun Jan 12 12:26:20 1992 Michael Tiemann (tiemann at
* cp-decl.c (store_parm_decls): Finish change started 11 Jan 1992.
* cp-decl.c (pushtag): Don't set CLASSTYPE_TAGS after
CURRENT_CLASS_TYPE has been defined.
* cp-lex.c (check_newline): Set INTERFACE_UNKNOWN if we see a
#pragma implementation or if it's the toplevel file.
Sat Jan 11 22:04:34 1992 Michael Meissner (meissner at
* (fix_truncsfsi2_opt): Delete, since the optimizer will
strip the clobbers when substituting a register for a cs'ed value,
unlike GCC 1.
(fix_truncdfsi2_opt): Likewise.
(long long shifts): Fix various typos.
Sat Jan 11 15:26:24 1992 Richard Stallman (rms at
* expr.h (GEN_FCN): Alternate definition if FUNCTION_CONVERSION_BUG.
* xm-romp.h (FUNCTION_CONVERSION_BUG): Define it.
* (cmpstrsi recognizers): Change back to repz.
Sat Jan 11 11:18:32 1992 Michael Tiemann (tiemann at
* cp-decl.c (store_parm_decls): Don't put non-PARM_DECL nodes in the
list that will become DECL_ARGUMENTS.
* cp-decl2.c (grokfield): Convert () initialization to =
initialization in FIELD context.
* cp-decl.c (parmlist_is_exprlist): Now non-static.
* cp-decl.c (grokdeclarator): Don't let static class members be
declared `static' at top-level.
* cp-decl.c (pushdecl_class_level): Don't use DECL_ASSEMBLER_NAME.
* cp-decl.c (grokdeclarator): Don't let language linkage interfere
with declarator grokking--the two are independent.
* cp-call.c (compute_conversion_costs): Look for constructor or type
conversions regardless of whether we have CONTRAVARIANCE_HARSHNESS
or not. Also, `#if 0' some dead code.
* cp-method.c (report_type_mismatch): Fix bugs in formatting error
* cp-decl.c (grokvardecl): Verify that when static class members are
declared at toplevel, the types match their initial declaration.
Sat Jan 11 08:41:24 1992 Fred Fish (fnf at fishpond)
* config/m68kv4.h (NO_DOLLAR_IN_LABEL): Undefine so that the
default for m68k/SVR4 systems is to use '$', which is more
widely supported.
Sat Jan 11 10:56:10 1992 Jeffrey A. Law (law at
* Finish PIC implementation on the 68k
* output.h (flag_pic): Declare here so that insn-*.c can see it.
* reload1.c (reload): When compiling PIC ignore REG_EQUIV notes
* (call, call_value): Make these into define_expands. If
compiling PIC code, then load the address of the function into a
register so that we make indirect calls.
(Non-PIC call, call_value): New define_insns. These are
standard call insns.
(PIC call, call_value): New define_insns which output PIC calls.
(movsi): Make this into a define_expand. Legitimize PIC addresses
if necessary. Old movsi code is now an unnamed define_insn pattern.
without PIC relocation when compiling PIC code.
* m68k.c (legitimize_pic_address): New function. Given an address
return that address as "legitimized" PIC code.
(print_operand_address): When generating PIC code, handle PIC
relocated label_refs just like a PIC relocated symbol_ref.
(print_operand_address): If -fpic then add ":w" to displacement in
PIC relocated references.
(print_operand_address): If -fPIC then add ":l" to displacement in
PIC relocated references.
Fri Jan 10 18:03:08 1992 Ken Raeburn (Raeburn@Cygnus.COM)
* cp-init.c (build_new): Don't allocate header for arrays if no
destructor is needed. Also fix broken calculation of array size.
(build_delete): Don't skip array header if no destructor is needed.
Fri Jan 10 14:54:19 1992 Michael Tiemann (tiemann at
* cp-cvt.c cp-decl2.c cp-expr.c cp-gc.c cp-init.c cp-lex.c cp-parse.y
cp-pt.c cp-search.c cp-tree.c: Clean up problems found with -Wreturn
(from rfg).
* cp-typeck.c cp-tree.c cp-cvt.c cp-lex.c cp-call.c cp-class.c:
Add (unsigned) casts to all places where native SVr4 compilers
expect to see unsigned values.
Fri Jan 10 08:34:36 1992 Fred Fish (fnf at sunfish)
* m68ksgs.h (REGISTER_NAMES): Provide separate versions for
SUPPORT_SUN_FPA defined and not defined.
Fri Jan 10 22:36:41 1992 (Eric Youngdale at
* Improve I/O performance of gcc on VMS.
* cccp.c (VMS_open, VMS_fopen, VMS_freopen): New functions.
(open, fopen, freopen): Define as macros on VMS.
* toplev.c (VMS_fopen): New function.
(fopen): Define as macro on VMS.
Fri Jan 10 22:00:50 1992 Richard Kenner (kenner at
* genrecog.c (merge_trees): If two trees both have actions, but
one adds clobbers and one doesn't, ignore the one that does.
* genemit.c (gen_split): Say that we are giving the definition number
in our error message.
* genrecog.c (fatal): Likewise.
* genoutput.c (scan_operands): Likewise.
* caller-save.c: Include expr.h (for gen_move_insn).
(regno_save_elim): Deleted.
(init_save_areas): Don't initialize it.
(setup_save_areas): Don't set it.
(save_call_clobbered_regs, restore_referenced_regs): Accept mode,
not spill register.
(insert_save_restore): Don't do our own register elimination and
reloading; instead set the insns we make to the desired mode.
* reload1.c (struct elim_table): New field MAX_OFFSET.
(reload): Always call init_save_areas.
Initialize max_offset each pass.
At each CALL_INSN, create a need for a spill register that will
be used by caller-save.
Pass mode for insns to save_call_clobbered_regs instead of a
spill reg number.
Call reload_as_needed if we will have to reload the caller-save
insns, even if nothing else needs reload (unlikely).
(eliminate_regs_in_insn): Record maximum offset value.
* (caller-save.o): Includes expr.h.
* reload.c (find_reloads): CALL_INSNs can't have output reloads.
* reload1.c (emit_reload_insns): Put any reloads for a CALL_INSN
in front of any immediately-preceeding USE insns.
* flow.c (life_analysis): Mark all global regs as live at the end of
the function.
(propagate_block): Each call makes all global registers live.
(mark_used_regs): A RETURN may use the stack pointer and uses all
global regs.
* cse.c (cse_insn): A CALL_INSN clobbers any global regs.
* reorg.c (mark_referenced_resources): Calls used global regs.
(mark_set_resources): CALL_INSNs clobber global regs.
Fri Jan 10 17:24:06 1992 Michael Meissner (meissner at
* collect2.c (whole file): Major rewrite to merge in collect3
functionality which uses GCC to build up the constructor and
destructor tables, instead of using the assembler. Also improve
the support for cross compilers to find the tools. The old assembly
language support has been removed.
* mips-tfile.c (CODE_MASK): Move to mips.h to use with mips-tdump
(MIPS_IS_STAB): Likewise.
(MIPS_MARK_STAB): Likewise.
* mips-tdump.c (various): Changes by Per Bothner to print
encapsulated stabs, and to shorten the output.
* mips.h (MIPS_VERSION): Set Meissner version # to 7.
(cmp2_op): Make cmp2_op a real function instead of just a
macro to cmp_op.
(OPTIMIZATION_OPTIONS): -O now sets flag_caller_saves and
(CC1_SPEC): Fix typo preventing -mgpopt from being set if
GCC 2.00.
(CODE_MASK): Move from mips-tfile.
(MIPS_IS_STAB): Likewise.
(MIPS_MARK_STAB): Likewise.
* mips.c (cmp2_op): Make this a real function, instead of a macro
pointing to cmp_op.
(volatile_buffer): New static variable to support .set volatile.
(mips_move_1word): Do .set volatile/.set novolatile around volatile
memory references.
(mips_move_2words): Likewise.
* (sne define_split): Fix so that it generates a gtu 0.
(all set cc define_splits): Remove reload_completed tests.
(all set cc define_insns): Don't allow 0 as operand 1.
Fri Jan 10 16:40:45 1992 Jeffrey A. Law (law at
* (addsi3, addhi3, subsi3, stack adjustment peepholes):
Perform small (8 < N <= 16) constant additions and subractions to
address registers with two addqw (or subqw) instructions.
Fri Jan 10 06:54:22 1992 Richard Kenner (kenner at
* calls.c (expand_call): Check for _longjmp as well as longjmp;
clean up code a bit and merge with check for setjmp-like names.
Emit a BARRIER if this is a call to longjmp in addition to
volatile calls.
Fri Jan 10 02:25:54 1992 Richard Stallman (rms at
* c-typeck.c (digest_init): Properly return error_mark_node
after invalid element in array initializer.
* gcc.c (pexecute): Use `fork' in error message if don't have vfork.
Thu Jan 9 13:36:25 1992 Richard Stallman (rms at
* expr.c (expand_expr): Handle OFFSET_REF.
* cse.c (simplify_binary_operation): Never use associative law for
floating arithmetic.
* fixinc.svr4: Renamed INCLUDES to INPUT.
* (cmpstrsi recognizers): Output repe, not repz.
Thu Jan 9 18:02:34 1992 Dennis P. Glatting (dennisg at tti)
* tree.h (CONSTRUCTOR_NAME_FORMAT): Changed name format. Old format
was recognized as destructors not constructors.
* objc-actions.c (build_module_descriptor):
Null-terminate global_object_name.
Thu Jan 9 10:35:58 1992 Tom Wood (wood at
* sdbout.c (sdbout_syms): Don't attempt to output a LABEL_DECL.
Thu Jan 9 08:17:44 1992 Richard Kenner (kenner at
* fold-const.c (merge_component_references): Treat constants as
unsigned, so we don't get extra sign bits where we don't want them.
Wed Jan 8 19:12:59 1992 James Van Artsdalen (james at
* reload.c (combine_reloads): Don't use a fixed_reg as an reload
reg, even if it dies.
* loop.c (record_giv): Fix typo extracting insn_uid.
Wed Jan 8 15:41:10 1992 Richard Stallman (rms at
* cpp.texi, gcc.texi: Files renamed.
* invoke.texi, extend.texi, md.texi, rtl.texi, tm.texi: New subfiles.
* Corresponding changes.
* fixincludes: Renamed INCLUDES to INPUT.
* m68k.c (notice_update_cc, print_operand): Fix typos.
* cp-decl.c (expand_static_init): Save and restore current obstacks.
* c-decl.c (poplevel): Put labels in BLOCK_VARS of top-level block.
Wed Jan 8 12:53:48 1992 Michael Tiemann (tiemann at
* cp-decl.c (expand_static_init): Switch to PERMANENT_OBSTACK during
Wed Jan 8 07:45:58 1992 Tom Wood (wood at
* m88kv3.h (STARTFILE_SPEC): SVR3 has *crt0.o files.
* configure (m88k-*sysv{3,4}): The files are named m88kv{3,4}.
Wed Jan 8 06:01:44 1992 Richard Kenner (kenner at
* (mftbi): Allow memory in the contraints since there can't
be an input reload on an insn that uses cc0.
* cse.c (FIXED_BASE_PLUS_P): Include virtual_incoming_args_rtx.
(find_comparison, simplify_relational_operation_args): Use
NONZERO_BASE_PLUS_P instead of FIXED_BASE_PLUS_P when appropriate.
* (peepholes): Don't change around stack adjusts and pushes
when we are pushing something whose address involves sp.
* cse.c (simplify_unary_operation): Check for operations on
integers by looking at mode of OP, not output mode, to avoid
confusion with FIX operations whose result is an integer.
* rtl.h ([df]const[012]_rtx): Deleted.
(const_tiny_rtx): New declaration.
(CONST0_RTX): Use const_tiny_rtx instead of {d,f,}const0_rtx.
(CONST1_RTX, CONST2_RTX): New macros.
* emit-rtl.c ([df]const[012]_rtx): Deleted.
(const_tiny_rtx): New definition.
(init_emit_once): Initialize const_tiny_rtx instead of old vars.
* cse.c (simpify_binary_operation): Use CONST[01]_RTX.
* varasm.c (immed_real_const_1): Likewise.
* combine.c (subst): Likewise.
* reg-stack.c (record_reg_life, stack_reg_life_analysis): Likewise.
*,, m88k.c,, vax.h, Likewise.
Tue Jan 7 22:11:17 1992 Richard Stallman (rms at
* x-i386isc (ENQUIRE_LDFLAGS): New defn: add -posix.
* protoize.c (_POSIX_SOURCE): Define only if POSIX.
* m68k.h (FPA_REG_P): Always define this somehow.
* c-decl.c (c_decode_option): Handle -Wchar-subscripts.
* c-typeck.c (build_array_ref): Do the real work.
Tue Jan 7 21:15:54 1992 Michael Meissner (meissner at
* (branch_zero_false): Use correct mode (CC_0) on
Tue Jan 7 14:24:45 1992 James Van Artsdalen (james at
* reg-stack.c (replace_reg): get mode class from a mode, not a reg.
Tue Jan 7 14:16:18 1992 Richard Stallman (rms at
* reg-stack.c (emit_pop_insn): Fix typo FPmode_reg.
* protoize.c (longjmp): Don't declare it.
Tue Jan 7 09:47:47 1992 Michael Tiemann (tiemann at
* cp-lex.c (real_yylex): From John Hassey, allocate space for the
terminating null on wide character literals.
Tue Jan 7 07:41:42 1992 Tom Wood (wood at
* m88kv3.h (LIB_SPEC): Add -lg.
Tue Jan 7 06:29:30 1992 Richard Kenner (kenner at
* stor-layout.c (layout_type): Don't over-align a structure
when strict alignment is not required.
* rs6000.h (CALL_USED_REGISTERS): r31 should not be marked call-used.
* (add-and-compare): Fix duplicate operand number.
* (inbyte, inhw): Correct duplicate operand number.
* fold-const.c (fold, case MULT_EXPR): Simplify (a * (1 << b)).
* combine.c (subst, case MULT): Likewise.
(simplify_shift_const, shift cases): Similarly, associate A << B << C.
* genoutput.c (seen): New array.
(scan_operands): Give error if an operand number was specified
twice. Include pattern number in error message.
(gen_insn, gen_expand, gen_split, gen_peephole): Initialize `seen'.
(gen_split, gen_peephole): Add initializations for arrays that
are copied.
* optabs.c (expand_unop): Complete recent change; one TARGET was
not changed to TEMP.
* expmed.c (expand_mult): Always try multiplication by value and
by negated value. Fix bug where we don't include the cost of the negate
when seeing which way is better. Write proper value in REG_EQUAL
* optabs.c (extendtab): Replacement for {zero,sign}_extend_codes.
(can_extend_p): Use new table and return type is not enum insn_code.
(gen_extend_insn): Deleted; not used.
(init_extends): Make like init_flottab: use new table and initialize
unused entries to CODE_FOR_nothing, not zero.
* expr.c (convert_move): can_extend_p fails if it returns
CODE_FOR_nothing, not zero.
* expr.h (can_extend_p): Add definition.
* expr.h: Add "extern" to function definitions.
Mon Jan 6 10:12:34 1992 Leonard Norrgard (vinsci at
* m68k.c (SUPPORT_SUN_FPA): Conditionalize references to the
optional Sun 3 Floating Point Accelerator with SUPPORT_SUN_FPA.
* m68k.h (SUPPORT_SUN_FPA): Likewise.
* m68k.c (notice_update_cc): New function.
* m68k.h (NOTICE_UPDATE_CC): Just call notice_update_cc.
* sun3.h (SUPPORT_SUN_FPA): New define.
Mon Jan 6 16:42:43 1992 Richard Stallman (rms at
* varasm.c (assemble_global, assemble_label): New functions.
* objc-actions.c (finish_objc): Call them to define and globalize.
Use output_constant to reference a class.
* (install-limits-h): New target.
(install-headers): Depend on install-limits-h.
(USER_H): Deleted LIMITS_H.
(INSTALLED_H): Added limits.h.
(mostlyclean): Remove tmp-limits.h.
* limitx.h: New file.
* x-isc: File deleted.
* objc-actions.c (build_module_descriptor): Init global_object_name.
* (collect2): Depend on version.o.
* protoize.c (PATH_MAX): Definition deleted. Just test it
to see if param.h should be included.
* cse.c (simplify_binary_operation, case MULT): Make a copy
of the operand when converting 2.0 * X to X+X.
* reload.c (find_reloads): Refine when we set force_reload and
better document the cases.
Mon Jan 6 08:22:19 1992 James Van Artsdalen (james at
* i386.c (output_float_compare): Output only single-pop compare
if both operands are the FP top of stack reg.
When comparing FP top of stack with itself, print `%st(0)' as the
reg name, not `%st'.
Mon Jan 6 12:01:51 1992 Tiggr (rcpieter at
* (mulsi3): Fixed contraints.
Mon Jan 6 08:21:46 1992 Tom Wood (wood at
* Renamed from Rename the generated
files move*.asm from movstr*.asm to be SVR3-legit.
* t-m88k, t-m88kluna, t-m88kv4: Use the new names.
* c-aux-info.c, dbxout.c: Include errno.h as in protoize.c.
* (BISONFLAGS): Don't use -v since *.output is big.
(cp-parse.c): Do use -d to create cp-parse.h.
(cp-parse.o): Don't define PARSE_OUTPUT.
* x-mips, x-m88kdgux (BISONFLAGS): No -v.
Mon Jan 6 07:54:55 1992 Richard Kenner (kenner at
* genpeep.c (match_rtx): Loop over vectors (e.g., PARALLEL) in the
natural order so we see an operand before we see a MATCH_DUP referring
to it.
* genrecog.c (write_tree_1): Simplify code that writes braces and
avoid writing them unnecessarily.
Don't write dead code when last test was unconditional.
* optabs.c (expand_binop, expand_twoval_binop, expand_unop):
Standardize loop for wider mode.
(emit_cmp_insn, emit_float_lib_cmp): Likewise.
(expand_binop): Correct how extensions are done: use convert_to_mode,
don't use SUBREG for non-integer operations, and remove test
involving HOST_BITS_PER_INT.
(expand_unop): Similar changes; make code closer to expand_binop.
Handle failure of recursive call when expanding. Fix incorrect use
of TEMP when widening. Use SUBREG for NEG and NOT.
* reload.c (find_reloads_address_part): New function.
(find_reloads_address): Call it instead of push_reload when we are
reloading a PLUS or a constant.
Sun Jan 5 18:34:15 1992 (Eric Youngdale at
* Change file names from cp-tab.* to cp-parse.*.
Sun Jan 5 18:06:11 1992 Michael Tiemann (tiemann at
* cp-decl.c (grokdeclarator): Correctly grok REFERENCE_TYPE
parameters when TYPE_REFERENCE_TO is automagically converted.
Sun Jan 5 05:19:19 1992 Richard Stallman (rms at
* tree.h (CONSTRUCTOR_NAME_FORMAT): New macro.
* objc-actions.c (build_module_descriptor): Make constructor name
from name of file or of a global that it defines.
Return constructor name.
(finish_objc): Use name returned as name to call.
* protoize.c (GUESSPATHLEN): New macro.
(main): Use that for initial buffer size for getcwd.
* dbxout.c (getwd, getcwd, GUESSPATHLEN): Define as in protoize.c.
(dbxout_init): Call getcwd in loop, as in protoize.c.
* c-aux-info.c (getwd, getcwd, GUESSPATHLEN): Define as in protoize.c.
(gen_aux_info_record): Call getcwd in loop.
* i386v.h, i386vgas.h (MAXPATHLEN): Don't define.
* svr3.h (LINK_SPEC): Don't pass -K.
* reload.c (find_reloads): Do record in non_reloaded_operands if no -O.
* m68k.c (output_function_prologue, output_function_epilogue):
Add braces and adjust conditionals to fix balance and indentation.
* objc-actions.c (build_module_descriptor): Mark __objc_file_init used.
Sat Jan 4 13:27:40 1992 James Van Artsdalen (james at
* protoize.c: unprotoize getcwd & fork declarations.
(edit_fn_declaration): use "VOLATILE", not "volatile".
Sat Jan 4 20:19:41 1992 Michael Meissner (meissner at
* mips.h (set_volatile): Add new global variable reference.
* mips.c (set_volatile): New global variable to keep track of the
number of .set volatile's done. At present, no code actually turns
this on.
(mips_move_1word): Use %. instead of putting const0_rtx into an
unused operator and using %z to get to $0, which is hardwired to 0.
(mips_move_2words): Likewise.
(override_options): Allow %., %{, and %} punctuation.
(print_operands): Add support for %. to get the current name of
register 0, %{ to turn on .set volatile, and %} to turn on .set
(function_epilogue): Give an error if .set volatile was left on in
the epilogue.
(mips_asm_file_start): Don't emit .set nobopt unless we are filling
branch delay slots.
* (set reg on comparison define_splits): Don't allow the
scheduler to split any set of a comparision insns, to work around a
bug in sched.c.
Sat Jan 4 23:01:41 1992 Jeffrey A Law (law at
* m68k.c (output_function_prolog): Decrement (instead of
increment) num_saved_regs when a frame pointer is needed.
(the link/unlk will restore the frame pointer register)
Sat Jan 4 11:11:24 1992 Dennis P. Glatting (dennisg at tti)
* next.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): #undef before defining.
Sat Jan 4 07:40:25 1992 Richard Kenner (kenner at
* expr.c (convert_to_mode): Correctly zero-extend a constant into
a mode whose size is twice the host int size.
* machmode.h (enum mode_class): Add MAX_MODE_CLASS.
(byte_mode, word_mode): Add declarations.
* caller-save.c (choose_hard_reg_mode): Use GET_CLASS_NARROWEST_MODE.
* combine.c (make_extraction): Don't use explicit QImode and SImode.
* cse.c (simplify_unary_operation): Integer CONST_DOUBLEs have
VOIDmode, not DImode.
(simplify_binary_operation): Remove explicit DFmode reference.
* expmed.c (init_expmed): Don't make our own copy of word_mode.
(store_bit_field, extract_bit_field): Remove explicit
QImode reference; don't recompute word_mode.
(store_fixed_bit_field, {store,extract}_split_bit_field): Don't
recompute word_mode.
(emit_store_flag): Likewise.
(extract_fixed_bit_field): Replace explicit mode references with a
loop on modes; don't recompute word_mode.
* expr.c (convert_mode, move_block_{to,from}_reg, use_regs): Don't
recompute word_mode.
(emit_push_insn, do_jump_by_parts*): Likewise.
(push_block): Remove explicit QImode reference.
(get_inner_reference): Use mode_for_size.
* emit-rtl.c (restore_reg_data): Make unused regs word_mode.
(operand_subword): Don't recompute word_mode.
* fold-const.c (optimize_bit_field_compare): Likewise.
(merge_component_references): Likewise.
* flow.c (mark_set_1, mark_used_regs): Likewise.
* loop.c (combine_movables): Use GET_CLASS_NARROWEST_MODE.
* optabs.c (expand_binop): Replace SImode references in multi-word
multiply with the mode used for each subpart.
(expand_binop, expand_unop): Don't recompute word_mode.
* reg-stack.c (reg_to_stack): Use GET_CLASS_NARROWEST_MODE.
* reload.c (find_equiv_reg): Check for MODE_FLOAT, not SFmode/ DFmode.
* rtl.c (class_narrowest_mode, byte_mode, word_mode): Define.
(init_rtl): Initialize them.
* sched.c (attach_deaths): Don't recompute word_mode.
* stor-layout.c (mode_for_size): Use GET_CLASS_NARROWEST_MODE.
(get_best_mode): Likewise.
Don't recompute word_mode.
* unroll.c (unroll_loop): Replace default of SImode with word_mode.
* calls.c (calls_alloca): Don't recurse on BLOCK_SUPERCONTEXT.
Sat Jan 4 03:42:09 1992 Richard Stallman (rms at
* protoize.c (pointer_type): Use char * if non-ANSI.
(const_pointer_type): Likewise.
(malloc, realloc): Declare to return pointer_type.
(setjmp): Don't declare, to avoid trouble with macro defns.
(const): If not ANSI, define as empty macro.
Sat Jan 4 00:59:53 1992 Jim Wilson (wilson at
* sparc.c (legitimize_pic_address): When converting a symbol_ref,
use an extra temp reg when -fPIC, and add a REG_EQUAL note to the
insn referencing the global offset table. This allows loop to
optimize these PIC sequences.
Fri Jan 3 20:29:57 1992 James Van Artsdalen (james at
* (return): Always output return insns.
* i386.h (FUNCTION_PROLOGUE): If the last nonnote insn in a function
is a BARRIER, don't output a function epilogue.
Fri Jan 3 12:43:09 1992 Richard Stallman (rms at
* t-decrose, t-decstatn, t-encrose, t-i386rose, t-mips (ALL):
Use libgcc.a, not libgcc.
* protoize.c (STRINGIFY): Provide non-ANSI alternative definition.
* c-decl.c (get_parm_info): Keep non-parms in the parm list.
* stmt.c (cost_table): Now short.
(estimate_case_costs): Handle that.
* (float.h, *protoize.1, gcc.xtar.Z):
Make temp files, then rename.
(clean): Delete those temp files.
* (c-parse.c): Don't use -d, since cp-parse.output is big.
Fri Jan 3 10:32:31 1992 Michael Tiemann (tiemann at
* (cp-parse.c): Add missing -o flag.
Fri Jan 3 08:21:04 1992 Richard Kenner (kenner at
* reg-stack.c: Complete last change (renaming DFmode_reg).
* expmed.c (init_expmed): Pass dummy pointer to number of clobbers to
recog so it can let us see patterns that need added clobbers.
Fri Jan 3 07:54:32 1992 Tom Wood (wood at
* c-decl.c (implicitly_declare): Record whether this is an implicit
declaration before setting IDENTIFIER_IMPLICIT_DECL.
Thu Jan 2 21:17:12 1992 Michael Meissner (meissner at
* mips.c (compute_frame_size): Don't count FP registers twice.
Thu Jan 2 14:59:55 1992 Michael Tiemann (tiemann at hal)
* cp-lex.h: Renamed from cp-parse.h. Now cp-parse.h is the file
created by bison from cp-parse.y.
* reflect this naming change.
Thu Jan 2 12:37:32 1992 Richard Stallman (rms at
* objc-actions.c (build_obj_method_call): Typo in NEXT case.
* next.h (HAVE_ATEXIT): Defined.
* c-decl.c (duplicate_decls):
No error if override decl that has DECL_BUILT_IN_NONANSI.
* (c-parse.c): Don't use -o, since cp-parse.output is big.
* (protoize, PROTOIZE): Delee these 2 new targets;
`protoize' was redundant.
* c-typeck.c (build_function_call): If the fn is volatile,
make a pointer-to-volatile-function type pointer.
* calls.c (expand_call): Handle calls to such pointers as volatile.
* expmed.c (init_expmed): Pass all 3 args to `recog'.
* varasm.c (output_constant): For REAL_TYPE, mode_for_size arg is bits.
* (storing SF into mem at symb addr): Fix typos.
* protoize.c (my_access, my_stat, my_execvp, my_link, my_unlink):
(my_open, my_chmod): Macros that run access, stat,... with casts.
Renamed from former POSIX-only macros and made unconditional.
All calls to these functions also renamed.
* m68k.h (LEGITIMATE_PIC_OPERAND_P): Undo change below,
thus making the behavior really change to accept all CONST_DOUBLE.
* libgcc1.c, libgcc2.c: Renamed from gnulib1.c, gnulib2.c.
* gcc.c (link_command_spec): Link with libgcc.a.
* (libgcc): Rename targets and variables from gnulib.
* *.h, t-*, x-*: Rename refs to those symbols and files.
* expr.c (LIBGCC_NEEDS_DOUBLE): Renamed from GNULIB_...
* m68k.c (symbolic_operand): Reject all CONST_DOUBLE.
that symbolic_operand used to accept.
Thu Jan 2 21:06:13 1992 James Van Artsdalen (james at
* protoize.c (is_id_char,free_def_dec,check_aux_info):
Don't declare them `inline'.
scan_for_missed_items): Use alloca instead of variable length arrays.
* (protoize,unprotoize): Get $(LIBS) for alloca.
Thu Jan 2 21:40:52 1992 Jeffrey A Law (law at
* sparc.h (OPTIMIZATION_OPTIONS): Enable caller-saves for -O2
and higher optimization levels.
Thu Jan 2 06:46:56 1992 Richard Kenner (kenner at
* final.c (final_scan_insn): Compare debug_info_level with entries in
its enum, not with integers.
* reg-stack.c ({SF,DF}mode_reg): Deleted.
(FP_mode_reg): New array, indexed by register and by mode.
(reg_to_stack): Replace initialization of old vars with initialization
of FP_mode_reg.
(replace_reg): Use new array.
* romp.c, romp.h, Rename symbolic_operand to
* emit-rtl.c (init_emit_once): Create virtual registers before the
structure value regsisters, since the latter might use the former.
* varasm.c (output_constant): Fix typo: missing arg to expand_expr.
* (call_pop, call_pop_value): Use correct register number for
stack pointer. Add new patterns for case of zero args.
Thu Jan 2 08:12:59 1992 Fred Fish (fnf at sunfish)
* x-amix: Minor changes to some comments.
* x-amix (CCLIBFLAGS, GNULIB2_CFLAGS, XCFLAGS): Remove definitions.
* x-amix (manext): Add definition.
Thu Jan 2 11:14:28 1991 Ken Raeburn (Raeburn@Cygnus.COM)
* fold-const.c (fold, case PLUS_EXPR): If association permits
reduction to var+0, convert var to the desired type before returning
Wed Jan 1 10:37:50 1992 Michael Tiemann (tiemann at
* expr.c (convert_move): When GET_MODE_BITSIZE (TO_MODE) >
BITS_PER_WORD, check that it's also > GET_MODE_BITSIZE (FROM_MODE).
* expr.c (expand_expr): In CONSTRUCTOR case, preserve
MEM_IN_STRUCT_P when creating a new target when TARGET and EXP might
not be independent.
Wed Jan 1 18:32:03 1992 Richard Stallman (rms at
* c-parse.y (parmlist_1): Accept `PARMS; PARMS'.
(parmlist_or_identifiers_1): Likewise. Also use plain parmlist_2.
Delete the ([names] decls) syntax.
(defn_parms, defn_parmlist_2): Deleted.
* c-decl.c (get_parm_info): Put parm decls into original order.
Don't nreverse the original decls list.
(pushdecl, duplicate_decls): Avoid error for forward parm decl.
(clear_parm_order): New function.
(push_parm_decl): Record original order of parms.
* c-decl.c (struct binding_level): New slot subblocks_tag_transparent.
(pushlevel): Use that, not ->parm_flag.
(start_function): Set that slot.
* config.sub: Always distinguish between amix and sysv4.
Convert commodore to cbm and digital to dec.
* (stack adjust then push SI): New peephole.
* m68k.h, fx80.h (WCHAR_TYPE): Use precisely "long int".
* sun3.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Undef before defining.
* cexp.y (yylex): Use LONG_TYPE_SIZE, not INT_TYPE_SIZE.
(LONG_TYPE_SIZE): Add default definition.
* objc-actions.c: Declare index and rindex.
(build_module_descriptor): Simplify last change.
Use a fixed name for the initialization function.
(init_objc): Don't do constructor here.
(finish_objc): Do it here, with proper name if not NEXT_OBJC_RUNTIME.
* protoize.c: Unprotoized.
(edit_file): Improve message in -n case.
* (LANGUAGES): Add proto.
(C, C++, OBJC, OBJECTIVE-C): Aliases for l.c. targets.
(PROTOIZE, protoize, PROTO): Aliases for proto.
(rest.encap): Delete dep `proto'.
Wed Jan 1 15:07:41 1992 Michael Meissner (meissner at
* (extend*): Use gen_lowpart to make the SUBREG, rather than
doing it wrong by hand. If not optimizing, make sign extends from
memory not force the operand into a register first and do two
shifts -- combine already does this when optimizing.
(copyright): Add 1992 to list of years the file was modified.
Wed Jan 1 06:10:01 1992 Richard Kenner (kenner at
* reload1.c (reload): When forcing an illegitimate constant into
memory, use mode of SET_DEST in case constant is VOIDmode.
* stmt.c (expand_end_case): Pass index type to emit_case_nodes instead
of unsigned flag.
(node_has_{low,high}_bound): Accept INDEX_TYPE as an argument and see
if the a node value is at the limit of values of the type.
(node_is_bounded): Accept INDEX_TYPE and pass to above functions;
always call them.
(emit_case_nodes): Accept INDEX_TYPE instead of UNSIGNEDP as arg;
pass index type to recursive calls and to calls to bound checking
* varasm.c (assemble_integer_zero): Deleted.
(assemble_integer, assemble_real): New functions.
(output_constant_pool, output_constant): Use new functions.
* final.c (end_final, profile_function): Likewise.
* calls.c (calls_alloca): Don't interpret operands that are RTL as if
they were trees; check args of nested CALL_EXPR for alloca calls.
Wed Jan 1 16:51:30 1992 Fred Fish (fnf at fishpond)
* (manext): Include the '.' character.
(mandir): Don't use manext.
(install-man, uninstall): Change uses of manext.
Wed Jan 1 21:31:01 1992 Ron Guilmette (rfg at
* (cmpeqsi, cmpltsi, cmpgtsi): Made control flow more obvious.
(cmpnesi, cmplesi, cmpgesi): New patterns.
(cmpgeusi, cmpleusi): Fixed bug in compares against zero.
Tue Dec 31 11:16:37 EST 1991 Dennis P. Glatting (...!uunet!tti!dennisg)
* objc-actions.c (build_module_descriptor): Emit a constructor
function. Constructor function calls a ObjC run-time routine passing
a pointer to the module's module structure.
(init_objc): Call different constructor function if not Next.
(build_selector_translation_table): Don't give a selector global scope.
Changed in construction of decl_specs.
Tue Dec 31 18:06:23 1991 Richard Kenner (kenner at
* genrecog.c (add_to_sequence): Clear PREDS for "const_int_operand".
(same_modes): Properly check when we should ignore a mode test.
* reload1.c (emit_reload_insns): Only change spill_reg_store for
output reloads.
Clear spill_reg_store when we did an input reload to a spill register.
(delete_output_reload): Use single_set.
(count_occurrences): Don't count use which is SET_DEST.
Tue Dec 31 16:51:37 1991 Michael Meissner (meissner at
* mips.h (MIPS_VERSION): Change Meissner version # to 6.
(ASM_FINAL_SPEC): Don't pass -d and friends to mips-tfile.
(CONSTANT_ALIGNMENT): Align constructors on word boundaries.
* (extend*): Replace sign extension insns with a
define_expand that converts the expansion into the appropriate
shifts. Add insns that do sign extension from memory, which the
optimizer will utilitize if the thing being sign extended really
comes from memory. This allows the shifts to compete for CSE, at a
potential cost of generating worse code if reload spills a HI or QI
register to the stack.
(sne define_split): Instead of using a constant 0 as the second
argument to the slti instruction, use a hard coded regisiter 0.
* mips-sysv.h (MD_STARTFILE_PREFIX): Define to point into the
directory where the MIPS compilers live.
(LIB_SPEC): Add crtn.o after all libs.
(STARTFILE_SPEC): Use crt1.o, not crtn.o.
(MACHINE_TYPE): Correct typo, this is System V, not BSD.
Changes are from Ron Guilmette (rfg at
* configure (mips-*-sysv): Correctly use mips-sysv.h instead of
mips.h. Change is from Ron Guilmette.
Tue Dec 31 16:51:37 1991 Michael Stump (mrs at
* t-decrose, t-decstatn, t-encrose, t-i386rose, t-mips: Remove
collect2 from EXTRA_PASSES, as collect2 does not need installing as
collect2. Also, change the symlink back to a hard link.
* Add collect2 to STAGESTUFF as it is something that
needs removing or moving to stagen, but it should not be installed.
Tue Dec 31 15:47:50 1991 Michael Tiemann (tiemann at hal)
* combine.c (simplify_comparison): Swap evaluation of OP0 and OP1 so
the lattern can use the result of the former.
* conditions.h: In comments, refer to `tm.h', since `tm-' is no
longer the form used for these files.
Tue Dec 31 11:45:26 1991 Richard Stallman (rms at
* cp-lex.c (lineno, finput): Decls deleted.
* global-alloc.c (find_reg): New arg RETRYING.
(retry_global_alloc, global_alloc): Pass that arg.
* (*protoize, *protoize.o): Compile with CC.
* protoize.c: Include config.h, not tconfig.h.
Always define _POSIX_SOURCE.
* convex*.h (CPP_SPEC): !ansi controls _POSIX_SOURCE, _CONVEX_SOURCE.
* conv1*.h, conv2*.h: Files deleted.
* m68k.h, fx80.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Defined.
Tue Dec 31 08:08:32 1991 Tom Wood (wood at
* cexp.y (yylex): Record the parsed characters when dealing with
multibyte characters.
Mon Dec 30 17:13:30 1991 James Van Artsdalen (james at
* (mulhi3,mulsi3): If a multiply by constant 128, use the
two operand multiply instead of three operand form: the AT&T
assemblers generate incorrect object code for the latter.
Mon Dec 30 17:39:36 1991 Richard Kenner (kenner at
* jump.c (jump_optimize): Complete last change: use expand_and result.
* reload1.c (emit_reload_insns): Check if reload_in needs a secondary
reload if we have an in-out reload, since it might have been the
output the needed the secondary reload.
* cse.c (simplify_unary_operation): Mode of integer CONST_DOUBLE is
VOIDmode, not DImode.
* fold-const.c (fold, case COND_EXPR): Make an ABS_EXPR when the
comparison is LE_EXPR or LT_EXPR.
* calls.c (calls_alloca): New function.
(expand_call): Preexpand any argument that contains a call to alloca
if this call will use the stack.
* rs6000.h (DATA_SECTION_OP): Make result a string to avoid compilation
* rs6000.h, sparc.h, sun2o4.h, sun3.h (WCHAR_TYPE_SIZE): Fix
incorrect definition.
Mon Dec 30 16:10:46 1991 Michael Meissner (meissner at
* mips.h (CC1_SPEC): Complete change deleting -mnogpopt and -mngpopt
in favor of -mno-gpopt.
Mon Dec 30 11:32:05 1991 Michael Tiemann (tiemann at
* cp-class.c (build_vtable): If we're doing #pragma interface
and the interface is known, set TREE_PUBLIC, regardless of
* cp-decl.c (make_temporary_for_reference): Don't call
`convert_pointer_to', since the type may not be an aggr type.
* cp-decl.c (finish_decl): Now takes 4th arg NEED_POP.
All callers changed.
* cp-class.c (permanent_obstack): Declare it.
(add_method): push and pop obstacks before changing out of/into
temporary allocation.
* cp-decl.c (implicitly_declare): Add
push_obstacks_nochange/pop_obstacks around changes out of/into
temporary allocation.
(shadow_tag,xref_tag,start_decl,finish_decl): Ditto.
* cp-decl2.c (grokfield,get_temp_name): Ditto.
* cp-except.c ({ansi_}lookup_exception_object): Ditto.
* cp-lex.c (get_time_identifier): Ditto.
* cp-tree.c (build_exception_variant): Ditto.
* cp-typeck.c (mark_addressable): Ditto.
* cp-decl.c (grokdeclarator,maybe_build_cleanup): Delete calls to
preserve allocation status. Now handled by callers.
Mon Dec 30 01:44:21 1991 Richard Stallman (rms at
* c-lex.c (yyprint): Function moved here.
* c-parse.y, objc-parse.y: Moved from here.
* (c-parse.c, objc-parse.c, cp-tab.c, cexp.c):
cd to srcdir to run Bison.
* c-lex.c (check_newline): Get rid of #ident pedantic warning.
* cccp.c (do_ident): Put it here.
Don't warn if in system header file.
* cccp.c (main, finclude): Warn if file ends in backslash-newline.
* next.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): New definitions.
* global-alloc.c (find_reg): Kick out local regs if that helps.
(global_alloc): Set up vars local_regs_live_length, local_regs_n_refs.
* protoize.c (do_processing): Fix setting syscalls_absolute_filename.
* configure (m68k-*-sysv4*, m68k-*-amix*): New alternatives.
* config.sub (*-commodore): Default OS to Amigados.
(-amix*): Allow this as input.
(amiga): New abbreviation.
* sparc.c (output_function_epilogue): Skip unimp differently in leaf.
Use jmp insn rather than separate add.
(output_return): Skip unimp here too.
* (return "peepholes"). Handle skipping the unimp.
* fold-const.c (fold, optimizing 2*EXPR): Use save_expr.
* varasm.c (make_decl_rtl): Permit initializer for local explicit reg.
* c-decl.c (kept_level_p): Changed to also return TRUE for binding
levels which contain only tagged type declarations.
* calls.c (expand_call): Cleaned up prev change.
Mon Dec 30 11:29:47 1991 Michael Tiemann (tiemann at
* cp-lex.c (real_yylex): Call REAL_VALUE_TRUNCATE with 2 args.
* calls.c (expand_call): Handle allocating ARGBLOCK in the case
that ACCUMULATE_OUTGOING_ARGS is not defined.
Mon Dec 30 10:27:11 1991 James Van Artsdalen (james at
* protoize.c: fix typo in <sys/wait.h> inclusion.
Mon Dec 30 06:16:16 1991 Leonard Norrgard (vinsci at
* c-decl.c (grokdeclarator): Changed erroneus error message.
Sun Dec 29 16:16:55 1991 Richard Stallman (rms at
* toplev.c (main): Last -On option wins.
* (cp-tab.c): Change "expect" message.
* final.c (leaf_renumber_regs): Renumber just the PATTERN.
Sun Dec 29 14:20:15 1991 Per Bothner (bothner at
* dbxout.c (dbxout_type): Tiemann's DECL_IGNORED_P optimization (Nov
20) was a little too drastic: If it succeded, no type info was
emitted at all, which made for syntactically invalid stabs.
Instead, just set 'full=0',
* dbxout.c (dbxout_symbol): Re-write code for TYPE_DECL to be a
little cleaner. It *seems* to work ...
Sun Dec 29 07:04:22 1991 Richard Kenner (kenner at
* expr.c (convert_move): Add truncates from DImode to smaller modes.
(move_by_pieces, move_by_pieces_ninsns): Rework to remove explicit
references to integer modes.
Never need to align greater than BIGGEST_ALIGNMENT.
* optabs.c (init_extends, init_fixtab, init_floattab, init_optabs):
Add TImode operations.
* reload.c (find_reloads): Prefer alternatives that reload SCRATCH
instead of something else.
* (movti): Adjust constraints and alternative order so
we actually get to use the stsi insn.
* rs6000.h (REG_ALLOC_ORDER): Put r9 in front of r11 so we don't try to
put a TImode value in r11 as often.
* caller-save.c (setup_save_areas): New parameter pchanged; set when
memory is allocated.
* reload1.c (reload): Pass pointer to something_changed to
* loop.c (scan_loop): Don't suppress moving insns that can trap just
because we have passed a call inside a libcall/retval block.
* jump.c (get_label_before): Don't separate a CALL_INSN from any USE
insns immediately preceeding it.
(get_label_after): Likewise, for following CLOBBERs.
* cse.c (fold_rtx, case '<'): When seeing if we have seen this
comparison before, use a constant equivalence.
Add test for things like "(a | 1) != 0".
(fold_rtx, case '2'): Move code to handle associative operations to
here; add support for MINUS, SMAX, SMIN, UMAX, and UMIN.
(record_jump_equiv): See if OP1 is equivalent to a constant.
* jump.c (jump_optimize): Don't pass a SUBREG as a target to
* combine.c (subst): Never associate floating-point, even if not IEEE.
Associate MAX and MIN operations.
* output.h (output_asm_insn, asm_fprintf): Add "extern" to decls.
(alter_subreg): Add declaration.
* (movsf, movdf): Don't declare alter_subreg here.
(trunc_call_rtl): Don't declare trunc_used; use rs6000_trunc_used.
* rs6000.c (rs6000_trunc_used): New name of trunc_used.
* rs6000.h (rs6000_trunc_used): Add declaration.
Sat Dec 28 18:14:21 1991 Michael Tiemann (tiemann at
* cp-method.c (build_overload_name): Don't call OB_FINISH unless END
is nonzero.
Sat Dec 28 17:46:05 1991 Jim Wilson (wilson at
* gcc.c (default_compilers): Handle -ansi in the C++ entries
exactly the same way as the C entries do.
* rtl.c (add_dependence): Cast enums to int before doing an
ordered comparison, since some compilers can't do this.
* sparc.c (pic_address_needs_scratch): New function. Returns
true if the pic address X needs a scratch register when loaded.
(legitimize_pic_address): Clean up. New argument SCRATCH, which
is a scratch register for those loads that need it.
(emit_move_sequence): New argument SCRATCH_REG, which is a scratch
register for those loads that need it. When loading a pic label,
set %o7 instead of clobbering it so its value can be used later.
(compute_frame_size): Leaf functions need to allocate space for
register window in frame if size greater than 0.
(print_operand): Delete obsolete %^ which added %o7 to addresses.
All uses of %o7 are now explicit.
* sparc.h: Fix callers of legitimize_pic_address.
(REG_CLASS_FROM_LETTER): Add 'r' case.
(SECONDARY_INPUT_RELOAD_CLASS): New macro, to force reload to
allocate a scratch register for certain pic address reloads.
(flag_pic): Define as extern so that it will be defined for
* Fix all callers of legitimize_pic_address and
(reload_insi): New pattern. Used to force reload to allocate a
scratch register for those pic address loads that need one.
(reload_insi+2): When loading pic label, set %o7 instead of
clobbering it.
(movdf, movsf): Reject matches that would require reloading via
use of a condition.
(tablejump): Now a define_expand, so can generate different
pattern when pic.
(pic_tablejump): Explicitly mention in rtl that %o7 is used,
instead of using %^.
* m88k.h, sparc.h: Delete references to non-existent
Sat Dec 28 14:31:36 1991 Richard Stallman (rms at
* c-lex.c (check_newline): Set ignore_escape_flag for reading filename.
(yylex): Handle ignore_escape_flag in string constant.
* gnulib2.c (__do_global_dtors): Count elements properly.
* (tsthi): Don't allow address register.
Sat Dec 28 11:49:06 1991 James Van Artsdalen (james at
* final.c (final): Initialize elements of line_note_exists.
* protoize.c: Don't include <sys/wait.h> on USG unless SVR4.
Sat Dec 28 11:09:36 1991 Fred Fish (fnf at fishpond)
* (includes): Pre-remove the tmp dir; fix INSTALLED_H ref.
Sat Dec 28 06:31:16 1991 Richard Kenner (kenner at
* (movstrsi): Fix typo testing for more than 32 subunits.
* genrecog.c: Major rework.
We now check to see if pairs of comparison nodes can have anything
that they both match. If not, they can be reordered. An efficient
ordering is established that groups all nodes with identical rtl
codes inside groups with identical modes. This allows us to generate
a comparison tree that is a list of nested switch statements.
Also, genrecog.c is now indented properly so that debugging is eased.
(add_to_sequence): Enforce mode on the first arg of COMPARE, comparison
operation, SIGN_EXTEND, and ZERO_EXTEND.
* a29k.h, romp.h, rs6000.h (PREDICATE_CODES): Add definition.
Fri Dec 27 17:31:48 1991 Richard Kenner (kenner at
* a29k.h, decrose.h, encrose.h, m88kdgux.h (WCHAR_TYPE_SIZE):
Add definition.
* rs6000.h, sparc.h, sun2o4.h, sun3.h, svr3.h, svr4.h: Likewise.
* expmed.c (expand_mult): For negative values, try multiplication by
the original value as well as by negated value.
Fri Dec 27 20:54:59 1991 Fred Fish (fnf at fishpond)
* m68kv4.h: Include m68ksgs.h rather than m68k.h.
* m68kv4.h: Define TARGET_DEFAULT to be 68020 + 68881.
(CPP_SPEC): Define based on TARGET_DEFAULT
* m68kv4.h (PCC_STATIC_STRUCT_RETURN): Undef this.
Redefined to match m68k/SVR4 conventions.
* m68ksgs.h (ASM_OUTPUT_SKIP): Redefined to use `.space'.
* amix.h, xm-amix.h, x-amix: New files.
Fri Dec 27 20:43:11 1991 Michael Tiemann (tiemann at
* cp-tree.h (build_overload_name): Declare this function.
* cp-decl2.c, cp-method.c: Delete random `extern' declarations.
* cp-lex.c (get_directive_line): Declare it extern.
(lineno,yychar,yylval,lastiddecl,finput): Ditto.
(ridpointers): Don't need to declare it here.
(check_newline): Handle new #pragmas.
* cp-class.c (add_method): Add a cast in call to `obstack_base'.
Fri Dec 27 20:22:05 1991 Michael Tiemann (tiemann at
* cp-decl.c (push_overloaded_decl): Now returns a value.
All callers changed.
* cp-decl.c (duplicate_decls): Give better error message when user
declaration conflicts with built-in one. Also, when we decide to
keep a builtin function builtin, copy the DECL_RTL from OLDDECL to
Fri Dec 27 17:18:15 1991 Michael Meissner (meissner at
* mips.h (TRAMPOLINE_TEMPLATE): Define correctly for MIPS.
(TRAMPOLINE_SIZE): Define to be 9 words.
(INITIALIZE_TRAMPOLINE): Define correctly for MIPS.
(TRANSFER_FROM_TRAMPOLINE): Define to do a mprotect of the
trampoline, so that we can jump to it. I suspect the mprotect may
fail on some MIPS based systems, because the trampoline is on the
stack, and not in the data section.
* mips.c (mips_output_filename): Don't warn about ECOFF not
handling #line's within functions if we are using the OSF/rose
object format.
Fri Dec 27 15:35:38 1991 Richard Stallman (rms at
* c-typeck.c (build_array_ref): Special warning about `register' array.
* gnulib2.c (L_trampoline): Don't create a function here.
The definition of TRANSFER_FROM_TRAMPOLINE can do that if nec.
* m68k.h (TRANSFER_FROM_TRAMPOLINE): Make the function here.
* fx80.*: Renamed from alliant.*.
* configure: Alternative renamed to fx80-alliant-*.
* config.sub: Corresponding changes.
* cccp.c (traditional): No longer static.
* cexp.y (yylex): Handle full variety of character constants.
Include stdlib.h and locale.h if needed.
* c-decl.c (shadow_tag): Change warnings to error or pedwarn.
* gnulib2.c (__do_global_dtors): If length not given, count it.
* gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Ignore length; scan till null.
(__CTOR_END__, __DTOR_END__): Declarations deleted.
* cp-decl2.c (finish_file): Always change $ to _
regardless of NO_DOLLAR_IN_LABEL.
Fri Dec 27 15:04:40 1991 Tom Wood (wood at
* svr4.h (ASM_OUTPUT_ALIGNED_COMMON): Fix typo.
* m88k.c: Move extern decls.
(output_ascii): Use ASCII_DATA_ASM_OP.
* m88k.h (HAVE_ATEXIT): Delete.
ASCII_DATA_ASM_OP): Override svr4.h.
(EXTRA_SECTIONS): No ctors/dtors for m88k-luna.
* m88kdgux.h (STANDARD_STARTFILE_PREFIX): No need to override svr4.h.
Fri Dec 27 11:34:59 1991 Ken Raeburn (Raeburn@Cygnus.COM)
* cp-pt.c (mangle_class_name_for_template): Use a local obstack
rather than fixed-size buffers.
* cp-class.c (add_method): Case obstack_base value to desired type
when reallocating vector node.
Fri Dec 27 09:16:50 1991 Ron Guilmette (rfg at
* sort-protos: New file.
* i386.c: Remove decls of frame_pointer_needed; include flags.h.
* i386.c (output_387_binary_op, output_float_compare):
Moved declarations of strcat to top level.
* (cmpnesf, cmpnedf): New patterns.
* (cmplesf, cmpgesf): Corrected to allow for IEEE conformance.
Thu Dec 26 11:20:07 1991 Michael Tiemann (tiemann at
* cp-class.c: Declare N_* variables here.
* cp-class.h: Declare N_* variables extern here.
* cp-gc.c (build_static_gc_entry): Call `assemble_gc_entry' instead
of implementing it directly.
* varasm.c (assemble_gc_entry): New function.
* calls.c (expand_call): Don't crash if somebody declared a void
function `const'.
* cp-cvt.c (convert): Handle case when two equal array types are
distinct (in memory).
* tree.c (build_index_2_type): Don't set TREE_TYPE of lower bound.
(index_type_equal): New function.
* cp-spew.c (yylex): Extend special-case ptr-to-func ((*)()) parsing
to handle (*)[] and (&)[] declarations as well.
* cp-decl2.c (finish_file): Unconditionally call
assemble_{constructor,destructor}. Also, delete code for writing
_init and _fini sections that was #if 0'd. These actions belong in
varasm if anywhere.
* cp-class.c (add_method): Fix handling of obstacks to correctly
extend TREE_VECs.
Thu Dec 26 15:24:45 1991 Richard Stallman (rms at
* cccp.c (main): Add new option -include. Rename -i to -imacros.
* gcc.c (SWITCH_TAKES_ARG): Remove -i.
(WORD_SWITCH_TAKES_ARG): Add -include, -imacros.
* hp800.h (WORD_SWITCH_TAKES_ARG): Add all the standard alternatives.
* mips.h (SWITCH_TAKES_ARG): Remove -Y and -i.
* next.h, sparc.h (WORD_SWITCH_TAKES_ARG): Add -include, -imacros.
* sun2.h, sun3.h (WORD_SWITCH_TAKES_ARG): Copy from sparc.h.
* svr4.h (SWITCH_TAKES_ARG): Remove -i, -f.
(WORD_SWITCH_TAKES_ARG): Add -include, -imacros.
* toplev.c (flag_gnu_linker): New variable. -fgnu-linker.
* flags.h (flag_gnu_linker): Declare it.
* varasm.c (assemble_constructor, assemble_destructor):
Handle flag_gnu_linker.
* (structure values): Separate unimp pattern deleted.
New pattern for combined call and unimp. `call' pattern changed.
(type): Deleted type marker, added call_no_delay_slot.
Thu Dec 26 05:04:28 1991 James Van Artsdalen (james at
* reg-stack.c (move_for_stack_reg): If a SET_DEST is REG_UNUSED,
just pop the SET_SRC.
Wed Dec 25 17:23:25 1991 Richard Stallman (rms at
* c-decl.c (init_decl_processing): Fix type of exit, _exit.
* jump.c (cross_jump_death_matters): Move def to front, make static.
Tue Dec 24 20:41:32 1991 Richard Stallman (rms at
* hard-reg-set.h (reg_names): Declare here.
* stmt.c (expand_asm_operands): Not here.
* gcc.c (handle_braces, do_spec_1, give_switch): Clear up %*.
* expr.c (expand_expr): Delete decl of lang_expand_expr.
* final.c (final_scan_insn): Delete line number followed by another
line number, if numbers are effectively consecutive.
* jump.c (jump_optimize): Set cross_jump_death_matters from cross_jump.
* reg-stack.c (reg_to_stack): Pass 2 for cross_jump to jump_optimize.
Don't set cross_jump_death_matters here.
(record_reg_life): Delete decl of call_used_reg_set.
* c-decl.c (init_decl_processing):
Declare abort, exit, and _exit as volatile.
* c-decl.c (implicitly_declare): Set IDENTIFIER_IMPLICIT_DECL earlier.
(pushdecl): Test that and avoid nested extern warning.
* c-decl.c (init_decl_processing): Don't handle EXPAND_BUILTIN_VARARGS.
Tue Dec 24 15:42:34 1991 Michael Tiemann (tiemann at
* cp-init.c (add_friends): Add missing IDENTIFIER_POINTER macro
application to strncmp argument.
* cp-method.c (build_overload_*): Now uses SCRATCH_OBSTACK instead
of relying on fixed buffers of finite length.
(fndecl_as_string): Ditto.
All callers changed.
* cp-except.c (cplus_exception_name): Definition moved to
Tue Dec 24 10:38:49 1991 Michael Collison (collison at
* ns32k.c (hard_regno_mode_ok): Define this as a function now.
Also change the way it work so that we don't allow moves between
the general registers and the floating point registers.
* ns32k.h (HARD_REGNO_MODE_OK): Turn it into a function call.
* (call_value): fix to correct a bug where the compiler thinks
the return value of a function call is in f0 instead of r0. Fix
courtesy of vince russo.
(movqi, movhi): Fix up these patterns because they could return
undefined instruction templates. Fix courtesy of vince russo.
Tue Dec 24 10:14:20 1991 Ron Guilmette (rfg at
* mips-tfile.c (main): Move nested extern decl of version_string to
(catch_signal): Move nested extern decl of sys_siglist to
* varasm.c (assemble_variable): Handle ASM_OUTPUT_ALIGNED_COMMON.
* gcc.c (SWITCH_TAKES_ARG, default_compilers): Eliminated -Y* option.
(execute): Moved decls of execv and execvp to top level.
(do_spec, do_spec1, handle_braces, give_switch): Support new %* spec.
* c-lang.c (recognize_objc_keyword): Added explicit return.
* svr4.h (SWITCH_TAKES_ARG, WORD_SWITCH_TAKES_ARG): New definitions.
(ASM_SPEC, LINK_SPEC): Support more standard svr4 options.
(LIB_SPEC): Fixed to link crtend.o *after* libc.a.
* svr4.h (CONST_SECTION_FUNCTION): Moved decl of `text_section' to
top level.
* cexp.y (main): Add explicit return type and explicit value.
Move decl of yydebug to top level.
* gnulib2.c (__bb_init_func): Moved decl of ___tcov_init to top level.
* toplev.c (main): Deleted obsolete checks for -opt and -noreg.
Moved decls of environ, version_string, language string to file-scope.
Compile-time error if PREFERRED_DEBUGGING_TYPE is missing.
* tree.c (dump_tree_statistics): Deleted decl of class_obstack.
(object_permanent_p): Added explicit return type.
Tue Dec 24 09:29:24 1991 Charles Hannum (mycroft at
* expr.h (lang_expand_expr): Fix typo.
Tue Dec 24 06:52:45 1991 Michael Meissner (meissner at
* gnulib2.c (__main): Make sure the exit module is pulled in if we
have atexit, since that module defines constructor/destructor
variables as bss symbols rather than as references.
* decrose.h (HAVE_ATEXIT): Define.
* encrose.h (HAVE_ATEXIT): Define.
* i386rose.h (HAVE_ATEXIT): Define.
* decstatn.h (HAVE_ATEXIT): Define.
* gcc.texinfo (HAVE_ATEXIT): Expand documentation.
(EXIT_BODY): Document.
* protoize.c (POSIX): Make protoize accept TARGET_POSIX as a synonym
for POSIX to make the code and documentation agree. Also, if the
user defined _POSIX_SOURCE explicitly, turn on POSIX support in
Tue Dec 24 00:14:38 1991 Richard Stallman (rms at
* calls.c (emit_call_1): Additional arg STRUCT_VALUE_SIZE.
Use as arg in call and call_value insns.
(expand_call): Record the size, to pass it.
* expr.c (emit_library_call): Pass 0 for STRUCT_VALUE_SIZE.
* (call, call_value): Make use of new arg.
Generate an unimp instruction to use sparc calling convention.
Add nameless pattern to recognize it.
* sparc.c (output_function_epilogue): Skip the caller's unimp insn.
* (INSTALLED_H): New variable.
(includes): Preserve just those specific files.
* expr.h (lang_expand_expr): Declare it.
* expr.c: Don't declare it.
* cp-expr.c (init_cplus_expand): Set up lang_expand_expr here.
* cp-lex.c (init_lex): Call init_cplus_expand.
Mon Dec 23 15:17:59 1991 Tom Wood (wood at
* configure: Delete m88k-v88r32 (this is supported by m88k-svr3)
and add m88k.
* config.sub: Delete v88r as a system type.
Mon Dec 23 19:50:48 1991 Fred Fish (fnf at fishpond)
* 3b1.h, crds.h, hp320.h,, m68ksgs.h, mot3300.h, news.h,
tower-as.h: Replace port oriented macros SGS_3B1, HPUX_ASM, and
SONY_ASM, with configuration oriented macros SGS_SWITCH_TABLES,
* m68ksgs.h: New file.
* m68k.c (print_operand_address): Change switch labels for MOTOROLA.
Don't use a `%'. Add missing `L' to some labels.
For SGS assembler, use one symbol for the offset.
Mon Dec 23 17:03:13 1991 Richard Stallman (rms at
* recog.h (insn_name): New declaration.
* final.c (output_asm_insn): Don't declare insn_name here.
* dbxout.c (dbxout_function, dbxout_begin_function):
Pass missing arg to dbxout_really_begin_function.
* jump.c (jump_optimize): Set new var can_reach_end.
* c-decl.c, cp-decl.c (finish_function):
Merge that into current_function_returns_null.
* config.sub (fx2800): New machine alias.
* va-m88k.h (va_start): Test __GNUC__, not __CLASSIFY_TYPE__.
* m88kv4.h: New version from Wood.
(CPP_PREDEFINES): Put -A options here. Remove __CLASSIFY_TYPE__.
* cccp.c (initialize_builtins): Define __GNUC__ as 2.
* rtl.h (read_rtx): New declaration.
* c-lex.c: Don't include output.h.
(asm_out_file): Declare it.
(ridpointers): Allocate storage here.
* c-lex.h (lastiddecl, token_buffer): Declare here.
(yylex, make_pointer_declarator, reinit_parse_for_function): Likewise.
* c-parse.y, objc-parse.y: Not here.
* objc-actions.c (error_with_ivar, error_with_method):
(warn_with_method): Use count_error, not errorcount.
Mon Dec 23 11:50:37 1991 Ron Guilmette (rfg at
* sdbout.c: Fixed typo.
* stmt.c (init_stmt, init_stmt_for_function): Explict return type.
* gnulib2.c (__fixunsdfdi, __fixunssfdi): Move extern decls.
* recog.c (init_recog): Added explicit return type.
* longlong.h (count_leading_zeros): Moved decl of `__clz_tab'.
* print-rtl.c (insn_name_ptr): Make decl `extern'.
* objc-actions.h, objc-actions.c (doing_objc_thang): Make extern.
* objc-actions.h, objc-actions.c (finish_class): Return void.
* objc-actions.c (continue_class): Added default error return value.
* fixinc.svr4: Map assertion tests to equivalent ANSI macro tests.
* i860.c (output_block_move): Disabled code to move by words or
halfwords until it can be made to work right.
* i860.c (output_block_move): Moved a sequence of common
`output_asm_insn' calls out of (and before) conditionals.
* i860.c (output_block_move): Corrected bugs in move loop.
Mon Dec 23 15:25:01 1991 Tom Wood (wood at
* m88kv4.h (CPP_PREDEFINES): Fix for varargs/stdarg.
(includes): Include svr4.h before m88k.h so the overrides in m88k.h
will take effect.
Mon Dec 23 07:06:27 1991 Richard Kenner (kenner at
* i860.c (output_delayed_branch): Call insn_extract and
constrain_operands so that `which_alternative' is set properly.
* stor-layout.c (layout_type, case ARRAY_TYPE): Handle
* encrose.h, i386rose.h, mips.h (LIBG_SPEC): Deleted; unused.
Sun Dec 22 12:02:03 1991 James Van Artsdalen (james at
* i386.c (function_epilogue): Use correct operand for insn mode.
Sun Dec 22 12:20:16 1991 Michael Tiemann (tiemann at
* cp-decl.c (grokdeclarator): Don't set TREE_PUBLIC for member
functions that are really declared as inline methods.
* cp-init.c (build_virtual_init): Add missing call to
`assemble_external' when we use a virtual function table.
* cp-decl.c (implicitly_declare): Don't allocate a decl if at the
global binding level.
* vax.h (PRINT_OPERAND): Handle new 'R' case.
* Change all patterns which passed a negated operand for
`rotl' to use 'R' as the negator, since rotl cannot acctually handle
negative arguments.
Sun Dec 22 12:31:46 1991 Ron Guilmette (rfg at
* i386v4.h (TARGET_VERSION): Added definition.
* i860v4.h (TARGET_VERSION): Added definition.
* m68kv4.h: New file.
* fx2800.h: New file.
* m88kv4.h (DWARF_DEBUGGING_INFO): Deleted redundant definition.
(It's defined already in svr4.h.)
* m88kv4.h (CPP_PREDEFINES): Added definition.
Deleted redundant definitions. (These are defined in svr4.h.)
* cccp.c (errno, sys_nerr, sys_errlist): Moved extern decls to top lev.
* function.c (round_down): Likewise.
* calls.c, c-convert.c: Delete block-level extern decls.
* c-convert.c: Include flags.h.
* configure (i386-*-sysv*): Fixed tmake_file value.
(i860-*-sysv3*): Fixed xmake_file and tmake_file value.
(i860-alliant-*): New configuration.
* i860.c (recog_operand, call_used_regs, insn_template,
insn_n_operands, insn_outfun, alter_subreg): Moved extern
declarations out of local contexts and put them at file-scope.
* i860.c (zero_operand): Deleted useless function.
* i860.c (singlemove_string): Added code to optimize moving halfword
* i860.c (output_block_move): Don't do CC_STATUS_INIT until it is
definitely necessary & appropriate.
* i860.c (output_block_move): Create up to 16 sequential load/store
pairs for constant length moves regardless of operand sizes (e.g.
byte, halfword, word).
* i860.c (output_block_move): Try to generate widest kind of
sequential load/store pairs for constant length moves before trying
the less efficient (narrower) ones.
* i860.c (output_block_move): Don't do sequential load/store pairs
for constant length moves unless the size is a multiple of the
size of the operands moved each time (i.e. word, halfword, byte).
* i860.c (output_block_move): Re-wrote code to do inline variable
length block moves to correct fatal errors (e.g. no check for zero
or neagtive start count) and to make it more efficient (saved 1 cycle
per iteration).
* i860.c (output_block_move): Make variable length moves with starting
alignment of 4 or 2 `#if 0' for now, until they can be fixed to work
right. Also reordered all three cases so that longer alignments are
checked for first.
Sun Dec 22 01:25:07 1991 Richard Stallman (rms at
* i386v4.h: Include svr4.h just once.
* protoize.c (fprintf, printf): Decls put in #if 0.
* emit-rtl.c (stack_slot_list): Delete superfluous extern decl.
(emit): Abort if arg isn't recognized.
* c-parse.y (current_declspecs, declspec_stack): Declare static.
(undeclared_variable_notice): Likewise.
(lastiddecl): Declare extern.
* objc-parse.y: Same changes as c-parse.y.
(token_buffer): Declare extern.
* c-lex.c: Include output.h.
(check_newline): Decl of asm_out_file deleted.
* c-lex.h (ridpointers, NORID): Declare/define here.
* c-lex.c, c-parse.y, objc-parse.y: Not here.
* sun3.h (WORD_SWITCH_TAKES_ARG): Add `-assert'.
(LINK_SPEC): Pass -assert to linker.
* gbl-ctors.h (__CTOR_END__, __DTOR_END__): Remove `extern'.
* sparc.h (RTX_COSTS): Increase multiply cost to 20.
(MULSI3_LIBCALL): Use .umul.
Sat Dec 21 18:34:27 1991 Richard Kenner (kenner at
* combine.c (simplify_comparison): Allow OP0 to be VOIDmode if it
is a COMPARE or a comparison operation.
* (bte): Remove now unneeded patterns.
Correct mode mismatch errors in patterns that will now be used.
Sat Dec 21 00:14:25 1991 Richard Stallman (rms at
* ns32k.h (TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE): Dummies deleted.
(INITIALIZE_TRAMPOLINE): Likewise. #error inserted.
* ns32k.c (print_operand_address): For invalid address, just abort.
* (FIXINCLUDES): New variable.
(includes, maketest): Use that.
* x-i386v4 (FIXINCLUDES): Override here.
Fri Dec 20 18:28:54 1991 Richard Stallman (rms at
* dbxout.c (dbxout_really_begin_function): New subroutine.
(dbxout_function): Use that, but only if not DBX_FUNCTION_FIRST.
(dbxout_begin_function): New function.
* varasm.c (assemble_start_function): Call dbxout_begin_function.
* dbxout.c (dbxout_function): Implement DBX_OUTPUT_FUNCTION_END.
* (movstrsi): Add missing double quote.
* gcc.c (process_command): Handle -Xlinker.
* calls.c (expand_call): Treat vfork like setjmp.
* c-decl.c (implicitly_declare): Use push_obstacks_nochange.
* sparc.h (WORD_SWITCH_TAKES_ARG): Add -assert.
(LINK_SPEC): Pass -assert to linker.
* svr4.h (ASM_OUTPUT_LOCAL): Fix typo.
Fri Dec 20 07:52:19 1991 Michael Tiemann (tiemann at
* cp-decl2.c (lang_decode_option): Recognize more -fno-OPTION
options which need special treatment (in the turning off of the
* cp-parse.y (named_class_head_sans_basetype_either): Rule deleted.
(identifier_either): Rule deleted.
(delete): Don't call `build_x_delete'' if the type does not have a
destructor. We may still need to adjust the address passed to
`operator delete'.
* cp-init.c (build_delete): New argument MAYBE_ADJUST. All callers
changed. Also, add #if 0/#endif around code dealing with ALIGNMENT.
It's dead code, and that's unclear otherwise.
(maybe_adjust_addr_for_delete): New function.
(build_new): Initialize special header for arrays allocated with
`operator new[]'. This is a rewrite of Ken's code.
(init_init_processing): New built-in type BI_header_type.
* cp-init.c (build_{new,delete}): Call `build_builtin_call' for BIN,
(build_builtin_call): New function.
* cp-decl.c (grokvardecl): Set TREE_EXTERNAL.
(grokdeclarator): Set TREE_PUBLIC for all member functions. They
are effectively global. Do the same for static members.
(start_function): Don't clear TREE_EXTERNAL in case the function
belongs to another file's implementation. Other fixes to
TREE_PUBLIC/TREE_EXTERNAL logic based on interface/implementation.
* cp-method.c (hack_identifier): Call `assemble_external' if
Fri Dec 20 06:27:38 1991 Richard Kenner (kenner at
* reload1.c (emit_reload_insns): Always record first insn emitted
for a reload, including any insns for a secondary reload.
(gen_input_reload): Correct documentation of function.
Thu Dec 19 22:01:51 1991 Richard Stallman (rms at
* gnulib1.c (perform_fixdfsi): New customization macro.
* svr4.h (SELECT_RTX_SECTION): Undef before defining.
Thu Dec 19 16:59:12 1991 (Eric Youngdale at
* cccp.c (hack_vms_include_specification): Make conversion of
filenames more versatile for user specified include directories.
Thu Dec 19 17:38:18 1991 Michael Meissner (meissner at
* mips.h (#error's): Put tab in front of all #error's, so that
ancient pre-ANSI compilers will not complain about unknown
directives, even if the #error is #ifdef'ed out.
* (fix_trunc*): Reorder constraints so that 'd' comes before
'f', and put a '*' in front of 'f' constraints to keep integer in
the GP registers.
(define_splits): Add reload_completed check for all define_splits
that use subreg on the arguments to work around bug in sched.c.
* cccp.c (lang_asm): New static variable to indicate we are
processing an assembly file and to ignore unknown directives in case
they are comments, like they are on the MIPS systems.
(main): Set lang_asm if -lang-asm switch.
(handle_directive, skip_if_group): Don't report about unknown
directives if lang_asm is set.
* gcc.c (default_compilers array): Pass -lang-asm to cpp when
processing .S files instead of -lang-c.
Thu Dec 19 15:06:09 1991 Richard Stallman (rms at
* c-decl.c (c_decode_option): Handle -fno-ident.
* c-lex.c (check_newline): Ignore #ident for -fno-ident.
* svr4.h (ASM_OUTPUT_LOCAL): Use assemble_name.
* mips.h: Use #error, not #include, for error messages.
* cccp.c (warning, main): Implement -Werror.
* i386sco.h (CPP_SPEC): Move non-fixed option here.
(CPP_PREDEFINES): From here.
* gcc.c (do_spec_1): For %p, just pass -D options.
For %P, pass all -A options. Put in whitespace, fix typos.
* c-parse.y (parmlist_2, defn_parmlist_2): Warn about (...).
* c-decl.c (get_parm_info): Don't warn here.
Thu Dec 19 06:15:46 1991 Richard Kenner (kenner at
* toplev.c (compile_file): Avoid ordered comparison of debug_info_level
since it is an enum.
* mips.c: Include gstab.h.
* Fix typo.
* caller-save.c (save_call_clobbered_regs): Don't save regs that
die in a CALL_INSN or that are born there.
Thu Dec 19 04:28:23 1991 Richard Stallman (rms at
* c-aux-info.c (gen_aux_info_record): Don't write space at line beg.
Wed Dec 18 11:46:13 1991 Tom Wood (wood at
* cse.c (cse_main): Use get_max_uid rather than computing it.
Wed Dec 18 18:13:06 1991 Richard Kenner (kenner at
* loop.c (scan_loop): Ensure replacement made by single-use code
is not modified in the life of the register being replaced.
Wed Dec 18 15:37:52 1991 Ron Guilmette (rfg at
* rtl.h (fconst2_rtx, dconst2_rtx): Added extern declarations.
* flags.h (flag_inhibit_size_directive): Declared.
* svr4.h (INT_ASM_OP, INIT_SECTION_ASM_OP): Moved around.
(ASCII_DATA_ASM_OP): Definition added.
(flag_inhibit_size_directive): Deleted superfluous extern decls.
* Correct number of expected shift/reduce conflicts
reported by bison for cp-parse.y.
* sparcv4.h: New file.
* i860.h (FUNCTION_ARG_BOUNDARY): Added definition.
(sfmode_constant_to_ulong): Added extern declaration.
* (BTE/BTNE patterns): Changed all instances of
`(match_operand:SI 2 "zero_operand" "J")' to `(const_int 0)'.
* (load then BTE/BTNE patterns): Added 8 new patterns,
for cond branch on EQ/NE of a zero-extended memref with small integer.
* 20 new patterns (involving BTE/BTNE) like existing 20
but simplified so that the combiner will find them.
* (sfmode_constant_to_ulong, fconst2_rtx): Removed
superfluous nested extern declarations.
Wed Dec 18 15:39:46 1991 Richard Stallman (rms at
* va-i860.h (va_start for stdarg.h): Divide reg counts by 4.
* stmt.c (emit_case_nodes): Fix typo, near testing cost_table.
* i860.h (CUMULATIVE_ARGS): Define a named struct, then use it.
* function.c (expand_function_start): Compute sizes in proper order.
* svr4.h (MD_STARTFILE_PREFIX): Defined.
* (movstrsi): Disable if needs more than 32 insns.
* expr.c (store_expr): Handle copying too-short STRING_CST.
* gstdarg.h (_VA_LIST): Handle this like _VA_LIST_.
* m68k.h (LOCAL_LABEL_PREFIX): Remove the `L'.
Fix uses of %L by adding `L'.
* m68k.c (print_operand_address): Fix use of %L.
* (movhi): Fix use of %L. They were inconsistent.
Wed Dec 18 14:59:26 1991 Michael Meissner (meissner at
* limits.h (whole file): Protect against inclusion.
* t-decrose (LIMITS_H): Don't install limits.h on OSF/1.
* t-encrose (LIMITS_H): Don't install limits.h on OSF/1.
* t-i386rose (LIMITS_H): Don't install limits.h on OSF/1.
* x-decrose (SYSTEM_INCLUDES): Don't do -I/usr/include.
* x-encrose (SYSTEM_INCLUDES): Don't do -I/usr/include.
* x-i386rose (SYSTEM_INCLUDES): Don't do -I/usr/include.
Wed Dec 18 04:53:23 1991 Ken Raeburn (Raeburn@Cygnus.COM)
* cp-init.c (build_new): Rewrote some of the array-handling code.
Now stores the number of elements (after stripping off all outer
ARRAY_TYPE nodes) at the start of allocated storage, just before the
pointer the user's program sees. We also store the 2s compliment
value of the pointer returned so we can distinguish when deleting a
pointer whether it was "adjusted" or not.
(expand_vec_init): Added a type conversion for cases when the
address of an array gets passed in and we want to deal with the
(build_delete): Catch a case where deletion of arrays could slip
(build_vec_delete): More array-handling rewrites. Extract the
stored value and use it as the number of objects to destroy; ignore
any value supplied by the user.
* cp-init.c (init_vfields): Now static.
* cp-tree.h (struct lang_decl_flags): Merged "dummy" fields.
* cp-tree.h (DECL_TEMPLATE_INSTANTIATIONS): New macro for finding a
list of instantiations already made of a template. (Only
implemented for functions currently.)
* cp-tree.def (DECL_TEMPLATE_INSTANTIATIONS): Describe it.
* cp-pt.c (instantiate_template): Maintain and make use of it.
* cp-pt.c (tsubst, case REFERENCE_TYPE): Call build_reference_type
instead of constructing the type here.
Wed Dec 18 03:37:46 1991 Richard Stallman (rms at
* c-parse.y (label_decl): Use identifiers_or_typenames.
* c-parse.y: Support FUNCTION ([ARGNAMES] DECLS) {...}.
(defn_parmlist_2, defn_parms): New nonterminals.
(identifiers_or_typenames): New nonterminal.
(parmlist_or_identifiers_1): Changed.
* c-decl.c (combine_parm_decls): New function.
Tue Dec 17 22:18:43 1991 Richard Kenner (kenner at
* function.c (expand_main_function): Build SYMBOL_REF with Pmode,
not VOIDmode.
* rs6000.h (HARD_REGNO_NREGS, CLASS_MAX_NREGS): FP regs can only hold
64 bits, not any size FP value.
* reload1.c (reload): Remove variable old_caller_save_needed.
Call init_save_areas and setup_save_areas instead of
allocate_save_areas and elim_save_addrs.
* caller-save.c (init_caller_save): New function, from part of
(setup_save_areas): New function, from rest of allocate_save_areas
and elim_save_addrs.
When scanning pseudos to find hard regs that might need caller-save,
look at all parts of multi-word registers.
* flow.c (elim_reg_set): New variable.
(flow_analysis): Set it to contain those regs that we can eliminate.
(mark_used_regs): Don't set eliminable regs as live when they are used.
* global-alloc.c (global_alloc): Clear preferences with eliminable
regs, in addition to clearing conflicts.
* reload.c (find_reloads_toplev): Abort instead of making
a SUBREG of a VOIDmode constant.
* emit-rtl.c (copy_rtx_if_shared): SCRATCH may always be shared.
Tue Dec 17 21:06:03 1991 Michael Meissner (meissner at
* mips.h (MIPS_VERSION): Bump MM version number to 5.
(processor_type): New enum to hold which type of
processor to schedule for.
(mips_cpu): New global to hold processor type.
(MASK_*, TARGET_*): Rearrange target bits, add bits to select
processor type, r4000 int/long/long long sizes.
(TARGET_SWITCHES): Delete redunant no options, only leave no-
(CUMULATIVE_ARGS): Make this a structure, not a pointer to a
(RTX_COSTS): Count simple memory refs as one instruction.
(REGISTER_MOVE_COST): Define as 4, to make sure constraints are
* (hilo type attribute): Add hilo type attribute to
separate moves to/from the hi/lo registers with other register
(move patterns): Set hilo attribute as appropriate.
(define_function_units): Update the integer and memory functional
units to include R4000 and R6000 processors, keyed off of the
-mr[46]000 switches. Add a new functional unit for transfering
stuff between register sets.
(mov{sf,df}_xfer*): Remove these patterns, as they are no longer
needed in GCC 2.00 to move between the different register sets,
and generate insn not found messages if used.
(movsi_ulw, movsi_usw): Correct test to see if stack loads are
aligned. Use UNITS_PER_WORD-1 instead of a hard coded 3.
(move define_expands): Delete move define_expands, since they are
illegal according to the documentation, and the bug they guard
against has long ago been fixed.
* mips.c (mips_cpu): New global to hold processor type.
(override_options): Set mips_cpu, check for 64 bit r4000 switches
if processor not a r4000.
(init_cumulative_args): CUMULATIVE_ARGS changes.
(function_arg_advance): Ditto.
(function_arg): Ditto.
(function_arg_partial_nregs): Ditto.
(mips_output_filename): Except for first .file, don't emit any other
.file if encapsulating stabs in ECOFF, just put out stabs. This
confuses gdb.
(mips_output_lineno): Don't put out .loc's if encapulating stabs in
(mips_asm_file_start): Put a .set nobopt for MIPS assembler to
work around bug where the assembler goes bonkers if a branch
inside of a .set noreorder section jumps to a label outside of a
.set noreorder section. This is supposed to be fixed in 2.20 of
the assembler.
(function_epilogue): Correctly emit nops with tabs and newlines if
* decrose.h (OBJECT_FORMAT_ROSE): Define, to tell collect to
enable OSF/rose support, rather than use nm.
* encrose.h (OBJECT_FORMAT_ROSE): Define, to tell collect to
enable OSF/rose support, rather than use nm.
* i386rose.h (OBJECT_FORMAT_ROSE): Define, to tell collect to
enable OSF/rose support, rather than use nm.
* t-decrose (EXTRA_PASSES): Build collect2 instead of collect-osf,
and link it to ld.
* t-encrose (EXTRA_PASSES): Build collect2 instead of collect-osf,
and link it to ld.
* t-i386rose (EXTRA_PASSES): Build collect2 instead of collect-osf,
and link it to ld.
* x-decrose (DEBUG): Delete -g, since CFLAGS already passes it.
(GCC_CFLAGS): Define POSIX so we can build protoize.
* x-encrose (DEBUG): Delete -g, since CFLAGS already passes it.
(GCC_CFLAGS): Define POSIX so we can build protoize.
* x-i386rose (DEBUG): Delete -g, since CFLAGS already passes it.
(GCC_CFLAGS): Define POSIX so we can build protoize.
* t-decstatn (EXTRA_PASSES): Explicitly mention collect2.
(ld): Use $(SYMLINK) rather than just ln.
* t-mips (EXTRA_PASSES): Explicitly mention collect2.
* collect2.c (whole file): Rewrite file based on collect-osf, to
make it more portable. Highlights include: running ld only once if
there are no constructors; OSF/rose support; not assuming that the
linker, assembler, nm live in /bin; -v support to trace the commands
being executed and print a version number; loops instead of
recursion used to write out the tables; support for user using -r;
checking all error returns; not using the shell to start processes.
* collect-osf.c (whole file): Deleted, merged into collect2.c.
Tue Dec 17 15:49:06 1991 Jim Wilson (wilson at
* sched.c (schedule_insns): Don't update value of reg_live_length
when it is negative, because negative values are special.
* sched.c (schedule_block): Make new_needs an int not an enum, since
some compilers won't accept using `|' and `&' with enums.
* Don't emit nop after floating point compare; this is
no longer needed.
From Tom Wood:
* sched.c (memrefs_conflict_p): Exchange xsize and ysize when x
and y are exchanged.
Tue Dec 17 15:01:04 1991 Mark Eichin (eichin at
* cp-decl.c (set_nested_typename): use SET_IDENTIFIER_TYPE_VALUE,
not set_identifier_type_value, so that the binding doesn't get
unwound by leaving class scope.
Tue Dec 17 10:57:12 1991 Tom Wood (wood at
* toplev.c (main): Make -g0 produce no debugging information.
Tue Dec 17 15:15:20 1991 Richard Stallman (rms at
* gcc.c (do_spec_1): In %P, duplicate the names with __ just in front.
* gstab.h: Renamed from stab.h.
* collect2.c, dbxout.c, final.c, mips-tfile.c: #include changed.
* dbxout.c (N_CATCH): Define this if stab.h does not.
* Depend on gstab.h where appropriate.
* (STAGESTUFF): Remove collect and collect2.
* c-parse.y (parmlist_2): Allow just `...' with no named args.
* c-decl.c (get_parm_info): Pedantic warning for that usage.
* final.c (final_scan_insn): Don't output blocks for -g1.
* (crtbegin.o, crtend.o): Use -g0.
* function.c (expand_main_function): Do nothing if INIT_SECTION_ASM_OP.
* varasm.c (assemble_asm): Handle ADDR_EXPR of a STRING_CST.
* stmt.c (expand_asm): Likewise.
* c-parse.y (extdef, stmt): Accept STRING_CST or ADDR_EXPR in asm.
Tue Dec 17 15:01:11 1991 Tom Wood (wood at
* m88k.h (INIT_SECTION_ASM_OP): Override svr[34].h.
* m88kv4.h (INIT_SECTION_ASM_OP): Override svr4.h and m88k.h.
* m88kdgux.h ({INIT,CTORS,DTORS}_SECTION_ASM_OP): Override m88k.h
except when compiling crtstuff.c.
Mon Dec 16 21:50:42 1991 Richard Kenner (kenner at
* stmt.c (struct case_node): Remove unused field `test_label'.
(pushcase, pushcase_range): Don't initialize it.
* stmt.c (check_for_full_enumeration_handling): Only print warnings
if -Wswitch is specified.
(expand_end_case): Call check_for_full_enumeration_handling even if
-Wswitch is not specified.
* expr.c (convert_move): Add missing arg to call to force_reg.
(convert_to_mode): Likewise, for protect_from_queue.
Mon Dec 16 20:33:10 1991 Richard Stallman (rms at
* expr.c (expand_builtin): Check number and types of args.
* c-parse.y (stmt, extdef): Allow constant expression inside plain asm.
* (movhi): Use asm_fprintf to print .set or equivalent.
* m68k.c (print_operand_address): Use %R when printing pc register.
Use %L.
* c-typeck.c, cp-typeck.c (c_sizeof): Give error for incomplete type.
Mon Dec 16 11:14:28 1991 Ken Raeburn (Raeburn@Cygnus.COM)
* cp-decl.c (init_decl_processing): Don't declare unused function
Mon Dec 16 08:35:04 1991 Torbjorn Granlund (tege at
* gnulib2.c (__udivmoddi4): Add comment.
Mon Dec 16 07:47:13 1991 Michael Tiemann (tiemann at
* cp-call.c (ideal_candidate): Always set BEST before using it.
Also, call `build_component_ref_1' with 3 args everywhere, and
`build_indirect_ref' with 2 args everywhere.
Mon Dec 16 07:17:46 1991 Richard Kenner (kenner at
* reload.h: Add `extern' to function declarations.
(gen_input_reload): Add declaration.
* reload1.c (reload): Allocate save area if caller-saves are needed;
check for case when it becomes needed after some spill registers are
Can now eliminate frame pointer even when caller-saves are needed.
Perform register elimination of save area and see if caller-save needs
a spill register.
If required, find a spill register and pass it to caller-save code.
(gen_input_reload): No longer static.
* (caller-save.o): Now includes reload.h (again).
* global-alloc.c (global_alloc): Can eliminate frame pointer even if
we have caller-saves.
* toplev.c (compile_file): Call init_caller_saves.
* caller-save.c: Major rewrite; almost entirely new code.
Integrate caller-saving with frame pointer elimination.
Don't try to save and restore registers that cannot be directly
copied to memory (such as MQ).
Correctly place save and restore insns.
Don't restore a saved register until end of block or if it is needed.
* cse.c (mention_regs): Now returns int to indicate that the hash code
may have changed.
For COMPARE and comparison op, ensure that any register operand has
a quantity number.
(insert_regs): Return value from mention_regs.
(rehash_using_reg): New function.
(record_jump_equiv, mention_regs): Call rehash_using_reg if an operand
of a compare is a REG whose hash code is changing.
Mon Dec 16 07:09:21 1991 Richard Stallman (rms at
* function.c (expand_main_function): New subroutine. Call __main.
* c-decl.c, cp-decl.c (store_parm_decls): Use that.
* cp-decl.c (init_decl_processing): Don't declare __main.
* objc-actions.c (init_objc): Call __objcInit as a constructor.
* toplev.c (compile_file): Reenable SDB code #if 0'd before.
* protoize.c (version_string): Make it extern.
* (protoize, unprotoize): Link with version.o.
Sun Dec 15 23:31:47 1991 Michael Tiemann (tiemann at
* cp-tree.c (virtual_member): When recurring, don't dive into
nonexistent baseclasses.
* cp-decl.c (grokdeclarator): Set TREE_STATIC for initialized const
* cp-typeck.c (mark_addressable): A decl that was TREE_STATIC might
be chagned to TREE_EXTERNAL due to #pragma interface/implementation.
Sun Dec 15 14:57:23 1991 Richard Stallman (rms at
* (SYSCALLS.c.X): Fix typo.
* dbxout.c (dbxout_init): Pass proper args to ASM_OUTPUT_MAIN_*.
* newpbb.h (ASM_OUTPUT_MAIN_SOURCE_FILENAME): Add proper arguments.
* stmt.c (emit_case_nodes): Rewrite to change induction conditions.
Handle boundedness in the bounded node itself.
Handle branching entirely at the parent level.
* gstdarg.h: Use va-i860.h.
* va-i860.h (va_start for ANSI): Fix typo. Call __builtin_next_arg.
Sat Dec 14 20:45:30 1991 Richard Kenner (kenner at
* (USER_H): va-hp9k8.h should be va-hp800.h.
* loop.c (invariant_p): Call-clobbered register is not invariant if
loop has calls.
(count_loop_regs_set): Count a CLOBBER as a setting of a register.
* stmt.c: Move include of ctype.h and definition of cost variables to
front of file.
(expand_end_case): Always set use_cost_table. Check type here instead
of in estimate_case_costs. Don't suppress use of cost table when
not optimizing.
(estimate_case_costs): Now returns int. Check for any case tag
that is an unusual control character here and reject use of table
if so. Always do comparisons signed, since that's how we access the
cost table.
(balance_case_nodes): Don't check for strange control characters here.
(node_has_low_bound): Do checking if we don't have a left branch,
instead of if we do.
(node_has_{low,high}_bound): Remove spurious checks on branches.
(emit_case_nodes): Ensure operation passed to emit_cmp_insn matches
the branch we actually emit.
Fix case of a range node with no left or right branch; use of case
and default label were backward for the high test.
Remove unused variables defaulted_{left,right}.
Sat Dec 14 16:10:11 1991 Richard Stallman (rms at
* protoize.c: Don't include limits.h.
Rename `pathname' to `filename' everywhere.
Clean up indentation of fprintf calls.
Use standard GNU format for file name/line in error messages.
(n_base_source_files): Renamed from base_source_files.
(convert_filename, invocation_filename, base_source_filenames):
`path' renamed to `filename'.
(syscalls_absolute_filename): Renamed from syscalls_pathname.
(find_file): Arg FILENAME no longer const.
(main): Fix getcwd error-checking logic.
(varargs_style_indicator): Delete `const'.
(savestring): Declare arg `input' const.
* (protoize, protoize.o, unprotoize, unprotoize.o):
(getopt.o, getopt1.o): Likewise.
(GCC_FOR_TARGET): Delete -B./.
(GCC_CFLAGS): Add -B./. Copy ALL_CFLAGS's definition, less XCFLAGS.
* cp-init.c (add_friends): Pass proper args to strncmp.
* toplev.c (compile_file): Clear DECL_RTL for vars not really output.
#if 0 possibly redundant code for SDB output.
* sys-types.h: Include gstddef.h to get size_t and wchar_t.
* ultrix.h (CPP_PREDEFINED): Add __unix, __ultrix, __bsd4_2.
* (STAGESTUFF): Add collect, collect2.
Sat Dec 14 12:16:12 1991 Michael Tiemann (tiemann at
* cp-search.c (get_baselinks): Use obstacks right, instead of
aborting when we know we're using them wrong.
* cp-parse.y (structsp): Fix typo in exception declaration rule.
* cp-typeck.c (build_modify_expr_1): Recursive call to
`build_modify_expr_1' used pre-BINFO representation for
* cp-decl.c (start_decl): Don't switch to temporary allocation for
decls of type REFERENCE_TYPE, as their initializers may live a long
time, too.
Sat Dec 14 07:11:03 1991 Richard Kenner (kenner at
* reload.c (find_reloads_toplev): If we have a SUBREG of a multi-word
constant, try to extract just the word we want.
* global-alloc.c (global_alloc): Correct reference to ELIMINABLES.
Fri Dec 13 15:28:38 1991 Michael Meissner (meissner at
* configure (mips-mips-sysv): On MIPS System V, use xm-umips.h, not
* gstddef.h (__PTRDIFF_TYPE__): Provide default definition in case
non-GCC 2.00 compiler is used.
(__SIZE_TYPE__): Ditto.
(__WCHAR_TYPE__): Ditto.
Fri Dec 13 14:49:54 1991 Richard Stallman (rms at
* config.sub: Renamed from config.subr.
Support os -sym1.
Convert -svr3, -svr4 to -sysv3, -sysv4.
* configure: Used new name.
* (includes): Preserve files from GCC already in dir.
Fri Dec 13 11:01:12 1991 Fred Fish (fnf at fishpond)
* att386.h: Fix unparenthesized macro arguments in
* i386v4.h: Select an assembly language syntax file and include
it. Supply missing macros from ones in i386v.h (TARGET_DEFAULT,
* svr4.h: Fix misspelled variable name labelno (was labeno).
Fri Dec 13 09:07:22 1991 Michael Tiemann (tiemann at
* cp-typeck.c (build_component_ref): Call `assemble_external' as
(build_function_call_real): Call `assemble_external' as nec. for
function calls we build. Code slightly rearranged for clarity.
* cp-call.c (build_method_call): Call `assemble_external' as nec.
Thu Dec 12 22:03:52 1991 Eric Youngdale (youngdale at
* Change message given to user. Change c-parse_tab.*
to c-parse.*
* Purge excess versions of version.opt.
Thu Dec 12 20:25:20 1991 Michael Meissner (meissner at
* (BOOT_CFLAGS): Remove quotes around the argument,
since this causes a syntax error when it is later expanded.
Thu Dec 12 17:53:55 1991 Richard Stallman (rms at
* config.subr: Add many new machines and some OS's.
* va-i860.h: Rewrite from rfg.
* toplev.c (main): Handle -dm on USG systems.
* m68k.c (print_operand, print_operand_address): New functions.
* m68k.h (PRINT_OPERAND, PRINT_OPERAND_ADDRESS): Just call them.
* m68k.c (S_*, D_*): Delete the #undefs at the end.
* stmt.c (expand_return): Special case if fcn returns void.
* objc-actions.c (build_objc_method_call): Fix typo in NeXT case.
* expr.c (expand_builtin, BUILT_IN_ARGS_INFO): Cast init of word_ptr.
* protoize.c: Delete the `extern "C"' for C++ compilation.
Thu Dec 12 10:01:13 1991 Michael Meissner (meissner at
* gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Fix off by one error in
handling the constructor list when a valid count is supplied.
* collect2.c (write_hooks): Emit a count before the list of
constructors, to go back to the old format.
* collect-osf.c (write_s_file): Emit a count before the list of
constructors, to go back to the old format.
* gnulib2.c (exit): Provide default defintions as bss symbols for
all of the constructor/destructor related symbols if the macro
INIT_SECTION_ASM_OP is not defined. The second link that collect
does and/or gld will provide the right values.
* decrose.h (HAVE_ATEXIT): Nuke macro, no longer used.
* encrose.h (HAVE_ATEXIT): Nuke macro, no longer used.
* i386rose.h (HAVE_ATEXIT): Nuke macro, no longer used.
Thu Dec 12 07:27:05 1991 Tom Wood (wood at
* gbl-ctors.h (__CTOR_LIST__, __DTOR_LIST__): Renamed from *_BEGIN__.
* collect-osf.c collect2.c: Rename here as well.
Thu Dec 12 04:15:22 1991 Richard Stallman (rms at
* c-parse.y (stmt): Make asm alternatives allow expr.
* c-typeck.c (c_expand_asm_operands): Get the STRING_CST from the expr.
* c-parse.y (datadecl, datadecls, lineno_datadecl): New rules.
(xdecls): Use them.
Wed Dec 11 18:36:53 1991 Richard Stallman (rms at
* gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Just one definition; use ON_EXIT.
Test for -1 and handle both kinds of table format.
* gnulib2.c (__do_global_dtors): Check for -1...
(__do_global_ctors): Dummy defn of ON_EXIT if no other defined.
(__main): Do nothing if called again.
(exit): Use EXIT_BODY if defined.
* crtstuff.c (__CTOR_LIST__, __DTOR_LIST__):
Renamed from *_BEGIN__. Add -1 as first elt.
(__CTOR_END__, __DTOR_END__): Add 0 as last elt.
(ON_EXIT): Dummy defn if no other is defined.
Wed Dec 11 18:08:36 1991 Mark Eichin (eichin at
* cp-parse.y (template_parm): removed some reduce/reduce conflicts
by noting which of identifier or identifier_defn would actually be
passed up in this context.
Wed Dec 11 17:52:46 1991 Richard Kenner (kenner at
* flow.c (propagate_block): Adjust loop depth if it is changed in
notes at the end of a block.
Abort if loop depth ever reaches zero.
Wed Dec 11 16:30:09 1991 Richard Stallman (rms at
* cccp.c (do_endif): Don't call record_control_macro at top level.
Wed Dec 11 14:45:42 1991 Mark Eichin (eichin at
* cp-decl.c (set_identifier_type_value): If we're in a
class_binding_level, shadow the type there.
(xref_defn_tag): New function. Calls xref_tag with special flag set
to indicate that we know we're defining something.
(pushdecl_top_level): if class_binding_level is set, search from it
instead of only from current_binding_level when trying to find
shadowed values. This is in support of tests through,
which broke after the changes for were installed.
* cp-spew.c (do_aggr): New function. Looks ahead from AGGR to see if
we have AGGR identifier { or AGGR identifier : which are both
definitions, and passes up identifier_DEFN instead. This is in
support of test
(yylex): add SPEW_DEBUG case after EMPTY, so we don't have gaps in
the displayed stream.
(yylex, case AGGR): added call to do_aggr.
(debug_yychar): added call to debug_yytranslate for proper
* cp-parse.y (debug_yytranslate): New function to support SPEW_DEBUG
(TYPENAME_DEFN): new token, TYPENAME seen by do_aggr.
(IDENTIFIER_DEFN): new token, ditto.
(PTYPENAME_DEFN): new token, ditto.
(identifier_defn): corresponds to identifier, but when the
identifier has been seen by do_aggr.
(named_class_head_sans_basetype_defn): specially recognize aggr
(named_class_head): add parallel clauses calling xref_tag_defn when
we know we're defining this aggr.
(named_class_head_sans_basetype_defn_either): for when we don't care
if it is a defn or not (such as templates)
(identifier_either): ditto.
* cp-tree.h (xref_defn_tag): New declaration.
Wed Dec 11 12:37:51 1991 Ken Raeburn (Raeburn@Cygnus.COM)
* cp-parse.y (label_colon): New nonterminal, with all label prefixes
from "stmt" moved here.
(stmt): Use it. Also provide useful message for label followed by
end of block (close-brace).
* cp-init.c (BIVN): Deleted unused variable.
* cp-decl.c (init_decl_processing): Don't declare function
__builtin_vec_new; it's never used.
Wed Dec 11 10:59:48 1991 Michael Meissner (meissner at
* toplev.c (main): Complete last change from RMS, use variable
'level' which used to be named 'arg'.
* gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Don't reference ON_EXIT for
those poor systems without atexit or on_exit.
Wed Dec 11 09:06:52 1991 Jeffrey A. Law (law at
* m68k.c (output_function_prologue, output_function_epilogue):
When saving/restoring only 2 registers, do so with two "movel"
instructions instead of a single "moveml". This results in
faster code for the 68020 and later machines.
Wed Dec 11 06:45:08 1991 Richard Kenner (kenner at
* x-romp (MAKE): Add definition; the supplied `make' doesn't define it.
Tue Dec 10 22:17:50 1991 Richard Kenner (kenner at
* combine.c (try_combine): Always make a copy of I2's pattern if
it will be used in a PARALLEL (`added_sets_2' nonzero).
* (BOOT_CFLAGS): New parameter.
(bootstrap*): Use it.
* flow.c (find_basic_blocks): Set depth of last insn, not first,
into basic_block_loop_depth.
(propagate_blocks): Use consistently with new definition.
* cse.c (cse_end_of_basic_block, cse_basic_block): Remove previous
change; it can cause loops following around branches.
* (USER_H): Add va-hp9k8.h.
Tue Dec 10 17:22:01 1991 Tom Wood (wood at
* m88k*.h: Include svr3.h as the default. m88kv4.h and m88kdgux.h
include svr4.h. Override svr[34].h as needed.
* t-m88k, t-m88kv4: Specify EXTRA_PARTS.
* m88k.c (uses_arg_area_p): Check current_function_varargs.
Tue Dec 10 15:41:03 1991 Michael Meissner (meissner at
* osf-main.c (whole file): Delete, since the constructor stuff was
moved to gnulib2.c.
* (collect2, collect2.o): Change to use the default
compiler to build collect2, instead of the newly built GCC, since
otherwise, collect2 will create a circular dependency. Also, pass
LDFLAGS when linking.
* collect-osf.c (write_s_file): Change to the new way of doing
constructors and destructors of having an end marker instead of a
* collect.c (REAL_AS_PATH, REAL_LD_PATH, REAL_NM_PATH): New macros
to allow cross compilers to specify where the real linker,
assembler, and nm live.
(NM_FLAGS): New macro to allow a configuration to change what flags
get passed to nm.
(alloca defines): Remove alloca defines, since config.h provides
(write_hooks): Change to the new way of doing constructors and
destructors of having an end marker instead of a count. Cast all
alloca calls to be the appropriate pointer type. Put both
constructors and destructors into the data section, because the MIPS
tools do not like non-instructions in the .text section.
* decrose.h (HAVE_ATEXIT): Define, OSF/1 has atexit.
(FULL_PROTOTYPES, NO_CONST_IN_SYSCALL): Remove, no longer used.
* encrose.h (HAVE_ATEXIT): Define, OSF/1 has atexit.
(FULL_PROTOTYPES): Remove, no longer used.
* i386rose.h (HAVE_ATEXIT): Define, OSF/1 has atexit.
* t-decrose (LIB2FUNCS_EXTRA): Remove, osf-main.c is no longer
needed, since constructor/destructor support moved into gnulib2.c.
* t-encrose (LIB2FUNCS_EXTRA): Remove, osf-main.c is no longer
needed, since constructor/destructor support moved into gnulib2.c.
* t-i386rose (LIB2FUNCS_EXTRA): Remove, osf-main.c is no longer
needed, since constructor/destructor support moved into gnulib2.c.
* t-decstatn (CCLIBFLAGS, GNULIB2_CFLAGS): Define so that gnulib1
and gnulib2 are both compiled with -G 0, in case the users compiles
and links this way. It also fixes a bug where the constructors and
destructors that collect2 produces are in the big data section, but
gnulib2 thinks they are in the small data section, because it only
sees a pointer.
(ld): Add -f to remove old ld link to collect2, if it exists.
* t-mips (CCLIBFLAGS, GNULIB2_CFLAGS): Define so that gnulib1
and gnulib2 are both compiled with -G 0, in case the users compiles
and links this way. It also fixes a bug where the constructors and
destructors that collect2 produces are in the big data section, but
gnulib2 thinks they are in the small data section, because it only
sees a pointer.
(ld): Add rule to link collect2 to ld.
(EXTRA_PASSES): Build collect2 (aka ld).
* xm-mips.h (alloca): If not GNU C, declare alloca to be char *.
* mips-tfile.c (add_aux_sym_tir): Move code to record bitfield size,
so that it agrees with MIPS ECOFF practice, rather than the
documentation, which affects enum bitfields. Changes from Per
Tue Dec 10 14:10:10 1991 Richard Stallman (rms at
* gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Get rid of __reverse_order, etc.
* gnulib2.c (__do_global_dtors): Remove & before arrays.
* configure: Set a default value for xm_file.
Remove redundant defaulting of cpu_type.
* svr4.h (ASM_DECLARE_FUNCTION_SIZE): Output internal label properly.
* function.c (assign_parms): Set current_function_args_info.
* output.h: Declare that var.
* tree.h (BUILTIN_ARGS_INFO): Renamed from BUILT_IN_VARARGS.
* expr.c (expand_builtin): Implement __builtin_args_info.
* c-decl.c (init_decl_processing): Declare it.
* va-i860.h: Use it.
Also update order of elements in struct __va_ctl.
* toplev.c (main): Eliminate -gsdb and -gdbx.
Clean up setting of use_gdb_dbx_extensions.
Tue Dec 10 10:33:58 1991 Tom Wood (wood at gen-rtx)
* svr4.h (ASM_DECLARE_FUNCTION_SIZE): Use an internal label.
Tue Dec 10 07:12:28 1991 James Van Artsdalen (james@raid)
* (crtbegin.o, crtend.o): crstuff.c is in $(srcdir).
Tue Dec 10 06:56:26 1991 Michael Tiemann (tiemann at
* cp-decl.c (kept_level_p): New function, borrowed from c-decl.c.
* cp-parse.y (compstmt): Call it.
Mon Dec 9 18:37:32 1991 Ken Raeburn (Raeburn@Cygnus.COM)
* cp-decl.c (grok_enum_decls): Don't give warning for class-local
enum types; this is a perfectly reasonable usage.
Mon Dec 9 12:23:48 1991 Ron Guilmette (rfg at
* toplev.c (main): Check that no extra chars follow the level #
in a -gNNN option. Also check that the debugging level requested
is between 0 and 3 (inclusive).
Mon Dec 9 20:34:48 1991 Jim Wilson (wilson at
* sched.c (schedule_block): Don't crash if `line' is zero.
(schedule_insns): Initialize line_note_head.
Mon Dec 9 15:31:46 1991 Michael Meissner (meissner at
* mips-tfile.c (pseudo_ops array): Correctly size the .stabs and
.stabn elements.
* mips.c (function_prologue, function_epilogue): Use assemble_name
to print the current function, instead of fprintf, in case there is
a leading '*'.
* mips-news.h (CPP_PREDEFINES): Define news3700, not news7300.
* (ashldi3_internal3): Fix typos.
(ashrdi3_internal3): Ditto.
(lshldi3_internal3): Ditto.
Mon Dec 9 11:49:52 1991 Torbjorn Granlund (tege at
* longlong.h (__a29k__ udiv_qrnnd): Change "q" to "1" for operand
2 constraint.
Mon Dec 9 11:22:58 1991 Ken Raeburn (Raeburn@Cygnus.COM)
* cp-typeck.c (build_x_function_call): A method might have type
pointer-to-method as well. Don't build an OFFSET_REF for any
"function" that already has pointer type. Only use
DECL_CLASS_CONTEXT to find type of `this' for FUNCTION_DECLs; for
method pointer expressions, look up the basetype of the method type.
(build_unary_op): Fix comment in typo.
* cp-tree.c: Fix typo in comment at start of file.
Mon Dec 9 07:17:13 1991 Richard Kenner (kenner at
* cse.c (cse_insn): When a jump is converted to unconditional,
delete the dead code, but leave the notes.
(cse_basic_block, cse_end_of_basic_block): Some unconditional jumps are
part of the basic block.
(cse_basic_block): Add missing arg to cse_end_of_basic_block call.
Mon Dec 9 07:16:15 1991 Ron Guilmette (rfg at
* sys-types.h: New file.
* sys-protos.h: New file.
* SYSCALLS.c: Just include those files.
* protoize.c (VOLATILE): Define this symbol conditionally so that
it can be used to declare GNU `volatile' functions.
(abort): Added VOLATILE extern declaration (but not if it's a macro).
(kill, fork): Added extern declaration.
(substr): Declare c as int.
* gbl-ctors.h: New file.
* crtstuff.c: Include gbl-ctors.h.
(INIT_SECTION_ASM_OP): Delete default definition.
Only compile .init section code if INIT_SECTION_ASM_OP is defined.
(pointer): Globally changed to `func_ptr'.
* (crtbegin.o, crtend.o, gnulib2): Depend on gbl-ctors.h.
* gnulib2.c: Added definition of __builtin_saveregs for i860/svr4
and fixed up definition of __builtin_saveregs for i860/non-svr4.
(__bb_avoid_warning): Added explicit return type.
(__builtin_new, __builtin_vec_new, __builtin_delete,
__builtin_vec_delete): Use `void*' where appropriate.
(exit): Change conditional to ON_EXIT. Make dummy if no real exit.
Include gbl-ctors.h.
(__main): Change conditional to INIT_SECTION_ASM_OP.
(__do_global_ctors): Conditional on INIT_SECTION_ASM_OP.
Use DO_GLOBAL_CTORS_BODY for the guts.
Include gbl-ctors.h.
Mon Dec 9 01:07:56 1991 Richard Stallman (rms at
* fixinc.svr4: Don't change #ident or assertion tests.
Don't install inline.h.
* c-common.c (get_directive_line): Declare c as int.
* configure: Create additional file tconfig.h.
* protoize.c: Include that, not tm.h.
* (protoize.o, unprotoize.o): Depend on tconfig.h.
* svr4.h (HAVE_ATEXIT): Defined.
* gnulib2.c (_main, exit): Use HAVE_ATEXIT to control use of atexit.
* final.c (final_scan_insn): Output first and last note in a series.
* objc-actions.c (build_objc_method_call):
(build_message_expr): Pass RECEIVER for LOOKUP_OBJECT.
Pass RECEIVER or self_decl as OBJECT.
* rtl.h: Undef FLOAT.
Fix typo.
Sun Dec 8 21:46:51 1991 Richard Stallman (rms at
* protoize.c (main): Declare `value'.
(abspath): Declare endp. Declare and set outp and inp.
* cp-decl.c (sigsegv): Function deleted.
(init_decl_processing): Don't use it.
Also don't include signal.h.
* t-svr4: New file.
* configure (i386-*-sysv4*, i860-*-sysv4*): Use that file.
Sun Dec 8 12:01:36 1991 Ron Guilmette (rfg at
* fixinc.svr4: New file.
* final.c (profile_function): Specify return type.
(get_attr_length): Added a return statement to prevent warnings.
* final.c (final_scan_insn): Switch to .text section before output
of jumptable lable (if requested by JUMP_TABLES_IN_TEXT_SECTION).
Don't switch sections again after the label.
* configure (i386-*-sysv*): Configuration deleted.
(i386-*-sysv3, i386-*-sysv4, i860-*-sysv3, i860-*-sysv4):
Added assignment to `tmake_file' (to pick up def of EXTRA_PARTS).
(i860-*-sysv3, i860-*-sysv4): Added assignment to `xmake-file'.
(i860-*-sysv3): Deleted bogus GAS related stuff.
* combine.c (combinable_i3pat): Added explicit return type.
* i860.h (TARGET_FPU): Deleted this target flag. i860 fpu is on chip.
(TARGET_XP): New target flag for XR and XP models.
(TARGET_FLAGS, HARD_REGNO_MODE_OK): Adjusted for above changes.
(REG_ALLOC_ORDER): Use first the regs less likely for other purposes.
(BRANCH_COST): Defined.
(CC_ONLY_*): Deleted these obsolete defines.
(CC_NEGATED): Added for IEEE behavior with cmpgesf and cmplesf.
Added .align so assembler doesn't barf on subsequent .long(s).
Added definitions needed to build a useable gnulib1 library.
* Removed all references to CC_ONLY_* symbols.
(cmpledf, cmpgedf): Adjusted assembler code as suggested
by i860 manuals, for IEEE results.
(cbranch, flipped_cbranch, inverse_cbranch, flipped_inverse_cbranch):
Check for CC_NEGATED.
(bte, btne patterns): Complete rewrite.
(anonymous sign-extend patterns): Moved before the named patterns.
* (addsi3, subsi3): Disparaged alternatives with a floating-
pointer input register to avoid complicated reloading problem.
(negsi2): Deleted bogus `I' constraint on operand 1.
(divdf3, divsf3): Added additional continuation characters
needed to make lines acceptable to `read_rtx' in the gen* programs.
* i860.c: Include "flags.h" to get access to `optimize' flag.
(leaf_function_p): Added extern declaration.
(zero_operand): New function.
(must_preserve_r1, must_preserve_bytes): New variables.
(function_prologue, function_epilogue):
Support treatment of return-address reg (r1) in leaf functions.
* i860v4.h (CPP_PREDEFINES): Add pre-assertions for i860/svr4.
(CPP_SPEC): Deleted definition.
(TYPE_OPERAND_FMT): New definition.
(ASM_OUTPUT_FUNCTION_PREFIX): #undef before defining.
(ASM_OUTPUT_EPILOGUE_SUFFIX): Deleted obsolete macro.
TDESC_SECTION_FUNCTION): Definitions added.
* i860v3.h: Complete rewrite. Uses svr3.h.
* i386v4.h: Don't include i386v.h. Include i386.h instead.
(SDB_DEBUGGING_INFO): #undef deleted.
(ASM_OUTPUT_DWARF_STRING): Added definition.
* gcc.c (default_compilers): Pass -g* options to cpp.
* gcc.c (do_spec_1): Don't duplicate -A options in CPP_PREDEFINES.
* gnulib2.c (exit, __main, __do_global_dtors, __do_global_ctors):
New functions.
Define here, and use IP.
* i386.h: Don't include syms.h or define FILNMLEN.
* x-i860v3, x-i860v4: New files.
* x-i386v4 (CCLIBFLAGS, GCC_CFLAGS): Added definitions.
* xm-svr3.h: New file.
* xm-i86v3.h, xm-i86v4.h, xm-i386v.h: Rewritten.
* xm-i38v4.h: New file.
* svr4.h (LIB_SPEC): Make crtend.o come before any *crtn.o
file (to avoid hitting return without standard epilogue in .init code).
(INIT_SECTION_ASM_OP): Added definition for crtstuff.c (and friends).
Adjusted indentation of continuations to match those in rest of file.
* svr3.h (CPP_PREDEFINES): Don't define this here.
(ASM_FILE_START_1): Provide no-op default definition.
(ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Undef these before defining.
SELECT_RTX_SECTION): Definitions added.
Sun Dec 8 15:27:56 1991 Richard Stallman (rms at
* next.c (handle_pragma): Use get_directive_line.
* gnulib2.c (__do_global_dtors, __do_global_ctors):
Remove the feature to control the order of execution.
This is not a clean solution to the overall problem.
Sun Dec 8 14:47:44 1991 Michael Meissner (meissner at
* mips-tfile.c (toplevel, add_local_symbol, parse_stabs_common):
More changes for smuggling stabs through from and
* mips.h (ignore_line_number): New global, set when we must avoid
putting out a MIPS ECOFF .loc because the file changed inside of a
function, and we are also putting out stabs, which can handle this.
(ASM_STABS_OP, ASM_STABN_OP, ASM_STABD_OP): Define to put a comment
in front of the pseudo op, if we are encapsulating stabs in MIPS
(ASM_OUTPUT_SOURCE_FILENAME): Change to call mips_output_filename.
(ASM_OUTPUT_SOURCE_LINE): change to call mips_output_lineno.
* mips.c (toplevel): Include stab.h for encapsulating stabs.
(ignore_line_number): New global variable.
(reg_or_0_operand): Call register_operand for REG's as well as
(override_option): Don't allow ints in FP registers unless -mdebugh.
(mips_output_filename): New function to write the filename to the
assembler output. Add special support for encapsulating .stabs in
(mips_output_lineno): New function to write the line number to the
assembler output. Add special support for encapsulating .stabs in
(function_epilogue): Clear ignore_line_number.
* (fix_trunc??si_opt, mov??_internal): Change '!' constraint
back to '*'.
Sat Dec 7 16:58:57 1991 Ken Raeburn (Raeburn@Cygnus.COM)
* cp-spew.c (scan_tokens): Stop scanning at semi-colon.
* cp-spew.c: Made SPEW_DEBUG code useable:
(yylex): Use stderr in SPEW_DEBUG code.
(yytags): Deleted table.
(debug_yychar): Print to stderr, and don't try finding translations
for values over 256.
* cp-class.c (push_lang_context): Fix typo in comment.
* cp-decl.c (finish_decl): Undo `pushclass' done in start_decl for
top-level decls of methods.
* cp-lex.c (restore_pending_input): Cast 0 to pointer type for
* cp-pt.c (do_pending_expansions): Use TREE_USED instead of
TREE_ADDRESSABLE for functions. Put in comments explaining why we
compile unused methods of classes that are interface-unknown: the
file initializer/cleanup functions might need them.
(mumblefrotz): Delete unused function; this code is in cp-parse.y.
Sat Dec 7 15:46:55 1991 Timothy Moore (
* function.c: Handle ARGS_GROW_DOWNWARD.
(pad_below, pad_to_arg_alignment, round_down): New subroutines.
(locate_and_pad_parm): Use them, for the existing case.
Also handle the ARGS_GROW_DOWNWARD case, using them.
Sat Dec 7 15:46:55 1991 Richard Stallman (rms at
* tree.h (DECL_ARG_TYPE_AS_WRITTEN): New macro.
* c-decl.c (grokdeclarator): Store value there.
* m68k.c (output_function_prologue, output_function_epilogue):
Support MOTOROLA syntax.
* toplev.c (main): Testing for -ggdb catches -g also.
Default use_gdb_dbx_extensions to 1 for -gstabs, 0 for -gdbx.
Specified default is for -g.
* cccp.c (handle_directive): Store start address in directive_start.
(do_xifdef): Use that, checking if at start of file.
(do_endif): Compute ep properly.
* protoize.c (abspath): Fix errors referencing argument cwd.
(main): Allocate big enough buffer for getcwd.
Don't clobber varargs_style_indicator, copy it.
(savestring): New function.
Sat Dec 7 00:53:16 1991 Ron Guilmette (rfg at
* c-decl.c (warn_redundant_decls, warn_nested_externs): New vars.
(c_decode_option): Support -Wredundant-decls and -Wnested-externs.
(pushdecl): Print those warnings.
* c-tree.h (warn_redundant_decls, warn_nested_externs): Declared.
* c-decl.c (pending_xref_error, c_mark_varargs): Added return type.
* cccp.c (main): Added code to support the presence of -A (assertion)
options within CPP_PREDEFINES.
* c-lang.c: Minor cleanups.
* c-lex.c (check_newline): Added support for the -g3 option.
* dwarfout.c (type_tag): Fixed bug in gcc Dwarf generation for
tagged types.
* dwarfout.c (output_decl): Added two pre-checks to see if nodes
are ERROR_MARK nodes before using them.
* dwarfout.c (generate_new_sfname_entry): Function added.
* dwarfout.c (lookup_filename): Call generate_new_sfname_entry
as soon as each new source filename is added to the list of
known filenames (thus avoiding an m68k forward-ref assembler bug).
* dwarfout.c (dwarfout_line): Initialize prev_file_entry_num to
(unsigned) -1 rather than zero to avoid bogus suppression of
first .debug_sfnames section entry.
* dwarfout.c (compare_filename_entries): Function deleted. (It's
no longer needed.)
* dwarfout.c (dwarfout_finish): Don't generate .debug_sfnames
section entries here anymore. (See lookup_filename.)
* (realclean): Delete c-parse.h.
Delete objc-parse.output just once.
Fri Dec 6 17:49:28 1991 Richard Kenner (kenner at
* cse.c (FIXED_BASE_PLUS_P): The frame or argument pointer itself is
a fixed address.
(find_comparison_args): If we find something equivalent to a
fixed address, return the fixed address.
* combine.c (try_combine): Don't access new_i2_notes if it hasn't been
defined (it isn't defined unless newi2pat != 0).
Fri Dec 6 16:01:02 1991 Jim Wilson (wilson at
* rtl.h (enum reg_note): Define two new values REG_DEP_ANTI,
REG_DEP_OUTPUT, which are used to mark LOG_LINKS.
* rtl.c (reg_note_name): Likewise.
(add_dependence): Return void. New parameter DEP_TYPE to indicate
type of dependence.
* sched.c: Major rewrite to delete much obsolete code, correct many
comments, delete unused variables, etc. Modify all callers of
add_dependence to pass new argument. Significant changes are:
(reassign_dependence): Deleted, was unnecessary.
(priority): Account for type of dependence when calculating
(flush_pending_lists): New function. Encapsulate code which makes
dependencies between an INSN and every insn on the
pending_read_insns and pending_write_insns lists.
(rank_for_schedule): Account for type of dependence with last
scheduled insn when deciding which ready insn to schedule next.
(launch_link): Give all birthing insns the same priority.
(schedule_block): Only sort the ready list once, after all ready
insns have been added to it.
(schedule_block): When deciding what REG_DEAD notes are needed on a
just scheduled insns, process all sets first (sched_note_set) then
process all uses (attach_deaths_insn).
(attach_deaths): Simplified by above change.
(sched_note_set): Likewise.
(update_flow_info): Renamed from update_links, since it no longer
does anything with LOG_LINKS. Sched_analyze_insn creates all
necessary new LOG_LINKS already.
(schedule_insn): Delete no op move insns after reload.
Fri Dec 6 13:33:48 1991 Richard Stallman (rms at
* crtstuff.c: Give permission to link with non-free programs.
* toplev.c (flag_inhibit_size_directive): New var and -f option.
* (crtbegin.o, crtend.o): Use that option. Use -g1.
Fri Dec 6 08:42:53 1991 Ron Guilmette (rfg at
* (STAGESTUFF): Added __main and _exit to support g++.
* c-common.c (c_expand_expr_stmt): Made return type explicit.
* c-common.c: (get_directive_line): Function added to support -g3.
Fri Dec 6 04:50:39 1991 Michael Tiemann (tiemann at
* cp-tree.h (OPERATOR_ASSIGN_CHARS_P): Flushed.
* cp-decl.c (grok_op_properties): Flush OPERATOR_ASSIGN_CHARS_P.
* cp-init.c (add_{friend,friends}): Ditto.
Thu Dec 5 22:31:12 1991 Jeffrey A Law (law at
* m68k.h (CONST_COSTS): Show that constants which can be easily
generated are less expensive than most.
* (movsi): Use two instruction sequences to load constants
which are just outside moveq's range (within 8 of moveq's range).
Likewise for positive even constants within twice moveq's range.
Thu Dec 5 20:17:13 1991 Eric Youngdale (youngdale at
* Generate a file 'version.opt' which will be given
to the VMS linker to put the gcc version number in the image
header version number field.
* Compile c-lex.c when building gcc and objc, and
add c-lex.obj to the list of files given to the linker.
Add version.opt to the list of files given to the linker.
* Add version.opt to the list of files given to the
Thu Dec 5 23:04:20 1991 Richard Kenner (kenner at
* combine.c (make_extraction): Don't make a STRICT_LOW_PART of a MEM;
clean up comments so they agree with the code.
* combine.c (try_combine): Correct test for when we can safely change
the mode of a pseudo; can't if it doesn't die in I3.
* c-decl.c (WCHAR_TYPE_SIZE): Deleted; never used.
* c-common.c (WCHAR_TYPE_SIZE, WCHAR_BYTES): Deleted, no longer needed.
(combine_strings): Use size of `wchar_type_node' to get number of
bytes in wchar_t.
* next.h (WCHAR_TYPE_SIZE): Delete; no longer used.
* cse.c (cse_main): Add new argument to cse_basic_block_call.
Don't call cse_around_loop here.
(cse_basic_block): Call cse_around_loop from here while we still
have our arrays allocated.
* combine.c (simplify_comparison): Fix error in last change; don't
reference TEM before it is set.
* toplev.c (fatal_insn_not_found): Flush all files before aborting.
Thu Dec 5 21:42:29 1991 Richard Stallman (rms at
* objc-actions.c (build_objc_method_call): Eval OBJECT and SELECTOR
only once. Always pass self_decl as self to the method.
Thu Dec 5 14:52:16 1991 Jim Wilson (wilson at
* ccrtstuff.c, gnulib2.c, protoize.c: Include tm.h not config.h,
since these are complied for the target, host defines do not apply.
Thu Dec 5 14:52:24 1991 Michael Meissner (meissner at
not defined, define as .stabs/.stabn/.stabd respectively. Change
all places emitting stabs to use the macros.
* cp-decl2.c: Ditto.
* cp-gc.c: Ditto.
* final.c: Ditto.
* varasm.c: Ditto.
* gcc.texinfo: Document ASM_STAB[DNS]_OP macros.
Thu Dec 5 12:03:40 1991 Richard Stallman (rms at
* gcc.c (process_command): Don't put `.' on startfile_prefix.
Cast result of alloca.
* config/*.h (ASM_OUTPUT_ASCII): Put parens around all uses of args.
* hp800.h, hp800.c,, xm-hp800.h: New files.
* va-hp800.h: New file.
* gvarargs.h: Use va-hp800.h if needed.
* config.subr, configure: Add alternatives for hp800, hp700.
Thu Dec 5 09:35:15 1991 Michael Tiemann (tiemann at
* cp-search.c (note_debug_info_needed): Do the right thing for
static member functions.
Thu Dec 5 01:25:13 1991 Michael Tiemann (tiemann at
* version.c: Now 1.96.
Wed Dec 4 23:17:23 1991 Richard Kenner (kenner at
* reorg.c (try_merge_delay_insns, fill_simple_delay_slots): Correctly
update NEXT_TRIAL after possibly splitting an insn.
Wed Dec 4 17:03:11 1991 Jim Wilson (wilson at
* gplus.gperf: Add throw and template keywords. Update private,
protected, and public definitions.
* print-tree.c (print_node): Add missing indentation argument to
print_node call for values field.
Wed Dec 4 18:39:33 1991 Richard Stallman (rms at
* objc-actions.c (build_objc_method_call): Define as static.
Wed Dec 4 17:04:49 1991 Michael Meissner (meissner at
* mips-tfile.c (add_varray_page, alloc_type enum): Keep track of how
many pages we allocated for varrays as well as the small stuff.
(stabs_filename): New static to hold the special filename used for
passing stabs through.
(parse_stabs_common, parse_stabs, parse_stabn): New functions to
smuggle stabs through to the debugger. Stabs must be commented out,
just like the other debug directives.
(add_local_symbol): Check hash_ptr to see if it's null before
storing into it, in case no name is passed.
(add_file): Add support for the special stabs file.
(copy_object): Before copying the external symbols, figure out the
file indexes of each of the files, and then explicitly remap the
original file indexes of the external symbol to be the new file
index. If this isn't done, then bad file numbers can get generated
if a filename is repeated.
(various): Change the name of small_alloc to alloc_counts, since we
now track large memory allocations as well.
* mips-tdump.c (toplevel): Delete unnecessary include file stamp.h.
Wed Dec 4 11:05:04 1991 Michael Collison (collison at
* encore.h (ASM_OUTPUT_LABELREF_AS_INT): add definition
* ns32k.h: ditto
defined provide alternate definitions
* encrose.h (ASM_OUTPUT_INT): If COLLECT is defined provide
alternate definition
Wed Dec 4 01:39:07 1991 Ken Raeburn (Raeburn@Cygnus.COM)
* cp-pt.c (end_template_decl): For method templates, pop the class
binding level before the others rather than after.
* cp-class.c: Added DEBUG_CP_BINDING_LEVELS code. Include cp-decl.h
if that symbol is defined, but don't list it in since
that's not the normal mode.
(pushclass): Print messages and frob indentation level.
(popclass): Likewise.
* cp-spew.c (yylex): If identifier_type says PTYPENAME, and
following token is "<", force looking_for_typename to be
* cp-pt.c (mangle_class_name_for_template): Drop extra spaces
between last parm and closing ">". Print a message before aborting
if a parm type isn't handled.
* cp-decl.c (maybe_globalize_type): Don't do it if the identifier
that names the type doesn't currently have a type value.
Wed Dec 4 01:06:28 1991 Michael Tiemann (tiemann at
* cp-decl.c (finish_enum): Call `rest_of_type_compilation' for
* cp-class.c (finish_struct): Ditto.
* cp-decl.c (pushtag): Set TYPE_STUB_DECL.
* cp-search.c (note_debug_info_needed): Call
`rest_of_type_compilation' if we notice we need debug info for TYPE.
* dbxout.c (dbxout_init): Fix typo in comment.
* cp-parse.y (DOT_STAR): New token.
(expr_no_commas): Handle DOT_STAR expressions.
* cp-lex.c (real_yylex): Recognize DOT_STAR. Also, rearrange
scanner to make it more efficient.
* cp-decl.c (maybe_build_cleanup): When building cleanups, pass
TYPE_MAIN_VARIANT to `build_delete'.
Tue Dec 3 22:52:33 1991 Jim Wilson (wilson at
* flow.c (mark_set_1): Make a REG_UNUSED note not a REG_DEAD note
for the part of multi-word hard registers not needed.
Tue Dec 3 22:34:13 1991 Richard Stallman (rms at
* configure: Support --objdir.
* objc-parse.y: Get rid of many static decls.
Reorder all token definitions to match c-parse.y.
(recognize_objc_keyword): New function.
* c-lex.c (token_buffer): No longer static.
(yylex): For @, call recognize_objc_keyword. Don't use keyword table.
* c-lang.c (recognize_objc_keyword): Dummy definition.
* objc-actions.c (build_objc_method_call) [!NEXT_OBJC_RUNTIME]:
Pass selector as arg to the method.
Always cast the method to a function type.
* xm-sparc.h (alloca): If using Sun CC, include alloca.h.
If using GCC, define as __builtin_alloca the way other machines do.
* cccp.c (print_containing_files): Print the nominal file names.
Tue Dec 3 16:54:04 1991 Richard Kenner (kenner at
* jump.c (jump_optimize): If branches are expensive, convert jumps
around increments or decrements by one into an increment by the
conditional expression.
* combine.c (simplify_comparison): Don't remove a SUBREG unless
it doesn't affect either operand.
* cse.c (find_comparison_args): Rework so that we can correctly
fold comparisons on machines that set CC0 to the result of a
condition test, not just a COMPARE.
(cse_insn): Don't set THIS_INSN_CC0 to a constant if we don't know
its mode.
Tue Dec 3 12:01:12 1991 Jim Wilson (wilson at
* Use AND not IOR in define_function_unit definitions.
Correct setting of MODE attribute in various insn patterns.
Tue Dec 3 08:31:18 1991 Michael Tiemann (tiemann at
* cp-spew.c (scan_tokens): Delete Dec 2 change.
(yylex): Instead, copy TMP_TOKEN.YYLVAL.TTYPE if it was allocated on
the wrong obstack.
(probe_obstack): New function to support the above change.
* cp-tree.h (CLASSTYPE_DEBUG_REQUESTED): New flag.
cp-class.c (finish_struct): Now almost always assume that classes
with methods are to ignored for debugging purposes.
cp-search.c (dfs_debug_{mark,unmarkedp}): Rewritten to handle new
algorithm for minimizing debug output.
* cp-decl2.c (constructor_name): Handle case when THING is a
Tue Dec 3 06:35:38 1991 Michael Tiemann (tiemann at
* jump.c (duplicate_look_exit_test): If REG_MAP is non-zero, call
replace_regs on the REG_NOTES of COPY.
* cp-spew.c (scan_tokens): Don't read past '='.
* cp-call.c (compute_conversion_costs): For now, treat
difference between when we should accept it (pointers to the right
sort of methods) and when we shouldn't (base* to derived*
Mon Dec 2 18:53:42 1991 Jim Wilson (wilson at
* cse.c (cse_around_loop): Fix typo in comment.
* dbxout.c (dbxout_type_fields): Likewise.
* sched.c (sched_analyze_1): Pass the second and third args of a
ZERO_EXTRACT or SIGN_EXTRACT in the SET_DEST to sched_analyze_2.
* combine.c (make_compound_operation): Change (lshiftrt (ashift ...))
Mon Dec 2 15:09:13 1991 Richard Stallman (rms at
* jump.c (jump_optimize): New arg AFTER_REGSCAN.
If not set, don't use duplicate_loop_exit_test.
* toplev.c (compile_file): Pass new arg to jump_optimize.
* xm-i86v[34].h: Renamed from xm-i860v[34].h.
* configure: Corresponding changes.
* m68k.c (output_function_epilogue): Put %R on all regs in asm_fprintf.
* t-decstatn (ld): Just copy collect2.
(collect): Target deleted.
(EXTRA_PASSES): Deleted collect.
(mips-tfile, mips-tdump): Depend on LIBDEPS.
* t-mips (mips-tfile, mips-tdump): Depend on LIBDEPS.
* collect2.c (main): Run /bin/ld.
Use fatal_perror where appropriate.
* objc-actions.c (build_message_expr): Fix typo.
* configure: Add missing fi to finish last change.
* cse.c (simplify_binary_operation): Restore missing break in case DIV.
* sdbout.c (sdbout_init): Explicitly do nothing.
(sdbout_typedefs): Function deleted.
Mon Dec 2 12:504:35 1991 Eric Youngdale (youngdale at
* Finish changeover from tm-*.h to *.h.
Sun Dec 1 05:18:32 1991 Michael Tiemann (tiemann at
* cp-search.c (lookup_{field,fnfields}): If PROTECT is 0, don't
memoize the entry we find.
* cp-decl.c (grokvardecl): Call `build_lang_field_decl' instead of
`build_decl' if we retroactively allocate a VAR_DECL.
Sun Dec 1 00:10:18 1991 Richard Stallman (rms at
* configure: Convert option syntax from + to --.
Support --target.
(ASM_FILE_START): Deleted.
(STDC_VALUE): Deleted.
* real.h (REAL_VALUE_TRUNCATE): Check for same size as SFmode.
* config/*.h: Renamed from tm-*.h. #includes and comments changed.
* configure: Changed accordingly.
* t-*: tm-*.h file names changed.
* gnulib2.c (__enable_execute_stack): Renamed function.
* convex.h (INITIALIZE_TRAMPOLINE): Use new name.
Sun Dec 1 08:57:45 1991 Michael Meissner (meissner at
* cccp.c (main): Add cast in front of alloca for non GCC compilers.
Sat Nov 30 22:33:24 1991 Chris Smith (
* config.subr: Recognize -c3*.
New alternatives for convex-c3*.
* configure: Alternatives for convex rewritten.
* gnulib2.c (__execute_enable_stack): New function for Convex only.
* gcc.c (do_spec_1): Use \ as quoting char.
* convex.h (TARGET_SWITCHES): Add new machine types c32, c34, c38.
Add flag TARGET_INDIRECTS, true for c1 and c2, false for c3.
* convex.h (GO_IF_LEGITIMATE_ADDRESS): Avoid indirect
addressing if ! TARGET_INDIRECTS.
It now works to describe machine correctly.
* convex.h (SIZE_TYPE, PTRDIFF_TYPE): Make them ints rather
than longs to match usage in /usr/include.
* convex.h (enum reg_class): Add classes SP_REGS, the stack
pointer, and INDEX_REGS, the remaining A_REGS.
for new classes.
not index off the stack pointer (register 0).
* convex.h (RTX_COSTS): Specify costs to prevent multiply
from being synthesized from shifts (which aren't faster).
* convex.h (NOTICE_UPDATE_CC): No need to do CC_STATUS_INIT,
cc is never looked at.
define so g++ works.
* convex.h: If COLLECT is defined, define output macros for
collect to call.
* convex*.h: If !traditional, define _LONGLONG and 64-bit
typedefs to prevent types.h from murdering ansi compilations.
* (movsi): split into define_expand and two
anonymous define_insns, one that uses indirection and
one that doesn't. TARGET_INDIRECTS selects which.
* convex.c (output_call): New routine. Scan forward from call
to decide if AP is live, omit AP reload if not.
* (call, call_value): use output_call.
* (bit manipulation peepholes): remove, now done in
* (indirect_jump): Define.
* convex.c (const_double_{high,low}_int): Just return the
appropriate word, remove slow float computations.
* math-convex: New file to use builtin instructions.
* x-convex: Use cc -pcc to bootstrap gcc.
Sat Nov 30 10:21:26 1991 Ron Guilmette (rfg at
* tm-i386v4.h (DBX_REGISTER_NUMBER): Different renumbering.
so that the progbits parameter actually appears in the definitions.
Sat Nov 30 07:05:06 1991 Michael Tiemann (tiemann at
* cp-spew.c (follows_{identifier,typename}): New arrays.
* cp-spew.c (init_spew): Initialize new arrays.
* cp-decl.c (lookup_name): takes new parameter PREFER_TYPE.
All callers changed.
* cp-spew.c (yylex): Set LOOKING_FOR_TYPENAME every time we see an
* cp-lex.c (real_yylex): When composing EXTERN_LANG_STRING, call
`real_yylex', not `yylex'. Changed other places that depended on
calling `real_yylex' for their input.
* cp-spew.c (scan_tokens): Never read past '{' or ':'. Fill the
token buffer with EMPTY tokens in that case.
(yylex): Handle EMPTY tokens.
* cp-parse.y (structsp): Avoid using `yyungetc' to push a ';' back
on the input stream.
(absdcl): Handle START_DECLARATOR.
* cp-spew.c (consume_token): Renamed from `discard_token'.
(struct token): Changed structure to make it smaller.
(spew_init): Renamed from init_spew. Now called from init_lex.
(scan_tokens): Renamed from slurp_next_token.
Many functions reformatted to match GCC indentation style.
* cp-lex.c (arbitrate_lookup): Don't guess in favor of type if
yychar is ')'.
* cp-decl.c (lookup_name): Fixed so that all binding levels use
`looking_for_typename' consistently.
* cp-type2.c (build_functional_cast): Handle new case that we are
called in a context where a method is appropriate (but we parsed it
as a ctor call).
* cp-call.c (CONST_HARSHNESS): Change bit that we test.
(convert_harshness,compute_conversion_costs): Call CONST_HARSHNESS
consisently when needed.
* cp-init.c (decl_constant_value): Keep enabled even when
Sat Nov 30 01:23:38 1991 Richard Stallman (rms at
* sdbout.c (sdbout_init): Just call sdbout_one_type on each type.
* tm-att386.h (ASM_OUTPUT_ASCII): Output a space after ASM_BYTE_OP.
* tm-sun386.h: Likewise.
* tm-i386.h (ASM_OUTPUT_BYTE, ASM_OUTPUT_CHAR): Likewise.
Don't end with space.
* tm-sun386.h, tm-bsd386.h: Likewise.
* c-lex.h: Renamed from c-parse.h. All #includes changed.
* c-parse.c, c-parse.h: Renamed from*.
* Changed accordingly.
(C_OJBS, realclean, TAGS): These changed too.
Undef before defining.
* tm-i386v4.h: Include tm-svr4.h.
(CPP_PREDEFINES): Define SVR4, and several assertions.
(LIB_SPEC): Delete -Qy. LINK_SPEC handles this.
Fri Nov 29 22:16:06 1991 Richard Kenner (kenner at
* Cannot use "muls" and "muli" to do widening multiply
from HImode to SImode; delete the 12 patterns that try to do this.
Fri Nov 29 21:32:52 1991 Michael Tiemann (tiemann at
* cp-cvt.c (build_type_conversion): Don't assume that if
the given type combination is non-NULL.
Fri Nov 29 16:08:22 1991 Richard Stallman (rms at
* crtstuff.c: New file. Needs papers from rfg.
* (crtbegin.o, crtend.o): New targets.
* objc-actions.c (build_message_expr): Lots of cleanups.
(build_objc_method_call): New subroutine.
Handles new option NEXT_OBJC_RUNTIME.
* expr.c (do_jump): Any LABEL_REF is nonzero.
(expand_expr): Construct LABEL_REFs with Pmode.
Fri Nov 29 14:43:32 1991 Michael Meissner (meissner at
* mips-tfile.c (parse_def): Change an error into a warning.
* (fix_trunc??si_opt, mov??_internal): Change '*' constraint
to '!' to keep reload from allocating FP registers from holding
excess integer values.
(ashift right define_splits): Fix typo, so that the long long
arithmetic right shifts are recognized.
(all define_splits): dummy out constraints, since they are not used.
* mips.c (override_options): Allow int's in FP registers again, now
that ! constraints are used.
Fri Nov 29 13:20:13 1991 Richard Stallman (rms at
* dwarfout.c (output_compile_unit_die): Don't include the name
of the compiler which compiled the compiler in the AT_producer
string. It goofs up comparisons of stage2 & stage3 object files.
* c-parse.y, objc-parse.y: Don't declare position_after_white_space
as static; it is now in c-lex.c.
Fri Nov 29 05:15:26 1991 Michael Tiemann (tiemann at
* cp-decl.c (xref_tag): Check that TREE_CODE (ref) is aggr type
before storing into CLASSTYPE_DECLARED_CLASS (ref).
* cp-decl2.c (build_push_scope): Don't let non-aggr types appear in
`cname::fname' expressions.
* cp-class.c (resolves_to_fixed_type_p): VAR_DECL and FIELD_DECL
nodes of ARRAY_TYPE may resolved to fixed type. Also handle other
* cp-spew.c (frob_identifier): Handle case of a type conversion
operator that converts to a nested type.
* cp-expr.c (cplus_expand_expr): In NEW_EXPR case, if ARGS is
permanent, build a new arglist instead of modifying it in place.
* cp-typeck.c (convert_arguments): Add ??? to comment about virtual
function conversions. ??? I don't understand what that code is
supposed to do anymore.
(comp_target_parms): If STRICT <= 0, accept types whose
* cp-call.c (convert_harshness): Revamped to handle contravariance
* cp-class.h (struct candidate): Declaration moved from cp-tree.h.
* cp-class.c (duplicate_tag_error): New function.
* cp-parse.y (LC): Call it if we're redefining a tag.
* cp-decl.c (duplicate_decls): Only copy DECL_ARGUMENTS from OLDDECL
if non-NULL. Otherwise we get nonsense when we try to parse
inline function bodies of classes that have already been redefined.
* cp-lex.c (reinit_parse_for_method): If we get some text for a
class that's been redefined, flush the text.
* cp-tree.h (TYPE_REDEFINED): New field in `struct lang_type'.
* cp-cvt.c (convert_to_integer): Only warn about anachronistic
conversion from int to enum if PEDANTIC is nonzero.
* cp-typeck.c (convert_for_initialization): No longer give warning
messages about bitwise copy: this is currently how the default X(X&)
constructor is implemented.
* cp-init.c (expand_aggr_init_1): Ditto.
* cp-method.c (dump_init): Handle WITH_CLEANUP_EXPR and TARGET_EXPR.
* tree.c (simple_cst_equal): Handle WITH_CLEANUP_EXPR. Correct
handling of TARGET_EXPR case.
* cp-decl.c (grok_reference_init): If DECL is permanent, make it's
DECL_REFERENCE_SLOT permanent as well.
* cp-cvt.c (build_type_conversion): If PEDANTIC, give message about
conversions which cast away const.
* cp-decl.c (store_return_init): If PEDANTIC, give error about named
return values.
* cp-init.c (decl_constant_value): Don't return DECL_INITIAL if
CURRENT_FUNCTION_DECL is null or if the initializer is a
Thu Nov 28 05:29:52 1991 Michael Tiemann (tiemann at
* integrate.c (expand_inline_function): When passing objects by
invisible reference, correctly compute the amount of space to be
allocated in the pseudo-frame we create for the inline function.
* cp-typeck.c (mark_addressable): Add call to
`mark_inline_for_output' that got lost in Nov 25 change.
* cp-decl.c (push_overloaded_decl): If the value of a name is an
ADDR_EXPR, look inside to get the _DECL node.
* cp-decl.c (grokdeclarator): Don't convert type of operators new
and delete to METHOD_TYPE; they remain FUNCTION_TYPEs.
* function.c (expand_function_start): Set TREE_REGDECL bit on
RESULT_DECL if result starts life in a register.
* c-common.c (truthvalue_conversion): Don't treat a CONVERT_EXPR as
a NOP when it or the expression inside it is of REFERENCE_TYPE.
* cp-class.c (finish_struct): Test DESTRUCTOR_NAME_P on
Wed Nov 27 13:49:10 1991 Jim Wilson (wilson at
* cse.c (simplify_relational_operation): Correct handling of
COMPARE as first argument. Always strip it off. Don't invert
return value for EQ when !HAVE_cc0.
Thu Nov 28 20:08:15 1991 Richard Stallman (rms at
* gmon.c: New file.
Thu Nov 28 15:02:24 1991 Richard Kenner (kenner at
* combine.c (subst, case SET): Never make a paradoxical SUBREG of
a REG unless the SUBREG and REG occupy the same number of words.
* emit-rtl.c: Include flags.h.
(operand_subword): Always look inside floating if -fpretend-float.
* final.c (split_double): Likewise.
* (emit-rtl.o): Includes flags.h.
* c-lex.c (yylex): Add goto to `L' case.
Thu Nov 28 08:37:02 1991 Michael Tiemann (tiemann at
* tm-mips.h (ASM_OUTPUT_INT): Use `do {...} while (0)' so it can be
used in if/else constructs.
Thu Nov 28 00:23:26 1991 Richard Stallman (rms at
New function codes.
* c-decl.c (init_decl_processing): Declare the functions.
* expr.c (expand_builtin): Implement them.
* gcc.c: Pass to ld all the dirs in LIBRARY_PATH:
(library_prefix): New list of prefixes.
(process_command): Put dirs from LIBRARY_PATH on that list.
(do_spec_1): %D outputs those dirs.
(link_command_spec): Use %D after passing -L options.
* gcc.c (process_command): Don't require machine suffix
* cccp.c (main): C_INCLUDE_PATH, etc., add dirs rather than replacing.
* Use the TYPE_DECLs to drive dbx and sdb output of type tags.
* toplev.c (rest_of_type_compilation): New function.
(compile_file): Pass list of initial decls to dbxout_init, sdbout_init.
(various): Don't call get_*_types.
* dbxout.c (dbxout_init): Get initial types from that list.
* sdbout.c (sdbout_init): Likewise.
* sdbout.c, dbxout.c: Don't call get_*_types.
(*out_typedefs): New subroutines.
* c-decl.c (finish_struct, finish_enum): Call rest_of_type_compilation.
(pushtags): Record TYPE_STUB_DECL.
* tree.h (TYPE_STUB_DECL): New macro.
* stor-layout.c (chain_type, get_permanent_types, get_temporary_types):
(save_storage_status, restore_storage_status): Don't frob chains.
(layout_type): Don't call chain_type.
* dbxout.c (dbxout_type_fields): Output `/'-spec after type tag
only if really needed.
Wed Nov 27 18:52:55 1991 Michael Tiemann (tiemann at
* expr.c (expand_expr): Typo in expand_end_bindings, in BIND_EXPR case.
Wed Nov 27 23:10:48 1991 Richard Stallman (rms at
* cccp.c (main): Use savestring, not strdup.
Wed Nov 27 17:10:17 1991 Michael Meissner (meissner at
* mips.c (mips_load_reg3, mips_load_reg4): New global variables to
enable scheduling the second nop for the mfhi and mflo instructions.
(mips_hard_regno_mode_ok): New global array to give the results
of HARD_REGNO_MODE_OK for each register and mode.
(mips_fill_delay_slot): Instead of taking the number of nops as a
parameter, take an enumeration, giving what kind of delay this is.
If the next instruction is a label, put nops before label, not
after. Add support for mflo/mfhi, which need 2 nops if the next
instruction would modify the hi/lo registers.
(mips_move_1word, mips_move_2words): mips_fill_delay_slot calling
sequence changes. Pass mflo/mfhi to schedule nops.
(mips_move_2words): Move DImode to/from hi and lo registers is now
(function_arg): Correctly align long long parameters, just like
doubles. Also correct typo in debug code. Bug report from
(override_options): Initialize mips_hard_regno_mode_ok. Restrict
int's from going in the FP registers, to limit the register
allocator from allocating them instead of using memory. Also, make
the special registers (HI, LO, FPSW) only accept full sized ints, or
a double int for the HI:LO combination.
(compute_frame_size): Don't set the initialized member until reload
has completed, since otherwise the information may change.
* (various): Add 64 bit integer operations for addition,
subtraction, negation, and, inclusive or, exclusive or, one's
complement, shifts, and nor. Add 32x32->64 bit support for
multiply, which the compiler then uses to construct 64 bit
(mulsi3): Break mul into it's two instructions, and schedule the
two nops needed for the mflo instruction. Don't allow an integer
multiplier anymore.
(ffssi2): Delete define_expand, and use a second clobber'ed register
to preserve the original input, instead of (clobber (match_dup 1)).
(movsi_ulw): Change mips_fill_delay_slot calling sequence.
(movdi_internal): Allow DImode move from HI/LO to/from GP registers.
(movdi define_split): Add a define_split to separate the two parts
of DImode register pairs when using GP registers.
(movdf define_split): Add a define_split to separate the two parts
of DFmode register pairs when using GP registers.
(mov??_internal): Change condition to call memory_operand, instead
of just checking for MEM, which disallows (subreg (MEM)) during
the intermediate parts of the compilation. Reported by
(negsi2): Turn back into a real insn instead of just a
define_expand for subsi3.
(one_cmplsi2): Turn back into a real insn instead of just a
define_expand for norsi3.
(andsi3, iorsi3, xorsi3): Be more liberal than the real machine, and
allow 32 bit constants to improve the code generated for bitfields,
at the expense of potentially not moving the constant out of loops.
(various): Add = constraint to all clobbers.
(fix_trunc*): Go back to old method of using two clobbers, since
unoptimized compiles call abort otherwise, when returning the result
of truncating a float as a function result.
* tm-mips.h (delay_type): New enum to express different types of
delay slots.
(mips_load_reg3, mips_load_reg4): Declarations for more registers
to check for needing nops. Used by multiply/divide to schedule
the two nops needed after mfhi/mflo if the next instruction would
clobber the register.
(CONDITIONAL_REGISTER_USAGE): If -msoft-float, disable all FP
(MASK_DEBUG_G): Add comment saying -mdebugg turns of new DImode
patterns, in case the code is wrong.
(HARD_REGNO_NREGS): All FP registers use register pairs, so that
SF in a GP register takes only one register, and SI in a FP
register takes 2.
(HARD_REGNO_MODE_OK): Change macro to reference the array
mips_hard_regno_mode_ok, which is now built in override_options.
(CONST_OK_FOR_LETTER_P): 'N' is now for negative numbers, 'O' is
an exact power of 2, and 'P' is now for positive numbers.
(PREFERRED_RELOAD_CLASS): If -msoft-float, never prefer a FP
(PREFERRED_RELOAD_CLASS_FM): Delete, since nobody uses it.
(FINAL_PRESCAN_INSN): Check for mips_load_reg3 and mips_load_reg4
being mentioned. Also add a missing tab when more than one delay
(CONST_COSTS): Make all constant ints cost 0 to lower register
pressure according to Richard Kenner.
(RTX_COSTS): Adjust costs for DI, SF, and DF modes, and add ABS/FFS
costs as well.
(REGISTER_MOVE_COSTS): Bump costs for moving between register
classes, so that reload doesn't try to store int type values in the
floating point registers.
Wed Nov 27 15:01:52 1991 Richard Stallman (rms at
* Renaming of out-vax.c.
* Link dbxout with all languages. Add cp-spew.
* cccp.c (include_defaults_array): Fix typo.
* gstddef.h: Handle _STDDEF_H_.
* configure.bat, Makefile.dos: New files.
* c-lex.c: New file. All subroutines moved here.
(yylex): Small diffs between C and OBJC merged.
* c-parse.y, objc-parse.y: Deleted from here.
* c-lang.c (lookup_interface): New stub.
* (c-lex.o): New rule.
(OBJC_OBJS, C_OBJS): Changed for new files.
Wed Nov 27 13:34:15 1991 Jim Wilson (wilson at
* c-parse.y (yylex): Don't assume that long is 32 bits and long
long is 64 bits when warning for out of range integer constants,
and when creating a tree to represent integer constants.
* cp-lex.c (real_yylex): Likewise.
* objc-parse.y (yylex): Likewise.
* combine.c (simplify_comparison, ASHIFT case): Prevent shift by
HOST_BITS_PER_INT for inequality comparisons.
* fold-const.c (operand_equal_p): Arguments are not equal if
signedness differs. Conversions don't match if signedness differs.
* (movsi, movhi, movqi, movdi): Prohibit matches that
would require reloading by the use of conditions.
* alloca.c (alloca): Add parens to make precedence clearer.
* tm-news.h (PRINT_OPERAND): Add 68040 support so that the compiler
will bootstrap.
Wed Nov 27 09:41:13 1991 Richard Kenner (kenner at
* expr.c (expand_expr, case MIN_EXPR): Fix typo in operand number
in safe_from_p call.
* recog.c (indirect_operand): Correctly handle case where we have
a (subreg (mem X) C) after reload.
Tue Nov 26 16:24:03 1991 Ron Guilmette (rfg at
* dwarfout.c (output_enumeration_type_die): Handle a GNU C
language extension: incomplete enum types.
* dwarfout.c (output_type): Fixed bug which causes DIEs for
file-scope tagged types to be generated in a local-scope
under some conditions.
* dwarfout.c (dwarfout_init, dwarfout_finish): Moved code which
generates most of the .debug_aranges entries from dwarfout_init
into dwarfout_finish to avoid m68k assembler bug.
* (EXTRA_PARTS): New parameter.
(install-common): Compile the things in EXTRA_PARTS.
(GCC_PASSES, GCC_PARTS): New variables.
(STAGESTUFF, native, enquire, enquire.o): Use them.
(protoize, protoize.o, unprotoize, unprotoize.o, SYSCALLS.c.X):
(gnulib2.ready, collect2, collect2.o, getopt.o, getopt1.o): Likewise.
* tm-svr4.h (CPP_PREDEFINES): Don't define this here. Undef it
so that other files which include this one will be forced to
define it appropriately for the specific target and OS.
(CPP_SPEC): Deleted.
(LIB_SPEC): Add crtend.o as last thing linked in on each link-step.
(STARTFILE_SPEC): Add crtbegin.o as the first thing linked in.
(NO_DOLLAR_IN_LABEL): Added define. Most svr4's don't support $.
* tm-svr4.h: Added support for the .ctors and .dtors sections
(as for the m88k).
try to use a dot when computing a function's size in a .size
directive (because Tom Wood says that 88open doesn't approve
of dot as an asm operand).
* x-genix, x-i386sco, x-xenix (INSTALL): Define as cp.
Tue Nov 26 16:24:03 1991 Richard Stallman (rms at
* gcc.c (default_compilers): Pass -A* to cpp.
* Make names unique if unpacked on MSDOG.
* config/*.c: `out-' removed from all file names out-*.c.
* x-hp*: Renamed from x-hp9k*.
* tm-conv1.h, tm-conv2.h: Renamed from tm-convex*.h.
* tm-hp*.h: `9k' removed from these names.
* tm-isi*.h: `68' removed from these names.
* tm-i860b.h, tm-i860bg.h: `sd' removed.
* tm-i860g3.h: Renamed from tm-i860v3g.h.
* tm-i386sun.h: Renamed from tm-sun386i.h.
* tm-sun3o3.h, tm-sun4o3.h: Were tm-sun*os3.h.
* tm-sun3n3.h: Was tm-sun3os3nf.h.
* tm-sun3n.h: Was tm-sun3-nfp.h.
* tm-sun2o4.h: Was tm-sun2os4.h.
* xm-hp320.h: Was xm-hp9k320.h.
* xm-i386sun.h: Was xm-sun386i.h.
* configure: Adjust for those renamings.
* configure (m68000-hp-hpux*): Use xm-hp320.h.
* stmt.c (expand_value_return): New subroutine.
(expand_return): Use that.
* New name for
* stor-layout.c (layout_record): Return list of static members.
(layout_type): Lay them out here.
* expmed.c (init_expmed): Use 3 as shift count for shift_cost.
* x-sco: File deleted.
* print-tree.c (print_node): Always be brief for vector elts.
Tue Nov 26 07:42:41 1991 Michael Tiemann (tiemann at
* cp-decl.c (grokdeclarator): Fix typo involving ~RID_STATIC.
Mon Nov 25 21:51:09 1991 Richard Kenner (kenner at
* optabs.c (emit_cmp_insn): If both operands are VOIDmode,
put first operand into register, not second.
Don't allow a constant as the first operand to tstxx insns.
*, Likewise.
* Remove erroneous comment on tstsi.
Mon Nov 25 20:51:00 1991 DJ Delorie (
* cccp.c (main): Look in env vars to override header dir list.
* gcc.c (process_command): Likewise.
* gcc.c (execute): Alternate way to get status on MSDOS.
Error for -pipe on MSDOS.
(pexecute): Alternate definition for MSDOS.
(find_a_file): Handle new hook EXECUTABLE_SUFFIX.
(EXECUTABLE_SUFFIX): Add default definition, and alternate for MSDOS.
(P_tmpdir): Add default definition for MSDOS.
Mon Nov 25 17:18:52 1991 Michael Collison (collison at
* x-encrose: New file for mmax running OSF/1.
* t-encrose: ditto.
* (movsi): Use new constraint letters 'x' and 'y'
representing the frame and stack pointer.
(movhi,movqi): Add constraints and template code to allow moves
between the floating point and general purpose registers.
* tm-ns32k.h (REGISTER_MOVE_COST): Use this macro to discourage
moves between the floating point registers and the frame and stack
pointer. Also discourage moves between the fp and general registers.
REG_CLASS_FROM_LETTER): Add two new register classes representing
the frame pointer and stack pointer respectively.
(GO_IF_NONINDEXED_ADDRESS): Add check to see if register is also a
base register. This causes reload to reject pseudo registers when
REG_OK_STRICT is defined.
* tm-i386rose.h: New file for 386 running on OSF/1.
* x-i386rose: ditto
* t-i386rose: ditto
* config.subr: Added case for 'osf-'.
* configure: Added case for i386-osfrose
* tm-encrose.h (CC1_SPEC): Simplified so by default it passes nothing.
(ASM_SPEC): Changed so that under OSF/1 with NO_J_SWITCH defined
nothing is passed to the assembler.
(TARGET_DEFAULT): Changed so that, by default, no code is generated
using the static base (sb) register.
(OVERRIDE_OPTIONS): Removed in lieu of the new debug macros
Mon Nov 25 17:18:52 1991 Jyrki Kuoppala (jkp at
* (ashlhi3): use addw also on 32532 if shiftcount is 1.
(ashlqi3): likewise.
(addsi3): don't use addr instead of addd on the 32532.
* out-ns32k.c (calc_address_cost): don't assume unknown RTX codes
have XEXP's which are rtx's.
* (movsi): don't use addr for the 32532 immed displacements.
(shift patterns): fixed a typo with %$%n.
* out-ns32.c (calc_address_cost) new function.
tm-ns32k.h (ADDRESS_COST): call calc_address_cost.
* out-ns32k.c (print_operand_address): use error & debug_rtx if error.
* tm-ns32k.h (CONST_OK_FOR_LETTER_P): constraint 'I' shouldn't
match anything on the 32532 to make negative arithmetic left
shifts behave consistently.
* (subsf+1): don't use ajdspb on the 32532.
* tm-ns32k.h (CONST_OK_FOR_LETTER_P): positive values not OK for
constraint 'I' if on 32532.
* (ashl??): if TARGET_32532, use lsh{d,w,b}.
* (adjusting stack pointer): don't use ajdp{b,w} if not 32532.
* (isv,insv-1,insv-2,extzv): use constraint K instead of
n for offset.
* (insv-1): use only register_operand with constraint
"r" for operand 2, insd can't take constant offsets >= 8.
(pattern insv-2): added another insv-like pattern, for
offsettable operand.
(insv): constraint should be "+g".
(pattern before insv): installed an insv-like pattern
with operand 0 having register_operand and SImode.
* out-ns32k.c (print_operand): define as a void function.
* (call_value): use operands[1], not operands[0] to check
* out-ns32k.c (print_operand): eliminate
* tm-ns32k.h (GO_IF_LEGITIMATE_ADDRESS): checking for CONST_INT
is not right because displacements are not 32-bit. Use
* tm-ns32k.h (output_move_double, output_shift_insn): New declarations.
* out-ns32k.c (print_operand_address): Use fatal for errors.
* (insv, extzv): Replaced with the pattern near insv in 1.40.
* out-ns32k.c (print_operand): function moved from tm-ns32k.h.
* out-ns32k.c (print_operand_address): replaced the function with
a more clean version, written for gas syntax.
* (call): #if 0 code which was used when GAS_SYNTAX was not
(call_value): likewise.
* (pattern after ashrsi3): added % before $ so the
pattern works also for gas syntax.
(pattern after ashrhi3): likewise.
(pattern after ashrqi3): likewise.
(pattern after lshrsi3): likewise.
(pattern after lshrhi3): likewise.
(pattern after lshrqi3): likewise.
(pattern after rotrsi3): likewise.
(pattern after rotrhi3): likewise.
(pattern after rotrqi3): likewise.
* (movsf): put #ifndef GAS_SYNTAX part inside #if 0 since
for now we only use GAS syntax.
* tm-ns32k.h (INDIRECTABLE_2_ADDRESS_P): add TARGET_SB as a
condition in addition to CONSTANT_ADDRESS_P.
* tm-ns32k.h (MEM_REG): use CONSTANT_ADDRESS_P instead of GET_CODE
== SYMBOL_REG, add TARGET_SB to the second-part condition.
* (rotrsi3): fixed a typo NEGATE->NEG
* tm-ns32k.h: added a comment about CONSTANT_ADDRESS_P; it's not
strictly according to the spec.
* tm-ns32k.h: added defaults for ABSOLUTE_PREFIX,IMMEDIATE_PREFIX
etc, using gas syntax.
* out-ns32k.c: removed macro FP_REG_P.
* tm-ns32k.h: (ASM_OUTPUT_ALIGN_CODE): changed alignment from 4 to
2 since GAS syntax is the default assembler syntax now.
print_operand and print_operand_address in out-ns32k.c,
* tm-ns32k.h: New macros TARGET_SB, TARGET_PIC.
Dummy code for trampolines, calls fatal().
Macro FP_REG_P moved here from out-ns32k.c.
Some reorganizations of blocks.
68000 -> ns32k.
* tm-ns32k.h (TARGET_VERSION) says GAS syntax.
(TARGET_*) added some empty lines for clarity.
Mon Nov 25 14:29:39 1991 Richard Stallman (rms at
* (aux-output.o): Depend on insn-codes.h.
* Handle print-rtl.c.