mirror of
https://github.com/pmret/gcc-papermario.git
synced 2024-11-08 20:02:47 +01:00
7230 lines
286 KiB
Groff
7230 lines
286 KiB
Groff
|
Thu Jan 31 00:33:33 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* loop.c (scan_loop): Check each libcall for regs it uses
|
|||
|
but does not mention in the equivalent value.
|
|||
|
To move the libcall, we must have at most one such reg
|
|||
|
and it must be moved as well.
|
|||
|
(libcall_other_reg): New subroutine.
|
|||
|
* rtlanal.c (record_excess_regs): New function.
|
|||
|
|
|||
|
* tree.c (gcc_obstack_init): New function.
|
|||
|
(init_obstacks, save_tree_context): Use that.
|
|||
|
(OBSTACK_CHUNK_SIZE): New parameter.
|
|||
|
* xm-next.h: New file.
|
|||
|
* configure (m68k/next): Use that file.
|
|||
|
|
|||
|
* flags.h (flag_no_common): Declare new flag to treat external defs
|
|||
|
as ANSI specifies (i.e. not as common).
|
|||
|
* toplev.c (flag_no_common, f_options): Support -fno-common.
|
|||
|
* varasm.c (assemble_variable): Don't output a common if
|
|||
|
flag_no_common is set. Treat as if initialized to 0.
|
|||
|
|
|||
|
* gcc.c (default_compilers): Define __ASSEMBLER__ for .S file.
|
|||
|
|
|||
|
* tm-aix386.h (ASM_OUTPUT_LOCAL): Ok to use bss, since no shared libs.
|
|||
|
(LINK_SPEC): Pass through all -K and -T options.
|
|||
|
* xm-aix386.h (TRUE, FALSE): Undef if already def, to avoid warning.
|
|||
|
|
|||
|
* tm-m68k.h (TARGET_68040, TARGET_68040_ONLY): New machine flags.
|
|||
|
(TARGET_SWITCHES): Alternatives to set them.
|
|||
|
* tm-next.h (TARGET_DEFAULT): Changed to 0407 for 68040.
|
|||
|
|
|||
|
* out-m68k.h (standard_68881_constant_p): Always return 0
|
|||
|
for TARGET_68040 since fmovecr is no longer implemented in hardware.
|
|||
|
|
|||
|
* m68k.md (ftruncdf2, ftruncsf2): Don't emit fintrz for
|
|||
|
TARGET_68040, since it is no longer implemented in hardware.
|
|||
|
(muldf3): Don't use fscale on 68040, since not implemented in hardware.
|
|||
|
|
|||
|
* toplev.c (optimize): Now stores specified optimization level.
|
|||
|
(main): Keep the largest optimization level specified.
|
|||
|
Handle any integer.
|
|||
|
|
|||
|
* c-decl.c (pushdecl): Don't make an extern global for -traditional
|
|||
|
if it uses any local types.
|
|||
|
|
|||
|
* tm-sun386i.h (PCC_BITFFIELD_TYPE_MATTERS): Use 1 as value.
|
|||
|
|
|||
|
Wed Jan 30 12:41:15 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* fixincludes (sys/systypes.h): Edit this to handle _SIZE_T, etc.
|
|||
|
|
|||
|
* function.c (put_var_into_stack): Allocate var ref chain link
|
|||
|
while in the proper function's obstack.
|
|||
|
|
|||
|
* fold-const.c (const_binop): Don't crash for real/0 if have infinity.
|
|||
|
|
|||
|
* flow.c (mark_set_1): Don't make log link for hard reg in asm insn.
|
|||
|
|
|||
|
Wed Jan 30 07:45:33 1991 Tom Wood (wood at dg-rtp.dg.com)
|
|||
|
|
|||
|
* sched.c (schedule_block): Indicate what insns constitute each
|
|||
|
basic block.
|
|||
|
|
|||
|
Tue Jan 29 12:35:42 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* Makefile.in (gnulib1.*, gnulib2.*): Declare them phony targets.
|
|||
|
|
|||
|
* print-tree.c (print_node): Print message if TREE_PERMANENT is wrong.
|
|||
|
* tree.c (object_permanent_p): New function.
|
|||
|
|
|||
|
* print-tree.c (print_node): Remove DECL_LANG_FLAG_10.
|
|||
|
|
|||
|
Tue Jan 29 10:07:48 1991 Tom Wood (wood at dg-rtp.dg.com)
|
|||
|
|
|||
|
* m88k.md (minus/xor/and, neg/ne/compare/and): Delete these. This
|
|||
|
should be done by combine.
|
|||
|
(compare operator): Eliminate except when a SET_SRC.
|
|||
|
* tm-m88k.h (OPTIMIZATION_OPTIONS): -fomit-frame-pointer is a
|
|||
|
default optimization.
|
|||
|
|
|||
|
Mon Jan 28 12:52:11 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* tree.h (DECL_VIRTUAL_P): Renamed from TREE_VIRTUAL.
|
|||
|
(struct tree_common): Eliminate virtual_flag.
|
|||
|
(struct tree_decl): Add virtual_flag.
|
|||
|
|
|||
|
* Makefile.in (enquire.o): Pass -DNO_STDDEF.
|
|||
|
|
|||
|
* m68k.md (tablejump): Now have a define_expand that does
|
|||
|
different things depending on CASE_VECTOR_PC_RELATIVE,
|
|||
|
and a separate define_insn for each case.
|
|||
|
|
|||
|
* function.h (outer_function_chain): Declare the variable.
|
|||
|
|
|||
|
* tree.c (debug_obstack): Fix typos.
|
|||
|
* tree.h (struct tree_common): Fix typo.
|
|||
|
|
|||
|
* Makefile.in (GNULIB1_TARGET, GNULIB2_TARGET): Variables deleted.
|
|||
|
(gnulib): Depend on gnulib1.target and gnulib2.target explicitly.
|
|||
|
|
|||
|
* dbxout.c (dbxout_type): Use DECL_VIRTUAL_P, not TREE_VIRTUAL.
|
|||
|
|
|||
|
* cplus-tree.h (TREE_PRIVATE, TREE_PROTECTED): #if 0.
|
|||
|
|
|||
|
* cexp.y (keywords): Cast names for parens to U_CHAR *.
|
|||
|
|
|||
|
* gcc.c (process_command): Fix typo setting switches[n_switches].arg.
|
|||
|
|
|||
|
* loop.c (loop_reg_used_before_p): Check insns before INSN, not after.
|
|||
|
|
|||
|
* objc-actions.c (objc_finish): Renamed from lang_finish.
|
|||
|
* objc-parse.y (program): Call objc_finish at the end.
|
|||
|
|
|||
|
* Changes from Matthew Self (mself@next.com):
|
|||
|
|
|||
|
* objc-parse.y: Since objc-parse.y was so out of date with
|
|||
|
respect to c-parse.y, I started over with c-parse.y and
|
|||
|
reintegrated the Objective-C modifications. Now that
|
|||
|
Objective-C is working I hope that objc-parse.y will be kept
|
|||
|
more up to date.... I did not re-integrate the lexer since I
|
|||
|
don't have gperf working. I simply cut and pasted what
|
|||
|
Stallman had in objc-parse.y. Someone with access to gperf
|
|||
|
should re-generate this stuff.
|
|||
|
|
|||
|
* objc-actions.c (comp_method_with_proto,
|
|||
|
comp_proto_with_proto): Stallman's change to use the
|
|||
|
functions end_temporary_allocation and
|
|||
|
resume_temporary_allocation is incorrect, since it always
|
|||
|
leaves allocation temporary, whether it was before or not.
|
|||
|
|
|||
|
Perhaps the push and pop functions would do the trick....
|
|||
|
|
|||
|
* objc-actions.c (get_arg_type_list): Use new function
|
|||
|
groktypename_in_parm_context.
|
|||
|
|
|||
|
* objc-actions.c (_OBJC_SELECTOR_REFERENCES_decl,
|
|||
|
_OBJC_SELECTOR_REFERENCES_id): Removed.
|
|||
|
|
|||
|
* objc-actions.c (synth_module_prologue): Eliminated code to
|
|||
|
forward declare the selector references array.
|
|||
|
|
|||
|
* objc-actions.c (init_objc_symtab): Eliminated code to
|
|||
|
initialize "refs" field in objc_symtab structure (which is
|
|||
|
now vestigial).
|
|||
|
|
|||
|
* objc-actions.c (build_selector_translation_table): Rewrote.
|
|||
|
|
|||
|
* objc-actions.c (build_selector_reference): New routine.
|
|||
|
|
|||
|
* objc-actions.c (build_message_expr, build_selector_expr):
|
|||
|
Use new routine.
|
|||
|
|
|||
|
* config/tm-next.h (GO_IF_INDEXABLE_BASE): Don't use pc
|
|||
|
relative addressing for LABEL_REF's. Since branch tables are
|
|||
|
in the const section, we treat LABEL_REF's like SYMBOL_REF's
|
|||
|
here. Otherwise invalid addresses were being generated.
|
|||
|
|
|||
|
* config/tm-next.h (CASE_VECTOR_PC_RELATIVE, CASE_VECTOR_MODE):
|
|||
|
Use absolute branch tables rather than relative ones.
|
|||
|
|
|||
|
* config/tm-next.h (ASM_OUTPUT_MAIN_SOURCE_FILE_END): Output
|
|||
|
an N_SO symbol with no name to mark the end of the module.
|
|||
|
This is needed to support scattered loading on the NeXT.
|
|||
|
|
|||
|
* config/out-next.c (handle_pragma): Call to xrealloc had wrong args.
|
|||
|
|
|||
|
* configure: Entry for NeXT must set out_file to out-next.c.
|
|||
|
|
|||
|
* config/out-next.c: Typo: "flags" -> "flags.h"
|
|||
|
|
|||
|
* config/tm-next.h (LIB_SPEC): Brought up-to-date. There
|
|||
|
are probably more changes needed here.
|
|||
|
|
|||
|
* c-decl.c (pushdecl_top_level): New function. This was
|
|||
|
copied from an older version of g++.
|
|||
|
|
|||
|
* c-decl.c (init_decl_processing): Make alloca first arg sizetype.
|
|||
|
|
|||
|
* c-decl.c (groktypename_in_parm_context): New function.
|
|||
|
|
|||
|
Mon Jan 28 07:07:01 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* loop.c (loop_reg_used_before_p): Don't use INSN_LUID since INSN
|
|||
|
might have been made by loop.c for an outer loop.
|
|||
|
|
|||
|
* loop.c (move_movables, strength_reduce): Replace register references
|
|||
|
in REG_NOTES as well as PATTERN.
|
|||
|
|
|||
|
* loop.c (strength_reduce): Call maybe_eliminate_biv twice, not
|
|||
|
three times.
|
|||
|
(maybe_eliminate_biv): Don't abort if elimination fails even though
|
|||
|
we thought it wouldn't. This can happen if certain insn patterns
|
|||
|
aren't valid.
|
|||
|
(maybe_eliminate_biv_1): Ensure that we do not change the insn at
|
|||
|
all if all the required changes can't be done.
|
|||
|
|
|||
|
Sun Jan 27 21:26:29 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* Makefile.in: Rename config-dir back to config.
|
|||
|
|
|||
|
Sat Jan 26 17:48:22 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* objc-parse.y (program): Call objc_finish.
|
|||
|
* objc-actions.c (objc_finish): Renamed from lang_finish.
|
|||
|
|
|||
|
* objc-actions.c, objc-parse.y: New version from NeXT.
|
|||
|
|
|||
|
Sat Jan 26 17:37:48 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* expr.c (expand_expr, case COND_EXPR): Disable special-case of
|
|||
|
A ? B : C when B and C are simple. This is now done better by jump.
|
|||
|
|
|||
|
Sat Jan 26 13:16:58 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* tree.h (TREE_PRIVATE, TREE_PROTECTED, TREE_VIRTUAL): New macros.
|
|||
|
(struct tree_common): New flag fields.
|
|||
|
* dbxout.c (dbxout_type): Get rid of conditional; can always use these.
|
|||
|
|
|||
|
* cccp.c (lookup_import): Do return -2 if file found.
|
|||
|
(main): Handle `.m' suffix like `.S'.
|
|||
|
|
|||
|
* configure (m68k/next): Use out-next.c.
|
|||
|
|
|||
|
* WORD_SWITCH_TAKES_ARG and SWITCH_TAKES_ARG now give # of args.
|
|||
|
* gcc.c (struct switchstr): New field `args' replaces `part2'.
|
|||
|
(process_command): Record all the args a switch has.
|
|||
|
(give_switch): Pass all the strings in `args'.
|
|||
|
|
|||
|
* tree.h (struct tree_common): Normally make `code' an enum tree_code.
|
|||
|
|
|||
|
* m68k.md (tablejump): New pattern.
|
|||
|
(casesi, etc.): Deleted.
|
|||
|
|
|||
|
* tree.c (debug_obstack): New function.
|
|||
|
|
|||
|
* toplev.c (compile_file): Call dbxout_finish near the end.
|
|||
|
* dbxout.c (dbxout_finish): New function.
|
|||
|
|
|||
|
* print-tree.c (print_node): Always print ERROR_MARK node briefly.
|
|||
|
|
|||
|
* objc-actions.h (METHOD_ENCODING, CLASS_CATEGORY_LIST): New macros.
|
|||
|
|
|||
|
* gcc.c (execute): Make fatal signal message clearer.
|
|||
|
(default_compilers): For .m file, define __OBJC__,
|
|||
|
and pass -lang-objc and -gen-decls to cc1.
|
|||
|
|
|||
|
* dwarfout.c: Include output.h.
|
|||
|
(current_function_decl, asm_out_file): Explicit extern decls deleted.
|
|||
|
(abort, fatal): Explicit extern decls deleted.
|
|||
|
(NO_RETURN): Definition deleted.
|
|||
|
(named_labels): Don't declare it.
|
|||
|
(output_symbol): Don't use it.
|
|||
|
(MAXPATHLEN): Don't define this. Don't include sys/param.h.
|
|||
|
(output_source_file_die): Avoid limit on file name size.
|
|||
|
(output_symbols_for_stmt): Deleted.
|
|||
|
(output_symbols_for_block): Adapt to using BLOCK, not LET_STMT.
|
|||
|
|
|||
|
* configure: Renamed from `config'.
|
|||
|
* config: Directory renamed back from config-dir.
|
|||
|
|
|||
|
Sat Jan 26 1990 Ron Guilmette (rfg at ncd.com)
|
|||
|
|
|||
|
* README.DWARF: updated to reflect changes to dwarfout.c, the
|
|||
|
inclusion of dwarf.h (and its changes) and the fact that the
|
|||
|
DWARF support is no longer directly tied to the DG versions of
|
|||
|
GCC.
|
|||
|
|
|||
|
* dwarfout.c: included a patch (provided by Ray Essick) to allow
|
|||
|
dwarfout.c to properly get a value for MAXPATHLEN even on (old)
|
|||
|
System V.3 systems.
|
|||
|
|
|||
|
* dwarfout.c: added support for long long types (as suggested by
|
|||
|
Ray Essick).
|
|||
|
|
|||
|
* dwarfout.c: added support for the AT_comp_dir attribute. Also,
|
|||
|
as part of this change, the name of the compilation directory is
|
|||
|
no longer placed into in the .sources section.
|
|||
|
|
|||
|
* dwarfout.c: added support for the AT_addr_ranges attribute.
|
|||
|
|
|||
|
* dwarfout.c: added support for the AT_prototyped attribute.
|
|||
|
|
|||
|
* dwarfout.c: added support for the AT_src_info attribute. Also,
|
|||
|
as part of this change, there is no longer a "special" entry
|
|||
|
at the start of the .srcinfo section for each compilation unit,
|
|||
|
and the contents of the "special" final entry in the .srcinfo
|
|||
|
section have changed (to { -1, -1 }).
|
|||
|
|
|||
|
* dwarfout.c: modified to allow additional GNU DWARF extensions
|
|||
|
to be generated whenever the corresponding extended attribute
|
|||
|
codes are defined (presumably within a modified dwarf.h file).
|
|||
|
|
|||
|
* dwarfout.c: use the section names .srcinfo and .sources rather
|
|||
|
than .finfo and .files. The additional specificity is warranted
|
|||
|
because the DWARF information may someday include information
|
|||
|
about object files as well as source files.
|
|||
|
|
|||
|
* dwarfout.c: fixed a bug where a type attribute was being generated
|
|||
|
for functions and function types even when the return type was
|
|||
|
void. "Standard" dwarf says that if the return type for a function
|
|||
|
or function type is void then no type attribute should be generated
|
|||
|
for the corresponding DIE.
|
|||
|
|
|||
|
Sat Jan 26 04:22:08 1991 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* cplus-lex.c (interface_strcmp): Handle String.String.Map.cc and
|
|||
|
friends.
|
|||
|
|
|||
|
* cplus-typeck.c (build_unary_op): Merge change to generate better
|
|||
|
code from simple cast expression.
|
|||
|
|
|||
|
Fri Jan 25 10:06:28 1991 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* cplus-decl.c (pushtag): Don't call `pushdecl' if the type's name
|
|||
|
is anonymous, lest we recurse ad infinitum.
|
|||
|
|
|||
|
Thu Jan 24 23:56:55 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* optabs.c (expand_binop, expand_unop): Word at a time only for ints.
|
|||
|
|
|||
|
Thu Jan 24 09:40:37 1991 Tom Wood (wood at dg-rtp.dg.com)
|
|||
|
|
|||
|
* sdbout.c (sdbout_symbol): Apply changes in dbxout.c to deal with
|
|||
|
SUBREG. Don't emit a symbolic definition for variables that can't
|
|||
|
be represented.
|
|||
|
|
|||
|
Thu Jan 24 21:18:15 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* config: Conditional for setting $os was backward.
|
|||
|
Also mention name of make-var file if one exists.
|
|||
|
|
|||
|
* out-i386.c: Delete a large piece of accidental insertion.
|
|||
|
|
|||
|
* dwarfout.c: Don't include c-tree.h or cplus-tree.h.
|
|||
|
(INT_TYPE_SIZE, etc.): Define them if not overridden.
|
|||
|
(fundamental_type_code): Distinguish types by TYPE_PRECISION.
|
|||
|
But also check for the built-in C type names.
|
|||
|
|
|||
|
Thu Jan 24 15:23:17 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* gcc.c (default_compilers): Pass all args starting with "O" to
|
|||
|
cc1 so that -O2 is passed along.
|
|||
|
|
|||
|
Thu Jan 24 13:10:27 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* stmt.c (expand_expr_stmt): Don't warn for any casts to void.
|
|||
|
|
|||
|
* config: Fix typos setting shell vars.
|
|||
|
Rename config to config-dir.
|
|||
|
Insert missing \ in case for delta.
|
|||
|
|
|||
|
Wed Jan 23 16:31:27 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* emit-rtl.c (emit_jump_insn_{before,after}): Allow PATTERN to be
|
|||
|
a SEQUENCE.
|
|||
|
|
|||
|
* loop.c (check_dbra_loop): Use emit_jump_insn_before when writing
|
|||
|
out compare and jump sequence, not emit_insn_before, to ensure that
|
|||
|
if we only write one insn that it is a JUMP_INSN.
|
|||
|
|
|||
|
* toplev.c (flag_rerun_cse_after_loop): New: -frerun-cse-after-loop.
|
|||
|
(rest_of_compilation): Rerun cse after loop if desired.
|
|||
|
(main): Add support for -O2.
|
|||
|
Prescan args for -O and -O2 to set default values for many -f options.
|
|||
|
Add call to new macro OPTIMIZATION_OPTIONS.
|
|||
|
Save status of -version until all args have been processed; then
|
|||
|
write out the info.
|
|||
|
(print_single_switch): New function.
|
|||
|
(print_switch_values): Renamed from print_target_switch_defaults.
|
|||
|
Now prints out currently enabled -f, -m, and -W switches. Calls
|
|||
|
print_single_switch to write out switch and handle long lines.
|
|||
|
|
|||
|
* rtl.def (SUBREG): Change rtx class from 'o' to 'x'.
|
|||
|
|
|||
|
* cse.c (find_comparison_args): Ignore hash table entry if not valid.
|
|||
|
|
|||
|
Wed Jan 23 00:12:24 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* config: File renamed from config.gcc.
|
|||
|
Allow abbreviations for +-options.
|
|||
|
Allow config HOST TARGET.
|
|||
|
Support +gas and +nfp as separate options.
|
|||
|
Rename all the machine alternatives to general scheme:
|
|||
|
cpu/company-system. Allow abbreviations for cpu/company pairs.
|
|||
|
* config-dir: Dir renamed from config.
|
|||
|
|
|||
|
* Makefile.in (install-dir): Create bindir here.
|
|||
|
|
|||
|
* cccp.c (main): Delete duplicat p++ left in last change.
|
|||
|
|
|||
|
* Makefile.in (GNULIB1, GNULIB1_TARGET): Renamed from GNULIB*.
|
|||
|
(gnulib1.portable, gnulib1.target): Renamed from gnulib.*.
|
|||
|
They now make a file named gnulib1, from gnulib1.c.
|
|||
|
(LIB1FUNCS, LIB1FUNCS_EXTRA): Renamed from LIBFUNCS*.
|
|||
|
(for-bootstrap, rest.encap): Depend on gnulib, not GNULIB2_TARGET.
|
|||
|
(stamp-gnulib2): This file is no longer used.
|
|||
|
(gnulib2.portable): Old stamp-gnulib2 rule renamed to this.
|
|||
|
Now create a file named gnulib2, from gnulib2.c alone.
|
|||
|
(gnulib): New target, combines gnulib1 and gnulib2 into gnulib.
|
|||
|
(mostlyclean): Delete additional temporary files.
|
|||
|
No need to avoid deleting stamp-gnulib2.
|
|||
|
(clean): Delete gnulib1 and gnulib2, but not stamp-gnulib2.
|
|||
|
(realclean): No need to delete gnulib here.
|
|||
|
(install-gnulib): Changed dependencies.
|
|||
|
* gnulib1.c: File gnulib.c renamed.
|
|||
|
|
|||
|
* Makefile.in (install-dir): Create bindir here.
|
|||
|
|
|||
|
* cccp.c (main): Delete duplicat p++ left in last change.
|
|||
|
|
|||
|
Sun Jan 20 14:00:16 1991 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* cplus-class.c (finish_struct): Conditionalize EMPTY_FIELD_BOUNDARY
|
|||
|
on whether or not it is defined. Similarly for PCC_BIT_FIELD_MATTERS.
|
|||
|
|
|||
|
Wed Jan 16 18:56:30 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* cse.c (fold_rtx): When folding dispatch table, stay inside bounds.
|
|||
|
|
|||
|
Wed Jan 16 08:11:48 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* reload.c (find_reloads_toplev): Fix typo in recent change.
|
|||
|
|
|||
|
* reload1.c (eliminate_regs): If we have a non-paradoxical
|
|||
|
(subreg (pseudo)) and the pseudo has an equivalent memory
|
|||
|
location, replace the SUBREG because find_reloads may do it.
|
|||
|
|
|||
|
Tue Jan 15 01:41:28 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* loop.c (scan_loop): Condition for movability was wrong.
|
|||
|
A reg that isn't necessarily set may be unsafe
|
|||
|
even if used only inside the loop.
|
|||
|
However, a reg used only in the same basic block after the set is safe.
|
|||
|
So is a reg that isn't a user-level variable.
|
|||
|
|
|||
|
* loop.c (loop_optimize): Reverse order of scanning loops.
|
|||
|
|
|||
|
* loop.c (scan_loop): After skipping the insns of a libcall sequence,
|
|||
|
ignore notes when searching back to find the last insn of the seq.
|
|||
|
|
|||
|
* cccp.c (main): Use envvar GCC_EXEC_PATH to specify translation
|
|||
|
of prefixe in default include dirs.
|
|||
|
|
|||
|
* cccp.c (main): Do path_includes after explicit options.
|
|||
|
|
|||
|
* combine.c (try_distrib): Don't push + thru negative count shifts.
|
|||
|
|
|||
|
Mon Jan 14 09:40:28 1991 Ken Raeburn (raeburn at watch.com)
|
|||
|
|
|||
|
* cplus-lex.c (yylex): Even in `extern "C"', the keywords are the
|
|||
|
same.
|
|||
|
|
|||
|
* cplus-lex.c (input_from_saved_text): New function. Set string
|
|||
|
source for FILE pointer.
|
|||
|
(yylex, do_pending_inlines): Call it.
|
|||
|
|
|||
|
* cplus-parse.y (stmts, stmt): Type is now `tree'. Some actions
|
|||
|
fixed to return it.
|
|||
|
|
|||
|
* cplus-lex.c (reinit_parse_for_block): New function, with most of
|
|||
|
the guts of reinit_parse_for_method. Magic argument IS_TEMPLATE
|
|||
|
chooses a set of error messages.
|
|||
|
(reinit_parse_for_method): Call it.
|
|||
|
cplus-template.c (reinit_parse_for_template): New function, also
|
|||
|
calls reinit_parse_for_block.
|
|||
|
|
|||
|
Mon Jan 14 07:20:36 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* loop.c (skip_consec_insns, move_movables, strength_reduce): Don't
|
|||
|
call find_reg_note on a NOTE.
|
|||
|
|
|||
|
Sun Jan 13 15:45:23 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* cccp.c: Separate namespace for assertions. Don't expand macros
|
|||
|
inside assertions in #if. Allow arbitrary token sequences.
|
|||
|
(rescan): Special handling after `#' if assertions_flag.
|
|||
|
(expand_to_temp_buffer): New arg sets assertions_flag. Callers changed.
|
|||
|
(eval_if_expression): Pass 1 for that arg.
|
|||
|
(skip_paren_group): New function.
|
|||
|
(assertion_hashtab, ASSERTION_HASHSIZE, ASSERTION_HASHNODE): New.
|
|||
|
(assertion_install, assertion_lookup, delete_assertion): New functions.
|
|||
|
(T_ASSERTION): Deleted.
|
|||
|
(tokenlist_list): Renamed from arglist_list.
|
|||
|
(read_token_list): Renamed from read_keyword_list. Much changed.
|
|||
|
Copy the strings into the heap.
|
|||
|
(free_token_list): Renamed from free_keyword_list. Free the strings.
|
|||
|
(do_assert, do_unassert): Considerably changed.
|
|||
|
(check_assertion): Somewhat changed.
|
|||
|
(check_macro_name): Extra arg contributes to error message.
|
|||
|
* cexp.y (yylex): Parse everything as a name if keyword_parsing.
|
|||
|
(rule for assertions): Set, then clear, keyword_parsing.
|
|||
|
(keywords): Allow empty sequence. Allow nested parens.
|
|||
|
|
|||
|
Sat Jan 12 12:18:00 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-typeck.c (build_unary_op): Make better code for simple casts.
|
|||
|
|
|||
|
* reload.c (find_reloads): Computing reload_when_needed, don't neglect
|
|||
|
operands that don't have output reloads.
|
|||
|
|
|||
|
* cse.c (refers_to_mem_p): At check_addr, handle PLUS inside CONST.
|
|||
|
|
|||
|
Sat Jan 12 06:30:56 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* reorg.c (steal_delay_list_from_*): Add missing argument to calls to
|
|||
|
insn_sets_resource_p.
|
|||
|
(fill_eager_delay_slots, relax_delay_slots): Add missing argument
|
|||
|
to calls to mostly_true_jump.
|
|||
|
(relax_delay_slots): Correctly handle case where we can't invert jump.
|
|||
|
|
|||
|
* reload.c (find_reloads_toplev): If we have a SUBREG of a
|
|||
|
pseudo that resides in memory and the address is not offsettable,
|
|||
|
substitute for the pseudo now so we can generate a reload for the
|
|||
|
address.
|
|||
|
|
|||
|
Fri Jan 11 14:39:09 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* tm-next.h (LIB_SPEC, STARTFILE_SPEC): Don't support -p.
|
|||
|
|
|||
|
Thu Jan 10 12:26:49 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* tm-sun2.h (CC1_SPEC): Define to ignore -sun2 and -target.
|
|||
|
(WORD_SWITCH_TAKES_ARG): Define to recognize -target.
|
|||
|
(LIB_SPEC): Define; handle -a.
|
|||
|
* tm-sun2os4.h: New file.
|
|||
|
* tm-m68k.h (TARGET_SWITCHES): Handle -msky and -mnosky.
|
|||
|
(TARGET_SKY): New macro.
|
|||
|
|
|||
|
* tm-next.h (LIB_SPEC): Use -lsys_s, not -lc.
|
|||
|
|
|||
|
* c-parse.y (yylex): Fix typo.
|
|||
|
|
|||
|
* genoutput.c (output_prologue): Make insn-output.c use insn-codes.h.
|
|||
|
* Makefile.in (insn-output.o): Depend on insn-codes.h.
|
|||
|
|
|||
|
* Makefile.in (install-headers): Save $(libsubdir) before cd.
|
|||
|
|
|||
|
* Makefile.in (gnulib): Depend on config.status.
|
|||
|
|
|||
|
* gnulib2.c (__umulsidi3): Use #else around inline function.
|
|||
|
Use __-style names for all machines.
|
|||
|
|
|||
|
Wed Jan 9 17:06:18 1991 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* out-sparc.c (various places): Change \; to \n\t in printf
|
|||
|
strings.
|
|||
|
|
|||
|
* sparc.md: Change PIC initialization pattern to recognize pattern
|
|||
|
that doesn't involve a clobber.
|
|||
|
* out-sparc.c: Rest of change is here, where PIC initialization is
|
|||
|
emitted.
|
|||
|
|
|||
|
* cse.c (simplify_unary_operation, simplify_binary_operation):
|
|||
|
Correctly adjust VAL for bits outside MODE.
|
|||
|
|
|||
|
Wed Jan 9 15:45:26 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* flow.c (libcall_dead_p): Handle a CALL in a PARALLEL.
|
|||
|
|
|||
|
Tue Jan 8 13:35:50 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* expmed.c (emit_store_flag): Correct UNSIGNEDP value passed to
|
|||
|
convert_to_mode and expand_unop.
|
|||
|
|
|||
|
Mon Jan 7 11:56:31 1991 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* gplus.gperf: New keywords for templates and other extensions.
|
|||
|
|
|||
|
* cplus-lex.c: Incorprate new gperf code.
|
|||
|
|
|||
|
* cplus-class.c (resolve_scope_to_name): New function.
|
|||
|
(build_scoped_method_call): Call `resolve_scope_to_name' instead of
|
|||
|
handling by itself.
|
|||
|
* cplus-decl.c (pushdecl_class_level): Give forward declaration.
|
|||
|
(lookup_nested_type): New function.
|
|||
|
(pushtag,lookup_tag,xref_tag): Handle nested classes.
|
|||
|
(finish_function): Add comment about obscure argument passing
|
|||
|
convention for static method calls (at the call site). Also, don't
|
|||
|
call operator delete with NULL pointer. Call it with
|
|||
|
`current_class_decl' instead.
|
|||
|
(globalize_nested_type): New function. Used when we learn that a
|
|||
|
type which initially appeared to be nested should be defined in the
|
|||
|
global scope instead.
|
|||
|
(grokdeclarator): Call `globalize_nested_type' when grokking an
|
|||
|
as-yet undefined class type.
|
|||
|
* cplus-dem.c: Updated to handle qualified (i.e. nested) types.
|
|||
|
This means handling the new letter `Q' in mangled names.
|
|||
|
* cplus-init.c (build_member_call): Handle nested classes using
|
|||
|
`resolve_scope_to_name' instead of handling itself.
|
|||
|
* cplus-lex.c (typename_scope_in_progress): New static variable to
|
|||
|
allow the lexer to figure out what are nested class typenames,
|
|||
|
scoped member references, etc., without getting the parser too
|
|||
|
involved.
|
|||
|
(yylex): Recognize SCOPED_TYPENAME and TYPENAME_SCOPE tokens.
|
|||
|
Also, recognize '<' and '>' separately from ARITHCOMPARE so we can
|
|||
|
implement templates.
|
|||
|
No longer recognizes (X::*) or (X::&) as single tokens.
|
|||
|
* cplus-method.c (build_overload_nested_name): New function to build
|
|||
|
internal names for nested typenames.
|
|||
|
* cplus-parse.y: Handle parameterized type syntax (more or less).
|
|||
|
(dummy_decl): Gone!
|
|||
|
Nested types are now handled.
|
|||
|
* cplus-tree.h (DECL_UNDEFINED_FRIENDS): Moved out of DECL_CONTEXT
|
|||
|
slot of TYPE_DECLs. DECL_CONTEXT of typename is now the enclosing
|
|||
|
type for nested types.
|
|||
|
(DECL_NESTED_TYPENAME): An identifier pointer that makes the name of
|
|||
|
the type unique for the compilation.
|
|||
|
(IDENTIFIER_*): When initializing, call `perm_calloc', not
|
|||
|
permalloc, since non-zero values actually mean something,
|
|||
|
and we don't guarantee to initialize everything in one go.
|
|||
|
* tree.c (perm_calloc): New function.
|
|||
|
* cplus-typeck.c (default_conversion): Don't defaultly convert a
|
|||
|
naked METHOD_REF such that it becomes a virtual function table
|
|||
|
index. Only let this happen if user requests it with `&'.
|
|||
|
|
|||
|
* Makefile.in: Handle new source file cplus-template.c.
|
|||
|
|
|||
|
Mon Jan 7 15:03:53 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-typeck.c (process_init_constructor): Error if values
|
|||
|
provided for an array of empty elements.
|
|||
|
|
|||
|
* out-i386.c (fp_top_dead_p1): Follow jump only if optimizing.
|
|||
|
(fp_call_internal): Discard result if unused. Use fp_top_dead_p1.
|
|||
|
|
|||
|
* cse.c (cse_insn): In special case for (set REG0 REG1),
|
|||
|
change any REG_EQUIV notes to REG_EQUAL.
|
|||
|
|
|||
|
* tm-sun386i.h (PCC_BITFIELD_TYPE_MATTERS): Define it.
|
|||
|
|
|||
|
* tm-att386.h (ASM_OUTPUT_LOCAL): Change back to data section.
|
|||
|
|
|||
|
* genrecog.c (write_tree_1): Typo in printf string.
|
|||
|
|
|||
|
* flow.c (libcall_dead_p): New arguments NOTE and INSN.
|
|||
|
Now test that the hard return reg in the call is dead.
|
|||
|
Callers changed.
|
|||
|
|
|||
|
Mon Jan 7 12:27:07 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* recog.c (cancel_changes): Cancel changes in opposite order we made
|
|||
|
them.
|
|||
|
|
|||
|
* integrate.c (subst_constants): Only commute operands if op0 is const.
|
|||
|
|
|||
|
* rtl.def (INLINE_HEADER): Add new integer field.
|
|||
|
* rtl.h (POPS_ARGS): New macro for place to save
|
|||
|
current_function_pops_args.
|
|||
|
(FUNCTION_FLAG_POPS_ARGS): Deleted; no longer a single bit.
|
|||
|
* emit-rtl.c (gen_inline_header_rtx): Add new arg for "pops args".
|
|||
|
* integrate.c (initialize_for_inline, output_inline_function):
|
|||
|
Correctly save and restore current_function_pops_args.
|
|||
|
|
|||
|
Sun Jan 6 14:10:44 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* rtl.h (ASM_OPERANDS_INPUT_LENGTH): New macro.
|
|||
|
* reload1.c (eliminate_regs): Use ASM_OPERANDS_... macros.
|
|||
|
* recog.c (asm_noperands, decode_asm_operands): Likewise.
|
|||
|
|
|||
|
* rtl.def (IF_THEN_ELSE): Set class to '3'.
|
|||
|
|
|||
|
* cse.c (simplify_{unary,binary,ternary}_operation): New functions,
|
|||
|
from fold_rtx.
|
|||
|
(fold_rtx): Call these function to do the bulk of the work.
|
|||
|
Use GET_RTX_CLASS to find commutative and comparison operations.
|
|||
|
Swap folded_arg[01] when commuting operands.
|
|||
|
* rtl.h: Define new functions.
|
|||
|
* integrate.c (try_constants): Replace constant folding code with
|
|||
|
calls to new functions above.
|
|||
|
In commutative operations, put constants last.
|
|||
|
|
|||
|
* genemit.c (struct clobber_pat): New data structure.
|
|||
|
(gen_insn): If pattern ends with a group of CLOBBERs of hard
|
|||
|
registers, store this information in a struct clobber_pat.
|
|||
|
(output_add_clobbers): New function.
|
|||
|
(main): Call it to write code to add CLOBBERs.
|
|||
|
* genrecog.c (struct decision): Add new field num_clobbers_to_add.
|
|||
|
(make_insn_sequence): If pattern ends with a group of CLOBBERs,
|
|||
|
set up to recognize it without the CLOBBERs but to indicate the
|
|||
|
number of CLOBBERs omitted.
|
|||
|
(add_to_sequence): Initialize num_clobbers_to_add.
|
|||
|
Remove unnecessary conditionalization on STORE_FLAG_VALUE.
|
|||
|
(break_out_subroutines, write_subroutine, write_tree): Remove
|
|||
|
RETURN_PREFIX parameter; TYPE is sufficient.
|
|||
|
(write_subroutine): Add extra parameter for recog_* functions.
|
|||
|
(write_tree_1): Pass TYPE instead of string for return.
|
|||
|
Write out code to return number of CLOBBERs needed.
|
|||
|
(write_tree): Add new parameter to recog_*.
|
|||
|
(main): Add new parameter to recog.
|
|||
|
Don't pass return string to break_out_subroutines and write_tree.
|
|||
|
* recog.c (recog_memoized): Pass extra (0) parameter to recog.
|
|||
|
* combine.c (recog_for_combine): New function.
|
|||
|
(try_combine, simplify_and_cc0, try_distrib): Use it instead of recog.
|
|||
|
(reg_dead_at_p, reg_dead_at_p_1): New functions.
|
|||
|
|
|||
|
* flow.c (mark_set_1): Count in reg_n_sets when a part of a register
|
|||
|
is modified.
|
|||
|
Update SIGNIFICANT correctly when subreg_p and multiple hard regs.
|
|||
|
Compute reg_n_sets for hard registers.
|
|||
|
|
|||
|
Sun Jan 6 13:41:49 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* function.c (locate_and_pad_parm): Do REG_PARM_STACK_SPACE just once.
|
|||
|
|
|||
|
* Changes by wilson@cygnus.com.
|
|||
|
* calls.c (expand_call): Test value of REG_PARM_STACK_SPACE instead
|
|||
|
of assuming that it will always be greater than zero.
|
|||
|
* function.c (assign_parms): Same as above. Also, correct
|
|||
|
calculation of STACK_BYTES.
|
|||
|
|
|||
|
* reload1.c (reload_reg_free_p): Old input reload blocks input_addr.
|
|||
|
|
|||
|
Sat Jan 5 18:32:15 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* Makefile.in (mostlyclean): New name for old `clean'.
|
|||
|
(clean): Deletes gnulib also.
|
|||
|
(cleanconfig): Need not delete gnulib here.
|
|||
|
|
|||
|
* reload.c (push_reload): Don't use dying reg unless operand fits.
|
|||
|
|
|||
|
* c-parse.y (yylex): Hex and octal constants now traditionally signed.
|
|||
|
|
|||
|
Sat Jan 5 18:03:50 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* regclass.c (regclass): reg_n_sets is one per set. It does not
|
|||
|
take into account loop_depth. So don't adjust by loop_depth here.
|
|||
|
|
|||
|
Fri Jan 4 13:18:07 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* function.c (put_var_into_stack): Don't mung virtual reg.
|
|||
|
(fix_lexical_addr): Accept the virtual arg pointer.
|
|||
|
* function.h (struct var_refs_queue): New structure.
|
|||
|
(struct function): Use that for the pending var refs queue.
|
|||
|
|
|||
|
* print-tree.c (print_node): Nicer format for rtl of decls.
|
|||
|
|
|||
|
* c-decl.c (push_c_function_context, pop_c_function_context):
|
|||
|
No need to deal with current_function_decl.
|
|||
|
|
|||
|
* c-parse.y (nested_function): Delete spurious nonterminal.
|
|||
|
|
|||
|
Fri Jan 4 12:13:14 1991 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* cplus-class.c (modify_vtable_entries): In case we are modifying
|
|||
|
the main vtable, start with the vtable that comes from the immediate
|
|||
|
baseclass, not the most base class. This is needed because later
|
|||
|
fixups (for non-first and virtual baseclasses) do not fix up this
|
|||
|
case.
|
|||
|
|
|||
|
Fri Jan 4 06:55:00 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* optabs.c (expand_binop): Fix typo in testing for SImode operation.
|
|||
|
Generalize to apply in more cases by calling emit_store_flag rather
|
|||
|
than doing the gen_sltu explicitly.
|
|||
|
|
|||
|
* expmed.c (store_bit_field, extract_bit_field): When insv/extv
|
|||
|
don't allow MEM and we need to load the field into a register, don't
|
|||
|
use the mode of OP0 if it is wider than the mode to be used for
|
|||
|
insv/extv operating on a register.
|
|||
|
|
|||
|
* expmed.c (emit_stor_flag): Try to convert some comparisons with
|
|||
|
1 and -1 to comparisons with zero.
|
|||
|
Explicitly test sign bit of STORE_FLAG_VALUE rather than testing it
|
|||
|
for being less than zero.
|
|||
|
|
|||
|
* cse.c (find_comparison_args): Don't compute STORE_FLAG_VALUE < 0;
|
|||
|
instead, test the relevant sign bit.
|
|||
|
Use GET_RTX_CLASS instead of comparison_code_p.
|
|||
|
* loop.c (get_condition): Likewise.
|
|||
|
|
|||
|
* recog.c (validate_change): Eliminate duplicate code by always
|
|||
|
saving the change. If in_group == 0, call apply_change_group.
|
|||
|
(apply_change_group): If recog_memoized fails, see if we have a
|
|||
|
CLOBBER at the end. Use validate_change to replace the pattern
|
|||
|
with one without the CLOBBER if so; later we will verify that change.
|
|||
|
|
|||
|
* tree.c (stabilize_reference_1): Now static; also, define as forward
|
|||
|
reference at start of file.
|
|||
|
|
|||
|
* rtl.def: Add new field in DEF_RTL_EXPR macro to give the "class"
|
|||
|
of the rtx operation.
|
|||
|
* rtl.h: DEF_RTL_EXPR has one additional arg.
|
|||
|
(rtx_class, GET_RTX_CLASS): New var and macro.
|
|||
|
* rtl.c: DEF_RTL_EXPR has one additional arg.
|
|||
|
(rtx_class): Initialize table.
|
|||
|
|
|||
|
* reload.c (push_reload): If an input operand contains a dead
|
|||
|
register used nowhere else in the insn, try to use it as a reload reg.
|
|||
|
* reload1.c (reload_as_needed): If cancelling optional reload,
|
|||
|
clear reload_reg_rtx.
|
|||
|
(choose_reload_regs): If we can find reload value lying around,
|
|||
|
use that register unless choice made by find_reloads would also save
|
|||
|
an insn (the new choice added above won't).
|
|||
|
|
|||
|
* genoutput.c: Update comments on things written. Change order to
|
|||
|
agree with the order written.
|
|||
|
(output_epilogue): Remove extraneous tests.
|
|||
|
|
|||
|
Thu Jan 3 13:32:54 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* rtl.c (read_rtx): Cast NULL vector.
|
|||
|
|
|||
|
* By Jim Wilson.
|
|||
|
* tree.c (stabilize_reference): Modified to call stabilize_reference_1
|
|||
|
instead of save_expr.
|
|||
|
(stabilize_reference_1): New function. For arithmetic operator trees,
|
|||
|
recurse on the subtrees. Otherwise, put a SAVE_EXPR around the
|
|||
|
tree if it has side-effects.
|
|||
|
|
|||
|
Thu Jan 3 12:37:56 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* reload1.c (choose_reload_regs): Only set reload_when_needed to
|
|||
|
RELOAD_FOR_OUTPUT or RELOAD_FOR_INPUT when it used to be RELOAD_OTHER.
|
|||
|
|
|||
|
Wed Jan 2 18:28:23 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* emit-rtl.c (init_emit_once): Fix typo setting constm1_rtx.
|
|||
|
|
|||
|
Wed Jan 2 07:53:04 1991 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* sparc.md (fix_truncdfsi2 recognizer): xoperands must have 3
|
|||
|
elements because `output_fp_move_double' can write to operands[2].
|
|||
|
|
|||
|
Wed Jan 2 17:16:20 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* calls.c (emit_call_1): If we have call_pop, use it if we have
|
|||
|
no stack arguments.
|
|||
|
|
|||
|
* out-vax.c (relational_op): Deleted, redundant.
|
|||
|
* vax.md (branch): Use comparison_operator (in recog.c) instead of
|
|||
|
relational_op.
|
|||
|
* tm-vax.h (PRINT_OPERAND_PUNCT_VALID_P): "C" is not punctuation.
|
|||
|
|
|||
|
* reload1.c (reload_as_needed, forget_old_reloads_1): Don't clear
|
|||
|
reg_has_output_reload and reg_is_output_reload for each insn, just
|
|||
|
ones that need reload. Instead, interpret each entry as zero if
|
|||
|
n_reloads == 0.
|
|||
|
|
|||
|
Wed Jan 2 15:52:13 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* optabs.c (expand_binop): Fix typos.
|
|||
|
|
|||
|
* toplev.c (rest_of_compilation): Clear cse_not_expected after loop.
|
|||
|
* rtl.h (cse_not_expected): Declare here.
|
|||
|
* expr.h: Not here.
|
|||
|
|
|||
|
Tue Jan 1 21:55:11 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* emit-rtl.c (constm1_rtx): New standard constant.
|
|||
|
(gen_rtx): Use it when appropriate.
|
|||
|
(init_emit_once): Initialize it.
|
|||
|
|
|||
|
* out-vax.c (split_quadword_operands): New function.
|
|||
|
(relational_op): Likewise.
|
|||
|
* vax.md (extendsidi2, adddi3, subdi3): New patterns.
|
|||
|
(movdi): Use clrq when appropriate.
|
|||
|
(movaq recognizer): New pattern.
|
|||
|
|
|||
|
* recog.h (OUT_FCN): New macro.
|
|||
|
* genoutput.c: Include recog.h in output file. No
|
|||
|
longer define "const", since that happens in recog.h.
|
|||
|
|
|||
|
* tm-vax.h (PRINT_OPERAND): Add 'C' to print a reversed condition.
|
|||
|
* out-vax.c (rev_cond_name): Return its name.
|
|||
|
* vax.md (unnamed patterns): Combine several reversed branch patterns
|
|||
|
into one, using match_operator with relational_op and "%C".
|
|||
|
|
|||
|
* optabs.c (expand_binop): Handle multi-word addition and subtraction.
|
|||
|
|
|||
|
* Makefile.in (install-gnulib): Use RANLIB_TEST. Use libg_dir.
|
|||
|
(libg_dir): New customization variable.
|
|||
|
|
|||
|
* assert.h (__assert): Use standard GNU format for error messages.
|
|||
|
|
|||
|
Tue Jan 1 21:25:00 1991 Richard Kenner (kenner at vlsi1)
|
|||
|
|
|||
|
* reload1.c (eliminate_regs, case PLUS): Always move constant to the
|
|||
|
outside of a PLUS expression.
|
|||
|
|
|||
|
Tue Jan 1 11:45:22 1991 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* ecoff-cmp: Specify `c' in option to tail.
|
|||
|
|
|||
|
* stor-layout.c (layout_record, layout_union, layout_type):
|
|||
|
Use ROUND_TYPE_ALIGN and ROUND_TYPE_SIZE to compute
|
|||
|
alignment and size of records, unions and arrays.
|
|||
|
* ROUND_TYPE_ALIGN: New. Args are type, spec'd align, other min align.
|
|||
|
* ROUND_TYPE_SIZE: New. Args are type, size of contents, align.
|
|||
|
|
|||
|
* reload1.c (emit_reload_insns) [PRESERVE_DEATH_INFO_REGNO_P]:
|
|||
|
Scan output and output-address reloads together.
|
|||
|
Check for matching hard reg.
|
|||
|
|
|||
|
* config.gcc: Set proper shell vars in big dispatch. Not `machine'.
|
|||
|
(i386-isc): New alternative.
|
|||
|
|
|||
|
Tue Jan 1 08:29:49 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* reorg.c (update_block): Turn bb_tick update back on; it is needed,
|
|||
|
after all.
|
|||
|
|
|||
|
Mon Dec 31 18:12:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* genattrtab.c (write_test_expr, case EQ_ATTR): Use correct expression
|
|||
|
number for attribute value.
|
|||
|
|
|||
|
* cse.c (cse_insn): Use single_set when looking for an insn that sets
|
|||
|
cc0 followed by one that no longer does.
|
|||
|
|
|||
|
* recog.c (find_single_use): If the next insn after one that sets
|
|||
|
cc0 is not an INSN or JUMP_INSN, return 0; don't blow up on a NOTE.
|
|||
|
|
|||
|
* emit-rtl.c (emit_insn_before, emit_insn_after, emit_insn): Return
|
|||
|
something sensible if a SEQUENCE of length zero was passed.
|
|||
|
We no longer make a SEQUENCE with XVEC == 0, so don't test for it.
|
|||
|
|
|||
|
* reload1.c (emit_reload_insns): Handle gen_move_insn returning
|
|||
|
no insns (occurs on RT for dummy registers).
|
|||
|
|
|||
|
* rtl.h (reg_cc0_rtx, find_cc): No longer needed.
|
|||
|
* emit-rtl.c: Likewise.
|
|||
|
* conditions.h: Entire file is #ifdef HAVE_cc0.
|
|||
|
* final.c (CC_STATUS_INIT): Make a null default #ifndef HAVE_cc0.
|
|||
|
(cc_status): No longer exists #ifndef HAVE_cc0.
|
|||
|
(final_scan_insn): Do CC processing only #ifdef HAVE_cc0.
|
|||
|
(alter_cond): Only exists #ifdef HAVE_cc0.
|
|||
|
* genemit.c (gen_exp): No longer have CC0_REGNUM or reg_cc0_rtx.
|
|||
|
* genoutput.c (main): Include insn-config.h before conditions.h.
|
|||
|
* reorg.c: Likewise.
|
|||
|
* jump.c (rtx_equal_for_thread_p): Remove reference to CC0_REGNUM;
|
|||
|
we'll have to do this optimization some other way later.
|
|||
|
* tm-a29k.h (NOTICE_UPDATE_CC): Deleted.
|
|||
|
|
|||
|
Mon Dec 31 14:44:31 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* reload.h (enum_reload_when_needed):
|
|||
|
New alternatives RELOAD_FOR_OUTPUT, RELOAD_FOR_INPUT.
|
|||
|
* reload1.c (choose_reload_regs): Use those when appropriate.
|
|||
|
(mark_reload_reg_in_use): Record this usage specially.
|
|||
|
(reload_reg_free_p, reload_reg_free_before_p): Handle this usage.
|
|||
|
(reload_reg_reaches_end_p): Likewise.
|
|||
|
(emit_reload_insns): Treat RELOAD_FOR_INPUT like RELOAD_OTHER.
|
|||
|
|
|||
|
* i386.md (push for SFmode): Operand of fst was missing.
|
|||
|
|
|||
|
Mon Dec 31 08:50:17 1990 Craig Burley (burley at pogo.ai.mit.edu)
|
|||
|
|
|||
|
* stor-layout.c (layout_type): For ARRAY_TYPE case, don't try
|
|||
|
and compute a size if there is no TYPE_MAX_VALUE for the index.
|
|||
|
* tree.c, tree.h (build_index_2_type): New function, like
|
|||
|
build_index_type except it accepts the low value as an arg instead
|
|||
|
of assuming 0.
|
|||
|
|
|||
|
Mon Dec 31 08:09:10 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* cplus-typeck.c (c_expand_return): Handle case when we try
|
|||
|
to return a void value (such as a void function call) in a
|
|||
|
function returning void, and there are cleanups to run.
|
|||
|
|
|||
|
Sun Dec 30 21:08:32 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* tm-a29k.h (TARGET_VERSION): Can't use target_flags since we can
|
|||
|
be called from gcc.c.
|
|||
|
|
|||
|
* tm-rs6000.h (REG_ALLOC_ORDER): Put r12 after r13; it might be
|
|||
|
holding a DImode value and so might be very expensive (we won't
|
|||
|
worry about TImode).
|
|||
|
|
|||
|
* rs6000.md (subtract patterns): Fix incorrect operand number in %I.
|
|||
|
(movti): Disallow indexed memory operands.
|
|||
|
|
|||
|
* out-rs6000.c (print_operand, case 'm'): Fix typo.
|
|||
|
(includes_rshift_p): Correctly compute mask.
|
|||
|
|
|||
|
* out-a29k.c (output_operand): Add missing parentheses.
|
|||
|
(print_operand): Replace if/then/else structure with switch statement.
|
|||
|
|
|||
|
* a29k.md (beq, bne): Try to use NE test whenever possible; it
|
|||
|
will produce better code if we have bit-tests.
|
|||
|
|
|||
|
Sun Dec 30 12:02:03 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* tm-sparc.h (PRINT_OPERAND): Put 'R' case before REG so that it
|
|||
|
takes when 'R' is passed in as CODE. Also, handle 'B' letter.
|
|||
|
|
|||
|
* sparc.md: (pattern for converting DFmode to SImode): Second
|
|||
|
argument to `output_asm_insn' should be `operands', not zero.
|
|||
|
(tablejump): The jump insn is "jmp", not "jump".
|
|||
|
(gen_fixtruncdfsi2): operands[2] should get the pseudo, not
|
|||
|
operands[3] (which is nonexistent).
|
|||
|
(call): Fix typo which had %o7 being emitted as %o.
|
|||
|
(various patterns): Fixed places where match_operand had the wrong
|
|||
|
operand number.
|
|||
|
|
|||
|
Sat Dec 29 17:27:00 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* sparc.md: cc_status no longer handles condition code updates.
|
|||
|
Instead, condition codes are explicitly set and used via
|
|||
|
hard register 0. Special attributes specific to condition codes
|
|||
|
(such as whether conditional branches should test the integer or
|
|||
|
floating-point condition codes, or that the condition codes cannot
|
|||
|
be tested for a condition which would test the overflow bit) are
|
|||
|
handled by encoding the attribute in the mode for the condition
|
|||
|
code register.
|
|||
|
(type attributes): type "unary" insns have one input operand (1)
|
|||
|
and one output operand (0)
|
|||
|
type "binary" insns have two input operands (1,2) and one output (0)
|
|||
|
type "compare" insns have one or two input operands (0,1) and no output
|
|||
|
type "move" and type "arith" have been deleted.
|
|||
|
(prescan attribute): Deleted. Machine description now puts
|
|||
|
floating-point zero in registers when needed.
|
|||
|
(use_cc attribute): Deleted.
|
|||
|
(fpcc define_delay): No longer depend on "use_cc" attribute.
|
|||
|
Also, fpcc delay characteristics hold for "fpcc" type insns.
|
|||
|
(cc attribute): Deleted.
|
|||
|
(cmpxx patterns): Now written as `define_expand's so we can stow
|
|||
|
away operands. When the pattern that will use the results of the
|
|||
|
conditional test is emitted, it can use these operands to figure
|
|||
|
out the right way to emit the compare.
|
|||
|
(bcc patterns): Rewritten to emit comparison (based on stowed-away
|
|||
|
info) before emitting branch.
|
|||
|
(scc patterns): Handle all the cases with branch-free code.
|
|||
|
Added new pattern to recognize (x + (i == 0)).
|
|||
|
(movsi pattern recognizer): Split into two patterns so that e.g.
|
|||
|
"(set:SI (mem:SI ...) (const_int 5))" is never considered valid.
|
|||
|
Instead this has to be a two-insn sequence.
|
|||
|
(mov{hq}i pattern recognizers): Ditto.
|
|||
|
(movstrsi): Force operands[2] out of memory if it was in memory.
|
|||
|
({zero,sign}_extendXY): Now written as `define_expand's instead of
|
|||
|
`define_insn's for more accurate machine modeling.
|
|||
|
Added new pattern to optimize bit-field compares.
|
|||
|
(floatsisf2 patterns): Delete redundant setting of "in_call_delay"
|
|||
|
attribute.
|
|||
|
(fix_trunc{sf,df}si2 pattern): Use clobberable register in which
|
|||
|
the conversion can take place. Used to use %f30,%f31.
|
|||
|
({add,sub}di3 pattern): Put explicit clobber of (reg 0) in the
|
|||
|
pattern.
|
|||
|
(negdi2 pattern): Ditto.
|
|||
|
Added new patterns to handle merging of addition/subtraction with
|
|||
|
condition code testing (with (reg:CC_NOOV 0)).
|
|||
|
({and,ior,xor}cbsi3 pattern): Obsolete. Deleted.
|
|||
|
Added patterns to represent setting of condition codes in addition
|
|||
|
to performing logical operations.
|
|||
|
({neg,abs}df2 pattern): Use `R' print letter to overcome the need
|
|||
|
to use a C action instead of a simple template.
|
|||
|
(ash{l,r}{hi,qi}3): Define patterns for shifts on sub-SImode
|
|||
|
operands.
|
|||
|
(jump pattern): Use `*' print code to obviate the need for a C
|
|||
|
action when a template can do.
|
|||
|
(tablejump pattern): Ditto, with `^' code as well.
|
|||
|
Deleted `define_split's that were used to handle mem-mem moves in
|
|||
|
the case of PIC generation. Since all move insns are emitted and
|
|||
|
maintained as SPARC-valid insns, these should no longer be needed.
|
|||
|
(various patterns): (HI ...) is spelled (HI:SI ...). Also, use
|
|||
|
`gen_lowpart' instead of building subregs directly.
|
|||
|
New `define_split's were added to split scc insns into simpler
|
|||
|
components which have single-insn templates.
|
|||
|
Fixed a return peephole when returning a SFmode value (it was
|
|||
|
missing the "ret"!).
|
|||
|
Lots of complicated peepholes that brought cc testing and
|
|||
|
arithmetic operations together were deleted. This is because the
|
|||
|
combiner should now handle all these cases.
|
|||
|
|
|||
|
* out-sparc.c (sparc_compare_op{0,1}): New global variables.
|
|||
|
Used to hold the operand(s) to compare insns in lieu of emitting a
|
|||
|
compare.
|
|||
|
(reg_or_cc0_operand): Deleted.
|
|||
|
(normal_comp_operator): New function.
|
|||
|
(cc_arithop): Now returns 0 for PLUS and MINUS.
|
|||
|
(cc_arithopn): Now returns 0 for XOR.
|
|||
|
(gen_compare_reg): New function.
|
|||
|
(sparc_address_cost): Simplified because it turns out it doesn't
|
|||
|
matter what is returned for illegitimate addresses.
|
|||
|
(hard_regno_mode_ok): Updated to use these new #defines.
|
|||
|
(C_MODES): New #define, for condition code modes.
|
|||
|
(S_MODES): Ditto, for single-word (and smaller) quantities.
|
|||
|
(D_MODES): Ditto, for double-word (and smaller) quantities.
|
|||
|
(T_MODES): Ditto, for tetra-word (and smaller) quantities.
|
|||
|
(SF_MODES): Ditto, for SFmode quantities.
|
|||
|
(DF_MODES): Ditto, for SF_MODE, DFmode, SCmode, etc.
|
|||
|
(TF_MODES): Ditto, for DF_MODE, TFmode, DCmode, etc.
|
|||
|
(output_floatsi{df,sf}2): Greatly simplified.
|
|||
|
(output_pic_sequence,output_pic_sequence_2,fp_zero_hook,
|
|||
|
output_tail_call): Turned off.
|
|||
|
|
|||
|
* tm-sparc.h (ASM_SPEC): Pass `-k' to assembler if compiling PIC.
|
|||
|
(WORDS_BIG_ENDIAN): Define as 1, not 0.
|
|||
|
(FIXED_REGISTERS): %f30 and %f31 are now allocatable.
|
|||
|
(REG_CC0_RTX, CC0_REGNUM): Deleted.
|
|||
|
(EXTRA_CC_MODES): New modes CC_NOOVmode and CCFPmode. The former
|
|||
|
is for when the overflow bit it not to be tested; the latter is
|
|||
|
for when the condition is sitting in the floating point unit.
|
|||
|
(SELECT_CC_MODE): New macro.
|
|||
|
(FINAL_PRESCAN_INSN): Deleted.
|
|||
|
(CC_* macros): Deleted.
|
|||
|
(PRINT_OPERAND_PUNCT_VALID_P): New valid chars are '#' (for
|
|||
|
whether to print a noop or not), '*' (for whether to print a ",a"
|
|||
|
or not), and '^' (for whether to emit code for PIC branch or not).
|
|||
|
(PRINT_OPERAND{,_ADDRESS}): Replace calls to fprintf by calls to
|
|||
|
fputs where that is convenient.
|
|||
|
|
|||
|
* expr.h, cplus-dbxout.c: #ifdef BYTES_BIG_ENDIAN should be #if.
|
|||
|
|
|||
|
* reload.c (struct replacement): Add new field subreg_loc.
|
|||
|
(push_reload): If reloading SUBREG_REG of a paradoxical SUBREG,
|
|||
|
store the location of the SUBREG in subreg_loc in REPLACEMENTS.
|
|||
|
(push_replacement): Initialize subreg_loc.
|
|||
|
(subst_reloads): Don't produce nested SUBREGs; use subreg_loc.
|
|||
|
|
|||
|
* regclass.c (regclass): Handle (set X (op CONST Y)) properly when
|
|||
|
the modes of operands 0 and 1 are different.
|
|||
|
|
|||
|
Sat Dec 29 16:37:10 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* cccp.c (macroexpand): Test traditional when computing expansion size.
|
|||
|
|
|||
|
* toplev.c (compile_file):
|
|||
|
If profiling, leave some space after `gcc_compiled.'.
|
|||
|
* tm-m88k.h, tm-sparc.h, tm-sun386i.h (ASM_IDENTIFY_GCC): Deleted.
|
|||
|
|
|||
|
* reload1.c (emit_reload_insns): Set reg_reloaded_contents, etc, here.
|
|||
|
(choose_reload_regs): Not here--except for reg_has_output_reload.
|
|||
|
|
|||
|
* c-parse.y (nested_function, notype_nested_function):
|
|||
|
Use compstmt for body, not compstmt_or_error.
|
|||
|
|
|||
|
* Makefile.in (install-headers): Use basename on
|
|||
|
* stupid.c (stupid_mark_refs): Really do mark clobbered hardreg
|
|||
|
live before the insn.
|
|||
|
|
|||
|
Fri Dec 28 05:44:10 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* emit-rtl.c (subreg_lowpart_p): Use correct modes in
|
|||
|
WORDS_BIG_ENDIAN case.
|
|||
|
|
|||
|
* reload.c (combine_reloads): Don't try to reference
|
|||
|
insn_operand_constraint for an ASM insn.
|
|||
|
Fix typo in testing for modified operand.
|
|||
|
|
|||
|
Thu Dec 27 19:02:54 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* cse.c (cse_insn): Ensure we invalidate SET_DEST if SET_SRC is a CALL.
|
|||
|
|
|||
|
* cse.c (fold_rtx): Save mode of original first operand in case this
|
|||
|
is becoming (sign_extend (const_int)).
|
|||
|
|
|||
|
Thu Dec 27 16:15:56 1990 Tom Wood (wood at dg-rtp.dg.com)
|
|||
|
|
|||
|
* m88k.md, out-m88k.c (CCmode): Use it.
|
|||
|
(emit_bcnd): Avoid loosing when bcnd is changed into sxx.
|
|||
|
(hi16/lo16): Don't use these to form 16-bit immediate values.
|
|||
|
Introduce and use %X/%x.
|
|||
|
(length attribute): Make better use of defaults.
|
|||
|
|
|||
|
* tm-v88r32.h (LIB_SPEC): Goes here rather than in xm-v88r32.h.
|
|||
|
* xm-*88*.h: Clean these up. Most differences go away by relying
|
|||
|
on the 88open standards.
|
|||
|
|
|||
|
Thu Dec 27 12:48:26 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* expmed.c (store_bit_field, extract_bit_field):
|
|||
|
Change #ifdef to #if, testing BYTES_BIG_ENDIAN.
|
|||
|
|
|||
|
Thu Dec 27 07:36:45 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* reorg.c (find_end_label): Ignore USE and CLOBBERs when looking for
|
|||
|
label at end of function.
|
|||
|
|
|||
|
Wed Dec 26 22:35:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* emit-rtl.c (sequence_element_free_list, sequence_result): New vars.
|
|||
|
(restore_emit_status, init_emit): Initialize them.
|
|||
|
(emit_insn_before, emit_insn_after, emit_insn): Save SEQUENCE in
|
|||
|
sequence_result.
|
|||
|
Make these three routines more alike in structure.
|
|||
|
(start_sequence, end_sequence, push_to_sequence): Cache INSN_LIST pairs
|
|||
|
in sequence_element_free_list rather than making new ones.
|
|||
|
(start_sequence): No longer return unused rtx; only one caller
|
|||
|
needed to be changed (in function.c, see below).
|
|||
|
(end_sequence): No longer has argument.
|
|||
|
(gen_sequence): Try obtaining a pre-built SEQUENCE from
|
|||
|
sequence_result; no longer special-case length 0 vectors.
|
|||
|
* function.c (fixup_memory_subreg): start_sequence no longer
|
|||
|
returns an rtx and end_sequence no longer has an argument.
|
|||
|
* rtl.h (start_sequence): Now void.
|
|||
|
(push_to_sequence, end_sequence): Define.
|
|||
|
|
|||
|
Wed Dec 26 13:19:40 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* gnulib.c: No longer #undef perform_* if not __GNUC__.
|
|||
|
(perform_*): Define each if not already def.
|
|||
|
|
|||
|
Tue Dec 25 17:31:17 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* loop.c (get_condition): Rework scan that looks for sets of things
|
|||
|
being compared to allow intervening insns; check to ensure that
|
|||
|
they don't set something that we need. Return 0 if the best we can
|
|||
|
do is find something whose mode is in class MODE_CC.
|
|||
|
|
|||
|
* calls.c (emit_call_1): RETURN_POPS_ARGS now gets the length of
|
|||
|
arguments on the stack and returns the number of bytes popped by the
|
|||
|
called function.
|
|||
|
* output.h (current_function_pops_args): Change description.
|
|||
|
* function.c (current_function_pops_args): Likewise.
|
|||
|
(assign_parms): Initialize current_function_pops_args here.
|
|||
|
(init_function_start): Not here.
|
|||
|
* tm-*.h (RETURN_POPS_ARGS): Reflect new meaning.
|
|||
|
(FUNCTION_EPILOGUE): Use new meaning of current_function_pops_args.
|
|||
|
* out-i386.c (function_epilogue): Likewise.
|
|||
|
|
|||
|
Tue Dec 25 15:52:06 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* gnulib.c (all functions): Support a hook for redefining contents.
|
|||
|
These hooks are called perform_addsi3, and so on.
|
|||
|
They are used only if compiling with GCC.
|
|||
|
|
|||
|
* rtlanal.c (single_set): Moved from loop.c.
|
|||
|
|
|||
|
* cse.c (fold_rtx): For a MEM, fold address when looking for constant.
|
|||
|
(cse_insn): When fetch a constant label from a dispatch,
|
|||
|
substitute into following tablejump.
|
|||
|
(find_best_addr): Clear do_not_record before hashing.
|
|||
|
* jump.c (mark_jump_label): Don't record table-labels on non-jumps.
|
|||
|
|
|||
|
* m68k.md (casesi_2 recognizer): Use register_operand as predicate.
|
|||
|
|
|||
|
Mon Dec 24 17:54:42 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* cse.c (fold_rtx): Handle ADDR_DIFF_VEC like ADDR_VEC,
|
|||
|
when the index in it is constant.
|
|||
|
|
|||
|
* c-decl.c (start_function): Handle new option -Wmissing_prototypes.
|
|||
|
(c_decode_option): Likewise.
|
|||
|
|
|||
|
Mon Dec 24 07:21:06 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* rtl.h (reload_completed, reload_in_progress): Now defined here.
|
|||
|
* output.h (reload_completed): No longer defined here.
|
|||
|
* emit-rtl.c, optabs.c, recog.c, sched.c, toplev.c, out-a29k.c:
|
|||
|
Don't define reload_in_progress or reload_completed.
|
|||
|
* a29k.md, romp.md, rs6000.md: Likewise.
|
|||
|
|
|||
|
* machmode.def: Terminate GET_MODE_WIDER_MODE chains with VOIDmode,
|
|||
|
not zero.
|
|||
|
(CCmode): New mode.
|
|||
|
* machmode.h (enum machine_mode): Includes modes in EXTRA_CC_MODES,
|
|||
|
if defined.
|
|||
|
(enum mode_class): New class MODE_CC; delete MODE_FUNCTION.
|
|||
|
* rtl.c (mode_name): Define to be known size; add names for extra
|
|||
|
CC modes, if present.
|
|||
|
(mode_class, mode_size, mode_unit_size, mode_wider_mode): Define
|
|||
|
to be known size.
|
|||
|
(init_rtl): Initialize extra CC modes.
|
|||
|
|
|||
|
Sat Dec 22 19:33:54 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* tm-i386v.h (MAXPATHLEN): Define if not already defined.
|
|||
|
* tm-i386vgas.h: New file.
|
|||
|
|
|||
|
* out-i386.c (print_operand_address): Handle scaled indexing.
|
|||
|
|
|||
|
Sat Dec 22 11:15:03 1990 Tom Wood (wood at dg-rtp.dg.com)
|
|||
|
|
|||
|
* m88k.md, out-m88k.c, tm-m88k.h (swapped cmpsi): Don't rely on
|
|||
|
NOTICE_UPDATE_CC doing the job. Instead, compliment the swapped
|
|||
|
compare. Also, make COMPARE SImode.
|
|||
|
(and/cmpsi/sxx/neg): Add patterns to do this in one instruction.
|
|||
|
Change sign_extend/sxx to neg/sxx for other cases.
|
|||
|
(iorsi3/xorsi3): Use alternatives and explicit patterns.
|
|||
|
(casesi): Make the constant the second operand to cmpsi.
|
|||
|
(output_and): Must compliment value to use the clr instruction.
|
|||
|
(output_reg_adjust): Simplify the interface and use TEMP_REGNUM.
|
|||
|
(TARGET_SWITCHES): Eliminate needless no-* options.
|
|||
|
|
|||
|
Fri Dec 21 05:46:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* recog.c (find_single_use{,_1}): New functions.
|
|||
|
* rtl.h (find_single_use): Declare it.
|
|||
|
|
|||
|
Thu Dec 20 21:27:36 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* optabs.c (init_optabs): Add __ to names of floating compare fcns.
|
|||
|
|
|||
|
Thu Dec 20 18:21:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* expr.c (expand_builtin, case BUILTIN_FFS): Get mode for arg from
|
|||
|
tree, not rtx, in case arg was CONST_INT.
|
|||
|
|
|||
|
Thu Dec 20 17:31:46 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-decl.c (init_decl_processing): Don't define `ffs'.
|
|||
|
|
|||
|
Wed Dec 19 16:59:38 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* gcc.c (main): Handle if SIGPIPE not defined.
|
|||
|
|
|||
|
* cccp.c (xmalloc, xrealloc, xcalloc): Don't declare malloc or realloc.
|
|||
|
|
|||
|
Wed Dec 19 06:50:17 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* combine.c (gen_lowpart_for_combine): Avoid making a nested SUBREG
|
|||
|
when we are being passed a paradoxical SUBREG of MEM.
|
|||
|
|
|||
|
* cse.c (new_basic_block): Compilations spend about 5% of their time
|
|||
|
in this function so replace loop initializing qty_{first,last}_reg
|
|||
|
with copy from a larger consec_ints. Only loop over extra entries.
|
|||
|
(cse_main): Allocate consec_ints to be default size of max_qty large.
|
|||
|
|
|||
|
* reorg.c (get_branch_condition): Fix typos when reversing condition.
|
|||
|
(condition_dominates_p): Fix typo in comparison.
|
|||
|
(redundant_insn_p): This function was taking about 4% of the
|
|||
|
compilation time. Rework so it doesn't split, only looks at resource
|
|||
|
usage if it finds a matching insn (since it usually won't), and
|
|||
|
improve code that looks at resources. Now takes about 0.5% of
|
|||
|
compilation time.
|
|||
|
(fill_simple_delay_slots): Always call mark_target_live_regs with an
|
|||
|
active insn; currently being called with a CODE_LABEL.
|
|||
|
|
|||
|
Tue Dec 18 14:08:11 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* out-sparc.c: Fix uninitiated comment.
|
|||
|
|
|||
|
* final.c (end_final): Call strip_off_ending to remove the file
|
|||
|
name suffix.
|
|||
|
(final_start_function): Execute SDB_DEBUGGING_INFO code only if
|
|||
|
generating SDB symbol info.
|
|||
|
|
|||
|
* Makefile.in (cccp.o): Depend on gcc.
|
|||
|
|
|||
|
* tm-sparc.h, xm-sparc.h: Make this machine big-endian.
|
|||
|
|
|||
|
* expr.c (expand_builtin): Pass correct arguments to gen_cmpstrsi4.
|
|||
|
|
|||
|
* recog.c (nonmemory_operand): Reject reg whose class is NO_REGS.
|
|||
|
|
|||
|
* c-decl.c (finish_struct, grokdeclarator):
|
|||
|
Strip NON_LVALUE_EXPR more than once.
|
|||
|
|
|||
|
* combine.c (combine_instructions): Check that a jump insn uses CC0
|
|||
|
before trying to combine it with an insn that sets CC0.
|
|||
|
|
|||
|
* cplus-decl.c, cplus-search.c, gcc.c, objc-actions.c, rtl.c, stmt.c,
|
|||
|
symout.c, toplev.c: Use xmalloc instead of malloc.
|
|||
|
|
|||
|
* cccp.c (do_include): Check for truncation of precompiled file name.
|
|||
|
|
|||
|
Mon Dec 17 16:53:46 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-typeck.c (build_binary_op_nodefault, build_conditional_expr):
|
|||
|
Fix indentation.
|
|||
|
* reload1.c (choose_reload_regs): Fix indentation.
|
|||
|
(gen_input_reload): Fix typo in comment.
|
|||
|
|
|||
|
* reload.c (find_reloads): Call abort when the last operand is
|
|||
|
marked commutative, to make it easier to find this error.
|
|||
|
|
|||
|
* rtlanal.c (refers_to_regno_p): Don't crash if X is 0.
|
|||
|
|
|||
|
Mon Dec 17 15:29:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* local-alloc.c (combine_regs): No need to see if suggested hard reg
|
|||
|
is suitable; if it isn't, it won't end up being used. Existing tests
|
|||
|
were too conservative.
|
|||
|
|
|||
|
* jump.c (delete_jump): When searching for the SET of the condition
|
|||
|
codes for a jump insn, give up if we hit a SEQUENCE.
|
|||
|
|
|||
|
Mon Dec 17 02:14:06 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-typeck.c (c_size_in_bytes): New function.
|
|||
|
(pointer_int_sum, pointer_diff): Use that.
|
|||
|
(pointer_diff): Handle warn_pointer_arith.
|
|||
|
|
|||
|
Sun Dec 16 22:27:11 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-decl.c (start_decl): Ignore with error any init for a parm.
|
|||
|
(finish_decl): Likewise.
|
|||
|
|
|||
|
Sun Dec 16 01:02:57 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* jump.c (rtx_equal_for_thread_p): Treat the special CC register as
|
|||
|
equivalent for the two threads we are looking at.
|
|||
|
|
|||
|
* combine.c (try_combine): Fix typo in loop over I1 with PARALLEL
|
|||
|
body. Also, don't test HARD_REGNO_MODE_OK for hard registers we are
|
|||
|
thinking about combining. This screws up using registers to
|
|||
|
represent the condition codes, and probably doesn't save anything in
|
|||
|
the general case.
|
|||
|
|
|||
|
* expmed.c (expand_and): Comment says that result is always stored
|
|||
|
in target, so the code now does this.
|
|||
|
|
|||
|
Sat Dec 15 18:09:46 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* loop.c (get_condition): Try a little harder to find the setter of
|
|||
|
the register used in a conditional test. On the SPARC it is vital
|
|||
|
to either find the setter of the register used for the condition
|
|||
|
codes or for this function to return 0. Also, have test for
|
|||
|
non-NULL, matching `set' govern both normal and reversed cases of
|
|||
|
comparisons.
|
|||
|
|
|||
|
* jump.c (jump_optimize): When moving USE insns from before jumps to
|
|||
|
after BARRIERs, put the label for the redirected jump after the
|
|||
|
BARRIER instead of just before the PREV_INSN of the original target.
|
|||
|
This gets around problems when there are NOTEs between the BARRIER
|
|||
|
and the original target.
|
|||
|
|
|||
|
Sat Dec 15 10:16:29 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* sparc.md (cmpdf,cmpsf): No longer a define expand. Now depends
|
|||
|
on fp zero being loaded into a register.
|
|||
|
(tstsi,tstdf,tstsf): Deleted.
|
|||
|
(seq,sne): Fail if we are not testing operands of integer mode.
|
|||
|
(movsi): Split recognizers into two parts. The first handles
|
|||
|
[reg,mem,zero] <=> [reg,mem]; the second handles [reg,const] =>
|
|||
|
[reg].
|
|||
|
(adddf,subdf,negdf): Simplify output routines using 'R' as an
|
|||
|
output letter.
|
|||
|
(tail_call): Turn this off. It is never used, and it depends on
|
|||
|
routines which are about to become broken.
|
|||
|
(various places): Add USE_CC attribute where appropriate.
|
|||
|
(various places): Change (use (reg:SI 0)) to (clobber (reg:SI 0))
|
|||
|
and delete CC_CLOBBER attribute from the pattern.
|
|||
|
* out-sparc.c (move_operand): No longer recognize certain
|
|||
|
immediates as a `move_operand'.
|
|||
|
(move_reg_or_immed_operand): New recognizer for immediates no
|
|||
|
longer recognized by `move_operand'.
|
|||
|
(output_pic_sequence*): Turned off.
|
|||
|
(sparc_address_cost): Simplified, since the value returned is not
|
|||
|
used if the address is not legitimate.
|
|||
|
(emit_move_sequence): Use `gen_lowpart' instead of building
|
|||
|
SUBREGs explicitly.
|
|||
|
(make_f30_contain_zero): Deleted.
|
|||
|
(output_tail_call): Turned off.
|
|||
|
* tm-sparc.h (PRINT_OPERAND): Recognize 'R' code letter, which
|
|||
|
means print the name of REGNO (X)+1. No longer recognizes the 'G'
|
|||
|
letter.
|
|||
|
(PRINT_OPERAND,PRINT_OPERAND_ADDRESS): Replace various calls to
|
|||
|
fprintf with calls to fputs or fputc.
|
|||
|
(FINAL_PRESCAN_INSN): No longer defined.
|
|||
|
|
|||
|
Sat Dec 15 14:37:51 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* recog.c (offsettable_address_p): Check validity in narrower modes.
|
|||
|
|
|||
|
Sat Dec 15 11:21:55 1990 Tom Wood (wood at dg-rtp.dg.com)
|
|||
|
|
|||
|
* syms.h sdbout.c (T_VOID): Ensure that T_VOID is provided a
|
|||
|
default meaning if <syms.h> is used.
|
|||
|
|
|||
|
Fri Dec 14 14:39:10 1990 Tom Wood (wood at dg-rtp.dg.com)
|
|||
|
|
|||
|
* m88k.md (increment and test peephole): Updated so it would apply
|
|||
|
with the new method for doing cmpsi/bxx.
|
|||
|
* m88k.md (function units): Replace decode with alu and update
|
|||
|
accordingly.
|
|||
|
* out-m88k.c (emit_test): Add a mode parameter.
|
|||
|
* tm-m88k.h (GO_IF_LEGITIMATE_ADDRESS): Constrain how the arg
|
|||
|
pointer can be used.
|
|||
|
|
|||
|
Fri Dec 14 06:48:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* expr.c (convert_move): Add missing argument to some recursive calls.
|
|||
|
|
|||
|
* jump.c (invert_jump): Pass new label to recursive call.
|
|||
|
|
|||
|
* expr.h (setcc_gen_code): Replaces setcc_gen_fctn; stores insn_code.
|
|||
|
(expand_and, emit_store_flag, label_rtx): Add definitions.
|
|||
|
(get_condition, compare_from_rtx): Likewise.
|
|||
|
* rtl.h (STORE_FLAG_VALUE): Provide a default value of 1.
|
|||
|
(reg_set_last): Add definition.
|
|||
|
(const_true_rtx): New variable.
|
|||
|
* cse.c: Remove defaulting of STORE_FLAG_VALUE from here.
|
|||
|
(const_true_rtx): Remove static version; now global.
|
|||
|
* emit-rtl.c (const_true_rtx): Define here.
|
|||
|
(gen_rtx): Return const_true_rtx for CONST_INT of STORE_FLAG_VALUE.
|
|||
|
(init_emit_once): Initialize const_true_rtx.
|
|||
|
* expmed.c (emit_store_flag): Rewritten. Is passed the operands
|
|||
|
to compare in addition to the compare operation and emits both the
|
|||
|
comparison and the store-flag insn.
|
|||
|
Handles special-case of testing for A < 0 and A >= 0.
|
|||
|
If result is constant, just return it.
|
|||
|
Accepts an argument saying how to normalize the result and does
|
|||
|
appropriate normalization.
|
|||
|
Give preference to using the sign bit rather than the low-order bit.
|
|||
|
Allow sxx insns to fail.
|
|||
|
If don't have seq or sne insns, can sometimes do with abs.
|
|||
|
* expr.c (expand_expr, case COND_EXPR): For X ? A + 1 : A, only
|
|||
|
do store_flag if it is cheap.
|
|||
|
(do_jump): True comparisons return STORE_FLAG_VALUE, not 1.
|
|||
|
(compare_constants): Correctly handle unsigned comparisons.
|
|||
|
Return STORE_FLAG_VALUE, not 1, for true comparison.
|
|||
|
(compare_from_rtx): New name for compare1.
|
|||
|
Accept size and alignment, for BLKmode.
|
|||
|
No longer statuc.
|
|||
|
(compare, compare_from_rtx): No need to pass forward and reverse codes;
|
|||
|
can trivially derive the reverse code from the forward one.
|
|||
|
All callers changed.
|
|||
|
If one operand is constant, make it the second one.
|
|||
|
(compare): Let compare1 do most of the work.
|
|||
|
(do_store_flag): Rewritten, now lets emit_store_flag do most of
|
|||
|
the work.
|
|||
|
Handles the special-case of comparing a single bit with zero.,
|
|||
|
Add additional argument ONLY_CHEAP; if non-zero, fail if it looks like
|
|||
|
this will be an expensive operation; all callers changed.
|
|||
|
If it looks like it will be possible to do a store-flag operation,
|
|||
|
call emit_store_flag; if it can't do it, emit as assignments and a
|
|||
|
jump. If it doesn't look possible to do a store-flag operation, return
|
|||
|
zero before expanding anything.
|
|||
|
* final.c: (final_scan_insn): Don't check STORE_FLAG_VALUE; if the
|
|||
|
insn doesn't exist, we won't try to change it.
|
|||
|
* genemit.c (gen_exp): Use const_true_rtx when appropriate.
|
|||
|
* genrecog.c (add_to_sequence): Likewise.
|
|||
|
(try_merge_1): Two nodes aren't identical if they are to test
|
|||
|
different modes or if they have different values of EXACT.
|
|||
|
* integrate.c: Don't supply a default value for STORE_FLAG_VALUE here.
|
|||
|
* jump.c: Now includes expr.h (for emit_store_flag and get_condition).
|
|||
|
(jump_optimize): Split optimization that made store-flag insn
|
|||
|
into three separate optimizations, the first two of which are useful
|
|||
|
even in the absence of store-flag operations.
|
|||
|
(can_reverse_comparison): Set and use of cc0 must be immediately
|
|||
|
adjacent.
|
|||
|
(mark_jump_label): Abort if LABEL_REF codesn't contain a CODE_LABEL.
|
|||
|
Consider two labels adjacent after reload if separated by just USE or
|
|||
|
CLOBBER insns.
|
|||
|
* loop.c: Now includes real.h.
|
|||
|
(get_condition_for_loop): New function. All callers of get_condition
|
|||
|
in this file now call this function.
|
|||
|
(strength_reduce): no_labels_between_p now skips FROM.
|
|||
|
(get_condition): No longer static.
|
|||
|
Refine cases when we can't reverse a comparison operation.
|
|||
|
* optabs.c (init_optabs): Initialize and define setcc_gen_code
|
|||
|
instead of setcc_gen_fctn.
|
|||
|
* rtlanal.c (no_labels_between_p): Skip FROM, like as ..._between_...
|
|||
|
functions do.
|
|||
|
(no_labels_between): Deleted.
|
|||
|
(reg_set_last, reg_set_last_1): New functions.
|
|||
|
* Makefile.in (jump.o): Now include expr.h.
|
|||
|
(loop.o): Now includes real.h.
|
|||
|
|
|||
|
* c-tree.h (int_ftype_cptr_cptr_sizet, ptr_ftype_ptr_cptr_sizet):
|
|||
|
New names.
|
|||
|
|
|||
|
* alliant.md, i386.md, m68k.md, m88k.md, ns32k.md, sparc.md: Add mode
|
|||
|
to comparison operators (EQ, NE, etc.) to agree with the mode of the
|
|||
|
destination.
|
|||
|
* out-m88k.c (emit_test): Likewise.
|
|||
|
|
|||
|
Fri Dec 14 00:12:46 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-decl.c (finish_struct): Strip NON_LVALUE_EXPR from field width.
|
|||
|
|
|||
|
Thu Dec 13 13:10:47 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* cplus-init.c (expand_vec_init): Add missing arg to
|
|||
|
expand_exit_loop_if_false.
|
|||
|
|
|||
|
* config.gcc (tron): Alias for gmicro.
|
|||
|
|
|||
|
* c-decl.c (int_ftype_cptr_cptr_sizet): Variable renamed.
|
|||
|
(ptr_ftype_ptr_cptr_sizet): Likewise.
|
|||
|
|
|||
|
* gcc.c (default_compilers): Handle .C.
|
|||
|
|
|||
|
* Makefile.in (enquire.o): Add -I. so can find stddef.h.
|
|||
|
(install-cross): Install cc1obj like the others.
|
|||
|
|
|||
|
* Makefile.in (gnulib.target): Renamed from gnulib.
|
|||
|
(gnulib): Renamed from tmpgnulib. Rename that file in this rule.
|
|||
|
Also delete stamp-gnulib2 here.
|
|||
|
(gnulib.portable, gnulib.convert): Input now is named gnulib.
|
|||
|
(GNULIB_TARGET, GNULIB2_TARGET): Define these vars (already in use).
|
|||
|
(gnulib2.target): Renamed from gnulib2.
|
|||
|
(gnulib2): New rule, alias for gnulib2.target.
|
|||
|
|
|||
|
* local-alloc.c (local_alloc): Cast an enum used as index.
|
|||
|
* optabs.c (emit_indirect_jump): Likewise.
|
|||
|
* reload1.c (choose_reload_regs): Likewise.
|
|||
|
|
|||
|
Thu Dec 13 12:38:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* expmed.c (store_bit_field): Verify that operand 1 of movstrict
|
|||
|
satisfies its predicate.
|
|||
|
|
|||
|
Wed Dec 12 17:26:21 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* gvarargs.h: Avoid duplicate inclusion using _VARARGS_H.
|
|||
|
|
|||
|
Wed Dec 12 14:11:30 1990 Tom Wood (wood at dg-rtp.dg.com)
|
|||
|
|
|||
|
* tm-m88k.h, out-m88k.c, m88k.md: Eliminated the fixed condition
|
|||
|
code register. As a temporary measure, NOTICE_UPDATE_CC is used
|
|||
|
to track swapped cmpsi cases.
|
|||
|
|
|||
|
* m88k.md (shift patterns): Deal with TARGET_*_LARGE_SHIFT
|
|||
|
uniformly with define_expand. Make gen_lshlsi3 generate ASHIFT
|
|||
|
and eliminate the optimization patterns using ASHIFT. Eliminate
|
|||
|
other optimization patterns that will be handled by combine.
|
|||
|
|
|||
|
Tue Dec 11 22:13:48 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* expr.c (convert_move): With slt, handle dest that's invalid.
|
|||
|
|
|||
|
* stmt.c, tree.h (stmt_nesting):
|
|||
|
Typedef deleted; use `struct nesting *'.
|
|||
|
* stmt.c (expand_start_cond): If exitable, make an exit label.
|
|||
|
|
|||
|
Tue Dec 11 21:28:56 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* combine.c (subst, case SUBREG): Update TO for earlier
|
|||
|
changes so we can always detect (subreg (mem ...)).
|
|||
|
|
|||
|
Tue Dec 11 10:56:53 1990 Craig Burley (burley at pogo.ai.mit.edu)
|
|||
|
|
|||
|
* stmt.c (expand_start_loop{,_continue_elsewhere}): Return pointer
|
|||
|
to nesting structure (new type stmt_nesting).
|
|||
|
(expand_exit_loop{,_if_false},expand_continue_loop): Accept pointer
|
|||
|
to nesting structure, substitute loop_stack if 0 (same behavior as
|
|||
|
before when there was no argument), so F90 CYCLE and EXIT statements
|
|||
|
(like C's continue and break stmts) can refer to other than the
|
|||
|
innermost loop.
|
|||
|
(expand_start_cond): Uses new names for if-related labels that
|
|||
|
reflect addition of "elseif" call, and sets endif_label to whatever
|
|||
|
exit_label gets set to (so we don't generate two identical labels
|
|||
|
for languages from which if is exitable via expand_exit_something).
|
|||
|
(expand_start_elseif): New function, used by Fortran.
|
|||
|
(expand_start_else): Moved above _end_cond so these four functions
|
|||
|
appear in the order they get called; uses new names, and fills in
|
|||
|
only endif_label if needed, not exit_label.
|
|||
|
(expand_end_cond): Handles end of any if, not just if-without-else.
|
|||
|
Generates both labels for next else/elseif pending (there was none)
|
|||
|
and the endif itself, if they exist (and there will always be at least
|
|||
|
one).
|
|||
|
(expand_end_else): Gone, call expand_end_cond instead.
|
|||
|
* c-parse.y, cplus-parse.y, objc-parse.y: Pass new 0 argument to
|
|||
|
expand_..._loop_... to indicate the innermost loop; call
|
|||
|
expand_end_cond instead of expand_end_else.
|
|||
|
* tree.h: Typedef for stmt_nesting returned by expand_start_loop...
|
|||
|
and change their return types accordingly.
|
|||
|
|
|||
|
Mon Dec 10 06:59:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* combine.c (check_asm_operands): Delete from here.
|
|||
|
* recog.c (check_asm_operands): Move to here; no longer static.
|
|||
|
(validate_change): Don't assume change is valid is asm_noperands >= 0.
|
|||
|
If recog_memoized returns < 0, accept change if asm_noperands >= 0
|
|||
|
and check_asm_operands returns non-zero.
|
|||
|
(apply_change_group): Likewise.
|
|||
|
(validate_replace_rtx_1): Swap operands on commutative operation
|
|||
|
if first is constant.
|
|||
|
Use plus_constant to simplify a PLUS with CONST_INT as second operand.
|
|||
|
|
|||
|
* reload.c (find_equiv_reg): We must have a stable SP if GOAL is
|
|||
|
a MEM that uses SP.
|
|||
|
|
|||
|
* combine.c (try_combine): Don't do anything if I2 or I1
|
|||
|
has an ASM_OPERANDS and CLOBBERS; we'll need those clobbers
|
|||
|
and it is too messy to try to get things set up correctly.
|
|||
|
|
|||
|
Sun Dec 9 22:07:41 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* cccp.c (collect_expansion): Don't check for /* */ concat here.
|
|||
|
(macroexpand): Always use raw arg if traditional.
|
|||
|
|
|||
|
* c-parse.y (unary): Mark address of label as constant.
|
|||
|
|
|||
|
Sun Dec 9 14:45:34 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* cplus-class.c (propagate_basetype_offsets): Take effect on ASSOC
|
|||
|
before recursive calling.
|
|||
|
(finish_struct): Call `layout_decl' with zero for KNOWN_ALIGN
|
|||
|
when laying out TYPE_DECL.
|
|||
|
* cplus-tree.c (assoc_value): Change recursion condition to compare
|
|||
|
ASSOC_VALUE (assoc) against TYPE_MAIN_VARIANT (type) instead of just
|
|||
|
against type.
|
|||
|
|
|||
|
Sat Dec 8 10:40:00 1990 Tom Wood (wood at dg-rtp.dg.com)
|
|||
|
|
|||
|
* m88k.md (attributes): Reorganize and include a block diagram.
|
|||
|
Make better use of defaults.
|
|||
|
* m88k.md (peephole), out-m88k.c, tm-m88k.h (short_branch): Add
|
|||
|
the sparc peepholes for changing bsr/br into bsr.n/addu or
|
|||
|
bsr.n/subu. Install the length attribute for this. Requires the
|
|||
|
use of `def' to accomodate broken assemblers in the bsr.n/addu
|
|||
|
case.
|
|||
|
|
|||
|
Fri Dec 7 06:12:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* reorg.c (find_end_label): Increment usage count of label we return
|
|||
|
so we know it won't go away.
|
|||
|
(dbr_schedule): Decrement count of end label and delete it if dead.
|
|||
|
|
|||
|
Wed Dec 5 17:36:23 1990 Tom Wood (wood at dg-rtp.dg.com)
|
|||
|
|
|||
|
* m88k.md: Add instruction attributes for scheduling and delay
|
|||
|
slot information.
|
|||
|
* m88k.md (addsi pattern): Adding large constants does arise.
|
|||
|
(udivsi pattern): Wrong predicate.
|
|||
|
* tm-m88k.h, out-m88k.c (NOTICE_UPDATE_CC): Do so using
|
|||
|
attributes.
|
|||
|
|
|||
|
* make-m88k, make-m88kdgux: Say how to create m88k-trace.asm.
|
|||
|
|
|||
|
Wed Dec 5 13:52:16 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* optabs.c (expand_binop): Support insn_before == 0.
|
|||
|
|
|||
|
* function.c (optimize_bit_field): Fix wrong arg to validate_change.
|
|||
|
|
|||
|
* Makefile (includes): Export LIB.
|
|||
|
|
|||
|
Wed Dec 5 13:31:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* combine.c (try_combine): Don't discard CLOBBERs from an insn
|
|||
|
with ASM_OPERANDS.
|
|||
|
|
|||
|
Tue Dec 4 16:12:21 1990 Tom Wood (wood at dg-rtp.dg.com)
|
|||
|
|
|||
|
* tm-m88k.h, out-m88k.c, m88k.md: More cleanups: introduce
|
|||
|
POWER_OF_2 for tests (x && (x & (x-1) == 0); rename predicate
|
|||
|
functions *_p instead of *_operand; cleanup addsi3 insns; simplify
|
|||
|
udivsi3 insns; simplify memory shift insns; make LOW_SUM and HIGH
|
|||
|
SImode instead of VOIDmode; add a predicate to the increment and
|
|||
|
test peephole insn; deal with setting SFmode to zero; delete bogus
|
|||
|
pattern for divide-by-power-of-2.
|
|||
|
* make-m88k, make-m88kdgux: dg88k-trace.asm is now m88k-trace.asm.
|
|||
|
Move movstr-m88k.sh to config/m88k-movstr.sh.
|
|||
|
|
|||
|
Mon Dec 3 19:08:03 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* Makefile.in (gnulib2.ready): New target.
|
|||
|
(stamp-gnulib2): Depend on that.
|
|||
|
Avoids recompiling gnulib2 each time cc1 changes.
|
|||
|
|
|||
|
Mon Dec 3 16:17:56 1990 Tom Wood (wood at dg-rtp.dg.com)
|
|||
|
|
|||
|
* tm-m88kdgux.h, xm-m88kdgux.h (SEPARATE_AUX_OUTPUT): Should be in
|
|||
|
xm-m88kdgux.h.
|
|||
|
* tm-m88k.h, out-m88k.c, m88k.md: Eliminated the fixed literal
|
|||
|
synthesis register. Reworked the addressing method to be like the
|
|||
|
sparc (uses HIGH and LO_SUM). Numerous cleanups. These changes
|
|||
|
are based on work done by Steve Chamberlain (steve@cygnus).
|
|||
|
* tm-m88k.h, out-m88k.c (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER):
|
|||
|
Implemented.
|
|||
|
|
|||
|
Mon Dec 3 15:19:04 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* cccp.c (special_symbol): Use time_t as type of t.
|
|||
|
|
|||
|
* m88k-movstr.sh, m88k-trace.asm, va-m88k.h: New files.
|
|||
|
|
|||
|
* gcc.c: Don't define R_OK, etc. if already defined.
|
|||
|
|
|||
|
* out-sparc.c (finalize_pic, emit_move_sequence, output_arc_profiler):
|
|||
|
Finish change to emit HIGH and LO_SUM as Pmode instead of VOIDmode.
|
|||
|
|
|||
|
Sun Dec 2 22:13:53 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* config.gcc (tower): New alternative.
|
|||
|
(mips-news): Adapt for version 2.
|
|||
|
|
|||
|
* tm-tower.h, tm-tower-as.h, xm-tower.h: New files.
|
|||
|
|
|||
|
Sun Dec 2 17:47:28 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* reload1.c (eliminate_regs, case ASM_OPERANDS): Fix typo in testing
|
|||
|
for changed vector.
|
|||
|
|
|||
|
* out-rs6000.c (output_epilogue): Fix typo restoring general registers.
|
|||
|
(print_operand): Add new option %H.
|
|||
|
* rs6000.md: Add (clobber (reg:SI 64)) to many patterns even though
|
|||
|
they don't clobber MQ to allow combining to work well. This will be
|
|||
|
removed once combine knows how to add clobbers when required.
|
|||
|
Change patterns to reflect new canonicalization rules.
|
|||
|
Where we have (and (xshift)), add patterns for (zero_extend (xshift)).
|
|||
|
(andsi3, xorsi3): Fix bug in case where two insns are needed.
|
|||
|
(moveti): Don't call change_address when in reload.
|
|||
|
(sign_extend): Add patterns for sign extend preceeded or followed by
|
|||
|
one of the shifts it will do. Use %H to output the merged shift.
|
|||
|
|
|||
|
* out-romp.c (print_operand): Allow exact_log2 result to be zero.
|
|||
|
* romp.md: Likewise.
|
|||
|
* tm-romp.h (CONST_OK_FOR_LETTER): Likewise.
|
|||
|
|
|||
|
* a29k.md (type attribute): Add types for floating-point insns.
|
|||
|
(in_delay_slot attribute): Update to allow for new types.
|
|||
|
(function_unit definitions): Add definitions for floating-point units.
|
|||
|
(andcb*3): Delete obsolete names.
|
|||
|
(convert insn): Use register_operand instead of gen_reg_operand for
|
|||
|
floating-point operand.
|
|||
|
(cpeq, feq, deq, etc): New patterns.
|
|||
|
(floating-point arithmetic): Add support for 29050 insns and
|
|||
|
accumulators; indicate function unit usage.
|
|||
|
(ior/and patterns): Put NOT as second operand.
|
|||
|
(orn insn): New, for 29050.
|
|||
|
(load patterns): If using match_operator, make it the highest operand
|
|||
|
number.
|
|||
|
(loadm insns): Add workaround for rev A1 bug on 29050.
|
|||
|
(negsf2, negdf2): Don't use XOR to negate on 29050.
|
|||
|
(movsf, movdf): Add support for accumulators on 29050.
|
|||
|
(movsi, movhi, movqi): No need to support special->special copies.
|
|||
|
Support consthz insn on 29050.
|
|||
|
(compare, scc, and branch insns): Rework to not use cc0. Use a pseudo
|
|||
|
register instead. Compare doesn't generate any code, but merely
|
|||
|
saves the operands. scc and branch then emit the appropriate compare
|
|||
|
and jump (if branch) insns.
|
|||
|
(tstsi): Delete pattern; not used when no cc0.
|
|||
|
(peepholes): Remove peepholes to convert jumps to scc insns; now
|
|||
|
done in jump.c.
|
|||
|
* out-a29k.c (a29k_compare_*): New variables.
|
|||
|
(long_const_operand): Anything with low-order 16 bits zero is not a
|
|||
|
long constant on the 29050.
|
|||
|
(accum_reg_operand): New function.
|
|||
|
(gen_reg_operand): Returns false for accumulator registers.
|
|||
|
(output_operand): Allow accumulators.
|
|||
|
(ne_comparison_p, fp_comparison_p, return_peep_operand): Deleted.
|
|||
|
(fp_comparison_operator, branch_operator): New functions.
|
|||
|
(output_compare): Deleted.
|
|||
|
(print_operand): Change meaning of %b and %B.
|
|||
|
Add new code %J.
|
|||
|
* tm-a29k.h (TARGET_VERSION): Say if compiling for 29050.
|
|||
|
(TARGET_FLAGS): Add -29000 to turn off support for 29050; this is
|
|||
|
still the default.
|
|||
|
(various register macros): Add support for the floating-point
|
|||
|
accumulators on the 29050.
|
|||
|
(CONST_OK_FOR_LETTER): Use 'O' for a constant that can be set using
|
|||
|
conthz on the 29050; keep old definition for 29000.
|
|||
|
(STORE_FLAG_VALUE): Now 0x80000000.
|
|||
|
(ASM_FILE_START): Write ".cputype 29050" when compiling for 29050.
|
|||
|
|
|||
|
* combine.c (subst): Put NOT, NEG, MULT, PLUS, and MINUS as the
|
|||
|
first operand of commutative operations. Note that NOT used to be
|
|||
|
put as the second operand but it has always been assumed that
|
|||
|
MULT would be the first operand in address expressions, so we have
|
|||
|
to change the previous canonicalization. This is possible now that we
|
|||
|
have eliminated the andcbm3 operations.
|
|||
|
* i860.md (andnot): Remove obsolete andcbsi3 name and place NOT
|
|||
|
as first operand.
|
|||
|
* m68k.md (fpm*): Delete patterns with MULT as second operand and
|
|||
|
use "@" construct when possible.
|
|||
|
* m88k.md (and.c, ior.c): Remove obsolete andcbsi3 and iorcbsi3 names.
|
|||
|
Delete patterns with NOT as second operand.
|
|||
|
(xor.c): Rewrite in new canonical form.
|
|||
|
* mips.md (nor): Rewrite in new canonical form.
|
|||
|
* pyr.md (bicw): Remove pattern with NOT as first operand, removing
|
|||
|
obsolete name andcbsi3 in the process.
|
|||
|
* sparc.md: Remove patterns with NOT as first operand.
|
|||
|
Remove obsolete names andcbsi3, iorcb3, and xorcbsi3.
|
|||
|
Rewrite xnor into new canonicalized form.
|
|||
|
Add mode to HIGH and LO_SUM operations.
|
|||
|
* vax.md (bic*): Remove obsolete andcbm3 names.
|
|||
|
Put NOT as first operand when both generating and recognizing RTL.
|
|||
|
(jlbc): Rewrite with NOT as first operand.
|
|||
|
|
|||
|
Sun Dec 2 17:08:16 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* m68k.md (recognizer for casesi_2): Handle ASM_RETURN_CASE_JUMP.
|
|||
|
|
|||
|
* stddef.h (ptrdiff_t): Prevent definition, as with size_t.
|
|||
|
|
|||
|
Sat Dec 1 16:31:30 1990 Ron Guilmette (rfg at ncd.com)
|
|||
|
|
|||
|
* dwarfout.c (lookup_filename, dwarfout_finalize): changed from
|
|||
|
maintaining a linked list of filename entries to maintaining an
|
|||
|
(expandable) array of filename entries instead. Also, changed
|
|||
|
code so that *all* filename strings are output (to the .files
|
|||
|
section of the asm file) in one swell foop just as the asm file is
|
|||
|
being finalized rather than writing out new filenames one-by-one
|
|||
|
as they arise (as previously). This circumvents a problem caused
|
|||
|
by rfg's naive assumption that assemblers kept a stack of prior
|
|||
|
section names (of depth > 1) which could be successively popped
|
|||
|
via multiple `previous' directives. For some assemblers, the
|
|||
|
depth of the stack is only 1 and they can get confused if you do
|
|||
|
two (or more) `previous' directives in a row. Anyway, it is no
|
|||
|
longer either necessary or useful to do that, so who cares.
|
|||
|
|
|||
|
* dwarfout.c: added code to output newlines to the asm file just
|
|||
|
prior to each and every change of section (for better readability
|
|||
|
of the asm files).
|
|||
|
|
|||
|
* dwarfout.c: changed code so that if DWARF_DESCRIBE_USED_EXTERNS
|
|||
|
is defined, it forces DWARF_LOCATION_ATTRIBUTES to also be defined.
|
|||
|
|
|||
|
* dwarfout.c: changed code so that if DWARF_LOCATION_ATTRIBUTES
|
|||
|
is defined, it forces DWARF_DESCRIBE_FILES to be defined (to `1').
|
|||
|
|
|||
|
* dwarfout.c: changed code so that if DWARF_DESCRIBE_FILES is not
|
|||
|
already defined (in the user's tm.h file) it will automatically be
|
|||
|
defined (by default) to `1'. Also changed all instances of
|
|||
|
`#ifdef DWARF_DESCRIBE_FILES' to `#if DWARF_DESCRIBE_FILES'.
|
|||
|
The user must now intentionally *disable* this feature (by
|
|||
|
defining DWARF_DESCRIBE_FILES to `0' in his tm.h file) if he
|
|||
|
wishes to have the additional information about files suppressed.
|
|||
|
|
|||
|
* dwarfout.c: changed comments relating to optional defines for
|
|||
|
extended GNU DWARF features to include more information and to
|
|||
|
add some additional clarity.
|
|||
|
|
|||
|
Sat Dec 1 16:00:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* combine.c (subst): Call reverse_condition instead of
|
|||
|
reverse_comparison.
|
|||
|
We are allowed to reverse floating-point EQ and NE comparisons.
|
|||
|
|
|||
|
* combine.c (subst): Call simplify_and_const_int for all AND
|
|||
|
and ZERO_EXTEND cases and all cases where we make one of them.
|
|||
|
Remove all other code in AND and ZERO_EXTEND cases.
|
|||
|
(simplify_and_const_int): Rewritten to follow a consistent model
|
|||
|
of tracking what AND's need to be done and which bits are not
|
|||
|
significant. Consistently try a ZERO_EXTEND for all cases where
|
|||
|
the result is an AND with a mode-wide mask. Move all remaining
|
|||
|
cases from AND any ZERO_EXTEND cases from subst.
|
|||
|
|
|||
|
Sat Dec 1 09:13:17 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* cplus-tree.h (lang_type): Remove any_assigns_this,
|
|||
|
none_assigns_this from type_flags.
|
|||
|
* cplus-decl2.c (get_temp_name): If the initializer is a
|
|||
|
pointer to zero, cache it in EMPTY_TABLE.
|
|||
|
(finish_builtin_type): New function, to factor common code
|
|||
|
arising from building internal structures.
|
|||
|
* cplus-decl.c (init_decl_processing): Call it.
|
|||
|
|
|||
|
Fri Nov 30 10:39:04 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* cplus-decl.c (finish_function): Use CLASSTYPE_ASM_WRITTEN instead
|
|||
|
of TREE_USED to indicate that we need debugging info for
|
|||
|
TTYPE.
|
|||
|
Note that nobody ever sets EXTENDED_DBX_DEBUG. For now,
|
|||
|
change to test DBX_DEBUG. For later, change everything to
|
|||
|
key off of EXTENDED_DBX_DEBUG.
|
|||
|
Also, set `warn_return_type' to one always, since this warning
|
|||
|
is too valuable to lose.
|
|||
|
* cplus-tree.c (lang_output_debug_info): Don't test TREE_USED. That
|
|||
|
field is already used by other routines, and we have all we need now
|
|||
|
in CLASSTYPE_ASM_WRITTEN.
|
|||
|
* cplus-dbxout.c (dbxout_type_method_1): Handle const,
|
|||
|
volatile, and const/volatile member functions.
|
|||
|
|
|||
|
Fri Nov 30 04:51:46 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* combine.c (reg_last_set_value): New variable.
|
|||
|
(combine_instructions): Allocate and initialize it.
|
|||
|
(record_dead_and_set_regs): Set reg_last_value to source
|
|||
|
of assignment; clear it for a CLOBBER or partial assignment.
|
|||
|
(subst): Use reg_last_set_value instead of interpreting the
|
|||
|
insn in reg_last_set as if it was a single SET.
|
|||
|
|
|||
|
* combine.c (gen_lowpart_for_combine): Call gen_lowpart for CONST_INT.
|
|||
|
When making a new MEM, copy MEM_VOLATILE_P and MEM_IN_STRUCT_P.
|
|||
|
If cannot recognize the argument, just form a SUBREG; usually,
|
|||
|
it won't be recognized, but sometimes will allow further
|
|||
|
simplifications.
|
|||
|
|
|||
|
* regclass.c (reg_scan): Save size of uid map; reallocate if
|
|||
|
we have more registers than we allocated.
|
|||
|
Leave some extra room in map.
|
|||
|
|
|||
|
* stmt.c (emit_case_nodes): Supply missing argument to emit_cmp_insn.
|
|||
|
|
|||
|
* fold-const.c (decode_field_reference): Add missing arg declaration.
|
|||
|
|
|||
|
* expmed.c (store_bit_field): Add missing last argument to
|
|||
|
recursive call.
|
|||
|
|
|||
|
* cse.c (cse_insn): Remove extra arg passed to rtx_equal_p.
|
|||
|
|
|||
|
* Makefile.in (proto): Make protoize.1 and unprotoize.1.
|
|||
|
(protoize.1, unprotoize.1): New targets.
|
|||
|
(install_man): Install protoize.1 and unprotoize.1./
|
|||
|
* proto-unproto.1: New file.
|
|||
|
|
|||
|
* loop.c (scan_loop): Properly set SET_SRC in movables entry for
|
|||
|
MOVE_INSN == 1 and CONSEC > 0 case.
|
|||
|
(force_movables): Don't look at SET_SRC when CONSEC > 0.
|
|||
|
|
|||
|
* expr.c (expand_expr, case ARRAY_REF): Ensure TYPE_POINTER_TO
|
|||
|
gets initialized after we build a variant type.
|
|||
|
|
|||
|
Fri Nov 30 00:35:06 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* m68k.md (ashr of 16 to 24 bits): Use extl, not extw.
|
|||
|
|
|||
|
Thu Nov 29 21:41:03 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* tm-vax.h (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): New macros.
|
|||
|
|
|||
|
* gcc.c (add_prefix): Add new element, don't replace old first elt.
|
|||
|
|
|||
|
* dwarfout.c (dwarfout_finalize): Go to DEBUG_SECTION first thing.
|
|||
|
|
|||
|
Thu Nov 29 17:50:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu)
|
|||
|
|
|||
|
* stmt.c (expand_end_loop): Stop looking for branch to the loop
|
|||
|
exit when we hit a NOTE_INSN_BLOCK_{BEG,END}.
|
|||
|
* jump.c (duplicate_loop_exit_test): Likewise.
|
|||
|
Also, only copy line-number notes.
|
|||
|
|
|||
|
* integrate.c (expand_inline_function): Call expand_expr for the
|
|||
|
arguments before allocating maps that are based on register numbers.
|
|||
|
|
|||
|
* loop.c (loop_reg_used_before_p): Accept new argument, SET, to
|
|||
|
indicate which part of INSN is setting the relevant register.
|
|||
|
(scan_loop): Pass new arg to loop_reg_used_before_p.
|
|||
|
|
|||
|
* function.c (optimize_bit_field): Don't assume ZERO_EXTRACT can
|
|||
|
be replaced by MEM; use validate_change to check.
|
|||
|
|
|||
|
* reload.c (find_reloads_toplev): Add missing arg to recursive call.
|
|||
|
|
|||
|
* calls.c (expand_call): Correct two cases of missing mode to gen_rtx.
|
|||
|
|
|||
|
Thu Nov 29 02:42:35 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* version.c: Bump version number to 1.90.04.
|
|||
|
|
|||
|
* toplev.c (rest_of_compilation): If FLAG_PIC is nonzero, emit any
|
|||
|
special PIC code once we start really compiling a function (i.e., we
|
|||
|
are not in an inline function). Inline functions cannot
|
|||
|
meaningfully hold PIC code because there is no notion of position
|
|||
|
independence in code that isn't really being written down.
|
|||
|
|
|||
|
* Makefile.in: Don't build cplus-cadillac.o by default. Build
|
|||
|
cplus-edsel.o instead. Until Lucid frees their programming
|
|||
|
environment, their Cadillac will always be an Edsel to GNUsers.
|
|||
|
|
|||
|
* stmt.c (fixup_gotos): Change loop to run in two passes so that
|
|||
|
cleanups don't experience a race condition.
|
|||
|
(expand_cleanups): Replace Nov 5 word-around with consistency check.
|
|||
|
The same cleanups should never be run twice.
|
|||
|
|
|||
|
* cplus-decl.c (lang_{init,finish}): Move these functions...
|
|||
|
cplus-lex.c: ...to here. Also, make change to lang_init analogous
|
|||
|
to Nov 27 change for C compiler.
|
|||
|
|
|||
|
* cplus-decl.c (pushdecl): Don't warn about static/extern conflicts
|
|||
|
if X is a TYPE_DECL.
|
|||
|
(build_enumerator): Certain CONST_INT nodes cannot be coopted to be
|
|||
|
the constant for enumerator. Mark them as non-shareable and don't
|
|||
|
coopt them.
|
|||
|
|
|||
|
* cplus-decl.c (lang_{init,finish}): Declare these to be void
|
|||
|
functions to match new tree.h.
|
|||
|
|
|||
|
Wed Nov 28 18:48:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* reload1.c (eliminate_regs): Convert (subreg (mem)) to (mem) when
|
|||
|
not a paradoxical SUBREG.
|
|||
|
|
|||
|
Wed Nov 28 17:15:43 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* emit-rtl.c (gen_label_rtx): Clear LABEL_NAME via gen_rtx.
|
|||
|
|
|||
|
Tue Nov 27 21:54:15 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* varasm.c (assemble_external): Never write a .extern for a static
|
|||
|
name.
|
|||
|
|
|||
|
* recog.c (validate_replace_rtx_1): Handle making a SUBREG of a MEM
|
|||
|
by trying a new MEM.
|
|||
|
|
|||
|
Tue Nov 27 11:54:28 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-lang.c, objc-action.c: Include input.h.
|
|||
|
(lang_init): Call check_newline here.
|
|||
|
* toplev.c (compile_file): Not here.
|
|||
|
Call lang_init after setting input_filename.
|
|||
|
|
|||
|
* tree.h: Declare numerous functions that the front end must provide.
|
|||
|
|
|||
|
* rtl.h (LABEL_REFS): Use operand 5, same as LABEL_NUSES.
|
|||
|
|
|||
|
* toplev.c (warn_return_type, W_options): Handle -Wreturn-type here.
|
|||
|
* c-decl.c: Not here.
|
|||
|
* flags.h: Declare it here, not in c-tree.h.
|
|||
|
|
|||
|
* gcc.c (pexecute): Wait and retry if fork fails.
|
|||
|
|
|||
|
* expr.c (do_jump): Pass all args to get_inner_reference.
|
|||
|
(expand_assignment): Fix typo in arg to get_inner_reference.
|
|||
|
|
|||
|
* tm-hp9k320.h (STANDARD_STARTFILE_PREFIX): Don't alter if already set.
|
|||
|
|
|||
|
Mon Nov 26 18:28:51 1990 Michael I Bushnell (mib at churchy.ai.mit.edu)
|
|||
|
|
|||
|
* cccp.c (handle_directive): Do backslash-newlines inside of
|
|||
|
strings.
|
|||
|
|
|||
|
Mon Nov 26 15:39:29 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* cccp.c (main): Handle -w.
|
|||
|
(warning): Do nothing if -w.
|
|||
|
* gcc.c (compilers): Pass -w to cpp.
|
|||
|
|
|||
|
* c-decl.c (grokdeclarator): Don't discard arg types
|
|||
|
for prototype even if traditional.
|
|||
|
|
|||
|
Sun Nov 25 20:52:31 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* protoize.c: Undef CHAR_BIT, etc, before including limits.h.
|
|||
|
|
|||
|
* reload1.c (old_asm_operands_vec, new_asm_operands_vec):
|
|||
|
Type should point to a vector.
|
|||
|
(Eliminate_regs): For asm_operands, copy the vector properly.
|
|||
|
|
|||
|
Sun Nov 25 20:35:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu)
|
|||
|
|
|||
|
* jump.c (jump_optimize): Fix typo in stack push combining code.
|
|||
|
|
|||
|
* reload1.c (eliminate_regs): Ensure we share operands 3 and 4
|
|||
|
of ASM_OPERANDS operations if they were originally shared.
|
|||
|
Copy all rtx flags when making a new MEM.
|
|||
|
(eliminate_regs_in_insn): Initialize for ASM_OPERANDS sharing check.
|
|||
|
|
|||
|
Sun Nov 25 16:37:10 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* Makefile.in (stamp-gnulib2): Don't depend on gnulib2-indirect.
|
|||
|
|
|||
|
* gcc.c (do_spec_1): Handle %W{...}.
|
|||
|
(default_compilers): Use %W{...} when passing -o option.
|
|||
|
|
|||
|
Sat Nov 24 16:39:56 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* cplus-lex.c (init_lex, do_pending_inlines, reinit_lang_specific):
|
|||
|
Add conditionals for __GNU_LIBRARY__.
|
|||
|
|
|||
|
Thu Nov 22 13:48:06 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* fold-const.c (optimize_bit_field_compare): Pass additional
|
|||
|
arg to get_inner_reference; it gets set if something was volatile.
|
|||
|
(decode_field_reference): New arg PVOLATILEP; passed to
|
|||
|
get_inner_reference.
|
|||
|
(merge_component_references): Add pointer to place to store if
|
|||
|
something is volatile to calls to decode_field_reference; don't
|
|||
|
do anything if it gets set (this may be very conservative).
|
|||
|
|
|||
|
* stmt.c (expand_end_loop): Skip initial CODE_LABEL at start of
|
|||
|
loop when looking for qualified conditional exit.
|
|||
|
|
|||
|
* reload.c (push_reload): If (subreg:M1 (reg:M2 ....)) and we
|
|||
|
have trouble access the register in M1, reload the reg, not subreg.
|
|||
|
Fix typo in testing for memory.
|
|||
|
(reload): Force reload of the operand in the above cases.
|
|||
|
|
|||
|
Wed Nov 21 17:39:42 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* loop.c (strength_reduce, combine_givs): Don't penalize
|
|||
|
non-replaceable givs unless they are user variables; temporaries
|
|||
|
are probably dead even though we can't prove it.
|
|||
|
|
|||
|
* integrate.c (save_constants): Don't get confused by looking
|
|||
|
inside CONST_DOUBLE_MEM.
|
|||
|
Call recursively on what get_pool_constant returned, in case it
|
|||
|
was itself the address of a pool constant.
|
|||
|
(copy_for_inline, copy_rtx_and_substitute, restore_constants):
|
|||
|
Remake CONST_DOUBLE so it gets chained in correctly and we don't use
|
|||
|
obsolete CONST_DOUBLE_MEM values. Call recusively on operand we are
|
|||
|
about to pass to force_const_mem; it might have been a case of a
|
|||
|
constant value being an address of another constant.
|
|||
|
|
|||
|
* loop.c (find_mem_givs): Don't make a DEST_ADDR giv with mult_val == 1
|
|||
|
and add_val == 0.
|
|||
|
(maybe_eliminate_biv_1): Turn off elimination in (compare biv1 biv2)
|
|||
|
cases; they have problems.
|
|||
|
|
|||
|
Wed Nov 21 16:06:14 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* dwarfout.c (location_attribute): Offset for bitfields is special.
|
|||
|
|
|||
|
* expr.c (get_inner_reference): New arg pvolatilep.
|
|||
|
(expand_expr, expand_assignment): Use to set MEM_VOLATILE_P.
|
|||
|
|
|||
|
Wed Nov 21 10:34:25 1990 Tom Wood (wood at dg-rtp.dg.com)
|
|||
|
|
|||
|
* stor-layout.c (layout_decl): Record whether a FIELD_DECL is a
|
|||
|
bit-field and if so its original type.
|
|||
|
* tree.h (DECL_BIT_FIELD_TYPE): New.
|
|||
|
* dbxout.c (dbxout_type): Use DECL_BIT_FIELD_TYPE.
|
|||
|
* dwarfout.c (output_member_die, bit_offset_attribute,
|
|||
|
bit_size_attribute, member_declared_type): Use DECL_BIT_FIELD_TYPE.
|
|||
|
* sdbout.c (sdbout_one_type): Use DECL_BIT_FIELD_TYPE.
|
|||
|
|
|||
|
* sdbout.c (DEBUGGER_ARG_OFFSET, DEBUGGER_AUTO_OFFSET): New
|
|||
|
interfaces to compute the location of arguments and automatic
|
|||
|
variables.
|
|||
|
* dbxout.c (DEBUGGER_ARG_OFFSET, DEBUGGER_AUTO_OFFSET): Likewise.
|
|||
|
|
|||
|
* dbxout.c (dbxout_parms): Describe a parameter passed in
|
|||
|
registers but living on the stack as N_PSYM rather than N_LSYM.
|
|||
|
These are typically arg_pointer based locations.
|
|||
|
|
|||
|
* out-m88k.c (m88k_debugger_offset): New function.
|
|||
|
* tm-m88k.h (DEBUGGER_ARG_OFFSET, DEBUGGER_AUTO_OFFSET): Replaces
|
|||
|
SDB_AUTO_NORMALIZE_OFFSET.
|
|||
|
* tm-m88k.h (STACK_BOUNDARY): Update to 16 byte aligned stacks.
|
|||
|
|
|||
|
Tue Nov 20 23:48:57 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* dwarfout.c (dwarfout_init): Set stack depth to 1 at start.
|
|||
|
(output_padded_null_die): New function.
|
|||
|
(dwarfout_finalize): Use that to ensure length divisible by 4.
|
|||
|
|
|||
|
* ns32k.md (addsi3): Don't use `addr' for very large displacements.
|
|||
|
|
|||
|
Tue Nov 20 05:48:42 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* jump.c (can_reverse_comparison_p): It is safe to reverse an EQ
|
|||
|
or NE comparison, even if IEEE floating-point.
|
|||
|
|
|||
|
* integrate.h (struct inline_remap): const_*_map now maps registers
|
|||
|
in calling function, not called function.
|
|||
|
Add fields to save values recorded from SETs.
|
|||
|
* integrate.c: Now includes insn-config.h and real.h.
|
|||
|
(expand_inline_function): New meaning for const_*_map.
|
|||
|
Don't fill in constant equivalences here; now done in try_constants.
|
|||
|
Show CALL_INSNs potentialy clobber all hard registers since we
|
|||
|
now record equivalences for hard registers.
|
|||
|
(try_constants): No longer need original RTL; all callers changed.
|
|||
|
Call note_stores to kill any known equivalences for registers changed.
|
|||
|
Record equivalences for PC, CC0, and registers set by this insn.
|
|||
|
(subst_constants): No longer need original RTL; all callers changed.
|
|||
|
Reflect new meaning of const_*_map.
|
|||
|
Perform more extensive constant folding, basically a subset of
|
|||
|
fold_rtx in cse.c; specifically, fold the result of comparison
|
|||
|
operations and IF_THEN_ELSE operations.
|
|||
|
Record the constant equivalences of SETs, if any.
|
|||
|
(try_fold_condition, const_equiv, fold_out_const_cc0): Deleted.
|
|||
|
* Makefile.in (integrate.o): Now includes insn-config.h and real.h.
|
|||
|
|
|||
|
Sat Nov 17 07:48:45 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* local-alloc.c (local_alloc): Don't allocate a reg that wants a
|
|||
|
class that has only one register; let global-alloc do it so that it
|
|||
|
can be given a GENERAL_REG if reload needs a spill reg of that class.
|
|||
|
|
|||
|
* regclass.c (regclass, reg_class_record): Count savings in loops as
|
|||
|
being greater the same way we adjust reg_n_refs for loops in flow.c.
|
|||
|
|
|||
|
* expmed.c (store_bit_field, extract_bit_field): Remove change of
|
|||
|
Oct 16; it causes problems with long long bit fields.
|
|||
|
|
|||
|
* rtlanal.c (reg_overlap_mentioned_p): If called with a constant,
|
|||
|
return zero. If called with a MEM, return 1 iff the second arg
|
|||
|
contains a MEM.
|
|||
|
* reload.c (push_reload): Call reg_overlap_mentioned_p only if OUT
|
|||
|
is a MEM and then pass it the address of OUT.
|
|||
|
|
|||
|
* cse.c (cse_insn): Refine when SRC_EQV, SRC, and DEST are added
|
|||
|
to the hash table. SRC_EQV is not added to the hash table if it
|
|||
|
is volatile or equal to DEST and similarly for SRC. DEST is not
|
|||
|
added to the hash table unless either SRC_EQV or SRC is.
|
|||
|
|
|||
|
Thu Nov 15 23:43:20 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-typeck.c (convert_for_assignment): Change warning message.
|
|||
|
|
|||
|
Thu Nov 15 18:44:49 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* stmt.c (expand_end_loop): Generalize code to look for more
|
|||
|
than one branch to the exit and include unconditional branches
|
|||
|
to the exit; move the whole range to the end of the loop.
|
|||
|
* jump.c (duplicate_loop_exit_test): New function.
|
|||
|
(jump_optimize): Call it.
|
|||
|
Don't allocate jump_chain until we have finished deleting dead code.
|
|||
|
Leave some more room in jump_chain.
|
|||
|
(simplejump_p): Reject if not JUMP_INSN.
|
|||
|
(delete_insn): If simplejump_p, remove from jump chain.
|
|||
|
* loop.c (loop_skip_over): Deleted.
|
|||
|
(scan_loop): No longer call it.
|
|||
|
* cse.c (predecide_loop_entry): Deleted.
|
|||
|
(cse_basic_block): No longer call it.
|
|||
|
|
|||
|
Thu Nov 15 18:00:20 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* math-68881.h (HUGE_VAL): Add extra braces for Sun.
|
|||
|
|
|||
|
* stor-layout.c (layout_type): Don't let array have less
|
|||
|
alignment than its mode calls for.
|
|||
|
|
|||
|
Thu Nov 15 13:05:30 1990 Tom Wood (wood at dg-rtp.dg.com)
|
|||
|
|
|||
|
* sdbout.c (sdbout_parms, sdbout_reg_parms): Reimplemented based
|
|||
|
on dbxout_parms and dbxout_reg_parms.
|
|||
|
|
|||
|
Wed Nov 14 08:48:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* emit-rtl.c (emit_...): All of these now return the last insn
|
|||
|
emitted; previously some of them returned void.
|
|||
|
(emit_barrier_before): New function, similar to others.
|
|||
|
* rtl.h: All emit_... functions now return an rtx; reorder so
|
|||
|
declarations are in the same order as definitions in emit-rtl.c.
|
|||
|
|
|||
|
* reorg.c (steal_delay_list_from_{target,fallthrough}): Add missing
|
|||
|
test when checking candidate insn for resource conflicts.
|
|||
|
|
|||
|
Wed Nov 14 07:08:19 1990 Tom Wood (wood at dg-rtp.dg.com)
|
|||
|
|
|||
|
* c-parse.y (pushlevel, compstmt): Place a line note at the first
|
|||
|
token beginning a block and at the close brace ending a block.
|
|||
|
These are the conventional locations for SDB and DWARF debugging
|
|||
|
information.
|
|||
|
|
|||
|
Tue Nov 13 18:16:47 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* function.c (assign_stack_local): If alignment not specified
|
|||
|
and not BLKmode, use at least word alignment.
|
|||
|
(assign_outer_stack_local): Likewise.
|
|||
|
|
|||
|
* sparc.md: Turn off patterns that specify no_ov or CC_NO_OVERFLOW.
|
|||
|
|
|||
|
* dwarfout.c (file_attribute): Fix arg to ASM_OUTPUT_DWARF_ATTRIBUTE.
|
|||
|
(AT_line, AT_file): New definitions.
|
|||
|
|
|||
|
* out-i860.c (output_block_move): Move .Lm%3 down one insn.
|
|||
|
|
|||
|
* c-decl.c (grokdeclarator): -funsigned-bit-field doesn't affect enums.
|
|||
|
|
|||
|
Tue Nov 13 09:28:27 1990 Tom Wood (wood at dg-rtp.dg.com)
|
|||
|
|
|||
|
* gcc.c (default_compilers): Report an error if -C is used without
|
|||
|
-E. Pass -H to cpp.
|
|||
|
|
|||
|
* sdbout.c (plain_type, plain_type1): save and output the
|
|||
|
rightmost array dimensions.
|
|||
|
|
|||
|
* syms.h (enum sdb_type): Add T_VOID, equal in value to T_ARG.
|
|||
|
* sdbout.c (plain_type_1): Use T_VOID for VOID_TYPE and define it
|
|||
|
to be T_INT if not present in <syms.h>.
|
|||
|
|
|||
|
* sdbout.c (sdbout_toplevel_data): Use abort rather than fatal.
|
|||
|
|
|||
|
Mon Nov 12 08:49:33 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* expr.c (compare): Fix use of GET_MODE_CLASS so we don't abort if
|
|||
|
MODE is VOIDmode.
|
|||
|
* optabs.c (init_optab): Call `xmalloc' instead of `malloc'.
|
|||
|
|
|||
|
* out-sparc.c (hard_regno_mode_ok): Change initialization of array
|
|||
|
to match behavior of Nov 11 change for complex modes.
|
|||
|
|
|||
|
* jump.c (delete_labelref_insn): Chase all LOG_LINKS of insn to try
|
|||
|
to delete references to LABEL. This is needed for machines like
|
|||
|
SPARC which use multiple insns to get the value of LABEL into a
|
|||
|
register.
|
|||
|
|
|||
|
Mon Nov 12 16:07:27 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* machmode.def (SCmode, ...): Class is MODE_COMPLEX_FLOAT.
|
|||
|
|
|||
|
Sun Nov 11 00:27:34 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* tm-i860.h (HARD_REGNO_MODE_OK): Handle values more than 2 regs long.
|
|||
|
* tm-m68k.h (HARD_REGNO_MODE_OK): Likewise, for d7/a0 boundary.
|
|||
|
* tm-spur.h (HARD_REGNO_MODE_OK): Likewise, for 31/32 boundary.
|
|||
|
* tm-*.h (HARD_REGNO_NREGS): Use GET_MODE_NUNITS to handle
|
|||
|
complex values in fp registers on machines where one reg holds a DF.
|
|||
|
|
|||
|
* sdbout.c (sdbout_one_type): Do nothing for incomplete type.
|
|||
|
|
|||
|
* c-decl.c (duplicate_decls): Warning only when redefining built-in fn.
|
|||
|
|
|||
|
* c-decl.c (init_decl_processing): Use sizetype, not unsigned long,
|
|||
|
in prototypes for memcpy and memcmp.
|
|||
|
|
|||
|
* c-parse.y (component_decl): Don't read the semicolon here.
|
|||
|
|
|||
|
* toplev.c (compile_file): Reverse top-level decls before output.
|
|||
|
|
|||
|
Sat Nov 10 22:27:47 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* stor-layout.c (layout_type): Use MODE_COMPLEX_{INT,FLOAT}.
|
|||
|
|
|||
|
Sat Nov 10 20:34:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* reload.c: Provide a default definition of REGISTER_MOVE_COST.
|
|||
|
|
|||
|
Sat Nov 10 01:43:09 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* cplus-init.c (emit_base_init): Don't use CLASSTYPE_ASSOC as a list
|
|||
|
of only immediate basetypes anymore. Use `get_base_distance' to
|
|||
|
check whether a type is an immediate basetype or not.
|
|||
|
|
|||
|
* stmt.c (expand_return): Don't emit a USE if VAL is a
|
|||
|
pseudo-register.
|
|||
|
|
|||
|
* integrate.c (function_cannot_inline_p): Call to strcmp for
|
|||
|
"__builtin_va_alist" must use IDENTIFIER_POINTER not
|
|||
|
DECL_NAME.
|
|||
|
|
|||
|
* genattrtab.c (check_attr_test): Use XSTR macro instead of
|
|||
|
XEXP macro in places where strings are used.
|
|||
|
|
|||
|
* tree.c (type_hash_lookup): Have to check TYPE_DOMAIN for non-zero
|
|||
|
before comparing the equality of the possible lists.
|
|||
|
|
|||
|
* cplus-typeck.c (build_c_cast): Check TREE_TYPE before checking
|
|||
|
that the TREE_TYPE is an OFFSET_TYPE.
|
|||
|
|
|||
|
* cplus-typeck.c (c_expand_return): Use DECL_RESULT of
|
|||
|
current_function_decl instead of `result' since `result' might be
|
|||
|
set to zero.
|
|||
|
|
|||
|
* cplus-decl.c (xref_tag): Fixed typo in setting
|
|||
|
TYPE_USES_COMPLEX_INHERITANCE.
|
|||
|
|
|||
|
* cplus-tree.c (assoc_value): Changed interface to take COPYING
|
|||
|
parameter.
|
|||
|
* cplus-{class,init,search,tree}.c All callers changed.
|
|||
|
|
|||
|
* cplus-typeck.c (build_c_cast): Resolve OFFSET_REFs if the type we
|
|||
|
are converting to is not an OFFSET_TYPE.
|
|||
|
|
|||
|
Thu Nov 8 15:26:27 1990 Craig Burley (burley at pogo.ai.mit.edu)
|
|||
|
|
|||
|
* tm-*.h: Try to change HARD_REGNO_NREGS, HARD_REGNO_OK, and other
|
|||
|
macro defs to handle new complex type stuff. Mostly guesswork; needs
|
|||
|
checking by people who really know each machine.
|
|||
|
* machmode.def (SCmode, DCmode, XCmode, TCmode): New complex modes.
|
|||
|
* machmode.h (GET_MODE_ALIGNMENT): New macro from stor-layout.c.
|
|||
|
* tree.c (build_complex_type): New function.
|
|||
|
* stor-layout.c (layout_type): Handle COMPLEX_TYPE.
|
|||
|
* expr.c (compare1, compare, move_block_to_reg, emit_push_insn):
|
|||
|
Change uses of GET_MODE_CLASS.
|
|||
|
* optabs.c (expand_binop, expand_twoval_binop, expand_unop):
|
|||
|
(emit_cmp_insn): Likewise.
|
|||
|
|
|||
|
Thu Nov 8 06:19:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* local-alloc.c (no_conflict_p): Initialize *WHERE_DEAD; previously
|
|||
|
uninitialized.
|
|||
|
|
|||
|
Thu Nov 8 01:08:45 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-parse.y (yylex): Size of wide STRING_CST counted terminator wrong.
|
|||
|
|
|||
|
Wed Nov 7 14:55:38 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* gnulib2.c (L_trampoline): Put it inside a dummy function.
|
|||
|
|
|||
|
* enquire.c: Renamed from hard-params.c; new vers from steven@cwi.nl.
|
|||
|
Modified to undef CHAR_BIT, etc. if defined in stdio.h.
|
|||
|
* Makefile.in (enquire): Targets renamed.
|
|||
|
(enquire.o): Define NO_MEM.
|
|||
|
|
|||
|
Wed Nov 7 14:18:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* jump.c (invert_jump): If it is going to fail (i.e., redirect_jump
|
|||
|
fails), don't invert the jump.
|
|||
|
|
|||
|
* expr.c (expand_expr, case COND_EXPR): Don't accept a hard register
|
|||
|
as a target if we are going to store into it before testing the
|
|||
|
condition because that evaluation may involve a subroutine call
|
|||
|
which might clobber it.
|
|||
|
|
|||
|
* jump.c (delete_jump): reg_set_p should be called with PATTERN (insn).
|
|||
|
(thread_jumps): Add omitted last argument to rtx_equal_for_thread_p.
|
|||
|
|
|||
|
* reload.c (find_reloads): Only skip insns which set one hard register
|
|||
|
to another if the cost of doing so is low; if not, there may not be
|
|||
|
a single insn to do the copy and we may need a reload register.
|
|||
|
|
|||
|
Wed Nov 7 00:01:18 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-parse.y (component_decl_list): Allow missing semi at end.
|
|||
|
|
|||
|
* loop.c (move_movables): When moving and deleting library call,
|
|||
|
don't be confused if an insn is deleted.
|
|||
|
|
|||
|
Tue Nov 6 20:49:57 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* tm-m68k.h (TRANSFER_TO_TRAMPOLINE): Fix asm syntax.
|
|||
|
|
|||
|
* xm-iris.h (alloca): Delete redundant definition.
|
|||
|
* tm-iris.h (CPP_SPEC): Define variant symbols starting with _.
|
|||
|
Define __EXTENSIONS__.
|
|||
|
|
|||
|
* config.gcc (editing .gdbinit): Search current dir, not just srcdir.
|
|||
|
|
|||
|
Tue Nov 6 22:24:09 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* expr.c (expand_expr, case COND_EXPR): Generate efficient code for
|
|||
|
A ? A : FOO and similar.
|
|||
|
|
|||
|
* combine.c (subst): If we have, e.g., (lt CONST FOO), convert it
|
|||
|
to (gt FOO CONST).
|
|||
|
|
|||
|
* recog.c (comparison_operand): Use comparison_code_p.
|
|||
|
|
|||
|
* genconfig.c (walk_insn_part): Add operand to indicate if PART is
|
|||
|
going to be used to recognize an insn (as opposed to emitting rtl).
|
|||
|
If not, ignore CC0.
|
|||
|
(gen_insn, gen_expand, gen_split, gen_peephole): Add new operand to
|
|||
|
walk_insn_part calls.
|
|||
|
|
|||
|
* cse.c (find_comparison_args): Correctly compute rtx_code of
|
|||
|
comparison; if we find another comparison code inside, use it.
|
|||
|
* loop.c (get_condition): Likewise.
|
|||
|
|
|||
|
* expr.c (expand_builtin): For ffs, don't pass VOIDmode to expand_unop.
|
|||
|
|
|||
|
Mon Nov 5 12:55:00 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* final.c (output_addr_const): Don't print parens for CONST.
|
|||
|
|
|||
|
* reload1.c (choose_reload_regs): Handle case where find_equiv_reg
|
|||
|
returns a SUBREG. Also, use variable `regno' uniformly throughout
|
|||
|
code that finds equivalent register.
|
|||
|
|
|||
|
* gnulib2.c (__floatdisf, __fixunssfsi): New functions.
|
|||
|
(__fixsfdi, __fixunssfdi): New functions.
|
|||
|
* gnulib.c (__floatsisf, __fixsfsi): New functions.
|
|||
|
|
|||
|
Mon Nov 5 06:37:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* fold-const.c (fold, case EQ_EXPR and NE_EXPR): Convert, e.g.,
|
|||
|
(A & 2) == 2 to (A & 2) != 0. This eliminates the need for these
|
|||
|
patterns in MD files.
|
|||
|
Detect more general cases of comparing something with itself.
|
|||
|
|
|||
|
Mon Nov 5 00:09:55 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* stmt.c (expand_cleanups): Don't run any cleanup twice.
|
|||
|
|
|||
|
Sun Nov 4 23:49:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* expr.c (convert_move): Use emit_no_conflict_block when converting
|
|||
|
SImode to DImode.
|
|||
|
If have slt insn, emit a compare insn; we must not have a use of
|
|||
|
cc0 without a set; normally, the compare will be deleted as
|
|||
|
redundant in final.c.
|
|||
|
Use shift rather than clear/test/negate for high-order word when
|
|||
|
doing sign extension.
|
|||
|
|
|||
|
* optabs.c (emit_no_conflict_block): Don't put REG_NO_CONFLICT
|
|||
|
notes on the trailing copy insn; nobody looks there.
|
|||
|
|
|||
|
* combine.c (try_combine): Don't combine a reg-reg copy if the
|
|||
|
destination is used in a REG_NO_CONFLICT note.
|
|||
|
|
|||
|
* reload.c (find_equiv_reg): Use true_regnum to support SUBREGs
|
|||
|
as well as REGs.
|
|||
|
|
|||
|
Sun Nov 4 12:55:03 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* i386.md (extend*): Take out last change.
|
|||
|
Unix assembler rejects movsx...
|
|||
|
|
|||
|
* expr.c (expand_expr): Special case for ignored volatile
|
|||
|
failed to return.
|
|||
|
|
|||
|
Sat Nov 3 14:42:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* expr.c (do_jump, case PLUS_EXPR): Turn off this case; it was a
|
|||
|
pessimization.
|
|||
|
|
|||
|
Fri Nov 2 01:51:31 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* stmt.c (expand_return): Don't emit a USE if VAL is a
|
|||
|
pseudo-register.
|
|||
|
|
|||
|
Fri Nov 2 15:30:48 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* gnulib2.c (__builtin_saveregs): Add version for i860.
|
|||
|
|
|||
|
* out-i860.c (output_block_move): Rearrange the copy loop.
|
|||
|
Now uses two labels and a more complicated lead-in.
|
|||
|
|
|||
|
Fri Nov 2 14:17:24 1990 Tom Wood (wood at dg-rtp.dg.com)
|
|||
|
|
|||
|
* m88k.md (extendsidi2): New define_expand.
|
|||
|
|
|||
|
* out-m88k.c: Converted various constructs to use conventinal
|
|||
|
formatting.
|
|||
|
|
|||
|
* m88k.md (ext pattern): Must have parens.
|
|||
|
* m88k.md (mul/div patterns): Added better documentation. Removed
|
|||
|
unfounded restriction on immediate values.
|
|||
|
* m88k.md (increment and test peephole): Don't use %L.
|
|||
|
|
|||
|
* out-m88k.c (m88k_layout_frame): Must allocate space for the
|
|||
|
addressing base register (-mpic).
|
|||
|
* out-m88k.c (output_tdesc): Use version 2 tdesc with PIC.
|
|||
|
|
|||
|
* tm-m88k.h, tm-m88kdgux.h,: Don't predefine memcpy and others.
|
|||
|
* tm-m88k.h: Fixes for dwarf.
|
|||
|
* tm-m88ksvr4.h: Dwarf changes.
|
|||
|
* xm-m88k.h xm-m88kdgux.h xm-v88r32.h: Update comments.
|
|||
|
|
|||
|
Fri Nov 2 12:30:15 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* jump.c (comparison_dominates_p): Return 1 if codes are the same.
|
|||
|
(thread_jumps): Use get_label_after.
|
|||
|
|
|||
|
* a29k.md (movdi): Handle CONST_INT as well as CONST_DOUBLE.
|
|||
|
(comparisons): Fix typo in define_split for floating-point NE.
|
|||
|
|
|||
|
* reorg.c (fill_slots_from_thread): Don't mark as annulled if no
|
|||
|
delay list.
|
|||
|
|
|||
|
* loop.c: Allow use of any register to store comparison results.
|
|||
|
(loop_skip_over): Don't treat comparison specially; copy all insns
|
|||
|
preceeding the jump.
|
|||
|
(check_for_endtest, other_reg_use_p): Deleted.
|
|||
|
(can_eliminate_biv_p, eliminate_biv): Deleted; code merged and
|
|||
|
placed into new maybe_eliminate_p_1.
|
|||
|
(may_eliminate_biv, may_eliminate_biv_1): New functions; recursively
|
|||
|
look at all rtx to see if every occurrence of a biv can be
|
|||
|
eliminated.
|
|||
|
(check_eliminate_biv): Deleted; callers changed to call
|
|||
|
may_eliminate_biv.
|
|||
|
(get_condition): Rework to look into previous insns to find insns
|
|||
|
that set the first operand of comparison insns.
|
|||
|
|
|||
|
Thu Nov 1 22:07:42 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* cse.c (fold_rtx, case COMPARE): Only convert compare to test if
|
|||
|
HAVE_cc0 is defined.
|
|||
|
* combine.c (subst): Copy COMPARE case from fold_rtx.
|
|||
|
Simplify things like (ne (eq FOO BAR) (const_int 0)).
|
|||
|
|
|||
|
Thu Nov 1 18:06:56 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* math-68881.h (HUGE_VAL): Alternate definition for Suns.
|
|||
|
|
|||
|
* config.gcc (sun3, etc.): Assume os4 as default for Sun 3 and Sun 4.
|
|||
|
|
|||
|
* tm-i386v.h (STARTFILE_SPEC, LIB_SPEC): Handle -posix.
|
|||
|
(CPP_SPEC): New macro.
|
|||
|
(LIB_SPEC): Handle -shlib.
|
|||
|
|
|||
|
* c-decl.c (init_decl_processing): Make last arg to memcpy and memcmp
|
|||
|
an unsigned long, to be like size_t.
|
|||
|
|
|||
|
* Makefile.in (hard-params): Depend on gnulib2, not gnulib.
|
|||
|
|
|||
|
Wed Oct 31 22:12:33 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* config.gcc (ultrix): New alternative.
|
|||
|
|
|||
|
* i386.md (extend*): Change opcode to movsx. Was movs.
|
|||
|
|
|||
|
Wed Oct 31 09:41:27 1990 Tom Wood (wood at dg-rtp.dg.com)
|
|||
|
|
|||
|
* m88k.md: Deleted an old pattern for subtracting 0.
|
|||
|
* m88k.md: Deleted patterns for aligned bit-field insns.
|
|||
|
* m88k.md: Changed define_expand to define_insn for mulsi3 and
|
|||
|
umulsi3.
|
|||
|
* m88k.md: Converted various constructs to use conventional
|
|||
|
formatting.
|
|||
|
* m88k.md (mak patterns): Fixed transcription errors.
|
|||
|
|
|||
|
Wed Oct 31 00:05:54 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-decl.c (init_decl_processing): Predefine the ordinary names
|
|||
|
of alloca, abs, memcpy, etc.
|
|||
|
|
|||
|
* c-decl.c (duplicate_decls): Allow redefining built-in as static,
|
|||
|
but optionally warn.
|
|||
|
|
|||
|
Tue Oct 30 14:39:17 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-decl.c (finish_function): Use DEFAULT_MAIN_RETURN in `main'.
|
|||
|
* tm-vms.h (DEFAULT_MAIN_RETURN): Define this.
|
|||
|
|
|||
|
* c-parse.y (yylex): Base is not 8 for just `0'.
|
|||
|
|
|||
|
* cccp.c (do_define): Invert test of compare_defs.
|
|||
|
|
|||
|
* cccp.c (make_definition): Convert newline to newline-newline.
|
|||
|
|
|||
|
* Makefile.in (hard-params): Depend on gnulib.
|
|||
|
|
|||
|
* m88k.md (divsi3): Delete declarations of gen_... functions.
|
|||
|
|
|||
|
Tue Oct 30 14:26:20 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* cse.c: Rework handling of comparisons to generalize better to
|
|||
|
machines that use registers to hold condition code information.
|
|||
|
(prev_insn_cc0*): Just store last rtx assigned to cc0 in prev_insn_cc0.
|
|||
|
(find_comparison_args): New function.
|
|||
|
(fold_rtx): Folded value of cc0 is the value previously stored into it.
|
|||
|
Rework handling of comparisons: use find_comparison_args to see what
|
|||
|
is being compared. If they are constants, compute the result of the
|
|||
|
comparison. If not, see if the two operands are equivalent (only for
|
|||
|
non FP or non-IEEE FP). Then see if we have already seen a comparison
|
|||
|
involving these operands that lets us give a value to this comparison.
|
|||
|
True comparisons return STORE_FLAG_VALUE, not 1.
|
|||
|
(fold_cc0): Deleted.
|
|||
|
(predecide_loop_entry): Call cse_insn on a copy of each insn at the
|
|||
|
loop test to propagate the values of items at the start of the loop.
|
|||
|
Then use fold_rtx to see if we know the result of the jump.
|
|||
|
(record_jump_equiv): Use new function find_comparison_args.
|
|||
|
(cse_insn): Just record value of CC0 if set; don't call fold_cc0.
|
|||
|
Don't modify PREV_INSN (insn) if INSN is a copy.
|
|||
|
(cse_main): Initialize const_true_rtx to rtx for STORE_FLAG_VALUE.
|
|||
|
|
|||
|
* jump.c (comparison_code_p, comparison_dominates_p): New functions.
|
|||
|
(thread_jumps): Use comparison_dominates_p.
|
|||
|
Remove debugging code.
|
|||
|
* reorg.c (condition_dominates_p): Use new function
|
|||
|
comparison_dominates_p.
|
|||
|
|
|||
|
* emit-rtl.c (next_cc0_user): Don't get confused by being call with a
|
|||
|
copy of an insn; use INSN_UID to check for an insn in a delay slot.
|
|||
|
|
|||
|
* rtl.c (reg_note_name): Add name for new REG_LABEL note.
|
|||
|
|
|||
|
* emit-rtl.c (make_insn_raw): No longer have JUMP_LABEL for INSN.
|
|||
|
|
|||
|
Tue Oct 30 09:26:15 1990 Tom Wood (wood at dg-rtp.dg.com)
|
|||
|
|
|||
|
* Update what strings in files edited so far.
|
|||
|
* tm-m88k.h, tm-m88kdgux.h, tm-m88ksv4r.h: Introduce VERSION_STRING
|
|||
|
and VERSION_INFO to more appropriately identify the compiler.
|
|||
|
|
|||
|
* tm-m88k.h (ASM_OUTPUT_OPCODE): Stop processing the opcode if `%'
|
|||
|
is encountered.
|
|||
|
* out-m88k.c (print_operand): Add a tab to %L output. Delete
|
|||
|
unused cases.
|
|||
|
|
|||
|
* m88k.md: Rework the movstrsi pattern and provide call_block_move
|
|||
|
and call_block_move_loop to support expand_block_move.
|
|||
|
* out-m88k.c: Rework the block move functions.
|
|||
|
* make-m88k, make-m88kdgux: Eliminate movstr.h.
|
|||
|
|
|||
|
* m88k.md, out-m88k.c: Eliminate assembler comments.
|
|||
|
|
|||
|
* m88k.md (ashlsi3 ashrsi3 lshlsi3 lshrsi3): Eliminate warnings
|
|||
|
about out of range shifts.
|
|||
|
|
|||
|
* tm-m88k.h, out-m88k.c: Rename CONDITION_CODE_REGNUM CC0_REGNUM.
|
|||
|
|
|||
|
Mon Oct 29 18:06:54 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* final.c (final_end_function): Handle dwarf output.
|
|||
|
(final_scan_insn): Likewise.
|
|||
|
(output_source_line): Likewise, using ASM_OUTPUT_DWARF_LINE.
|
|||
|
* toplev.c (rest_of_decl_compilation): Likewise.
|
|||
|
(rest_of_compilation, main): Likewise.
|
|||
|
* varasm.c (assemble_variable): Likewise.
|
|||
|
* flags.h (enum debugger): Define DWARF_DEBUG.
|
|||
|
|
|||
|
* cccp.c (do_define): Rewrite criterion for warning.
|
|||
|
Don't warn if -D redefining symbol with constant numeric value.
|
|||
|
|
|||
|
* toplev.c (output_file_directive): New function.
|
|||
|
* sdbout.c (sdbout_filename): Deleted.
|
|||
|
* tm-3b1.h, tm-att386.h, tm-encore.h, tm-m88k.h,
|
|||
|
tm-mot3300.h, tm-tahoe.h, tm-vaxv.h (ASM_FILE_START): Use that.
|
|||
|
|
|||
|
* c-decl.c (named_labels): No longer static.
|
|||
|
(pushlevel): Clear named_labels.
|
|||
|
(poplevel): Don't clear it here.
|
|||
|
|
|||
|
Mon Oct 29 13:32:57 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* Makefile.in: Update dependencies for various files, mostly cplus-*
|
|||
|
files.
|
|||
|
|
|||
|
* rtl.def: Remove Sep 26 that added JUMP_LABELs to INSN and
|
|||
|
CALL_INSN.
|
|||
|
* rtl.h: Add REG_LABEL register note. For INSN and CALL_INSN, the
|
|||
|
presence of this register note has the same meaning that a non-NULL
|
|||
|
JUMP_LABEL would have with the Sep 26 change.
|
|||
|
* jump.c (jump_optimize): Revert to clearing JUMP_LABEL field of
|
|||
|
JUMP_INSNs only.
|
|||
|
(mark_jump_label): If INSN is an INSN or a CALL_INSN, add a
|
|||
|
REG_LABEL note if a LABEL appears (and no such note already exists).
|
|||
|
??? Once recorded, this information appears never to be used.
|
|||
|
|
|||
|
* jump.c (delete_jump): The deletion of INSN must take place when
|
|||
|
INSN is a simple jump. Also, don't try to optimize if we come
|
|||
|
across an insn with the reorg-generated pattern (USE (INSN ...)).
|
|||
|
|
|||
|
* cplus-lex.c, cplus-dbxout.c: Remove vestigial support for dumping
|
|||
|
and undumping the compiler.
|
|||
|
|
|||
|
* Merge cplus diffs from Kenner.
|
|||
|
* cplus-cvt.c (convert_to_integer): Fold the COND_EXPR we construct.
|
|||
|
* cplus-typeck.c (build_conditional_expr): Ditto in three places.
|
|||
|
* cplus-lex.c (yylex,do_pending_inlines): Add conditionals for
|
|||
|
_IBMR2. This hair will disappear when pcccp support is merged, but
|
|||
|
needed for now.
|
|||
|
* cplus-tree.h: Conditionalize use of non-int bitfield types on
|
|||
|
ONLY_INT_FIELDS. Also, remove duplication declarations of
|
|||
|
get_temp_name, get_temp_aggr, and get_temp_regvar; add declaration
|
|||
|
of build_decl_list.
|
|||
|
|
|||
|
Mon Oct 29 11:45:03 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* fixincludes: Fix missing semi in rusers.h.
|
|||
|
|
|||
|
Mon Oct 29 07:07:47 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* flow.c (mark_used_regs): When converting "...*p...; q = p + size"
|
|||
|
to "q = p, ...*q..., q = q + size", show that Q is needed after INSN.
|
|||
|
|
|||
|
* romp.md (negdi): Directly generate assembly code rather than
|
|||
|
converting this into a MINUS.
|
|||
|
|
|||
|
* fold-const.c (fold, case COND_EXPR): Add missing condition in test
|
|||
|
for (A ? 0 : A).
|
|||
|
|
|||
|
Sun Oct 28 15:01:19 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* flow.c (find_basic_blocks): An indirect jump can go
|
|||
|
to any label whose address is used as data.
|
|||
|
|
|||
|
* m68k.md (zero-extend QI): Use gen_rtx, not change_address.
|
|||
|
|
|||
|
* Makefile.in (USER_H): List va-*.h explicitly.
|
|||
|
(toplev.o): Depend on RTL_H.
|
|||
|
(stamp-*): Depend on move-if-change.
|
|||
|
(install-headers): Depend on various header files.
|
|||
|
(install-man): Depend on gcc.1.
|
|||
|
(gcc.o): Depend on gvarargs.h and obstack.h.
|
|||
|
|
|||
|
* Makefile.in: Make sure every `if' has an `else'.
|
|||
|
|
|||
|
* c-typeck.c (build_binary_op_nodefault): Prevent warning for
|
|||
|
variable shift count.
|
|||
|
|
|||
|
* i860.md (movsf): Handle moving from CONST_DOUBLE to reg or mem.
|
|||
|
|
|||
|
Sun Oct 28 09:39:14 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* jump.c (delete_jump): The deletion of INSN must take place when
|
|||
|
INSN is a simple jump. Also, don't try to optimize if we come
|
|||
|
across an insn with the reorg-generated pattern (USE (INSN ...)).
|
|||
|
|
|||
|
* sparc.md, tm-sparc.h, out-sparc.c: Significantly rewritten to take
|
|||
|
advantage of new 2.0 optimization capabilities.
|
|||
|
* old-sparc.md, tm-old-sparc.h, out-old-sparc.c: These are copies of
|
|||
|
the above files before the rewrite. They may be interesting for
|
|||
|
measuring performance of old vs. new machine description idioms.
|
|||
|
|
|||
|
Sun Oct 28 00:22:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* loop.c (scan_loop): Don't think that a branch to an end-test of
|
|||
|
a containing look is actually the branch to the end-test of the
|
|||
|
outer loop.
|
|||
|
|
|||
|
* reload.c (indirect_ok): Deleted.
|
|||
|
(find_reloads): Accept new arg IND_LEVELS instead of old IND_OK;
|
|||
|
pass this to find_reloads_address and find_reloads_toplev.
|
|||
|
(find_reloads_toplev): Accept IND_LEVELS and pass to
|
|||
|
find_reloads_address.
|
|||
|
(find_reloads_address): Accept IND_LEVELS and pass it on to
|
|||
|
find_reloads_address_1.
|
|||
|
When calling ourself recursively for a MEM as an address, show
|
|||
|
one indirect level has been used.
|
|||
|
(find_reloads_address_1): Accept IND_LEVELS and pass it to ourselves
|
|||
|
in recursive calls and to find_reloads_address.
|
|||
|
* reload1.c (spill_indirect_levels): New var; used to be
|
|||
|
spill_indirect_ok.
|
|||
|
(reload): Compute number of levels of indirection and set it into
|
|||
|
spill_indirect_levels.
|
|||
|
(reload, reload_as_needed): Pass spill_indirect_levels not
|
|||
|
spill_indirect_ok.
|
|||
|
|
|||
|
* reload.c (find_reloads): Make similar change to "V" as "O".
|
|||
|
|
|||
|
* reload1.c (eliminate_regs): For binary operations, don't call
|
|||
|
recursively on second arg if null (for EXPR_LIST).
|
|||
|
(eliminate_regs_in_insn): Perform register elmination in the
|
|||
|
REG_NOTES of an insn when we are doing it for the last time.
|
|||
|
|
|||
|
* vax.md (call_value_pop): Use correct operand number for number
|
|||
|
of bytes popped.
|
|||
|
|
|||
|
* tm-romp.h (EXTRA_CONSTRAINT): Ensure we ignore reg_renumber if
|
|||
|
register allocation hasn't been done yet.
|
|||
|
|
|||
|
* function.c (init_function_start): Initialize reg_renumber to zero;
|
|||
|
it is checked in rtx_renumbered_equal_p.
|
|||
|
|
|||
|
* loop.c (loop_optimize): Ensure we assign a new LUID to all
|
|||
|
special notes, including NOTE_INSN_FUNCTION_BEG (0).
|
|||
|
|
|||
|
Sat Oct 27 12:22:46 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* out-a29k.c (print_operand, output_prolog): Don't try to fill delay
|
|||
|
slots with parts of epilogue or prologue unless -O -fdelayed-branch.
|
|||
|
|
|||
|
* tm-rs6000.h (STRUCTURE_SIZE_BOUNDARY): Should be 8.
|
|||
|
|
|||
|
* reorg.c (mark_target_live_regs): Ignore REG_DEAD notes for pseudos;
|
|||
|
they must not have gotten hard registers.
|
|||
|
|
|||
|
Fri Oct 26 11:30:28 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* gcc.c (main): Set machine_suffix before reading specs file.
|
|||
|
|
|||
|
* c-typeck.c (build_binary_op_nodefault): Warn for bad shift counts.
|
|||
|
|
|||
|
* stor-layout.c (layout_record):
|
|||
|
BITFIELD_NBYTES_LIMITED affects bitfields only.
|
|||
|
|
|||
|
* loop.c (note_addr_stored): Don't assume PLUS in address is aggregate.
|
|||
|
|
|||
|
Fri Oct 26 00:46:09 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* cplus-tree.h: Declare `build_type_conversion' once instead of
|
|||
|
three times.
|
|||
|
|
|||
|
* loop.c (loop_skip_over): Handle machines without cc0.
|
|||
|
(labels_in_range_p): Fixed typo where this function returned 0 when
|
|||
|
it meant to return 1.
|
|||
|
(check_for_endtest): New function. Returns non-zero when
|
|||
|
argument is a simple conditional test insn (suitable for being the
|
|||
|
endtest of a loop).
|
|||
|
(strength_reduce): Use `check_for_endtest' to identify the endtest.
|
|||
|
Also fixed some typos in comments.
|
|||
|
(can_eliminate_biv): Use `check_for_endtest' here, too.
|
|||
|
(get_condition): Generalized to handle machines without cc0. Now
|
|||
|
THIS_CC_RTX is the value of the cc rtx.
|
|||
|
|
|||
|
* integrate.c (expand_inline_function): Conditionalize away
|
|||
|
cc0-specific code with HAVE_cc0.
|
|||
|
(try_constants): Add appropriate declaration for ORIG.
|
|||
|
(try_fold_condition): Generalized to work for non-cc0 condition
|
|||
|
values.
|
|||
|
|
|||
|
* cplus-type2.c (digest_init): Add missing declaration of FIELD.
|
|||
|
* rtl.h: Add missing declaration of plus_constant_for_output.
|
|||
|
* jump.c (can_reverse_comparison): Fixed typo.
|
|||
|
(delete_jump): Made to work without cc0_rtx.
|
|||
|
|
|||
|
Fri Oct 26 00:01:27 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* reorg.c: Conditionalize references to CC0_RTX on HAVE_cc0.
|
|||
|
|
|||
|
* reload.c (find_reloads): For the `o' constraint, if IND_OK is
|
|||
|
true, use offsettable_memref_p instead of the nonstrict version.
|
|||
|
|
|||
|
* jump.c (delete_jump): If HAVE_cc0 is not defined, it is not safe to
|
|||
|
delete previous insn that sets a condition code register, because it
|
|||
|
might not be dead. Rework to look at all registers dying in this insn
|
|||
|
and delete the first previous insn that sets any such register if that
|
|||
|
is all it does.
|
|||
|
|
|||
|
* jump.c (jump_optimize): Remove extraneous call to next_active_insn
|
|||
|
in optimization of "if (...) x = 1; else ...; if (x) ...".
|
|||
|
|
|||
|
* cse.c (predecide_loop_entry): Don't set cc_value to null and then
|
|||
|
stick it in the rtl.
|
|||
|
|
|||
|
* rtlanal.c (find_next_ref): Deleted from here.
|
|||
|
* explow.c: Include hard-reg-set.h for find_next_ref.
|
|||
|
(find_next_ref): Moved to here.
|
|||
|
* Makefile.in (explow.o): Includes hard-reg-set.h.
|
|||
|
|
|||
|
Thu Oct 25 21:37:15 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* va-mips.h (va_list): Put __ in member names.
|
|||
|
(va_dcl): Rename _va_alist to __va1_alist.
|
|||
|
* va-i860.h (__va_struct): Put __ in member names.
|
|||
|
* gvarargs.h, va-*.h: (__va_ellipsis): New macro.
|
|||
|
(va_dcl): Use that.
|
|||
|
|
|||
|
* c-typeck.c (convert_for_assignment): For functions, reverse the
|
|||
|
usual criterion for warning about const vs non-const. Volatile also.
|
|||
|
|
|||
|
* m88k.md, tm-m88k.h, out-m88k.c: Rewrites by wood@dg-rtp.dg.com.
|
|||
|
* tm-m88kdgux.h, tm-v88r32.h, tm-m88ksvr4.h: New files.
|
|||
|
* xm-m88kdgux.h, xm-v88r32.h, xm-m88ksvr4.h: New files.
|
|||
|
* make-m88k, make-m88kdgux: New files.
|
|||
|
* config.gcc (m88k-dgux, m88k-v88r32, m88k-svr4): New alternatives.
|
|||
|
|
|||
|
* gvarargs.h, gstdarg.h: Include alternate file for m88k.
|
|||
|
|
|||
|
* expr.c (expand_expr): For ARRAY_REF, preserve const and volatile.
|
|||
|
|
|||
|
* expr.c (expand_builtin): Handle strcmp and memcmp with function calls
|
|||
|
if can't be open coded.
|
|||
|
|
|||
|
* function.c (expand_function_end): Round trampoline addr to init.
|
|||
|
(round_trampoline_addr): Fix braino in alignment.
|
|||
|
|
|||
|
Thu Oct 25 14:54:18 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* jump.c: Now includes insn-config.h.
|
|||
|
(jump_optimize): inequality_comparisons_p takes only one operand again.
|
|||
|
(can_reverse_comparison_p): Handle case where a register is used
|
|||
|
for the condition code; if we can't easily find the COMPARE that
|
|||
|
was used to set the register, say we can't reverse the comparison.
|
|||
|
* Makefile.in (jump.o): Now includes insn-config.h.
|
|||
|
|
|||
|
* jump.c (jump_optimize): Put back change removed on Oct 21st;
|
|||
|
emit_store_flag has now been updated.
|
|||
|
|
|||
|
* rtlanal.c (inequality_comparisons_p): Reject any ordered
|
|||
|
comparison; we need not just reject when comparing against
|
|||
|
cc0_rtx.
|
|||
|
* recog.c (next_insn{,s}_test_no_inequality): inequality_comparisons_p
|
|||
|
again has only one operand.
|
|||
|
* genattrtab.c (cc0_rtx): No longer needed; remove change of Oct 21.
|
|||
|
|
|||
|
* genconfig.c (have_cc0_flag): New variable.
|
|||
|
(walk_insn_part): Set it when we see CC0.
|
|||
|
(main): Write #define HAVE_cc0 when it is set.
|
|||
|
* flow.c: Now includes insn-config.h.
|
|||
|
* Makefile.in (flow.o): Likewise.
|
|||
|
|
|||
|
* combine.c (subst): If X and FROM are the same register number,
|
|||
|
but in different modes, force the combine not to be done.
|
|||
|
Add missing initialization of undobuf.storage.
|
|||
|
|
|||
|
Thu Oct 25 11:34:35 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* sched.c (new_sometimes_live): Protect this function in case it is
|
|||
|
called with (OFFSET,BIT) that evaluates to >= MAX_REGNO.
|
|||
|
|
|||
|
* jump.c (sets_cc0_p): Conditionalized to abort if called when
|
|||
|
machine does not support cc0.
|
|||
|
|
|||
|
* rtlanal.c (reg_set_p): Now non-static.
|
|||
|
* rtlanal.c (rtx_varies_p): Handle LO_SUM more accurately.
|
|||
|
* rtlanal.c (find_next_ref): New function. Returns the insn that
|
|||
|
next references REG after INSN, or 0 if REG is clobbered before next
|
|||
|
referenced or it cannot easily find a reference to REG.
|
|||
|
|
|||
|
* recog.c (next_insn_tests_no_inequality): Conditionalized on
|
|||
|
HAVE_cc0.
|
|||
|
|
|||
|
* rtlanal.c (inequality_comparisons_p): Takes new argument
|
|||
|
THIS_CC0_RTX which is the rtl for the condition code value we are
|
|||
|
concerned about testing. All callers changed.
|
|||
|
|
|||
|
* flow.c (propagate_block,mark_used_regs): Conditionalize
|
|||
|
specialized cc0 handling only if HAVE_cc0 is defined.
|
|||
|
|
|||
|
* genemit.c (gen_exp): In REG case, If CC0_REGNUM is defined,
|
|||
|
save space by using REG_CC0_RTX instead of allocating a new
|
|||
|
(REG, mode, CC0_REGNUM) rtx if the mode is SImode.
|
|||
|
|
|||
|
* final.c (output_addr_const): Handle PC for P.I.C. code generation.
|
|||
|
Also, put parens around CONST expressions so that precedence can be
|
|||
|
maintained.
|
|||
|
* final.c (final_scan_insn): Don't look for redunant compares
|
|||
|
except when HAVE_cc0 is defined.
|
|||
|
Also, use `find_cc' to locate the rtx functioning as the
|
|||
|
condition code register in order to perform appropriate calls
|
|||
|
to `alter_cond'.
|
|||
|
|
|||
|
* expr.c (expand_expr): Supply missing arg in calls to `store_expr'.
|
|||
|
|
|||
|
* expmed.c (emit_store_flag): New argument COMPARISON is the
|
|||
|
comparison operation whose result we store.
|
|||
|
|
|||
|
* recog.c (offsettable_address_p,adj_offsettable_operand): Use
|
|||
|
`plus_constant_for_output' instead of `plus_constant' since we
|
|||
|
are testing conditions which rely on being able to add small
|
|||
|
offsets to e.g. LO_SUM operands.
|
|||
|
* explow.c (plus_constant): No special handling for LO_SUM. It is
|
|||
|
not valid to add a constant to a term with LO_SUM, since the
|
|||
|
constant may need to be added to the high bits that form the sum,
|
|||
|
and those high bits are not readily available.
|
|||
|
* explow.c (plus_constant_for_output): Same as `plus_constant'
|
|||
|
except that we do allow adding constants to LO_SUM terms. This
|
|||
|
function works only in special cases such as for
|
|||
|
`adj_offsettable_operand' and `offsettable_address_p'.
|
|||
|
|
|||
|
* emit-rtl.c: Declare reg_cc0_rtx which is like cc0_rtx, but
|
|||
|
is a register instead of a special form. reg_cc0_rtx should
|
|||
|
be used when representing the condition code register on a
|
|||
|
machine where condition codes are only set if explicitly set.
|
|||
|
For machines which allow arbitrary registers to be used as
|
|||
|
condition code registers (such as the MIPS and 88k), normal
|
|||
|
pseudo registers should be used instead.
|
|||
|
* emit-rtl.c (next_cc0_user,prev_cc0_setter): Conditionalized
|
|||
|
on HAVE_cc0.
|
|||
|
* emit-rtl.c (find_cc): New function. Given INSN, returns
|
|||
|
the rtx of what functions as the condition code register for
|
|||
|
INSN. On machines which use cc0_rtx, this is always cc0_rtx.
|
|||
|
On machines which have a dedicated register for cc0, this is
|
|||
|
that register. On machines which allocate pseudos for holding
|
|||
|
condition codes, this is the pseudo found in a REG_CC0 note.
|
|||
|
Otherwise, this function returns 0.
|
|||
|
* emit-rtl.c (init_emit_once): Allocate `reg_cc0_rtx' if
|
|||
|
CC0_REGNUM is defined.
|
|||
|
|
|||
|
* cse.c (make_regs_equiv): Don't consider making a reg
|
|||
|
equivalent to another reg whose class is NO_REGS.
|
|||
|
* cse.c (canon_reg): Don't canonicalize a register to
|
|||
|
one whose class is NO_REGS.
|
|||
|
* cse.c (fold_rtx): Conditionalize code for handling cc0_rtx
|
|||
|
with HAVE_cc0.
|
|||
|
* cse.c (predecide_loop_entry): Generalize code to use either
|
|||
|
a register or cc0_rtx.
|
|||
|
* cse.c (cse_insn): Conditionalize code for handling cc0_rtx
|
|||
|
with HAVE_cc0.
|
|||
|
|
|||
|
* combine.c (combine_instructions,try_combine,subst):
|
|||
|
Conditionalize code handling cc0_rtx with HAVE_cc0.
|
|||
|
* combine.c (simplify_set_cc0_and): Abort if HAVE_cc0 is not
|
|||
|
defined.
|
|||
|
* combine.c (try_distrib): Add break at end of switch cases. It is
|
|||
|
dangerous to leave the last cases of a switch statement to fall
|
|||
|
through since new cases added after will get fallen into.
|
|||
|
|
|||
|
* recog.c (validate_change): Always succeed for an asm insn,
|
|||
|
since recog always fails to recognize asm insns. This is
|
|||
|
needed for virtual register instantiation in asm insns.
|
|||
|
|
|||
|
* cse.c (cse_main): When following jumps, notice whether a
|
|||
|
particular basic block causes CSE_JUMPS_ALTERED to become set. When
|
|||
|
this happens, repeat the scan.
|
|||
|
* cse.c (refers_to_mem_p): Changed parameter name REG to BASE,
|
|||
|
which is more accurate. Also, taught it how to cope with
|
|||
|
LO_SUM rtl constructs.
|
|||
|
|
|||
|
Wed Oct 24 15:36:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* calls.c (store_one_arg): Accept additional arg, FNDECL.
|
|||
|
Don't save argument area if it is within the REG_PARM_STACK_SPACE
|
|||
|
area, but mark the area in use.
|
|||
|
(expand_call): If ACCUMULATE_OUTGOING_ARGS and REG_PARM_STACK_SPACE,
|
|||
|
treat the stack area for the registers as be clobbered by the called
|
|||
|
routine (e.g., if it was compiled without -O) and save and restore
|
|||
|
it if it was previously used for arguments in a similar manner to
|
|||
|
the remainder of the argument area (done by store_one_arg).
|
|||
|
|
|||
|
* calls.c (expand_call): Support new description macro,
|
|||
|
STACK_PARMS_IN_REG_PARM_AREA.
|
|||
|
* function.c (assign_parms): Likewise.
|
|||
|
|
|||
|
Wed Oct 24 12:47:21 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-typeck.c (build_array_ref): Use main variant for value type.
|
|||
|
|
|||
|
* genoutput.c (output_prologue): Let SEPARATE_AUX_OUTPUT
|
|||
|
cause aux-output.c not to be included.
|
|||
|
Makefile.in (aux-output2.c): Copy aux-output.c and then compile it.
|
|||
|
|
|||
|
* reload.c (subst_reg_equivs): Treat HIGH like other constants.
|
|||
|
|
|||
|
* reload.c (push_reload): When testing hard reg for validity,
|
|||
|
test subsequent regs only against class, not for HARD_REGNO_MODE_OK.
|
|||
|
|
|||
|
Tue Oct 23 22:49:33 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* cccp.c (collect_expansion): Skip ## at start after the error.
|
|||
|
|
|||
|
* gcc.c (default_compilers): Handle - as suffix.
|
|||
|
(main): Make that a special case; it matches only exactly `-'.
|
|||
|
|
|||
|
Tue Oct 23 22:40:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* romp.md (store{s,h,q}i pattern): Allow "b" for clobbered pseudo
|
|||
|
in addition to "d" in first alternative.
|
|||
|
|
|||
|
* reload1.c (eliminate_regs): IF_THEN_ELSE isn't a unary operation.
|
|||
|
|
|||
|
Tue Oct 23 20:35:13 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* m68k.md (zero-extend QI): When pushing, store value at 1(sp).
|
|||
|
|
|||
|
Mon Oct 22 12:27:08 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* cccp.c (rescan): In the loop that handles numbers, discard \newline.
|
|||
|
Also make `..' terminate a preprocessing number.
|
|||
|
|
|||
|
* Makefile.in (tmpgnulib, stamp-gnulib2): Do `set -e'.
|
|||
|
|
|||
|
* gcc.c (default_compilers): Give __GNUC__ value 2.
|
|||
|
Don't define it for .S files.
|
|||
|
|
|||
|
Mon Oct 22 07:33:42 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* optabs.c (emit_indirect_jump): New function; now checks predicate
|
|||
|
of indirect_jump.
|
|||
|
* stmt.c (expand_computed_goto, expand_goto): Use new function instead
|
|||
|
of directly emitting indirect jump.
|
|||
|
|
|||
|
* flow.c (mark_set_1): Make LOG_LINKS for hard registers.
|
|||
|
* combine.c (subst): Make new macro COMBINE_RTX_EQUAL_P which
|
|||
|
considers things equal if they are the identical RTX or the same
|
|||
|
register with the same mode; use to see if something changed and
|
|||
|
if we have a match.
|
|||
|
|
|||
|
* cccp.c (S_ISREG): Use argument instead of global.
|
|||
|
(main): Correct sense of S_ISREG usage.
|
|||
|
(check_precompiled): Use S_ISREG.
|
|||
|
|
|||
|
* flow.c (mark_used_regs): Don't allow reg_next_use to point to
|
|||
|
a NOTE; either point it to replacement insn or invalidate it.
|
|||
|
|
|||
|
Mon Oct 22 00:13:12 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-parse.y (xdecls): No warning unless -pedantic.
|
|||
|
|
|||
|
Sun Oct 21 17:49:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* genattrtab.c (cc0_rtx): Define, referenced in rtlanal.c.
|
|||
|
|
|||
|
* jump.c (jump_optimize): Remove code that depends on changes to
|
|||
|
emit_store_flag that haven't been made yet.
|
|||
|
|
|||
|
* expmed.c (extract_bit_field): Correctly check for bitfield
|
|||
|
completely filling a mode.
|
|||
|
|
|||
|
* out-romp.c (output_epilogue): Correctly write number of words of
|
|||
|
arguments into trace table.
|
|||
|
|
|||
|
* calls.c (store_one_arg): Fix error in change of Oct 19th.
|
|||
|
|
|||
|
* reorg.c (mark_target_live_regs): Revert back to old behavior
|
|||
|
of scanning all insns, even those in delay slots.
|
|||
|
(fill_simple_delay_slots): Need only call update_block if we move
|
|||
|
an insn across a label.
|
|||
|
|
|||
|
* Makefile.in (LIBFUNCS): Use consistent naming convention for
|
|||
|
comparison routines; gnulib.c was always correct.
|
|||
|
|
|||
|
* function.c (assign_parms): Don't overwrite DECL_INCOMING_RTL when
|
|||
|
we are called for the second time.
|
|||
|
|
|||
|
* integrate.c (initialize_for_inline): Don't make a new return label
|
|||
|
here; the maximum label number has already been computed.
|
|||
|
(save_for_inline_copying, save_for_inline_no_copy): Do it here instead.
|
|||
|
|
|||
|
* reload.c (find_reloads_address): For indirect address where the
|
|||
|
underlying address is also invalid, ensure that we substitute into
|
|||
|
the MEM that we will use.
|
|||
|
|
|||
|
Sun Oct 21 14:12:47 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* reload.c (find_equiv_regs): Reject reg that overlaps goal.
|
|||
|
|
|||
|
* expmed.c (extract_bit_field): For big fields, make sure
|
|||
|
value really goes in the target.
|
|||
|
|
|||
|
* expr.c (expand_builtin): Delete __builtin_varargs.
|
|||
|
(EXPAND_BUILTIN_SAVEREGS): New macro says how to do __builtin_saveregs.
|
|||
|
|
|||
|
* calls.c (expand_call): No "can't inline" warning if -fno-inline.
|
|||
|
|
|||
|
* stddef.h: Add missing #endif.
|
|||
|
|
|||
|
Sat Oct 20 14:33:14 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* function.c (round_trampoline_addr): New function.
|
|||
|
(trampoline_address): Use that.
|
|||
|
|
|||
|
Fri Oct 19 15:13:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* calls.c (store_one_arg): Don't mark stack area used until after
|
|||
|
we have written into it; if we do it before, the restore might
|
|||
|
clobber a function result being put into that stack area.
|
|||
|
|
|||
|
* objc-actions.c (print_lang_statistics): Add empty function.
|
|||
|
|
|||
|
* recog.c (inequality_comparisons_p): Deleted from here.
|
|||
|
* rtlanal.c (inequality_comparisons_p): Moved to here; not static.
|
|||
|
|
|||
|
* a29k.md (extendhisi2): Fix typo in define_split.
|
|||
|
|
|||
|
* Makefile.in (integrate.o): Includes integrate.h.
|
|||
|
(reorg.o): Includes insn-flags.h.
|
|||
|
|
|||
|
Fri Oct 19 14:49:26 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* sdbout.c (sdbout_symbol): If a variable belongs to an inline
|
|||
|
function, the decl's rtl may not be rewritten by alter_reg. So if
|
|||
|
we have a variable allocated to a pseudo, just get the hard register
|
|||
|
number from `reg_renumber'. ?? But I thought that COFF was so
|
|||
|
losing that it was decided one could not represent debug info for
|
|||
|
inline functions in COFF.
|
|||
|
|
|||
|
Fri Oct 19 13:21:25 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* fold-const.c (split_tree): Use NEGATE_EXPR to negate *conp.
|
|||
|
|
|||
|
Fri Oct 19 00:15:21 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* version.c: Bumped to 1.90.03.
|
|||
|
|
|||
|
* tree.c: Added facility for gathering statistics on the number of
|
|||
|
tree nodes allocated and the size in bytes they occupy. The
|
|||
|
statistics are by tree_node_kind, which is almost like using the
|
|||
|
tree code letter, but has more resolution for dealing with different
|
|||
|
kinds of `x' nodes. The facility is enabled by compiling the
|
|||
|
compiler with -DGATHER_STATISTICS and using the -fstats flag.
|
|||
|
|
|||
|
* expr.c (do_tablejump): Emit a BARRIER after the jump that performs
|
|||
|
the tablejump.
|
|||
|
|
|||
|
* cplus-typeck.c (c_expand_return): Rewritten so that the function
|
|||
|
value return register is not used except as a target of the function
|
|||
|
return value.
|
|||
|
|
|||
|
* cplus-tree.c (build_cplus_new): New argument WITH_CLEANUP_P
|
|||
|
controls whether this functino should build its result with a
|
|||
|
cleanup or not. All callers changed.
|
|||
|
|
|||
|
* cplus-lex.c: File updated to latest changes to c-parse.y's lexical
|
|||
|
analyzer.
|
|||
|
|
|||
|
* cplus-except.c (cplus_expand_raise): New parameter FOR_RERAISE
|
|||
|
is used to control whether to output extra gotos or not. When
|
|||
|
nonzero, the compiler can avoid writing out the extra gotos that are
|
|||
|
otherwise needed to avoid warning messages.
|
|||
|
|
|||
|
* cplus-decl2.c (flag_short_double): Add support for this option.
|
|||
|
|
|||
|
* cplus-decl.c (finish_function): Always cause returns to jump to
|
|||
|
the return label. This allows -Wreturn to give meaningful error
|
|||
|
messages.
|
|||
|
|
|||
|
* jump.c (invert_exp): Make this non-static.
|
|||
|
(jump_optimize): Reorganization and simplification of main inner
|
|||
|
loop. Comments added explaining what the optimizers are looking
|
|||
|
for. New optimization added that optimizes for consecutive testing
|
|||
|
of an inequality test followed by an equality test (or vice-versa).
|
|||
|
Changes made to accommodate reorg.c on Sparc. Code for
|
|||
|
cross-jumping return statements was previously dead in this
|
|||
|
function; as a result of the reorganization, it is now live.
|
|||
|
(find_cross_jump): Added temporary variable PREV1 to hold return
|
|||
|
value of `prev_nonnote_insn' instead of calling the function 3 times
|
|||
|
in a row. Also changed so that USE or CLOBBERS are not cross-jumped
|
|||
|
unless some real insns are also cross-jumped. This helps reorg.
|
|||
|
(redirect_jump): Fixed a return that returned no value so that it
|
|||
|
returns 1.
|
|||
|
(rtx_renumbered_equal_p): Test that reg_renumber is nonzero before
|
|||
|
using it. We may want to call this function earlier than by the
|
|||
|
time that array has been initialized.
|
|||
|
|
|||
|
* integrate.c (save_for_inline_{copying,nocopy}): New functions to
|
|||
|
replace `save_for_inline'. save_for_inline_copying saves the rtl
|
|||
|
for inline functions by copying the rtl to the
|
|||
|
maybepermanent_obstack. It is called when the rtl of the current
|
|||
|
function is going to be compiled immediately.
|
|||
|
save_for_inline_nocopy takes advantage of the fact that inline
|
|||
|
function rtl is already allocated to the maybepermanent_obstack, and
|
|||
|
need therefore not be copied if it's not going to be modified by the
|
|||
|
compiler (such as by `rest_of_compilation').
|
|||
|
({initialize_for,finish}_inline): New helper routines for
|
|||
|
save_for_inline_... functions.
|
|||
|
(note_modified_parmregs): Function called by `mark_stores' to note
|
|||
|
whether parameters are assigned to in the body of an inline
|
|||
|
function.
|
|||
|
New interface, integrate.h, provides declarations for functions used
|
|||
|
by other routines that might want to copy chunks of rtl.
|
|||
|
({save,try}_constants): Now global (for integrate.h).
|
|||
|
(mark_stores): Ditto.
|
|||
|
(try_fold_condition): Ditto.
|
|||
|
|
|||
|
* dbxout.c (dbxout_symbol): If a variable belongs to an inline
|
|||
|
function, the decl's rtl may not be rewritten by alter_reg. So if
|
|||
|
we have a variable allocated to a pseudo, just get the hard register
|
|||
|
number from `reg_renumber'.
|
|||
|
|
|||
|
* varasm.c (output_const_pool): No longer static.
|
|||
|
(assemble_variable): Do output debugging information for global
|
|||
|
register variables. GDB does the right thing for global register
|
|||
|
variables.
|
|||
|
|
|||
|
* toplev.c: New flag `warn_inline' for warning when a function
|
|||
|
declared inline was not in fact inlined. Also, new flag
|
|||
|
`flag_no_inline' which disables function inlining, but retains
|
|||
|
other properties of inline functions (such as lazy compilation
|
|||
|
and write-only-if-needed).
|
|||
|
* toplev.c (compile_file): Changed logic for inline function
|
|||
|
handling to work with `warn_inline' and `flag_no_inline'.
|
|||
|
Also modified to call `save_for_inline_nocopy' when insns are to be
|
|||
|
saved but not immediately compiled.
|
|||
|
|
|||
|
* function.c (instantiate_decls): If instantiating a function
|
|||
|
which was saved for inline expansion, preserve the rtl created
|
|||
|
by the instantiation as well.
|
|||
|
|
|||
|
* flags.h (flag_no_inline): New flag; if nonzero, then no
|
|||
|
calls are inlined, regardless of their declaration. We still
|
|||
|
save the insns for these functions in DECL_SAVED_INSNS so that
|
|||
|
the functions need not be written if they are never called.
|
|||
|
|
|||
|
* calls.c (expand_call): If `flag_no_inline' is set, don't
|
|||
|
inline the call, regardless of whether it was declared inline
|
|||
|
or not.
|
|||
|
|
|||
|
Thu Oct 18 13:10:26 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* rtl.def (CODE_LABEL): Add new string field.
|
|||
|
* rtl.h (LABEL_NAME): Define macro for access.
|
|||
|
* emit-rtl.c (gen_label_rtx): Initialize it to 0.
|
|||
|
* stmt.c (expand_label): Store proper name of label.
|
|||
|
* final.c (final_scan_insn): Call sdbout_label.
|
|||
|
|
|||
|
* tree.h (built_in_function): Add BUILT_IN_VARARGS.
|
|||
|
* c-decl.c (init_decl_processing): Declare __builtin_varargs.
|
|||
|
* expr.c (expand_builtin): Generate code for it.
|
|||
|
Uses new macro EXPAND_BUILTIN_VARARGS.
|
|||
|
|
|||
|
* sdbout.c (SDB_IS_FAKE): Macro deleted.
|
|||
|
(MAKE_LINE_SAFE): New macro.
|
|||
|
(sdbout_begin_block, sdbout_end_block, sdbout_end_function): Use it.
|
|||
|
(sdbout_one_type): Delete spurious second arg in all callers.
|
|||
|
(sdbout_types, sdbout_end_function):
|
|||
|
Use sdbout_dequeue_anonymous_types.
|
|||
|
(sdbout_label): New function.
|
|||
|
|
|||
|
* expr.h (FUNCTION_ARG_BOUNDARY): Default is now PARM_BOUNDARY.
|
|||
|
|
|||
|
* gvarargs.h, va-*.h (va_dcl):
|
|||
|
Add ellipsis so current_function_varargs is set.
|
|||
|
|
|||
|
* jump.c (jump_optimize): Exit push-optimize loop at end of insns.
|
|||
|
|
|||
|
Thu Oct 18 07:09:06 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* reorg.c: Major reorganization. Many special cases have been moved
|
|||
|
into more general code and an overall restructuring has been done.
|
|||
|
Numerous bugs have been fixed. Highlights:
|
|||
|
(dbr_schedule): First make list of all insns needing filling. Then
|
|||
|
iterate for two passes. In each pass, try two methods of filling
|
|||
|
delay slots, then do some canonicalizations, which may create more
|
|||
|
insns to fill.
|
|||
|
(fill_simple_delay_slots): Now uses list of insns that need filling,
|
|||
|
rather than making such a list.
|
|||
|
Enhance code that finds insns when code paths merge to allow multiple
|
|||
|
uses of the label as long as all uses are in the skipped code.
|
|||
|
(struct resource): Notice volatile memrefs.
|
|||
|
(stop_search_p): Allow option to continue when label is reached.
|
|||
|
(find_end_label, make_return_insns): New functions; when we have a
|
|||
|
filled branch that is really a RETURN, first convert it to a jump
|
|||
|
to a return label and then later see if the insns in the delay slots
|
|||
|
are also valid for a RETURN.
|
|||
|
(mostly_true_jump): Test for branch to loop beginning rather than
|
|||
|
branch at end of loop. Also, conditional return insns predict false.
|
|||
|
(own_thread_p): New function to replace fall_through_to_p.
|
|||
|
(try_merge_delay_insns): Only support merging insns already in an
|
|||
|
insns delay list.
|
|||
|
(get_branch_condition, condition_dominates_p): New functions.
|
|||
|
(steal_delay_list_from_{target,fallthrough}): New functions to
|
|||
|
replace steal_delay_list.
|
|||
|
(redundant_insn_p): New function.
|
|||
|
(update_block, mark_target_live_regs, dbr_schedule): When moving
|
|||
|
an insn not at the front of the basic block to a delay slot,
|
|||
|
leave a "ghost" USE so that we can track things livened and killed.
|
|||
|
(fill_slots_from_thread): Eliminate use of static vars for number
|
|||
|
of slots to fill and already filled.
|
|||
|
Try to modify an insn that follows a register-register copy to use
|
|||
|
the original register; this may create a delay-slot opportunity.
|
|||
|
(try_hoist_target{,_1}): Deleted.
|
|||
|
(relax_delay_slots): Rewritten to just perform canonicalizations
|
|||
|
previously done elsewhere. No actual delay slot filling is done
|
|||
|
here. Any new delay slots created will hopefully be filled in the
|
|||
|
next pass around the loop in dbr_schedule.
|
|||
|
|
|||
|
* expr.c (emit_push_insn): Don't try to compute a SUBREG of a
|
|||
|
hard register in a non-integer mode when pushing a "partial" arg.
|
|||
|
|
|||
|
* recog.c (validate_change, apply_change_group): After reload, ensure
|
|||
|
that operands meet the constraints by calling constrain_operands.
|
|||
|
(validate_replace_rtx_1): Consider two rtx equal if they refer to
|
|||
|
the same register.
|
|||
|
|
|||
|
* jump.c (jump_optimize): Extend change of Oct 16th to handle
|
|||
|
the other usage of find_equiv_reg; remove invalid death notes there.
|
|||
|
|
|||
|
* rs6000.md, tm-rs6000.h, out-rs6000.c, xm-rs6000.h, make-rs6000:
|
|||
|
New files.
|
|||
|
|
|||
|
* out-a29k.c (extract_subword): Use gen_{high,low}part from
|
|||
|
an FP CONST_DOUBLE if host and target float formats are the same
|
|||
|
or REAL_IS_NOT_DOUBLE.
|
|||
|
|
|||
|
* out-romp.c (output_fpop, output_fpops): Provide fr0 as a scratch
|
|||
|
register unless it is used in the insn.
|
|||
|
|
|||
|
* romp.md: In combined set CC0 and move, optimize case where move
|
|||
|
is nop.
|
|||
|
(DF moves): Fix typo in generation of `get' insn.
|
|||
|
Don't split if input is CONST_DOUBLE because we can't easily
|
|||
|
generate the proper constants.
|
|||
|
(call patterns): Copy data area address via a pseudo to allow
|
|||
|
better CSE'ing.
|
|||
|
|
|||
|
* tm-romp.h (RTX_COSTS): Memory is expensive, except for a reference
|
|||
|
to our own data area, which is very cheap.
|
|||
|
(ADDRESS_COST): References to the constant pool are as cheap as
|
|||
|
register + offset, since that's what it will be.
|
|||
|
|
|||
|
* emit-rtl.c (gen_{low,high}part): Can often extract word from FP
|
|||
|
CONST_DOUBLE when host and target floating formats agree.
|
|||
|
(add_insn_after): No longer static.
|
|||
|
|
|||
|
* reload1.c (reg_equiv_memory_loc): Renamed from reg_equiv_stack_slot
|
|||
|
and now static.
|
|||
|
(reload): If have equivalence with constant that is not a legitimate
|
|||
|
constant operand, force it into memory and handle this as an
|
|||
|
equivalence to memory.
|
|||
|
* reload.h (reg_equiv_stack_loc): Deleted.
|
|||
|
|
|||
|
Wed Oct 17 20:50:58 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* gcc.c, cccp.c (main): Use TARGET_VERSION if -v.
|
|||
|
|
|||
|
* expmed.c (extract_bit_field): Typo in last change.
|
|||
|
|
|||
|
* Makefile.in (tmpgnulib): Support assembler files named *.asm.
|
|||
|
|
|||
|
* gcc.c (do_spec_1): Null-terminate error message.
|
|||
|
|
|||
|
* sdbout.c (sdbout_symbol): Handle subreg as DECL_RTL.
|
|||
|
This happens for vars from the parms of inline functions.
|
|||
|
* dbxout.c (dbxout_symbol): Likewise.
|
|||
|
|
|||
|
* genattr.c (fancy_abort): New function, as in gen*.c.
|
|||
|
|
|||
|
Wed Oct 17 14:53:48 1990 Michael I. Bushnell (mib at geech.ai.mit.edu)
|
|||
|
|
|||
|
* pcp.h: New file.
|
|||
|
|
|||
|
* cccp.c: Support use of precompiled files
|
|||
|
Include "pcp.h".
|
|||
|
(no_precomp, stringlist, stringlist_tailp): New variables.
|
|||
|
(union hashval): New field `keydef'.
|
|||
|
(enum nodetype): New alternative `T_PCSTRING'.
|
|||
|
(main): Support -noprecomp.
|
|||
|
Use write_output to write output.
|
|||
|
(rescan): Call pcstring_used for T_PCSTRING symbols.
|
|||
|
(do_include): New local variables pcftry, pcfname, pcf, pcfbuf,
|
|||
|
pcfbuflimit, and pcfnum.
|
|||
|
Check for possible use of precompiled files.
|
|||
|
(check_precompiled): New function.
|
|||
|
(check_preconditions): New function.
|
|||
|
(pcfinclude): New function.
|
|||
|
(pcstring_used): New function.
|
|||
|
(write_output): New function.
|
|||
|
(create_definition): New function.
|
|||
|
(do_define): Moved most of the work into create_definition.
|
|||
|
(dump_single_macro): New function.
|
|||
|
(dump_all_macros): Moved most of the work into dump_single_macro.
|
|||
|
(dump_defn_1): New argument OF.
|
|||
|
(dump_arg_n): New argument OF.
|
|||
|
|
|||
|
* cccp.c: Support generation of precompiled files
|
|||
|
(pcp_outfile, pcp_inside_if): New variables.
|
|||
|
(struct definition): New field `predefined'.
|
|||
|
(main): Support -pcp.
|
|||
|
(rescan): Don't expand macros outside #if during -pcp.
|
|||
|
(special_symbol): Error for most special symbols during #if in -pcp.
|
|||
|
Output precondition for T_CONST and T_SPEC_DEFINED symbols.
|
|||
|
(eval_if_expression): Set and clear pcp_inside_if.
|
|||
|
(do_ifxdef): Output preconditions.
|
|||
|
|
|||
|
Tue Oct 16 13:22:05 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* stor-layout.c (layout_record): For PCC_BITFIELD_TYPE_MATTERS,
|
|||
|
make it true that zero-length field affects alignment of next field.
|
|||
|
|
|||
|
* rtlanal.c (get_integer_term, get_related_value): Moved from cse.c.
|
|||
|
|
|||
|
* jump.c (jump_optimize): When reusing value via find_equiv_reg,
|
|||
|
delete obsolete death note.
|
|||
|
|
|||
|
* expmed.c (extract_bit_field, store_bit_field):
|
|||
|
Handle fields wider than a word.
|
|||
|
Restrict special case for word-sized field to aligned words.
|
|||
|
|
|||
|
* expmed.c (extract_bit_field, store_bit_field): Don't let
|
|||
|
BESTMODE be bigger than the insn can handle.
|
|||
|
|
|||
|
* Makefile.in (tmpgnulib): Fix typos handling LIBFUNCS_EXTRA.
|
|||
|
|
|||
|
* cccp.c (handle_directive): Turn on code to handle # LINENUM,
|
|||
|
and move initializations past the label `old_linenum'.
|
|||
|
|
|||
|
* c-decl.c (grokdeclarator): If traditional, make bitfields unsigned.
|
|||
|
(finish_struct): Don't do that here.
|
|||
|
|
|||
|
* fixincludes (CTRL): Don't put quotes around a quote.
|
|||
|
|
|||
|
* stddef.h (size_t): Also inhibit if _SIZE_T_.
|
|||
|
|
|||
|
Mon Oct 15 13:15:30 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-decl.c (grokdeclarator): Make flag_signed_bitfields work
|
|||
|
for int and for typedefs.
|
|||
|
|
|||
|
Sun Oct 14 21:28:32 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* flow.c (life_analysis): No hard regs for any pseudos live at setjmp.
|
|||
|
|
|||
|
* c-decl.c (duplicate_decls): Don't suppress warning for fn defn
|
|||
|
after implicit declaration, if fn has already been defined.
|
|||
|
|
|||
|
Fri Oct 12 15:54:11 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-parse.y (xdecls): Allow ellipsis after parm decls.
|
|||
|
Call c_mark_varargs.
|
|||
|
* c-decl.c (start_function): Clear c_function_varargs.
|
|||
|
(c_mark_varargs): New function. Set it.
|
|||
|
(store_parm_decls): Maybe call mark_varargs.
|
|||
|
* function.c (init_function_start): Clear current_function_varargs.
|
|||
|
(mark_varargs): New function. Set it.
|
|||
|
|
|||
|
Thu Oct 11 13:15:36 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* genattrtab.c (fancy_abort): New function, as in gen*.c.
|
|||
|
|
|||
|
* expr.c (saveregs_value): New variable.
|
|||
|
(init_expr, save_expr_status, restore_expr_status):
|
|||
|
Init, save, restore the variable.
|
|||
|
(expand_builtin): Don't call __builtin_saveregs twice in one function.
|
|||
|
|
|||
|
* va-*.h: Rename all structure fields to start with __.
|
|||
|
* va-pyr.h: Rename variables also.
|
|||
|
(va_start): Delete the unmatched {.
|
|||
|
(va_end): Now a nop.
|
|||
|
|
|||
|
Wed Oct 10 22:03:20 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* va-sparc.h (__va_ctl): Rename fields to start with __.
|
|||
|
|
|||
|
Tue Oct 9 12:55:48 1990 Michael Meissner (meissner at osf.org)
|
|||
|
|
|||
|
* Allow configuration to specify size of a wide character.
|
|||
|
(WCHAR_TYPE_SIZE): New parameter.
|
|||
|
(WCHAR_UNSIGNED): New parameter, says whether type is signed.
|
|||
|
|
|||
|
* c-decl.c (WCHAR_TYPE_SIZE): Define if not defined.
|
|||
|
(WCHAR_UNSIGNED): Likewise.
|
|||
|
(wchar_type_node, signed_wchar_type_node, unsigned_wchar_type_node):
|
|||
|
(wchar_array_type_node): New variables.
|
|||
|
(init_decl_processing): Init them.
|
|||
|
* c-tree.h: Make them extern.
|
|||
|
|
|||
|
* c-common.c (WCHAR_TYPE_SIZE, WCHAR_BYTES): Define them.
|
|||
|
(combine_strings): Handle them.
|
|||
|
* c-parse.y (init_lex, yylex): Likewise.
|
|||
|
|
|||
|
* c-typeck.h (digest_init): Use wchar_type_node and
|
|||
|
signed_wchar_type_node to get the base type of wide strings, rather
|
|||
|
than using int and unsigned.
|
|||
|
|
|||
|
Tue Oct 9 14:16:37 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* expmed.c (extract_bit_field): Typo; section for extv used extzv.
|
|||
|
|
|||
|
* c-typeck.c (digest_init): Error if union has no name field.
|
|||
|
(process_init_constructor): For union, use first named field.
|
|||
|
|
|||
|
* flow.c (propagate_block): Include NOTE at end of block in scan.
|
|||
|
|
|||
|
* fixincludes: Fix missing semicolon in rstat.h.
|
|||
|
|
|||
|
* cccp.c (main): Record the option names used for assertions.
|
|||
|
Call make_assertion properly.
|
|||
|
|
|||
|
Tue Oct 9 06:18:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* cse.c (fold_rtx): Call find_best_addr before seeing if we know
|
|||
|
what is located at that address.
|
|||
|
Don't try to return the contents of an ADDR_DIFF_VEC table; we have
|
|||
|
no simple way of representing it.
|
|||
|
(cse_insn): Detect SRC == DEST even when DEST is not the canonicalized
|
|||
|
form of the value represented by SRC.
|
|||
|
|
|||
|
* loop.c (scan_loop): Don't set THRESHOLD until LOOP_HAS_CALL
|
|||
|
has been set.
|
|||
|
(struct induction): Add field MEM_MODE.
|
|||
|
(find_mem_givs, combine_givs_p): Record mode used to access memory
|
|||
|
when making DEST_ADDR giv and use it to test validity of
|
|||
|
derived address.
|
|||
|
|
|||
|
* jump.c (delete_jump): No longer static.
|
|||
|
(invert_jump): Allow changing RETURNs to branches and vice versa.
|
|||
|
Now returns success/failure indication like redirect_jump.
|
|||
|
* rtl.h (delete_jump): Define.
|
|||
|
|
|||
|
* calls.c (store_one_arg): Don't expand a `partial' arg into
|
|||
|
arg->stack and don't set arg->value to arg->stack_slot for
|
|||
|
such args.
|
|||
|
Clean up by breaking out common code.
|
|||
|
|
|||
|
Mon Oct 8 15:09:31 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* loop.c (can_eliminate_biv_p): Insist that mult_val be positive.
|
|||
|
|
|||
|
* Makefile.in (insn-*): Remove semicolon from these rules.
|
|||
|
(INSTALL_PROGRAM, INSTALL_FILE): New variables.
|
|||
|
(install-*): Use those variables.
|
|||
|
(mandir): Default based on manext.
|
|||
|
|
|||
|
Mon Oct 8 10:57:14 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* stmt.c (expand_catch_default): Return 1 if EXCEPT_STACK is
|
|||
|
nonzero.
|
|||
|
|
|||
|
* c-decl.c (finish_enum): Argument to floor_log2 in
|
|||
|
calculation of negprecision was not negated.
|
|||
|
|
|||
|
Mon Oct 8 06:50:15 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* rtl.h (INSN_ANNULLED_BRANCH_P, INSN_FROM_TARGET_P): New fields.
|
|||
|
|
|||
|
Sun Oct 7 23:33:24 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* tm-i386v.h (STARTFILE_SPEC): Handle -p here.
|
|||
|
(LIB_SPEC): Not here.
|
|||
|
|
|||
|
Thu Oct 4 05:06:02 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* gcc.c (default_compilers): Define __OPTIMIZE__ for %{O*}, not just
|
|||
|
%{O}. This permits the use of -O2, -O3, etc., with predictable
|
|||
|
results.
|
|||
|
|
|||
|
* expr.c (expand_expr): Do not build new cleanups for
|
|||
|
TARGET_EXPRs. Their cleanups are now handled entirely by the
|
|||
|
language-specific code that causes them to be generated.
|
|||
|
|
|||
|
* function.c ({push,pop}_temp_slots): Do not change
|
|||
|
temp_slot_level if within a sequence. GNU C++ must be able to
|
|||
|
emit a sequence it is building anywhere at the level the sequence
|
|||
|
was initiated. If the level is changed when building a sequence,
|
|||
|
temporaries could be unwittingly shared.
|
|||
|
|
|||
|
* cplus-tree.def: change print strings for NEW_EXPR and
|
|||
|
CPLUS_CATCH_DECL.
|
|||
|
|
|||
|
* cplus-dem.c (do_type): Support `long long' types.
|
|||
|
|
|||
|
* cplus-decl.c (finish_file): No longer try to emit _init,_fini
|
|||
|
records for GNU C++. This was supposed to help the SunOS dynamic
|
|||
|
linker link C++ code, but it turned out not to work.
|
|||
|
|
|||
|
* cplus-decl.c ({start,finish}_function): Don't emit an extra
|
|||
|
binding contour if not in a constructor or destructor. It is not
|
|||
|
needed, and saves writing out unneeded debugging info.
|
|||
|
|
|||
|
* cplus-class.c (build_method_call): Conditionalize handling of
|
|||
|
wrappers and operator->(); these are now only compiled if ESKIT is
|
|||
|
#defined.
|
|||
|
|
|||
|
* cplus-decl.c (define_label): Updated to treat labels in the same
|
|||
|
new fashion that c-decl.c treats them.
|
|||
|
|
|||
|
* cplus-*.c: C++ front-end files now support a generic
|
|||
|
class-browser interface. It is up to some adventurous hacker to
|
|||
|
implement the class browser.
|
|||
|
|
|||
|
* cplus-*.c: C++ front-end files no longer #include rtl.h.
|
|||
|
|
|||
|
Sun Sep 30 15:53:02 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* cccp.c (make_assertion): New function.
|
|||
|
(main): Handle -A by calling make_assertion.
|
|||
|
-A- gets rid of predefined macros and those specified earlier.
|
|||
|
|
|||
|
* print-tree.c (print_node_brief): Declare i for printing REAL_CST.
|
|||
|
|
|||
|
* recog.c (immediate_operand, nonmemory_operand): Don't accept
|
|||
|
integer constants if caller wants a floating mode.
|
|||
|
|
|||
|
Sat Sep 29 18:40:08 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* reload1.c (emit_reload_insns): Handle preserving death info
|
|||
|
with find_equiv_reg.
|
|||
|
|
|||
|
* reload.c (find_equiv_reg): Handle INSN_CLOBBERS_REGNO_P.
|
|||
|
|
|||
|
* fixincludes: For link pointing outside /usr/include,
|
|||
|
use $x rather than $dest.
|
|||
|
|
|||
|
* optabs.c (expand_float, expand_fix): Use dconst1, not 1.0.
|
|||
|
|
|||
|
Sat Sep 29 06:38:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* emit-rtl.c (try_split): Use emit_insn_after and delete_insn to
|
|||
|
ensure that the correct insn chain is maintained in the presence of
|
|||
|
SEQUENCEs; be careful if the insn being split has a following BARRIER.
|
|||
|
* jump.c (delete_insn): Correctly update insn chain when deleting
|
|||
|
insn following or preceeding a SEQUENCE.
|
|||
|
|
|||
|
Fri Sep 28 16:07:42 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-parse.y (yylex): Use REAL_VALUE_TRUNCATE for `f' suffix.
|
|||
|
|
|||
|
* fold-const.c (const_binop): Don't initialize REAL_VALUE_TYPE decls.
|
|||
|
|
|||
|
Thu Sep 27 14:06:37 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* expr.c (expand_expr): Set MEM_VOLATILE_P from TREE_THIS_VOLATILE.
|
|||
|
|
|||
|
Wed Sep 26 00:21:23 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* tm-mips-news.h: New file.
|
|||
|
|
|||
|
* out-i860.c (output_size_for_block_move): Don't decrement.
|
|||
|
(output_block_move): Decrement initial storing address instead.
|
|||
|
|
|||
|
* c-parse.y (yylex): Always try unsigned int if `u' is written.
|
|||
|
|
|||
|
* c-typeck.c (build_unary_op): Don't let &* make an lvalue.
|
|||
|
|
|||
|
* c-parse.y (initlist): Use [N] rather than case N: for array index.
|
|||
|
|
|||
|
* tm-seq386.h (LINK_SPEC): Define it.
|
|||
|
|
|||
|
* c-parse.y (yylex): Don't try signed int for nondecimal constant
|
|||
|
if -traditional. Improve messages for -Wtraditional.
|
|||
|
|
|||
|
* stor-layout.c (layout_record): Avoid using DECL_SIZE_UNIT.
|
|||
|
|
|||
|
* jump.c (jump_optimize): Scan all insns for label refs.
|
|||
|
(mark_jump_label): Quickly ignore uninteresting rtl types.
|
|||
|
* rtl.def (INSN, CALL_INSN): Add a slot for JUMP_LABEL.
|
|||
|
|
|||
|
* jump.c (jump_optimize): Try combining stack adjusts with pushes.
|
|||
|
|
|||
|
Mon Sep 24 07:31:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* stmt.c (expand_computed_goto): Emit barrier after jump.
|
|||
|
|
|||
|
* expr.c (case LABEL_DECL): Return a MEM, so we can take its
|
|||
|
address; correctly form LABEL_REF.
|
|||
|
|
|||
|
Sun Sep 23 22:54:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* loop.c (struct movable): Delete field SET_EQUAL; new field MOVE_INSN.
|
|||
|
(scan_loop): Only use REG_EQUAL note under very restricted
|
|||
|
cirsumstances. Set MOVE_INSN field in movables when appropriate.
|
|||
|
(combine_movables): Simplify matching test now that we only have one
|
|||
|
source field.
|
|||
|
(move_movables): Handle MOVE_INSN movables by emitting a new move
|
|||
|
insn in front of the loop.
|
|||
|
Correct typo in checking for CALL_INSN.
|
|||
|
Don't try to make a REG_EQUAL note.
|
|||
|
(count_loop_regs_set): Remove extraneous assignment to MAY_NOT_MOVE.
|
|||
|
|
|||
|
Sun Sep 23 14:59:21 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* cccp.c (S_ISREG): Define it unless overridden.
|
|||
|
(main, finclude): Use that.
|
|||
|
|
|||
|
* reload1.c (reload): If insn after a function call uses the
|
|||
|
function value, and that reg is spilled, and the insn might
|
|||
|
use it for reloading, add an extra need.
|
|||
|
(reload_as_need): Detect such insns for new arg to choose_reload_regs.
|
|||
|
(choose_reload_regs): In that case, don't choose function value reg.
|
|||
|
|
|||
|
* tm-convex1.h, tm-convex2.h (CPP_SPEC): Define __NO_INLINE_MATH.
|
|||
|
|
|||
|
Sun Sep 23 07:52:32 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* version.c (version_string): Bumped to 1.90.02.
|
|||
|
|
|||
|
* final.c (leaf_function): Variable now non-static.
|
|||
|
* final.c (only_leaf_regs_used): Function now non-static.
|
|||
|
* final.c (leaf_function_p): Move initialization of
|
|||
|
`leaf_function' from here...
|
|||
|
* toplev.c (compile_file): ...to here. We want to know the
|
|||
|
value of `leaf_function' when we perform code reorginization.
|
|||
|
* final.c (leaf_function_p): If profiling arcs, we cannot have
|
|||
|
a leaf function. Also, we have to look at insns in
|
|||
|
`epilogue_delay_list' to know that all our constraints are
|
|||
|
satisfied.
|
|||
|
* final.c (only_leaf_regs_used): Have to look in
|
|||
|
`epilogue_delay_list' to know that all our constraints are
|
|||
|
satisfied.
|
|||
|
|
|||
|
* toplev.c (warning_with_file_and_line,warning): Declare third
|
|||
|
argument V3 for warnings that require 3 `%' expressions in S.
|
|||
|
* toplev.c (strip_off_ending): New helper function that removes
|
|||
|
a GCC-recognized filename extension. Call this function in
|
|||
|
GCC instead of expanding it inline in C code everywhere.
|
|||
|
|
|||
|
* sched.c (schedule_block): The last basic block does not have
|
|||
|
no live registers. Also, check that we don't copy from an
|
|||
|
entry in `basic_block_live_at_start' that does not exist.
|
|||
|
* sched.c (update_reg_first_use): When splitting insns, the
|
|||
|
insn that is in REG_FIRST_USE might become a NOTE, and a new
|
|||
|
insn become the insn that should be considered the first use.
|
|||
|
`update_first_use' keeps REG_FIRST_USE up to date.
|
|||
|
* sched.c (update_links): Call note_stores with
|
|||
|
`update_first_use' when an insn splits.
|
|||
|
|
|||
|
Sun Sep 23 00:05:49 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-decl.c (grokdeclarator): Put var array bound in save_expr.
|
|||
|
|
|||
|
Sat Sep 22 14:01:00 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* tree.c (build_index_type): Don't hash variable-bound type.
|
|||
|
|
|||
|
* c-decl.c (start_decl): Error here if var-size object initialized.
|
|||
|
(grokdeclarator, finish_struct): Record types & decls
|
|||
|
with array sizes not written as constants.
|
|||
|
* c-tree.h (C_TYPE_VARIABLE_SIZE, C_DECL_VARIABLE_SIZE): New macros.
|
|||
|
|
|||
|
* tm-aix386.h (LIB_SPEC): Different library name for -p. Always -lc.
|
|||
|
(LINK_SPEC): Don't pass -lg or -g.
|
|||
|
(CPP_PREDEFINES): Define _I386 and _AIX. Don't define unix.
|
|||
|
(SDB_DEBUGGING_INFO): Define it.
|
|||
|
(DBX_DEBUGGING_INFO): Undefine it.
|
|||
|
(ASM_FILE_START): Output .noopt if not optimizing.
|
|||
|
(PCC_BITFIELD_TYPE_MATTERS): Define it.
|
|||
|
(FUNCTION_PROFILER): Add definition.
|
|||
|
|
|||
|
Fri Sep 21 16:26:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* function.c (current_function_epilogue_list): Define this here.
|
|||
|
* reorg.c: Not here.
|
|||
|
|
|||
|
Fri Sep 21 13:11:11 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* varasm.c (assemble_external_libcall): Frob SYMBOL_REF_USED here.
|
|||
|
|
|||
|
Thu Sep 20 15:29:44 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* expr.h (struct optab): Field libfunc, an rtx, replaces lib_call.
|
|||
|
* rtl.h (SYMBOL_REF_USED): New macro.
|
|||
|
* optabs.c (init_optabs): Initialize that field properly.
|
|||
|
Also initialize new variables *_libfunc.
|
|||
|
(various functions): Use those vars; use libfunc field.
|
|||
|
* expr.c (convert_move, emit_block_move, clear_storage): Use the vars.
|
|||
|
(emit_push_insn, expand_assignment): Likewise.
|
|||
|
|
|||
|
Thu Sep 20 13:51:18 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* out-a29k.c (current_function_epilogue_delay_slot): Renamed from
|
|||
|
epilogue_delay_slot.
|
|||
|
|
|||
|
* romp.md (movdi): Fix missing short/long qualifier on memory ref.
|
|||
|
(SFmode/DFmode move patterns): Add explicit alternatives for
|
|||
|
storing and loading general registers from memory; also add
|
|||
|
DEFINE_SPLITs for these cases for DFmode.
|
|||
|
(negsf2,negdf2): Don't use XOR if an operand is a hard FP register.
|
|||
|
|
|||
|
* tm-romp.h (FIXED_REGISTERS, CALL_USED_REGISTERS): Use correct
|
|||
|
register numbers for FP registers.
|
|||
|
|
|||
|
* output.h (current_function_epilogue_delay_list): New var.
|
|||
|
* function.c: Include output.h and initialize new var above.
|
|||
|
* Makefile.in (function.o): Now includes output.h.
|
|||
|
* reorg.c (epilogue_delay_list): Renamed to
|
|||
|
current_function_epilogue_delay_list.
|
|||
|
|
|||
|
* final.c (final_scan_insn): Don't delete no-op insn if in delay slot
|
|||
|
or if we have already pre-scanned.
|
|||
|
|
|||
|
* genconfig.c (max_insns_per_split): Rename from
|
|||
|
max_insns_per_split_flag and default to 1 instead of 0.
|
|||
|
|
|||
|
* genattrtab.c (n_comma_elts): Return zero for null string.
|
|||
|
|
|||
|
* sdbout.c (MIN,MAX): Add to here; required by recent changes.
|
|||
|
|
|||
|
* expr.c (safe_from_p): A MEM rtx is not safe from an INDIRECT_REF.
|
|||
|
|
|||
|
* c-parse.y (ridpointers): Move definition in front of first use.
|
|||
|
|
|||
|
* reorg.c (mark_referenced_resources): Allow for CODE_LABELs between a
|
|||
|
CALL_INSN and USE insns preceeding it.
|
|||
|
(mark_set_resources): Likewise, for following CLOBBERs.
|
|||
|
|
|||
|
Wed Sep 19 17:45:49 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* assert.h (printf): Don't define; should be in stdio.h.
|
|||
|
|
|||
|
* rtl.h (PUT_REG_NOTE_KIND): New macro.
|
|||
|
* sched.c (attach_deaths): Use it.
|
|||
|
|
|||
|
* reorg.c (mark_referenced_resources): If we put insns to load
|
|||
|
parameters into the delay slot of a CALL, ignore the USE insns
|
|||
|
for those parameters.
|
|||
|
|
|||
|
* function.c (fixup_var_refs_1): Don't call fixup_memory_subreg unless
|
|||
|
its would-be operand is a SUBREG.
|
|||
|
|
|||
|
Wed Sep 19 00:26:59 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* print-tree.c (print_node): Indent before printing RTL.
|
|||
|
|
|||
|
* Makefile.in (protoize.o, unprotoize.o): Look for SYSCALLS.c.X
|
|||
|
in libsubdir.
|
|||
|
|
|||
|
Tue Sep 18 21:55:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* cse.c (fold_rtx): For MEM with constant address, split the
|
|||
|
address into possible base and offset; ensure constant pool
|
|||
|
value is same mode as our reference unless we are getting a
|
|||
|
word of a DImode CONST_INT.
|
|||
|
Treat SYMBOL_REF and LABEL_REF as constants.
|
|||
|
If we are getting a word at a constant offset from a jump table,
|
|||
|
replace with the contents of that jump table entry.
|
|||
|
(cse_insn): When folding jump to variable location (e.g., tablejump),
|
|||
|
LABEL_REF is the cheapest of all, since the branch would be simple.
|
|||
|
Special-case changing variable branch to normal unconditional
|
|||
|
because the RTL may be different (e.g., the variable branch may
|
|||
|
include a USE).
|
|||
|
|
|||
|
Tue Sep 18 18:33:19 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* toplev.c (count_error): Handle warnings_are_errors.
|
|||
|
(W_options): Handle -Werror.
|
|||
|
|
|||
|
Mon Sep 17 00:02:12 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-decl.c (lookup_label): Use void as type of label.
|
|||
|
* stmt.c (label_rtx): No longer static.
|
|||
|
* expr.c (expand_expr): Handle LABEL_DECL.
|
|||
|
|
|||
|
Sun Sep 16 16:27:29 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* expr.c (expand_builtin): Error for __builtin_nextarg
|
|||
|
if function definition doesn't have `...'.
|
|||
|
|
|||
|
* expmed.c (store_bit_field): Adjust BITPOS to UNIT all at once.
|
|||
|
for insv, use mode of operand 3 instead of SImode. Define MAXMODE.
|
|||
|
Adjust XBITPOS along with mode of XOP0.
|
|||
|
(extract_bit_field): Adjust XBITPOS along with mode of XOP0.
|
|||
|
for extv and extzv, use mode of operand 3 thoroughly instead of SImode.
|
|||
|
|
|||
|
* sdbout.c (CHAR_TYPE_SIZE,...): Default definitions of these macros.
|
|||
|
(plain_type_1): Use those macros to distinguish int and floating types.
|
|||
|
|
|||
|
* toplev.c (rest_of_decl_compilation): Output TYPE_DECL here for sdb
|
|||
|
only if top_level.
|
|||
|
|
|||
|
* c-parse.y (unary): Don't forget to look up the label.
|
|||
|
|
|||
|
* c-typeck.c (build_conditional_expr): Don't skip arg promotion.
|
|||
|
|
|||
|
Sun Sep 16 14:54:03 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* combine.c (try_combine): If we don't recognize the combined insn,
|
|||
|
try it without any CLOBBERs.
|
|||
|
|
|||
|
* final.c (final_scan_insn): Prevent CC tracking from thinking
|
|||
|
that the CC was set by an insn in the delay slot of a CALL_INSN.
|
|||
|
|
|||
|
* expmed.c (init_expmed, expand_divmod): Allow machine to have
|
|||
|
low cost specified for divides by powers of two if it can do it by
|
|||
|
a method that if cheaper than the normal shift/branch/adjust mechanism.
|
|||
|
|
|||
|
* cse.c (fold_rtx): When putting constant last, ensure that the
|
|||
|
resulting insn is valid.
|
|||
|
|
|||
|
* objc-actions (finish_objc): Remove dup defn of gen_declaration_file.
|
|||
|
|
|||
|
* objc-parse.y (ridpointers, token_buffer): Define before use.
|
|||
|
|
|||
|
* reload1.c (scan_paradoxical_subregs): Declare correctly.
|
|||
|
|
|||
|
* tm-romp.h (ENCODE_SEGMENT_INFO): Use INTEGRATED bit to mark
|
|||
|
SYMBOL_REFs that are addresses of functions (really their data blocks).
|
|||
|
(LEGITIMATE_CONSTANT_P): Data block addresses of functions are not
|
|||
|
valid operands.
|
|||
|
* out-romp.c (symbolic_operand): Likewise.
|
|||
|
* romp.md (call*): emit_move_insn will now do force_const_mem
|
|||
|
so it needn't be done explicitly.
|
|||
|
|
|||
|
* out-romp.c (output_fpop): Work around yet another RT fp bug;
|
|||
|
cannot merge output and first operand for SFmode if general reg.
|
|||
|
|
|||
|
* romp.md: Add new pattern to match combination of copy and test.
|
|||
|
Use nilo instruction to set CC.
|
|||
|
|
|||
|
Fri Sep 14 07:07:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* c-tree.h: Define all *_type_node trees defined in c-decl.c, in the
|
|||
|
same order as defined there.
|
|||
|
|
|||
|
Fri Sep 14 08:39:17 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* cplus-typeck.c (build_c_cast): Convert READONLY_DECLs to make up
|
|||
|
for the fact that we do not call `default_conversion' anymore.
|
|||
|
|
|||
|
* function.c (instantiate_virtual_regs): If the function is inline,
|
|||
|
we don't need to worry about making valid rtl, but we do need to
|
|||
|
worry about instantiating all virtual registers. Otherwise we must
|
|||
|
make the rtl valid, and we have other opportunities to eliminate the
|
|||
|
virtual registers during the compilation.
|
|||
|
|
|||
|
Thu Sep 13 16:00:05 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* reload.c (MATCHES): Check for different rtx's with same reg number.
|
|||
|
|
|||
|
* fixincludes: Discard `.' from value of `files'.
|
|||
|
|
|||
|
* c-parse.y (unary_expr): Use unary && to get address of label.
|
|||
|
(stmt): Handle `goto *EXPRESSION;'.
|
|||
|
* stmt.c (expand_computed_goto): New function.
|
|||
|
|
|||
|
* gstdarg.h: New name for stdarg.h.
|
|||
|
* Makefile (install-headers): Rename gstdarg.h while installing it.
|
|||
|
|
|||
|
* sdbout.c (PUT_SDB_LAST_DIM): Get rid of SDB_DELIM.
|
|||
|
(plain_type): Output accumulated array dims and size.
|
|||
|
(plain_type_1): Eliminate arg NOSIZE. Save up dims and size.
|
|||
|
Call self rather than plain_type for pointers and functions.
|
|||
|
(sdbout_array_type, sdbout_array_depth): Functions deleted.
|
|||
|
|
|||
|
Thu Sep 13 16:12:15 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* cplus-class.c (build_method_call): Fix typo in deciding whether to
|
|||
|
do hairy or trivial pointer conversions on `this'.
|
|||
|
|
|||
|
* cplus-tree.c (layout_vbasetypes): Don't double-count space taken
|
|||
|
up by virtual baseclasses.
|
|||
|
|
|||
|
Wed Sep 12 18:14:19 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* tm-m68k.h: Use asm_fprintf widely.
|
|||
|
(REG_PREFIX, IMMEDIATE_PREFIX, LOCAL_LABEL_PREFIX, USER_LABEL_PREFIX):
|
|||
|
New macros.
|
|||
|
|
|||
|
* final.c (asm_fprintf): New function.
|
|||
|
|
|||
|
Wed Sep 12 06:07:50 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* cplus-dbxout.c (dbxout_type): Output basetype size and offset info
|
|||
|
in bits, not bytes.
|
|||
|
|
|||
|
* cplus-decl.c (finish_{decl,function}): Set CLASSTYPE_ASM_WRITTEN
|
|||
|
bit of types used by non-extern VAR_DECLs. Set it also for types of
|
|||
|
PARM_DECLs and return types of functions defined in the file being
|
|||
|
compiled.
|
|||
|
|
|||
|
Tue Sep 11 13:21:40 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* sdbout.c (plain_type_1): New argument NOSIZE. Inhibits size output.
|
|||
|
(sdbout_array_type): Call plain_type_1 directly; set NOSIZE.
|
|||
|
|
|||
|
* sdbout.c (sdbout_array_type): New argument DEPTH.
|
|||
|
Don't output more than SDB_MAX_DIM dimensions.
|
|||
|
(sdbout_array_depth): New function.
|
|||
|
(plain_type_1): Start DEPTH by calling sdbout_array_depth.
|
|||
|
|
|||
|
* gnulib2.c (_bb_init_func): Library member now named _bb.
|
|||
|
|
|||
|
* tree.h: Add comments.
|
|||
|
|
|||
|
Mon Sep 10 17:20:06 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* Makefile.in (install): Fix typo.
|
|||
|
|
|||
|
* cccp.c (macarg1): With -traditional, backslash quotes chars.
|
|||
|
|
|||
|
Mon Sep 10 16:37:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* jump.c (jump_optimize): Don't swap THEN and ELSE parts during jumps
|
|||
|
runs after reload.
|
|||
|
|
|||
|
Mon Sep 10 13:07:39 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* cccp.c (collect_expansion): Don't actually substitutee into a
|
|||
|
string if ANSI; just consider warning.
|
|||
|
|
|||
|
* gnulib2.c (div_qrrnd for i386): Fix typo. Rename some args.
|
|||
|
|
|||
|
* sdbout.c (sdbout_array_type): New argument DEPTH.
|
|||
|
Don't output more than SDB_MAX_DIM dimensions.
|
|||
|
(plain_type_1): Start DEPTH at 1.
|
|||
|
|
|||
|
Sun Sep 9 22:02:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* out-a29k.c (gen_reg_operand): Exclude SUBREG of a special
|
|||
|
register.
|
|||
|
|
|||
|
* cse.c: (fold_rtx): Get equivalent for register before seeing if
|
|||
|
memory reference is to constant pool.
|
|||
|
(cse_ins): Only call force_const_mem if we actually try to use
|
|||
|
the constant (i.e., we haven't found anything cheaper).
|
|||
|
|
|||
|
Sun Sep 9 21:49:18 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* ..._BIG_ENDIAN: Now expect definition to be 0 or 1.
|
|||
|
All refs and defs changed.
|
|||
|
|
|||
|
* tm-mips.h (CPP_SPEC): Error for -EL (for -EB, if DECSTATION).
|
|||
|
|
|||
|
* sdbout.c (sdbout_one_type): Set TREE_ASM_BEING_WRITTEN before
|
|||
|
recursion, and TREE_ASM_WRITTEN after.
|
|||
|
|
|||
|
Sat Sep 8 16:47:27 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* hard-params.c (main): Don't try to malloc all memory.
|
|||
|
|
|||
|
Sat Sep 8 16:38:53 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* reload1.c (reload): Set reg_equiv_constant if the equivalence
|
|||
|
is any constant, not just a legitimate constant operand.
|
|||
|
|
|||
|
* final.c (get_attr_length, shorten_branches, final_scan_insn):
|
|||
|
If JUMP_TABLES_IN_TEXT_SECTION is defined, don't put jump tables
|
|||
|
in readonly data section, even if it exists.
|
|||
|
|
|||
|
Sat Sep 8 14:07:05 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* Makefile.in (bootstrap*): Pass null ALLOCA definition to recursive
|
|||
|
makes when compiling with GCC since it never needs alloca.c.
|
|||
|
|
|||
|
* c-typeck.c (build_binary_op_nodefault): Warn for signed < unsigned.
|
|||
|
Controlled by -W.
|
|||
|
|
|||
|
* tm-i386v4.h: New file.
|
|||
|
|
|||
|
Fri Sep 7 13:10:24 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* cccp.c (STDC_VALUE): New macro, defaulting to 1.
|
|||
|
(intialize_builtins): Use that.
|
|||
|
|
|||
|
* m68k.md (movqi): `st' does not set cc's.
|
|||
|
|
|||
|
Fri Sep 7 07:49:23 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* genemit.c (gen_expand): Fix test for no C code.
|
|||
|
If no C code, no MATCH_DUPs, and only one insn to write, handle
|
|||
|
like DEFINE_INSN and return that insn rather than making a sequence.
|
|||
|
|
|||
|
* emit-rtl.c (add_insn_after): If previous or next insn is a
|
|||
|
SEQUENCE, update the NEXT_INSN in the last insn in the SEQUENCE or
|
|||
|
PREV_INSN of the first, as appropriate.
|
|||
|
(emit_insn_before, emit_jump_insn_before, emit_note_before):
|
|||
|
Call add_insn_after.
|
|||
|
|
|||
|
* stmt.c (check_for_full_enumeration_handling): If a switch whose index
|
|||
|
is an enumerated type contains labels for every enumeration value,
|
|||
|
make the label for the last value the default label since such a
|
|||
|
switch can never fall through.
|
|||
|
|
|||
|
* genattr.c (fatal): Declare first arg correctly.
|
|||
|
|
|||
|
* combine.c (try_combine): No longer check REG_FUNCTION_VALUE_P;
|
|||
|
its value shouldn't matter once RTL generation is complete.
|
|||
|
(subst): If NOT is present as an operand in commutative operation,
|
|||
|
put it last to reduce the number of required patterns.
|
|||
|
|
|||
|
* out-romp.c (output_fpops): Align to word boundary before writing
|
|||
|
any floating-point blocks.
|
|||
|
|
|||
|
* function.c (instantiate_virtual_regs_1): Fix typo in previous change.
|
|||
|
When a MEM must be copied, use copy_rtx; the PLUS may also be shared.
|
|||
|
|
|||
|
Thu Sep 6 15:19:42 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* gcc.c (do_spec_1): Don't add __ to -D if __ already present.
|
|||
|
|
|||
|
* c-typeck.c (convert_for_assignment):
|
|||
|
Better warning for FCN * vs. void *
|
|||
|
Specific warning for char * vs. unsigned char *.
|
|||
|
|
|||
|
Thu Sep 6 14:52:08 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* reorg.c (find_basic_block): Return -1, not 0, if we can't find
|
|||
|
the basic block.
|
|||
|
(mark_target_live_regs): Clear PENDING_DEAD_REGS unconditionally.
|
|||
|
(relax_delay_slots): Don't call optimize_skip for unconditional jump.
|
|||
|
Only try to remove jump if it is a simple conditional or
|
|||
|
unconditional jump (but not a tablejump or similar such).
|
|||
|
|
|||
|
* cse.c (invalidate, refers_to_mem_p, cse_rtx_addr_varies_p):
|
|||
|
Consider (plus (reg) (const_int)) to be a fixed address if REG
|
|||
|
is constant; old code just handled REG.
|
|||
|
|
|||
|
* genrecog.c (enum routine_type): Use to distinguish two types of
|
|||
|
routines that we write: recog and split_insns.
|
|||
|
(make_split_sequence): Write out extern for gen_split_ function.
|
|||
|
(break_out_subroutines, write_subroutine, write_tree, main):
|
|||
|
Use new enum routine_type instead of passing "split" or "recog".
|
|||
|
(write_subroutine): Write correct type for splitting functions and
|
|||
|
return 0, not -1.
|
|||
|
(main): Write includes before declarations of gen_split_ functions
|
|||
|
since "rtx" is needed for them.
|
|||
|
* rtl.h (try_split, split_insns): Added definitions.
|
|||
|
|
|||
|
Wed Sep 5 16:20:07 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* Makefile.in (includes): Use proper directory.
|
|||
|
|
|||
|
Tue Sep 4 13:59:31 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-decl.c (store_parm_decls): Let extra_warnings control
|
|||
|
warnings about parms not declared.
|
|||
|
|
|||
|
* flow.c (life_analysis): Move code to detect stack-adjust insns.
|
|||
|
It was unreachable.
|
|||
|
|
|||
|
* gnulib.c, gnulib2.c (abort): #undef in case config.h defines it.
|
|||
|
|
|||
|
Mon Sep 3 17:50:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* calls.c (expand_call): If SETUP_INCOMIMG_VARARGS is defined, pass
|
|||
|
unnamed args in registers.
|
|||
|
* function.c (assign_parms): Call SETUP_INCOMING_VARARGS for
|
|||
|
stdargs as well as varargs; ensure we only call it once.
|
|||
|
|
|||
|
* function.c (instantiate_virtual_regs_1): Don't assume all memory
|
|||
|
addresses are valid for all insns.
|
|||
|
|
|||
|
Sun Sep 2 22:17:40 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* expr.c (emit_library_call): Push all stack args, then load regs.
|
|||
|
|
|||
|
* c-decl.c (c_build_type_variant): For an ARRAY_TYPE,
|
|||
|
put the qualifier into the array as well as the element.
|
|||
|
(grokdeclarator): When a field or variable is supposed to be
|
|||
|
a const or volatile array, make the array elements const or
|
|||
|
volatile, but also make the field or variable so.
|
|||
|
|
|||
|
* c-decl.c (grokdeclarator): Turn off the warning for const or volatile
|
|||
|
function type when making an array. It was useless.
|
|||
|
|
|||
|
Fri Aug 31 16:26:40 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-common.c (truthvalue_conversion): Let the
|
|||
|
language-specific code decide how to convert EXPR
|
|||
|
if it is not one of the special forms we recognize.
|
|||
|
|
|||
|
Fri Aug 31 15:08:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* gcc.c (execute): Use I instead of undefined var J if DEBUG defined.
|
|||
|
|
|||
|
Fri Aug 31 14:37:36 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* sdbout.c (sdbout_begin_block): Delete excess arg to sdbout_block.
|
|||
|
|
|||
|
Thu Aug 30 21:31:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* expmed.c (extract_bit_field): Fix typos in computations of UNIT.
|
|||
|
|
|||
|
Wed Aug 29 12:33:33 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* sdbout.c (sdbout_reg_parms): Don't advance parm twice.
|
|||
|
|
|||
|
Tue Aug 28 22:49:41 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* cccp.c (delete_newlines): New function.
|
|||
|
(macroexpand): Remove newlines from args used more than once.
|
|||
|
|
|||
|
Tue Aug 28 22:16:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* Makefile.in (sched.o): Add to list of files to compile.
|
|||
|
|
|||
|
* c-parse.y (position_after_white_space): Declare with correct type.
|
|||
|
|
|||
|
* fold-const.c (optimize_bit_field_compare): Fix typo.
|
|||
|
|
|||
|
* reorg.c (split_insns): No longer need extern for this here.
|
|||
|
|
|||
|
* toplev.c (sched_dump_file): Define.
|
|||
|
(compile_file): Initialize and print sched_time and sched2_time.
|
|||
|
|
|||
|
* local-alloc.c (block_alloc): Fix typo in allocation of insn_map.
|
|||
|
|
|||
|
* cse.c (cse_insn): Try related value in case where CONST is seen
|
|||
|
first and SYMBOL_REF later.
|
|||
|
|
|||
|
Tue Aug 28 16:26:50 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* cccp.c (main): Don't modify or validate arg of -D here.
|
|||
|
(make_definition): Do it all here.
|
|||
|
|
|||
|
* function.c (assign_parms): Reenable `register' for parms.
|
|||
|
|
|||
|
Tue Aug 28 07:12:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* tm-a29k.h (CONST_COSTS): All CONST_INTs are cost zero; adjust
|
|||
|
SYMBOL_REF and CONST_DOUBLE costs to reflect their actual cost.
|
|||
|
|
|||
|
* expr.c (expand_expr): Don't suppress EXPAND_SUM here if not Pmode.
|
|||
|
(expand_expr, case *_DECL): Return constant address if
|
|||
|
EXPAND_SUM or EXPAND_INTO_STACK in addition to EXPAND_CONST_ADDRESS;
|
|||
|
all of these cases will later call memory_address.
|
|||
|
(expand_expr, case COMPONENT_REF): Always make recursive call with
|
|||
|
EXPAND_SUM.
|
|||
|
(expand_expr, case PLUS_EXPR): Try to form constant if X + CONST and
|
|||
|
mode is Pmode without EXPAND_SUM; if not EXPAND_SUM, use force_operand.
|
|||
|
Check for MODE != Pmode with EXPAND_SUM here.
|
|||
|
(expand_expr, case MINUS_EXPR): Always process X - CONST_INT as
|
|||
|
X + (-CONST_INT)).
|
|||
|
|
|||
|
Sun Aug 26 23:10:10 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-decl.c (c_decode_option): Handle -funsigned-bitfields.
|
|||
|
(grokdeclarator): Do the real work.
|
|||
|
(grokfield): Pass either FIELD or BITFIELD to grokdeclarator.
|
|||
|
|
|||
|
* tm-att386.h (asm_output_common): Use SIZE, not ROUNDED.
|
|||
|
|
|||
|
Sat Aug 25 17:17:27 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-parse.y (unary_expr): Turn off handling of &...
|
|||
|
* c-decl.c (store_parm_decls): Turn off extra dummy parameter.
|
|||
|
|
|||
|
* tm-att386.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): New macros.
|
|||
|
(BSS_SECTION_ASM_OP): New macro.
|
|||
|
(ASM_OUTPUT_LOCAL): Call bss_section, don't just print .bss.
|
|||
|
|
|||
|
* combine.c (subst): Handle shift within mem, as multiplication.
|
|||
|
|
|||
|
Sat Aug 25 11:43:09 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* final.c (alter_cond): Handle CC_INVERTED.
|
|||
|
|
|||
|
* conditions.h (CC_INVERTED): New flag indicating that the condition
|
|||
|
tested leaves the falgs set opposite to the condition tested. This
|
|||
|
is unsafe for IEEE floating point operations, but useful for integer
|
|||
|
operations which can combine with condition-code setting operations.
|
|||
|
|
|||
|
* c-parse.y (position_after_white_space): New function. Skips
|
|||
|
all of the whitespace at the current location in the input
|
|||
|
file, taking NEXTCHAR into account. Changed all callers of
|
|||
|
`skip_white_space' in grammar to use this function instead.
|
|||
|
|
|||
|
* genrecog.c (main): Generate code which is more easily optimized by
|
|||
|
GCC's cse. In particular, start each recognizer with the address of
|
|||
|
`recog_operands' in a register.
|
|||
|
|
|||
|
* reload.c (combine_reloads): Can only combine reloads if the
|
|||
|
register we find can hold the entire output reload (i.e., SFmode
|
|||
|
register may not be suitable for combining with DFmode register).
|
|||
|
|
|||
|
* optabs.c (have_sub2_insn): Fixed typo.
|
|||
|
* combine.c (combine_instructions): Fixed typo in comment.
|
|||
|
|
|||
|
* function.c (expand_function_end): Emit a barrier after a RETURN
|
|||
|
jump.
|
|||
|
|
|||
|
* Added diffs for new instruction scheduling code.
|
|||
|
* emit-rtl.c (try_split): Moved here from reorg.c and made
|
|||
|
public. Both instruction scheduling and delayed branch
|
|||
|
filling now use the same code to split insns.
|
|||
|
* flags.h: Add new flags FLAG_SCHEDULE_INSNS for instruction
|
|||
|
scheduling before register allocation and
|
|||
|
FLAG_SCHEDULE_INSNS_AFTER_RELOAD for insn scheduling after
|
|||
|
register allocation.
|
|||
|
* recog.c (constrain_operands): Recognize pseudo registers as
|
|||
|
registers for the purpose of insn constraint matching before
|
|||
|
register allocation. Otherwise, the insn scheduler assumes
|
|||
|
the operands will be memory, which is usually wrong (and
|
|||
|
causes it to build bad schedules).
|
|||
|
* sched.c (order_calls): New function. For two CALL_INSNS in
|
|||
|
the rtl chain, we set up a constraint that the second
|
|||
|
CALL_INSN may not be scheduled to run before the first.
|
|||
|
(sched_analyze_*): Three kinds of dependencies (true, anti,
|
|||
|
and output) constrain the order in which insns can be
|
|||
|
rearranged and still preserve their execution semantics.
|
|||
|
We now handle dependencies for pseudo and hard register usage
|
|||
|
and for memory usage in these functions.
|
|||
|
(launch_links): The ordering of which newly ready insns to
|
|||
|
execute is now preserved according to their `priority' in the
|
|||
|
insn chain, and no longer on their order in the dependency
|
|||
|
list from which they were launched.
|
|||
|
(schedule_block): Removed support for trying to schedule insns
|
|||
|
taking branch delays into account. Reorg.c should be hacked
|
|||
|
to understand which insns to pull into delay slots and which
|
|||
|
insns to leave alone.
|
|||
|
(schedule_block): (Re-)compute all register life information here.
|
|||
|
No longer dependent on flow to keep `basic_block_live_at_end'
|
|||
|
allocated.
|
|||
|
(schedule_insns): Recompute LABEL->BASIC BLOCK mapping, so we
|
|||
|
can compute register life information.
|
|||
|
* rtl.c (add_dependence): New function to add and remove insn
|
|||
|
dependencies. If an insn (I2) must execute after another
|
|||
|
(I1), we add an INSN_LIST containing I1 to I2's LOG_LINKS.
|
|||
|
If such an INSN_LIST is already in I2's LOG_LINKS, we don't
|
|||
|
add a second.
|
|||
|
(remove_dependence): Similar, but removes dependencies. May
|
|||
|
not actually be needed.
|
|||
|
* toplev.c (compile_file,rest_of_compilation): Added code for
|
|||
|
dumping info about insn scheduling.
|
|||
|
|
|||
|
Fri Aug 24 17:24:03 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* Implement `aligned (INTEGER)' attribute for real.
|
|||
|
* c-parse.y (attrib): Really record info for `aligned' attribute.
|
|||
|
Don't warn for any integer alignment.
|
|||
|
(attribute_list): Make a list.
|
|||
|
(initdcl, notype_initdcl, component_declarator): Handle that info.
|
|||
|
* c-common.c (decl_attributes): New function.
|
|||
|
|
|||
|
Fri Aug 24 07:12:05 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* genattrtab.c (insn-config.h): This is really needed after all.
|
|||
|
* Makefile.in (genattrab.o): Show dependency on insn-config.h.
|
|||
|
|
|||
|
* local-alloc.c (block_alloc): Don't update qty_birth for a
|
|||
|
register whose quantity is <= 0.
|
|||
|
|
|||
|
* fold-const.c (decode_field_reference): Actually obtain unsigned
|
|||
|
type where one is wanted.
|
|||
|
(merge_component_references): Correctly test for mutually exclusive
|
|||
|
conditions.
|
|||
|
|
|||
|
Thu Aug 23 14:56:44 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-typeck.c (digest_initializer): No pedantic warning for string
|
|||
|
and array of unsigned char.
|
|||
|
|
|||
|
* tree.c (get_identifier): Do id_clash_len stuff if length equals that.
|
|||
|
|
|||
|
Thu Aug 23 10:30:10 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* cplus-tree.h (CLASSTYPE_CID): Key off of TYPE_MAIN_VARIANT.
|
|||
|
|
|||
|
Thu Aug 23 06:44:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* out-romp.c (romp_pushes_stack): Don't count
|
|||
|
current_function_pretend_args_size in size of stack.
|
|||
|
|
|||
|
Wed Aug 22 18:00:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* tm-a29k.h, tm-a29kunix.h, xm-a29k.h, a29k.md, out-a29k.c: New files.
|
|||
|
|
|||
|
* config.gcc (a29k-unix): New target.
|
|||
|
|
|||
|
* calls.c (expand_call): Allow FUNCTION_ARG to return an EXPR_LIST
|
|||
|
specifying multiple registers to load.
|
|||
|
(store_one_arg): Likewise; also delete handling of fully-in-register
|
|||
|
case, which hasn't been handled here for a while.
|
|||
|
* expr.c (emit_library_call): Our subset of calling sequence for
|
|||
|
library routines does not include multiple registers for an arg.
|
|||
|
|
|||
|
Tue Aug 21 17:44:49 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* make-cc1.com: Compile and link version.c.
|
|||
|
|
|||
|
* Makefile.in (install-gnulib): Create libg.a if none already.
|
|||
|
|
|||
|
* expr.c (convert_move): Handle expand_unop retval not same as target.
|
|||
|
|
|||
|
* reload.c (find_reloads): For register letters, don't win if BLK.
|
|||
|
|
|||
|
* sdbout.c (sdbout_toplevel_data): Fix error message.
|
|||
|
|
|||
|
* protoize.c (open): Prototype deleted.
|
|||
|
|
|||
|
* flow.c (mark_set_1, mark_used_regs): Update reg_first_use.
|
|||
|
(allocate_for_life_analysis): Allocate and clear it.
|
|||
|
* local-alloc.c (block_alloc): Calculate INSN_MAP.
|
|||
|
Get first use of each reg from reg_first_use.
|
|||
|
|
|||
|
* tm-vms.h (MAYBE_VMS_FUNCTION_PROLOGUE): Distinguish C from C++.
|
|||
|
(EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Add a const data section.
|
|||
|
(ASM_OUTPUT_EXTERNAL): Use that section.
|
|||
|
(SELECT_SECTION): Go to that section when appropriate.
|
|||
|
|
|||
|
Tue Aug 21 18:26:47 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* reorg.c (fill_simple_delay_slots): Mark anything referenced by an
|
|||
|
insn that will be placed in a delay slot in the epilogue as being
|
|||
|
needed at the end of the function.
|
|||
|
|
|||
|
* cse.c (constant_pool_entries_found): New static var.
|
|||
|
(cse_main): Initialize it.
|
|||
|
(use_related_value): Correctly look for registers in hash table.
|
|||
|
(fold_rtx): Fold constant pool entries to their constants and
|
|||
|
set constant_pool_entries_found.
|
|||
|
(cse_insn): If we weren't able to place a constant in an insn
|
|||
|
and we have previously seen constant pool entries used, set up
|
|||
|
to try the constant pool entry also.
|
|||
|
|
|||
|
Mon Aug 20 12:14:27 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* function.c (assign_parms): Set LAST_NAMED for parm before dummy.
|
|||
|
See August 9 change in c-parse.y.
|
|||
|
|
|||
|
* gcc.c (process_command): Split -oFOO into two arguments.
|
|||
|
|
|||
|
* stmt.c (expand_asm_operands): Handle COMPONENT_REF and
|
|||
|
ARRAY_REF directly as output operands. Avoids crash if BLKmode.
|
|||
|
|
|||
|
* c-parse.y, cplus-parse.y, objc-parse.y: Include stdio before input.h.
|
|||
|
* input.h: Declare finput.
|
|||
|
|
|||
|
* expr.c (emit_push_insn): Don't adjust for EXTRA separately
|
|||
|
if will have to adjust the stack anyway.
|
|||
|
|
|||
|
* m68k.md (*sh*si3): On 68000, optimize case of >= 16 bits.
|
|||
|
|
|||
|
* varasm.c (decode_rtx_const): Don't dereference a PLUS
|
|||
|
subexpression of a CONST twice.
|
|||
|
|
|||
|
Sun Aug 19 21:51:51 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* toplev.c (finput): Define here.
|
|||
|
* *-parse.y (lineno, finput): Duplicate definitions deleted.
|
|||
|
|
|||
|
* global-alloc.c (find_reg): Test best_reg against 0,
|
|||
|
not first_pseudo_register.
|
|||
|
|
|||
|
Sun Aug 19 17:48:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* explow.c (plus_constant): If adding to constant pool constant,
|
|||
|
return a new one.
|
|||
|
|
|||
|
* genattrtab.c: Need not include insn-config.h.
|
|||
|
|
|||
|
Sun Aug 19 17:23:10 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* tm-hp9k320bsd.h (CPP_SPEC): Def __HAVE_68881__ like __HAVE_FPU__.
|
|||
|
|
|||
|
* Makefile.in (USE_ALLOCA): Test was backwards.
|
|||
|
(USE_HOST_ALLOCA): Likewise.
|
|||
|
|
|||
|
Sun Aug 19 09:58:16 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* stmt.c: Fixes from 2.0 for fixup_goto incorporated here.
|
|||
|
|
|||
|
* cplus-decl2.c (write_vtable_entries): Don't test TREE_EXTERNAL
|
|||
|
of DECL_CONTEXT (FN). TREE_EXTERNAL is not meaningful for types.
|
|||
|
|
|||
|
Fri Aug 17 22:14:09 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* optabs.c (emit_cmp_insn): Don't abort after floating lib cmp.
|
|||
|
|
|||
|
Thu Aug 16 23:16:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* varasm.c (assemble_variable, assemble_static_space): Don't
|
|||
|
call data section if -fshared-data. If this section is needed,
|
|||
|
it should be entered from elsewhere, and this is believe to be
|
|||
|
done in all known cases.
|
|||
|
(output_constant_pool): Add support for ASM_OUTPUT_SPECIAL_POOL_ENTRY
|
|||
|
which writes certain constant pool entries specially; used for TOC
|
|||
|
on RS/6000.
|
|||
|
(assemble_external_libcall): New function.
|
|||
|
* expr.c (emit_library_call): Call it.
|
|||
|
|
|||
|
* reorg.c (mark_target_live_regs): Don't follow around infinite loops.
|
|||
|
|
|||
|
* varasm.c (struct rtx_cont): Don't use enums in bit fields if
|
|||
|
ONLY_INT_FIELDS is defined.
|
|||
|
|
|||
|
* cse.c (remove): Rename to remove_from_table to avoid conflict
|
|||
|
with `remove' defined in stdio.h.
|
|||
|
|
|||
|
Thu Aug 16 22:44:35 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* stmt.c: fixup_gotos must ignore blocks started after the goto.
|
|||
|
(block_start_count): New variable, and slot in some structures.
|
|||
|
(expand_function_start): Initialize it.
|
|||
|
(expand_start_bindings): Increment it and store in struct nesting.
|
|||
|
(expand_goto): Store it in struct goto_fixup.
|
|||
|
(fixup_gotos): Compare fixup's count with block's count.
|
|||
|
(save_stmt_status, restore_stmt_status): Handle block_start_count.
|
|||
|
* function.h (struct function): Make slot to save it.
|
|||
|
|
|||
|
Thu Aug 16 18:02:03 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* obtabs.c (expand_fix, expand_float): Support direct conversion
|
|||
|
between SFmode and fixed modes by library call.
|
|||
|
|
|||
|
Wed Aug 15 18:36:28 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* cccp.c (main): Allow -M to work on .s files by checking for .s
|
|||
|
and .S suffixes when writing dependencies.
|
|||
|
|
|||
|
* reorg.c (optimize_skip, fill_eager_delay_slots, try_host_target):
|
|||
|
Don't need to call can_reverse_comparison_p because invert_jump is
|
|||
|
safe for floating-point; only reverse_condition isn't.
|
|||
|
|
|||
|
Wed Aug 15 15:50:36 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* dbxout.c (dbxout_type): Skip past const and volatile qualifiers
|
|||
|
that might appear in method names.
|
|||
|
|
|||
|
Wed Aug 15 15:44:17 1990 Richard Stallman (rms at mole.ai.mit.edu)
|
|||
|
|
|||
|
* c-parse.y (hash, is_reserved_word): Use __inline.
|
|||
|
|
|||
|
* cccp.c (main): Support -dN and -dD. Support -lint.
|
|||
|
(dump_macros): Two new alternatives.
|
|||
|
(handle_directive): Output macro definitions if -dN or -dD.
|
|||
|
(rescan): Check comments if -lint.
|
|||
|
(get_lintcmd): New subroutine.
|
|||
|
|
|||
|
* c-decl.c (c_decode_option): Handle -fshort-double.
|
|||
|
(init_decl_processing): Create double_type_node accordingly.
|
|||
|
|
|||
|
* c-decl.c (c_decode_option): Handle -Wno...
|
|||
|
|
|||
|
Tue Aug 14 23:10:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* explow.c (break_out_memory_refs): Don't break out reference if
|
|||
|
constant but not legitimate constant for a machine insn.
|
|||
|
(memory_address): Only put legitimate constants, rather than all
|
|||
|
constants, into registers if they are used as an address.
|
|||
|
|
|||
|
Tue Aug 14 14:34:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* reorg.c (steal_delay_list): Can't put something in a
|
|||
|
non-annulled delay slot that can trap.
|
|||
|
|
|||
|
* tm-i860.h (GO_IF_LEGITIMATE_ADDRESS): Typo testing offset alignment.
|
|||
|
|
|||
|
* cccp.c (do_assert, do_unassert, check_assertion): New functions.
|
|||
|
(compare_keyword_lists, read_keyword_list, free_keyword_list):
|
|||
|
New functions.
|
|||
|
* cexp.y (yylex): Allow `#' as token.
|
|||
|
Return name and length of symbol.
|
|||
|
(keywords): New nonterminal.
|
|||
|
(expr): Recognize # to test an assertion.
|
|||
|
(U_CHAR, struct arglist): Data types copied from cccp.c.
|
|||
|
(%union): New alternatives `keywords' and `name'.
|
|||
|
|
|||
|
Mon Aug 13 22:26:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* tm-romp.h (SLOW_BYTE_ACCESS): Set to 0.
|
|||
|
|
|||
|
* expmed.c (store_bit_field, extract_bit_field): Use get_best_mode
|
|||
|
to select mode to use for accessing memory when bitfield insns don't
|
|||
|
accept memory.
|
|||
|
|
|||
|
* c-common.c (rewrite_for_merged_ref, make_merged_ref): Deleted.
|
|||
|
(merge_component_comparisons): Delete from here.
|
|||
|
* c-tree.h (merge_component_comparisons): No longer global.
|
|||
|
* c-convert.c (build_binary_op_nodefault): Don't try to merge component
|
|||
|
references here; now done in fold.
|
|||
|
* cplus-typeck.c (build_binary_op_nodefault): Likewise.
|
|||
|
* Makefile.in (fold-const.o): Now includes flags.h.
|
|||
|
* fold-const.c: Likewise.
|
|||
|
(STRIP_NOPS): New macro.
|
|||
|
(decode_field_reference, all_ones_mask): New functions.
|
|||
|
(merge_component_references): Put rewritten version here.
|
|||
|
This fixes bugs in the way that comparisons with non-equal
|
|||
|
constants (!p->a && p->b) are handled and in endianness checking.
|
|||
|
Also accepts more general comparisons, and, in particular, its
|
|||
|
own output so more than a pair of operations can be merged.
|
|||
|
(fold): Call it for TRUTH_{AND*,OR*}_EXPR.
|
|||
|
|
|||
|
* tree.def (BIT_FIELD_REF): New tree code.
|
|||
|
* expr.c (get_inner_reference): Support BIT_FIELD_REF.
|
|||
|
If bitfield is a complete mode-sized unit, return that mode; if it
|
|||
|
is a subset of bits within a mode-sized unit, return VOIDmode.
|
|||
|
(expand_assignment): Check for BIT_FIELD_REF.
|
|||
|
Use mode returned from get_inner_reference to see if bit field.
|
|||
|
(store_constructor): Likewise.
|
|||
|
(store_field): Don't pass arg BIT_FIELD; use MODE == VOIDmode
|
|||
|
instead. All callers changed.
|
|||
|
(expand_expr, case BIT_FIELD_REF): New case. Handled same as
|
|||
|
COMPONENT_REF.
|
|||
|
Use mode returned from get_inner_reference rather than DECL_BIT_FIELD.
|
|||
|
(expand_increment): Must stabilize BIT_FIELD_REF.
|
|||
|
(do_jump, case NOP_EXPR): Check for inner BIT_FIELD_REF and ARRAY_REF.
|
|||
|
(do_jump, case COMPONENT_REF): Generalize to handle BIT_FIELD_REF
|
|||
|
and some ARRAY_REFs also.
|
|||
|
* fold-const.c (operand_equal_p): Handle BIT_FIELD_REF.
|
|||
|
* tree.c (staticp): Rework to use switch instead of if-then-else.
|
|||
|
Add support for BIT_FIELD_REF.
|
|||
|
(stabilize_reference, simple_cst_equal): Support BIT_FIELD_REF.
|
|||
|
|
|||
|
* c-common.c (truthvalue_conversion): Rework to use switch rather
|
|||
|
than if-then-else.
|
|||
|
Generate either TRUTH_{OR*|AND*}_EXPR or comparison operations as
|
|||
|
much as possible.
|
|||
|
Handle REAL_CST, ADDR_EXPR, ABS_EXPR, FLOAT_EXPR, FFS_EXPR,
|
|||
|
LROTATE_EXPR, RROTATE_EXPR, BIT_XOR_EXPR, and MINUS_EXPR.
|
|||
|
Call fold for COND_EXPRs that we make.
|
|||
|
* c-convert.c (build_unary_op): invert_truthvalue can't return 0,
|
|||
|
so don't check for it.
|
|||
|
(invert_truthvalue): Delete from here.
|
|||
|
(convert_to_integer, build_conditional_expr): Try to fold COND_EXPR.
|
|||
|
* c-plus-cvt.c (convert_to_integer): Likewise.
|
|||
|
* cplus-typeck.c (build_conditional_expr): Likewise.
|
|||
|
(build_unary_op): invert_truthvalue can't return 0.
|
|||
|
(invert_truthvalue): Delete from here.
|
|||
|
* fold-const.c (invert_truthvalue): Move to here.
|
|||
|
Don't invert floating-point test.
|
|||
|
Look inside conversions.
|
|||
|
Use recursive call to negate inside logical operations rather than
|
|||
|
building a TRUTH_NOT_EXPR.
|
|||
|
Allow only certain TREE_CODEs as operands; abort for the rest.
|
|||
|
(fold_convert): Accept second argument that is item being
|
|||
|
converted to ensure that NOPs have been stripped.
|
|||
|
(operand_equal_p): Return 0 if either operand has side effects.
|
|||
|
If both integer or real constants, check the values.
|
|||
|
Do a more thorough test to see if two items are identical;
|
|||
|
specifically, compare the operands of simple TREE_CODEs.
|
|||
|
(omit_one_operand, distribute_bit_expr): New functions.
|
|||
|
(make_bit_field_ref, optimize_bit_field_compare): Likewise.
|
|||
|
(fold): Remove LOSES; now done explicitly or by calling
|
|||
|
omit_one_operand. Some previous uses weren't needed.
|
|||
|
Try to fold any COND_EXPRs and some COMPOUND_EXPRs we make.
|
|||
|
Remove pair of NEGATE_EXPRs and BIT_NOT_EXPRs.
|
|||
|
Convert "- (a - b)" to "b - a" for non-floating-point.
|
|||
|
ABS_EXPR applied to ABS_EXPR or NEGATE_EXPR is ABS_EXPR of inner arg.
|
|||
|
Convert "a + (-b)" to "a - b" and "a - (-b)" to "a + b".
|
|||
|
If adding ANDs with constants that have no bits, in common, try
|
|||
|
bitwise-or, since we may then be able to distribute the operation,
|
|||
|
e.g., (a & 7) + (a & 0x70) -> a & 0x77.
|
|||
|
Add missing last arg to operand_equal_p call.
|
|||
|
Call distribute_bit_expr for BIT_AND_EXPR and BIT_IOR_EXPR.
|
|||
|
Exclusive-or with all ones is bit negation.
|
|||
|
If second arg of BIT_AND_TC_EXPR is constant, convert to BIT_AND_EXPR.
|
|||
|
Handle TRUTH_NOT_EXPR by calling invert_truthvalue.
|
|||
|
Call optimize_bit_field_compare for comparisons of bitfields.
|
|||
|
Handle "a ? 1 : 0" and "a ? 0 : 1" as test or negated test.
|
|||
|
Simplify "a & 4 ? a & 4 : 0" and "a ? a : 0" to remove conditonal.
|
|||
|
* stor-layout.c (get_best_mode): New function.
|
|||
|
* machmode.h: Define it.
|
|||
|
* tree.c (integer_pow2p): New function.
|
|||
|
* tree.h: Declare new functions and functions no longer static.
|
|||
|
|
|||
|
Mon Aug 13 17:45:13 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* config.gcc (sun3-mach): New alternative.
|
|||
|
* tm-sun3mach.h: New file.
|
|||
|
|
|||
|
* m68k.md (bfextu patterns): Set CC_NOT_NEGATIVE.
|
|||
|
|
|||
|
Mon Aug 13 10:14:37 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* cplus-decl2.c (flag_minimal_debug): Now is default is
|
|||
|
-fflag-minimal-debug.
|
|||
|
|
|||
|
* cplus-tree.c (virtual_member): Return the assoc of a non-virtual
|
|||
|
basetype that comes from a virtual baseclass. Changed callers
|
|||
|
which used to call `value_member' to call virtual_member instead.
|
|||
|
|
|||
|
Mon Aug 13 06:54:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* optabs.c (expand_twoval_binop): Fix typo.
|
|||
|
|
|||
|
* cse.c (lookup_as_function): Don't assume CODE is a unary
|
|||
|
operation. It might be a binary op or REG.
|
|||
|
|
|||
|
Sun Aug 12 21:42:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* expr.c (expand_expr, case COND_EXPR): Don't abort if first arg of
|
|||
|
COND_EXPR isn't a comparison; just suppress the do_store_flag call.
|
|||
|
|
|||
|
Sun Aug 12 14:26:45 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* tree.h (enum built_in_function): Delete comma after last name.
|
|||
|
* c-parse.h (enum rid): Likewise.
|
|||
|
* expr.h (enum optab_methods): Likewise.
|
|||
|
* stab.h: Add dummy enum name at end.
|
|||
|
|
|||
|
* config.gcc (genix): Set tm_file.
|
|||
|
* tm-genix.h (ASM_OUTPUT_DOUBLE): New overriding definition.
|
|||
|
|
|||
|
* tree.h (struct tree_type, struct tree_decl): Handle ONLY_INT_FIELDS.
|
|||
|
* rtl.h (struct rtx_def): Likewise. That macro goes in xm-*.h.
|
|||
|
|
|||
|
Sat Aug 11 16:56:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* cplus-decl.c (finish_function): Check value of HAVE_return before
|
|||
|
calling gen_return.
|
|||
|
|
|||
|
* reorg.c (optimize_skip): Don't reject skip when we jump around an
|
|||
|
insn and merge at the return point.
|
|||
|
|
|||
|
Fri Aug 10 17:00:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* dbxout.c (dbxout_parms, dbxout_reg_parms): Ignore nameless parms.
|
|||
|
* sdbout.c (sdbout_parms, sdbout_reg_parms): Ignore nameless parms.
|
|||
|
|
|||
|
Fri Aug 10 14:14:08 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* recog.c (indirect_operand): Modes need not agree if MODE == VOIDmode;
|
|||
|
remove test from here since it is in memory_operand, which this calls.
|
|||
|
|
|||
|
Thu Aug 9 15:19:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* c-decl.c (store_parm_decls): If function has variable number of args,
|
|||
|
put a dummy decl at end of parmlist.
|
|||
|
* c-parse.y (unary_expr): Handle &... with address of dummy decl.
|
|||
|
|
|||
|
* tm-*.h (LEGITIMIZE_ADDRESS): Go to WIN instead of returning.
|
|||
|
|
|||
|
* cccp.c (handle_directive): Add code to support `# DIGIT'
|
|||
|
but disable it for the time being.
|
|||
|
|
|||
|
* tm-hp9k320.h (CPP_SPEC): Define _HPUX_SOURCE if not ANSI.
|
|||
|
(CPP_PREDEFINES): Don't define it here.
|
|||
|
Do define alternatives with __ prepended.
|
|||
|
|
|||
|
Wed Aug 8 14:00:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* out-romp.c: Don't include hard-reg-set; already in insn-output.c.
|
|||
|
|
|||
|
* explow.c: insn-flags.h is needed to see if "probe" insn exists.
|
|||
|
* Makefile.in (explow.o): Likewise.
|
|||
|
|
|||
|
Wed Aug 8 13:35:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* cccp.c (check_macro_name): Warn if name is `defined'.
|
|||
|
|
|||
|
* tm-sun386i.h (ASM_IDENTIFY_GCC): If profiling, put a NOP after
|
|||
|
gcc_compiled.
|
|||
|
|
|||
|
Tue Aug 7 23:51:38 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* toplev.c (main): Handle -W options like -f options.
|
|||
|
This supports -Wnounused, and such like.
|
|||
|
(warn_uninitialized): New variable, controls those warnings.
|
|||
|
Set it for -Wuninitialized, and for -W.
|
|||
|
|
|||
|
Tue Aug 7 13:24:58 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* genextract.c (walk_rtx): Fix typo in MATCH_PARALLEL case.
|
|||
|
|
|||
|
* explow.c (allocate_dynamic_stack_space): Pass size of allocated stack
|
|||
|
to gen_probe.
|
|||
|
|
|||
|
Tue Aug 7 12:19:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* pyr.md (extendsfdf2, truncsfdf2, float*, fix*): Use `&'.
|
|||
|
|
|||
|
Tue Aug 7 07:13:54 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* jump.c (find_cross_jump): Include a USE or CLOBBER in cross jump
|
|||
|
but don't count it against minimum size.
|
|||
|
Never return when cross-jump hasn't actually been done.
|
|||
|
|
|||
|
Mon Aug 6 18:50:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* varasm.c: Include regs.h.
|
|||
|
(decode_reg_name): Remove extern for reg_names; it is in regs.h.
|
|||
|
* Makefile.in (varasm.o): Depends on regs.h.
|
|||
|
|
|||
|
Mon Aug 6 12:46:07 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* c-decl.c (grokdeclarator): Don't warn if initialized fcn is extern.
|
|||
|
(start_decl): Don't warn at all for initialized extern.
|
|||
|
|
|||
|
* final.c (final_start_function): Handle PROFILE_BEFORE_PROLOGUE.
|
|||
|
(profile_function): New subroutine.
|
|||
|
|
|||
|
* tm-i386sco.h: New file.
|
|||
|
* config.gcc (i386-sco): New alternative.
|
|||
|
|
|||
|
* gcc.c (ENDFILE_SPEC): New macro.
|
|||
|
(do_spec_1): Handle %E.
|
|||
|
(link_spec): Use %E.
|
|||
|
|
|||
|
* xm-i386.h (alloca): Define without arg.
|
|||
|
|
|||
|
* Makefile.in (stage*): Use RANLIB_TEST.
|
|||
|
(LIMITS_H): New variable.
|
|||
|
(USER_H): Use that.
|
|||
|
* make-i386sco: New file.
|
|||
|
|
|||
|
Sun Aug 5 13:11:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* rtl.h: Delete all machine mode defns; include machmode.h instead.
|
|||
|
* tree.h: Likewise.
|
|||
|
* machmode.h: New file.
|
|||
|
* stor-layout.c: No longer include rtl.h.
|
|||
|
* Makefile.in: (RTL_H, TREE_H): Add machmode.h.
|
|||
|
(stor-layout.o): No longer depends on RTL_H.
|
|||
|
|
|||
|
* c-common.c (binary_op_error, shorten_compare): Should no longer
|
|||
|
have been static when moved here.
|
|||
|
|
|||
|
Sun Aug 5 12:57:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* stor-layout.c (layout_record, layout_union): Test value of
|
|||
|
PCC_BITFIELD_TYPE_MATTERS for being nonzero, if it is defined.
|
|||
|
* tm-*.h: Define with value 1.
|
|||
|
* tm-vax.h (PCC_BITFIELD_TYPE_MATTERS): Depends on -mvaxc-alignment.
|
|||
|
|
|||
|
* proto.h: New file.
|
|||
|
* Makefile.in (USER_H): Add that file.
|
|||
|
|
|||
|
Sun Aug 5 00:04:08 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* cplus-decl2.c (grokfield): It is no longer legal to specify
|
|||
|
the initializer for a static const member in the class
|
|||
|
declaration. Dealing with default initializers is basically
|
|||
|
impossible.
|
|||
|
|
|||
|
* cplus-init.c (build_delete): Don't wrap `addr' in a SAVE_EXPR
|
|||
|
until it is in fact an address. This allows us to call
|
|||
|
destructors on the return values of function calls.
|
|||
|
|
|||
|
* cplus-typeck.c (commontype): Fixed bug in OFFSET_TYPE case which
|
|||
|
led to infinite recursion (since we did not reduce the types
|
|||
|
before we recursed).
|
|||
|
|
|||
|
* cplus-lex.c (check_newline): Make `#pragma implementation' more
|
|||
|
forgiving.
|
|||
|
|
|||
|
* cplus-init.c (expand_aggr_init): Changed Jan 20th change so that
|
|||
|
we test whether TYPE has a constructor defined, and we do not test
|
|||
|
at all whether INIT was from a GNU constructor expression or not.
|
|||
|
|
|||
|
* cplus-typeck.c (build_modify_expr_1): Don't return
|
|||
|
`error_mark_node' unless there really was an error. If there is
|
|||
|
no work to do, return `integer_zero_node'.
|
|||
|
|
|||
|
* cplus-class.c (propagate_basetype_offsets): Count the space
|
|||
|
between baseclasses, not just the space they occupy.
|
|||
|
|
|||
|
* cplus-typeck.c (commontype): Don't drop the exceptions that are
|
|||
|
raised by functions and methods.
|
|||
|
|
|||
|
* cplus-cvt.c (convert_to_real): Fix if/else level problem in
|
|||
|
case where EXPR is of aggregate type.
|
|||
|
|
|||
|
* cplus-decl.c (finish_decl): Emit a line-number note to give
|
|||
|
users a chance to set a breakpoint before the initialization of an
|
|||
|
object takes place.
|
|||
|
|
|||
|
* cplus-class.c (build_method_call): If the function we get is not
|
|||
|
directly from the object we have, call `convert_pointer_to' if the
|
|||
|
object uses multiple inheritance or virtual baseclasses.
|
|||
|
|
|||
|
* cplus-typeck.c (build_binary_op_nodefault): Don't call
|
|||
|
`convert_to_pointer' with an argument that might be
|
|||
|
the integer zero.
|
|||
|
|
|||
|
* cplus-method.c (hack_identifier): Look for DECL_REFERENCE_SLOT
|
|||
|
in RESULT_DECLs as well.
|
|||
|
|
|||
|
* cplus-init.c (build_vec_delete): Don't forget to deallocate the
|
|||
|
container if requested. Really use AUTO_DELETE and
|
|||
|
AUTO_DELETE_VEC with the same interpretation as `build_delete'
|
|||
|
gives to its AUTO_DELETE parameter.
|
|||
|
|
|||
|
Sat Aug 4 22:08:44 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* jump.c (find_cross_jump): Use prev_nonnone_insn.
|
|||
|
Don't cross-jump into the middle of a USE-CALL_INSN-CLOBBER
|
|||
|
block; doing so can confuse reorg.c.
|
|||
|
|
|||
|
* optabs.c (expand_binop, expand_binop, expand_twoval_binop):
|
|||
|
If predicate doesn't match, ensure that operand is in a pseudo
|
|||
|
register. Current code assumes that any register will suffice,
|
|||
|
but an insn may want to reject certain hard registers.
|
|||
|
(expand_unop, emit_unop_insn, emit_cmp_insn): Likewise.
|
|||
|
|
|||
|
Sat Aug 4 15:29:09 1990 Michael Tiemann (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* function.c (assign_parms): For parms passed by reference,
|
|||
|
make the memory object's mode agree with the parm's original
|
|||
|
type mode.
|
|||
|
* calls.c (expand_call): Fixed braino in building argument
|
|||
|
reference when FUNCTION_ARG_PASS_BY_REFERENCE is defined.
|
|||
|
|
|||
|
* varasm.c (assemble_variable): Hack our way around the problem
|
|||
|
that static class members look like initialized variables for the
|
|||
|
purposes of establishing FIRST_GLOBAL_OBJECT_NAME.
|
|||
|
|
|||
|
* cplus-lex.c (reinit_parse_for_method): Give error message for
|
|||
|
common mistake of forgetting the function body.
|
|||
|
|
|||
|
* cplus-typeck.c (build_component_ref): Make better error message
|
|||
|
when field is not found.
|
|||
|
|
|||
|
* cplus-class.c (finish_struct): TYPE_GETS_*_INIT_REF comes from
|
|||
|
members as well.
|
|||
|
|
|||
|
* cplus-typeck.c (c_expand_return): Give warning about returning
|
|||
|
non-lvalues that come from functional casts.
|
|||
|
|
|||
|
* cplus-search.c (get_base_distance): Changed to follow leftmost
|
|||
|
path only when PARENT == TYPE_MAIN_VARIANT (PARENT).
|
|||
|
|
|||
|
* cplus-class.c (modify_vtable_entries): Call get_base_distance
|
|||
|
with 0 path_ptr, since we do not appear to use the path computed.
|
|||
|
|
|||
|
Fri Aug 3 07:37:30 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* final.c (leaf_function_p): Delete line advertently retained
|
|||
|
after change of July 29.
|
|||
|
|
|||
|
* reorg.c (optimize_skip, try_hoist_target): Don't invert jump
|
|||
|
unless can_reverse_comparison_p says it is OK. Use invert_jump
|
|||
|
to do it.
|
|||
|
(fill_simple_delay_slots): Another way flow of control can merge is
|
|||
|
for two insns to jump to the same place; try to get insns from there.
|
|||
|
(mostly_true_jump): Return 2 for a jump very likely to be true (the
|
|||
|
branch back to the start of a loop).
|
|||
|
(fill_slots_from_thread): Accept new arg LIKELY. If true, see if can
|
|||
|
put increment in delay slot and undo it after the end of the loop.
|
|||
|
(fill_eager_delay_slots): Pass new arg to fill_slots_from_thread.
|
|||
|
If previous insn is conditional jump that also didn't get a delay
|
|||
|
slot, see if swapping targets helps.
|
|||
|
|
|||
|
Fri Aug 3 00:18:35 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* cccp.c (MAKE_POS): Avoid constant of uncertain signedness.
|
|||
|
|
|||
|
* gnulib2.c (__bb_init_func): Add dummy function to prevent warning.
|
|||
|
|
|||
|
Thu Aug 2 17:44:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* output.h (current_function_return_rtx): Add new variable.
|
|||
|
* function.h (return_rtx): Likewise.
|
|||
|
* function.c (push_function_context, pop_function_context): Save
|
|||
|
and restore current_function_return_rtx.
|
|||
|
(assign_parms, expand_function_start): Set current_function_return_rtx
|
|||
|
to what is put in DECL_RTL (DECL_RESULT (current_function_decl)).
|
|||
|
* reorg.c: No longer uses tree.h.
|
|||
|
(dbr_schedule): Get result RTL from current_function_return_rtx instead
|
|||
|
of reading it from current_function_decl.
|
|||
|
* Makefile.in (reorg.o): No longer depends on TREE_H.
|
|||
|
|
|||
|
* cse.c (remove_invalid_refs): Only invalidate an entry if it
|
|||
|
references the actual register, not merely something sharing its
|
|||
|
quantity.
|
|||
|
(cse_insn): Don't abort if SRC and SRC_EQUIV map to different
|
|||
|
hash classes. Merge them instead.
|
|||
|
|
|||
|
* romp.md (mulsi3): Emit call to lmul$$ as a regular insn
|
|||
|
rather than a CALL_INSN.
|
|||
|
(divsi3, modsi3, udivsi3, umodsi3, call_libfcn): Deleted.
|
|||
|
(divmodsi4, udivmodsi4): New patterns to call ldiv$$ and uldiv$$
|
|||
|
as a normal insn to allow CSE'ing of MOD with DIV.
|
|||
|
|
|||
|
Wed Aug 1 21:56:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* c-parse.y (yylex): Don't warn about non-decimal unsigned by default
|
|||
|
if `u' was specified. Add similar warning for long and long long.
|
|||
|
|
|||
|
Tue Jul 31 23:31:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* tm-encore.h (FUNCTION_PROFILER): Override, putting `.' in label.
|
|||
|
|
|||
|
* xm-vms.h (const): Delete the definition.
|
|||
|
|
|||
|
Mon Jul 30 18:33:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* c-typeck.c (convert_for_assignment): Normally no warning
|
|||
|
between char * and unsigned char *, etc.
|
|||
|
(convert_arguments): Include arg number in incomplete type warning.
|
|||
|
|
|||
|
Mon Jul 30 07:38:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* jump.c (invert_jump): Don't do anything with labels if NLABEL
|
|||
|
equals JUMP_LABEL.
|
|||
|
(redirect_jump): Don't try to reference LABEL_NUSES if olabel is
|
|||
|
zero (meaning this is a return insn).
|
|||
|
(redirect_exp): Handle case of converting return to jump to
|
|||
|
label.
|
|||
|
|
|||
|
* dbxout.c (dbxout_parms): Allow parameter at zero offset from
|
|||
|
AP to be represented as (MEM (REG ...)).
|
|||
|
* sdbout.c (sdbout_parms): Likewise.
|
|||
|
|
|||
|
Sun Jul 29 22:51:00 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* optabs.c (expand_twoval_binop_convert): Deleted.
|
|||
|
(expand_twoval_binop): Rework to be handle predicates, modes, and
|
|||
|
failures in a manner consistent with expand_binop.
|
|||
|
Move code from expand_twoval_binop_convert inline and rework to
|
|||
|
no longer hard-wire SImode and to handle failure.
|
|||
|
|
|||
|
* config.gcc: Finish change of July 24th to have make_var_file depend
|
|||
|
on host machine.
|
|||
|
|
|||
|
* jump.c: Now includes insn-flags.h.
|
|||
|
(jump_optimize): Try to put a RETURN at the end of the function if
|
|||
|
control flows through to it.
|
|||
|
JUMP_LABEL can now be zero for a RETURN or conditional RETURN.
|
|||
|
Try to convert jump to end of function into (possibly conditional)
|
|||
|
RETURN.
|
|||
|
Use next_active_insn instead of next_real_insn; these do the same
|
|||
|
thing prior to reload, after which USE and CLOBBERs don't matter.
|
|||
|
redirect_jump may now fail so don't set CHANGED if it does.
|
|||
|
Delete optimization of jump to RETURN; now subsumed by follow_jumps.
|
|||
|
Reset INSN_CODE if changing conditional jump to unconditional.
|
|||
|
(cond_jump_p): Conditional RETURN is conditional jump.
|
|||
|
(follow_jumps): Change argument name to AFTER_RELOAD.
|
|||
|
If not after reload, do not chain across a USE or CLOBBER.
|
|||
|
Recognize RETURN insns.
|
|||
|
(tension_vector_labels): Likewise.
|
|||
|
(redirect_jump, redirect_exp): If NLABEL is zero, turn JUMP into a
|
|||
|
(possibly conditional) RETURN; use validate_change to see if such an
|
|||
|
insn exists.
|
|||
|
Now returns non-zero if succeeds, 0 otherwise.
|
|||
|
Unconditional RETURN looks like (RETURN), not (SET (PC) (RETURN)).
|
|||
|
(thread_jumps): Ignore any type of RETURN insn.
|
|||
|
* Makefile.in (jump.o): Depends on insn-flags.h.
|
|||
|
* loop.c (strength_reduce): Don't confuse conditional return with
|
|||
|
jump to top of loop when LOOP_TOP == 0.
|
|||
|
* final.c (leaf_function_p): No longer static; no longer takes an arg.
|
|||
|
(final_start_function): Don't pass START to leaf_function_p.
|
|||
|
* romp.md (return pattern): Convert to a named pattern.
|
|||
|
|
|||
|
Sun Jul 29 16:05:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* tm-vms.h (ASM_OUTPUT_EXTERNAL): Check TREE_READONLY.
|
|||
|
|
|||
|
* xm-vms.h (alloca): Use built-in alloca.
|
|||
|
|
|||
|
Sun Jul 29 06:47:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* reorg.c (fill_slots_from_thread): Restore inadvertantly deleted
|
|||
|
lines.
|
|||
|
|
|||
|
Fri Jul 27 19:53:18 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* Makefile.in (reorg.o): Depends on tree.h, basic-block.h, regs.h,
|
|||
|
and output.h
|
|||
|
|
|||
|
Fri Jul 27 16:30:03 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* varasm.c (assemble_variable): Handle ASM_OUTPUT_SHARED_COMMON
|
|||
|
and ASM_OUTPUT_SHARED_LOCAL.
|
|||
|
|
|||
|
* tm-encore.h (SHARED_SECTION_ASM_OP): New macro.
|
|||
|
(ASM_OUTPUT_SHARED_COMMON, ASM_OUTPUT_SHARED_LOCAL): New.
|
|||
|
All this waiting for papers from pabuhr@watmsg.waterloo.edu.
|
|||
|
|
|||
|
Fri Jul 27 16:10:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* make-romp (CC): Set up to allow use of hc.
|
|||
|
|
|||
|
Fri Jul 27 15:07:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* combine.c (subst): Handle (ASHIFT 1 x) in (EQ (AND ... y) 0)
|
|||
|
only if little-endian.
|
|||
|
|
|||
|
Thu Jul 26 23:19:15 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* expmed.c (expand_shift): Consistently call protect_from_queue
|
|||
|
before doing anything else.
|
|||
|
Always put operand1 of extzv into a register because it is SImode
|
|||
|
and we assume that this means a register.
|
|||
|
|
|||
|
Thu Jul 26 14:18:11 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* varasm.c (assemble_variable): Delete dead code.
|
|||
|
DATA_ALIGNMENT takes tree and current alignment and gives new
|
|||
|
alignment for a non-automatic variable of that type.
|
|||
|
Also apply CONSTANT_ALIGNMENT to the initial value; it now takes
|
|||
|
the constant and old alignment and gives the new alignment.
|
|||
|
Adjust DECL_ALIGN to the resulting alignment.
|
|||
|
Use floor_log2 consistently instead of duplicating its function.
|
|||
|
(get_or_assign_label): Use CONSTANT_ALIGNMENT instead of DATA_ALIGNMENT
|
|||
|
and pass type instead of decl.
|
|||
|
* expr.c (get_pointer_alignment): Rework to: distinguish reliably
|
|||
|
between expressions giving the address and those giving the item being
|
|||
|
addressed; use the alignment from the type of the object being
|
|||
|
pointer to; return 0 if the type is not a pointer; and other
|
|||
|
miscellaneous changes.
|
|||
|
(string_constant): Skip CONVERT_EXPR and NON_LVALUE_EXPR as well
|
|||
|
as NOP_EXPR.
|
|||
|
(expand_builtin): Allow get_pointer_alignment to fail, in which case
|
|||
|
we call the actual function.
|
|||
|
* stmt.c (expand_decl): Set actual alignment obtained into DECL_ALIGN
|
|||
|
since it may be better aligned than required and get_pointer_alignment
|
|||
|
can take advantage of this.
|
|||
|
* tm-gmicro.h, tm-pyr.h, tm.romp-h: Add or replace definitions of
|
|||
|
CONSTANT_ALIGNMENT to word-align string constants and
|
|||
|
DATA_ALIGNMENT to word-align character arrarys for builtin memory
|
|||
|
functions.
|
|||
|
|
|||
|
* fold-const.c (rshift_double): Reset carry after each shift of
|
|||
|
one bit.
|
|||
|
|
|||
|
* vax.md (ashrsi3): If right shift by constant, emit as ASHIFTRT.
|
|||
|
(ashrsi3_const): New pattern to match it.
|
|||
|
(casel): Delete patterns no longer needed.
|
|||
|
* cse.c (cse_insn): Remove unneeded part of change of July 23.
|
|||
|
(fold_rtx): Convert shift with negative constant count to shift in
|
|||
|
the opposite direction.
|
|||
|
* combine.c (subst): Likewise.
|
|||
|
|
|||
|
* emit-rtl.c (init_emit_once): Initialize arg_pointer_rtx before
|
|||
|
struct pointer and static chain values in case they want to use it.
|
|||
|
|
|||
|
Thu Jul 26 12:31:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* final.c (final_scan_insn): Align label table to boundary appropriate
|
|||
|
for items of its size.
|
|||
|
(get_attr_length, shorten_branches): Allow for label table alignment.
|
|||
|
|
|||
|
Wed Jul 25 15:06:44 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* fixincludes: Handle uses of _IO* followed by spaces.
|
|||
|
Change redirections for cd when testing that directory exists.
|
|||
|
|
|||
|
By Tiemann:
|
|||
|
|
|||
|
* emit-rtl.c (next_cc0_user): Handle insns in which cc0
|
|||
|
is set and used in the same insn.
|
|||
|
|
|||
|
* final.c (leaf_function_p): Look inside INSNs which contain
|
|||
|
a delayed-call sequence.
|
|||
|
(final_start_function): Test `only_leaf_regs_used' before
|
|||
|
`leaf_function_p', since that is likely to be faster.
|
|||
|
(final_scan_insns): Normally we don't have NOTICE_UPDATE_CC
|
|||
|
take action when processing the path of an annulled branch,
|
|||
|
since that path does not affect the cc's of the fall-through
|
|||
|
insns at all. However, we cannot always ignore the effect of
|
|||
|
the cc's when processing a delayed annulled branch: when the
|
|||
|
delayed annulled branch follows a label and carries a
|
|||
|
REG_CC_STATUS note, that note must be processed.
|
|||
|
|
|||
|
* genattr.c (main): Generate #defines for annulled branches
|
|||
|
which are consistent with documentation.
|
|||
|
|
|||
|
* reorg.c: Finish recent rework by modifying code specific to
|
|||
|
machines that have annulling branches.
|
|||
|
|
|||
|
* c-common.c (merge_component_comparisons): Previous logic did
|
|||
|
not handle cases of (A == 1) && (B == 1), (A != 0) && (B != 0),
|
|||
|
and (A != 1) || (B != 1). Fixed by expanding the logic out
|
|||
|
longhand and letting the compiler do the proper cross-jumping.
|
|||
|
|
|||
|
* tm-vms.h (ASM_OUTPUT_EXTERNAL): Use assemble_name.
|
|||
|
|
|||
|
* expr.c (expand_expr): For BIND_EXPR, do the init for all vars.
|
|||
|
|
|||
|
* stupid.c: Include flags.h.
|
|||
|
* genrecog.c (main): Make insn-recog.c include flags.h.
|
|||
|
|
|||
|
Sun Jul 22 12:04:43 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* cplus-except.c (cplus_expand_end_except): If the user gives a
|
|||
|
default handler, the exception is considered caught in that
|
|||
|
handler.
|
|||
|
* cplus-parse.y (except_stmts): Rest of fix went here, in DEFAULT
|
|||
|
case.
|
|||
|
|
|||
|
* cplus-decl.c (finish_decl): Don't emit cleanups twice.
|
|||
|
|
|||
|
* cplus-class.c (finish_struct_bits): Don't call
|
|||
|
`fixup_vbase_offsets'.
|
|||
|
* cplus-tree.c (fixup_vbase_offsets): #if 0 this function.
|
|||
|
|
|||
|
* cplus-cvt.c (build_default_binary_type_conversion): Handle
|
|||
|
arguments which are REFERENCE_TYPE.
|
|||
|
|
|||
|
* cplus-method.c (prepare_inline): Set DECL_CONTEXT of this
|
|||
|
function's parameters.
|
|||
|
|
|||
|
* cplus-decl.c (grokfndecl): When adding a new virtual function
|
|||
|
entry, RAISES may change a second time.
|
|||
|
|
|||
|
Thu Jul 5 10:44:39 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* cplus-decl2.c (grokfield): Static consts need not be initialized
|
|||
|
in the class definition.
|
|||
|
|
|||
|
Mon Jul 2 06:12:49 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* cplus-init.c (resolve_offset_ref): If BASETYPE is not a base
|
|||
|
type for the current class, give error and return.
|
|||
|
|
|||
|
Sun Jul 1 00:18:47 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* cplus-decl.c (finish_function): Throw away more code if we have
|
|||
|
an inline function from the interface.
|
|||
|
|
|||
|
* cplus-class.c (add_virtual_function): Set DECL_VINDEX from the
|
|||
|
virtual function which comes from the vtable shared by
|
|||
|
CURRENT_CLASS_TYPE, if possibe.
|
|||
|
|
|||
|
* cplus-typeck.c (build_binary_op): Call `default_conversion'
|
|||
|
after doing type instantiation.
|
|||
|
|
|||
|
* cplus-init.c (build_new): New 2.0 interpretation: `new int (10)'
|
|||
|
means allocate an int, and initialize it with 10.
|
|||
|
|
|||
|
* cplus-init.c (emit_base_init): Completion of fix for virtual
|
|||
|
function table initialization. @@ BTW, this may now cause extra
|
|||
|
virtual function table initializations. They will all be correct,
|
|||
|
but they may also be redundant. GCC's optimizer doesn't know how
|
|||
|
to remove even the simplest such redundancy.
|
|||
|
|
|||
|
Sat Jun 30 13:54:30 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* cplus-class.c (finish_base_struct): Store BASETYPE in the
|
|||
|
VFIELDS chain (in its TREE_TYPE).
|
|||
|
|
|||
|
Fri Jun 29 09:26:17 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* cplus-class.c (build_vtable,prepare_fresh_vtable): Stash the
|
|||
|
type that caused this vtable to be defined in DECL_CONTEXT
|
|||
|
* cplus-search.c (bfs_unmark_finished_struct): Work around
|
|||
|
DECL_CONTEXT conflict for vtables. @@ NOT A SOLUTION.
|
|||
|
|
|||
|
* cplus-lex.c: Extend meaning of `#pragma implementation'
|
|||
|
to allow files to `implement' types from general headers.
|
|||
|
|
|||
|
Tue Jul 24 22:18:23 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* reorg.c: Major rework. Changes includes:
|
|||
|
(mark_target_live_regs): Scan code to compute which registers are
|
|||
|
live at particular insns. Uses tables created by flow, REG_DEAD
|
|||
|
notes, and registers set before they are used.
|
|||
|
(emit_delay_sequence): Always write SEQUENCE as INSN. Many routines
|
|||
|
changed to reflect this.
|
|||
|
(fill_simple_delay_slots): Loop for merge point when target of jump
|
|||
|
comes back to fallthrough code. Try to get insns from there.
|
|||
|
(fill_eager_delay_slots): Fallthrough and target case merged into new
|
|||
|
function fill_slots_from_thread.
|
|||
|
|
|||
|
* tm-romp.h, romp.md, out-romp.c, xm-romp.h, make-romp: New files to
|
|||
|
support the ROMP microprocessor, used in the IBM PC RT.
|
|||
|
|
|||
|
* recog.c (comparison_operator): New function.
|
|||
|
|
|||
|
* jump.c (jump_optimize): If putting constant into register, see
|
|||
|
if it is already present in the register.
|
|||
|
|
|||
|
Tue Jul 24 15:35:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* c-typeck.c (build_binary_op_nodefault): Allow compare of any
|
|||
|
pointer with const void *, etc.
|
|||
|
|
|||
|
Tue Jul 24 17:10:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* expr.c (get_inner_reference): New function.
|
|||
|
(expand_assignment): Use it to find out about our target.
|
|||
|
(expand_expr, case COMPONENT_REF): Likewise.
|
|||
|
(expand_expr, case COND_EXPR): If can do store-flag, convert
|
|||
|
X ? A+1 : A to A + (X!=0); fold-const made the former from the latter.
|
|||
|
Only create label when we know we will need it.
|
|||
|
Simplify unnessarily complex call to safe_from_p.
|
|||
|
(expand_expr): Make new variable UNSIGNEDP and use it instead
|
|||
|
of TREE_UNSIGNED (type). Also, consistently use existing
|
|||
|
variable TYPE instead of TREE_TYPE (exp) and similarly for MODE.
|
|||
|
|
|||
|
Tue Jul 24 13:50:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* cccp.c (collect_expansion): Error if ## at beg or end.
|
|||
|
|
|||
|
* c-decl.c (grokdeclarator): Error for long, etc. with nonarith type.
|
|||
|
Error for signed or unsigned with floating type.
|
|||
|
Error for initialized parm.
|
|||
|
|
|||
|
* config.gcc: Make make_var_file depend on host machine, not target.
|
|||
|
|
|||
|
Tue Jul 24 13:40:35 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* varasm.c (decode_reg_name): Make TABLE static for non-GCC compilers.
|
|||
|
|
|||
|
* c-typeck.c (type_for_size, type_for_mode): Delete from here.
|
|||
|
(binary_op_error, shorten_compare, truthvalue_conversion): Likewise.
|
|||
|
* cplus-typeck.c: Delete second copy from here.
|
|||
|
* c-common: Move above functions to here.
|
|||
|
|
|||
|
Tue Jul 24 12:20:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* cccp.c (path_include): Fix typo in var name.
|
|||
|
|
|||
|
Mon Jul 23 17:46:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* config.gcc: Remove redundant assignment to tm_file for 88000.
|
|||
|
Fix typo when assigning to make_var_file.
|
|||
|
|
|||
|
* function.c (optimize_bit_field): Fix typo in change_address call.
|
|||
|
|
|||
|
Mon Jul 23 16:59:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* varasm.c (decode_reg_name): Ignore % at beginning of name.
|
|||
|
Support extra names defined by ADDITIONAL_REGISTER_NAMES.
|
|||
|
* tm-i386.h (ADDITIONAL_REGISTER_NAMES): Define it.
|
|||
|
|
|||
|
* dbxout.c (dbxout_init): Handle new macros
|
|||
|
ASM_OUTPUT_MAIN_SOURCE_FILENAME and ASM_OUTPUT_MAIN_SOURCE_DIRECTORY.
|
|||
|
* sdbout.c (sdbout_filename): Handle ASM_OUTPUT_MAIN_SOURCE_FILENAME.
|
|||
|
|
|||
|
Mon Jul 23 16:50:32 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* tm-vax.h (NOTICE_UPDATE_CC): CALL clobbers CC if inside PARALLEL too.
|
|||
|
|
|||
|
* vax.md (call_value_pop): Fix typo in argument number.
|
|||
|
|
|||
|
* cse.c (cse_insn): Shift's aren't associative if in different
|
|||
|
directions, even if same rtx_code.
|
|||
|
Try to fold result of associating the operation in case it is now
|
|||
|
trivial.
|
|||
|
|
|||
|
* jump.c (mark_modified_reg): New function.
|
|||
|
(thread_jumps): Look at insns between target of first jump and the
|
|||
|
second jump. Mark any registers that they modify and record if they
|
|||
|
modify memory.
|
|||
|
Don't go past a CODE_LABEL.
|
|||
|
If we pass an unconditional jump, follow it.
|
|||
|
Use prev_nonnote_insn instead of explicit loop.
|
|||
|
(rtx_equal_for_thread_p): Consult recorded information to see if
|
|||
|
memory of registers were modified prior to second jump.
|
|||
|
* Makefile.in (jump.o): Now needs hard-reg-set.h.
|
|||
|
|
|||
|
Sat Jul 21 13:58:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* cccp.c (O_RDONLY): Define it if not defined.
|
|||
|
|
|||
|
* c-decl.c (finish_decl): No error for nonstatic incomplete array.
|
|||
|
|
|||
|
Sat Jul 21 08:24:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* alliant.md (call patterns): Function address must be memory operand.
|
|||
|
* convex.md, m68k.md, mips.md, ns32k.md, tahoe.md, vax.md: Likewise.
|
|||
|
|
|||
|
Thu Jul 19 16:06:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* cccp.c (path_include): New function.
|
|||
|
(main): Call that to handle CPATH envvar.
|
|||
|
|
|||
|
* varasm.c (assemble_variable): Error if size exceeds 2**32-1.
|
|||
|
|
|||
|
* emit-rtl.c (init_emit_once): Pass write_symbols to this function
|
|||
|
(init_emit): Not this one. All callers changed.
|
|||
|
|
|||
|
Tue Jul 17 21:24:08 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* local-alloc.c (update_equiv_regs): Don't replace a register with
|
|||
|
an equivalence if the insn making the equivalence has a source
|
|||
|
different from the equivalent value.
|
|||
|
|
|||
|
Tue Jul 17 16:47:42 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* expr.c (emit_block_move): Allow movstr* to fail.
|
|||
|
|
|||
|
Tue Jul 17 15:19:18 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* emit-rtl.c (change_address): Don't call memory_address if reload
|
|||
|
is in progress, not just after it has completed.
|
|||
|
|
|||
|
Mon Jul 16 00:34:27 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* jump.c (can_reverse_comparison_p): New function.
|
|||
|
(jump_optimize): In if (x) ... else x = 0; reverse comparison
|
|||
|
if second operand of IF_THEN_ELSE is PC; use new function to
|
|||
|
validate the reversal.
|
|||
|
(jump_back_p): Use new function to see if safe to reverse comparison.
|
|||
|
|
|||
|
Sun Jul 15 17:03:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* jump.c (jump_optimize): Bug in last change; reject uncond jump
|
|||
|
where conditional is expected.
|
|||
|
|
|||
|
* flow.c (mark_used_regs): Handle autoincrement for *p
|
|||
|
followed by q = p+size (neither one dead).
|
|||
|
|
|||
|
Sat Jul 14 22:37:45 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* combine.c (subst): Remove (zero_extend (subreg)) around lshiftrt.
|
|||
|
Remove (and...) from second arg of shift.
|
|||
|
Remove (and...) from around shift.
|
|||
|
|
|||
|
Sat Jul 14 21:35:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* local-alloc.c (update_equiv_regs): New function.
|
|||
|
(local_alloc): Call it.
|
|||
|
(block_alloc): Don't handle REG_EQUIV notes here; now done in
|
|||
|
update_equiv_reg.
|
|||
|
|
|||
|
* calls.c: Include insn-flags.h.
|
|||
|
* Makefile.in (calls.o): Likewise.
|
|||
|
|
|||
|
Sat Jul 14 13:28:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* c-decl.c (duplicate_decls): Don't set DECL_FRAME_SIZE for builtins.
|
|||
|
|
|||
|
* vax.md (SImode bit-field patterns): Use nonmemory_operand.
|
|||
|
|
|||
|
* jump.c (jump_optimize):
|
|||
|
For if (...) x = 1; else x = 0; x must be integer.
|
|||
|
|
|||
|
* gcc.c (default_compilers): Pass -P to cpp.
|
|||
|
|
|||
|
Thu Jul 12 23:38:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* stor-layout.c (layout_record): Handle BITFIELD_NBYTES_LIMITED.
|
|||
|
|
|||
|
* sparc.md (call recognizers): Don't allow address arithmetic.
|
|||
|
|
|||
|
Thu Jul 12 21:47:45 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* emit-rtl.c (change_address): If reload has completed, don't call
|
|||
|
memory_address. Instead, abort if address is not valid.
|
|||
|
|
|||
|
Thu Jul 12 20:41:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* calls.c (emit_call_1): Handle vax, without call and call_value.
|
|||
|
|
|||
|
Thu Jul 12 20:39:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* cse.c (merge_equiv_classes): New function, from record_jump_equiv.
|
|||
|
(record_jump_equiv): Use new function.
|
|||
|
(gen_lowpart_if_possible): New function, based on gen_lowpart.
|
|||
|
(cse_insn): In some cases of (set (subreg (FOO) 0) (BAR)), note
|
|||
|
that (subreg BAR) is an equivalent of FOO.
|
|||
|
* integrate.c (expand_inline_function): Likewise.
|
|||
|
|
|||
|
* combine.c (subst): Check for constant in merge of shift into
|
|||
|
ZERO_EXTRACT.
|
|||
|
(gen_lowpart_for_combine): Look for SIGN_EXTEND or ZERO_EXTEND:
|
|||
|
|
|||
|
* emit-rtl.c (gen_lowpart, gen_highpart): If passed a hard register,
|
|||
|
return a new rtx for it in the proper mode, rather than a SUBREG.
|
|||
|
|
|||
|
Wed Jul 11 17:05:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* cse.c (cse_insn): If already have a REG_WAS_0 note, don't make
|
|||
|
another one.
|
|||
|
Rework some loops on SETs to eliminate duplicate code and clean up
|
|||
|
a bit.
|
|||
|
|
|||
|
* rtlanal.c (refers_to_regno_p, reg_overlap_mentioned): Allow these
|
|||
|
to work on pseudos as well as hard registers.
|
|||
|
|
|||
|
* optabs.c (emit_no_conflict_block): Use reg_overlap_mentioned
|
|||
|
to see if register is mentioned in insn.
|
|||
|
|
|||
|
Wed Jul 11 16:56:01 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* jump.c (jump_optimize): Don't optimize jumps to store-flags
|
|||
|
if after register allocation. And don't do it if memref is used.
|
|||
|
|
|||
|
Wed Jul 11 16:12:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* emit-rtl.c ({next,prev}_nonnote_insn, prev_label, prev_cc0_setter):
|
|||
|
New functions.
|
|||
|
({next,prev}_{real,active}_insn, next_label): Rework to allow
|
|||
|
argument of zero; return zero in that case.
|
|||
|
(next_active_insn, prev_active_insn): If reload is not yet complete,
|
|||
|
do the same thing as next_real_insn and prev_real_insn.
|
|||
|
(next_cc0_user): Fix some bugs and typos.
|
|||
|
|
|||
|
* rtlanal.c (reg_mentioned_p): Allow searches for labels to work.
|
|||
|
|
|||
|
Wed Jul 11 12:25:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* c-decl.c (duplicate_decls): In prev fix, use TREE_PUBLIC both times.
|
|||
|
|
|||
|
Tue Jul 10 22:54:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* rtl.def (trap): New code.
|
|||
|
|
|||
|
Tue Jul 10 17:48:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* tree.c (integer_zerop, integer_onep, integer_all_onesp): Look inside
|
|||
|
a NON_LVALUE_EXPR.
|
|||
|
(real_zerop, real_onep, simple_cst_equal): Likewise.
|
|||
|
|
|||
|
Tue Jul 10 17:05:50 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* c-parse.y, objc-parse.y, cplus-lex.c (yylex):
|
|||
|
Terminate token_buf after integer.
|
|||
|
|
|||
|
Mon Jul 9 15:22:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* c-decl.c (duplicate_decls): Correct test for extern followed by
|
|||
|
static function declaration.
|
|||
|
|
|||
|
Mon Jul 9 14:13:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* c-decl.c (grokdeclarator): Move warning and error
|
|||
|
about initializer with extern to the same place. Do one or the other.
|
|||
|
|
|||
|
* rltanal.c (reg_mentioned_p): Don't look inside a CONST_DOUBLE.
|
|||
|
|
|||
|
Sun Jul 8 14:12:21 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* toplev.c (pedwarn, pedwarn_with_file_and_line, pedwarn_with_decl):
|
|||
|
New functions.
|
|||
|
(flag_pedantic_errors): New variable controls them.
|
|||
|
* c-decl.c, c-parse.y, c-typeck.c: Use new functions for many warnings.
|
|||
|
* varasm.c: Likewise.
|
|||
|
* gcc.c (default_compilers): Pass -pedantic* to cc1, cpp, etc.
|
|||
|
* cccp.c (pedwarn): New function. Many calls to `warning' changed.
|
|||
|
|
|||
|
* c-common.c (c_expand_expr_stmt): New function.
|
|||
|
Error about incomplete type moved here.
|
|||
|
* expr.c (expand_expr): Error deleted from here.
|
|||
|
* c-parse.y: Use c_expand_expr_stmt where suitable.
|
|||
|
|
|||
|
* flow.c (propagate_block): Set following_insn_dead on insn after test.
|
|||
|
(mark_used_regs): Test that var; don't call insn_dead_p here.
|
|||
|
|
|||
|
Fri Jul 6 13:05:01 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* c-typeck.c (build_indirect_ref):
|
|||
|
No error if result is incomplete array.
|
|||
|
|
|||
|
* expmed.c (store_bit_field, extract_bit_field): New arg TOTAL_SIZE.
|
|||
|
Don't extract a bigger unit from memory than this.
|
|||
|
* expr.c: Callers changed.
|
|||
|
(store_field): New arg TOTAL_SIZE; callers changed.
|
|||
|
|
|||
|
* out-ns32k.c (print_operand_address): Changes from Ian Dall.
|
|||
|
* xm-ns32k.h: Use built in alloca.
|
|||
|
* ns32k.md (ashlsi3): Don't forget to return a value.
|
|||
|
(movsf): Output floating constants only if GAS_SYNTAX.
|
|||
|
(call, call_value): Support JSR_ALWAYS.
|
|||
|
Change handling of bsr if GAS_SYNTAX.
|
|||
|
(bit test patterns): Use g constraint for op1 and rm for op0.
|
|||
|
|
|||
|
Thu Jul 5 21:53:10 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* c-typeck.c (build_c_cast): Don't do implicit arithmetic conversions.
|
|||
|
* fold-const.c (fold): Don't combine two conversions if one is
|
|||
|
signed and the other is unsigned.
|
|||
|
* integrate.c (copy_parm_decls): Finish making last change.
|
|||
|
|
|||
|
Thu Jul 5 18:26:03 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* expr.c (safe_from_p): If EXP is readonly memory, any memory location
|
|||
|
is safe from it.
|
|||
|
|
|||
|
Thu Jul 5 15:05:19 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* gnulib2.c (__fixunsdfsi): Change > to >=.
|
|||
|
|
|||
|
* c-decl.c (start_struct, start_enum): Set C_TYPE_BEING_DEFINED.
|
|||
|
(grokdeclarator): Don't warn of array if elt type being defined.
|
|||
|
|
|||
|
* c-typeck.c (build_conditional_expr): Handle ((void *) 0).
|
|||
|
Allow 0 versus function pointer.
|
|||
|
|
|||
|
Thu Jul 5 08:05:09 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* cse.c (cse_insn): If machine has post-increment, don't associate
|
|||
|
PLUS operations if they are both adding the same constant that is
|
|||
|
a power of two. Similarly for post-decrement.
|
|||
|
|
|||
|
Wed Jul 4 19:04:20 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* flow.c (mark_used_regs): Don't scan a comparison if the following
|
|||
|
insn that uses the cc's is dead.
|
|||
|
|
|||
|
* flow.c (propagate_block): If cc-using insn is dead, so is previous.
|
|||
|
|
|||
|
* expmed.c (emit_store_flag): New function.
|
|||
|
|
|||
|
Wed Jul 4 18:45:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* c-typeck.c (common_type, comptypes, default_conversion):
|
|||
|
Use TYPE_READONLY in type to indicate const type; use TREE_READONLY
|
|||
|
in decl to indicate object will never change.
|
|||
|
(build_unary_op, readonly_warning, build_modify_expr): Likewise.
|
|||
|
(c_expand_asm_operands): Likewise.
|
|||
|
* cplus-class.c (finish_struct_bits): Likewise.
|
|||
|
* cplus-cvt.c (build_type_conversion): Likewise.
|
|||
|
* cplus-type2.c (readonly_warning_or_error): Likewise.
|
|||
|
* cplus-typeck.c (default_conversion, build_unary_op): Likewise
|
|||
|
(build_modify_expr, c_expand_asm_operands): Likewise.
|
|||
|
|
|||
|
* cplus-cvt.c (popclass): When making INDIRECT_REF, don't set
|
|||
|
TREE_READONLY from TYPE_READONLY.
|
|||
|
|
|||
|
Wed Jul 4 15:16:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* jump.c (jump_optimize): Fix bugs in last change.
|
|||
|
|
|||
|
Wed Jul 4 07:52:53 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* expr.c (expand_expr, case COMPONENT_REF): Delete extraneous test
|
|||
|
for structure-value stack slot, which no longer exists.
|
|||
|
|
|||
|
* reload1.c (bad_spill_regs): Should be static.
|
|||
|
|
|||
|
* combine.c (subst, gen_lowpart_for_combine): Propagate
|
|||
|
RTX_UNCHANGING_P when making a new MEM.
|
|||
|
* c-typeck.c, cplus-typeck.c (build_indirect_ref): ANSI says that
|
|||
|
de-reference of pointer-to-const is not readonly so don't set
|
|||
|
RTX_UNCHANGING_P.
|
|||
|
* explow.c (validize_mem): Use change_address so flags get copied
|
|||
|
to new MEM.
|
|||
|
* expr.c (convert_move, block_block_{to,from}_reg, emit_move_insn):
|
|||
|
Likewise.
|
|||
|
(do_tablejump): Set RTX_UNCHANGING_P in MEM accessing address table.
|
|||
|
* function.c (optimize_bit_field, instantiate_virtual_regs_1):
|
|||
|
Preserve flags when making new MEM.
|
|||
|
* loop.c (invariant_p): Memory references to an invariant address
|
|||
|
are invariant if RTX_UNCHANGING_P is set.
|
|||
|
* recog.c (adj_offsettable_operand): Propagate RTX_UNCHANGING_P
|
|||
|
when making new MEM.
|
|||
|
* reload.c (find_reloads_toplev): Likewise.
|
|||
|
* reload1.c (alter_reg): Stack slot is readonly if pseudo was.
|
|||
|
(eliminate_regs): Propagate RTX_UNCHANING_P in new MEM.
|
|||
|
* varasm.c (force_const_double_mem): Set RTX_UNCHANGING_P in new MEM.
|
|||
|
|
|||
|
Tue Jul 3 21:50:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* expmed.c (expand_and): New function.
|
|||
|
|
|||
|
* stmt.c (expand_expr_stmt):
|
|||
|
If value is volatile, fetch it and then ignore it.
|
|||
|
|
|||
|
* expr.c (expand_expr): Error if variable type is incomplete.
|
|||
|
|
|||
|
* c-decl.c (grokdeclarator): Don't warn of incomplete array in typedef.
|
|||
|
|
|||
|
Tue Jul 3 18:03:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* fold-const.c (fold): Convert "(1 << foo) & bar" to "(bar >> foo) & 1"
|
|||
|
In "(a & 1) != 0", can convert to simply "a & 1".
|
|||
|
* combine.c (subst): Convert branch on sign bit to signed comparison
|
|||
|
with zero (possibly adding a SUBREG).
|
|||
|
Convert ZERO_EXTRACT of the low-order bit of a right shift into a
|
|||
|
ZERO_EXTRACT of the proper bit.
|
|||
|
|
|||
|
Mon Jul 2 12:07:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* jump.c (jump_optimize): Convert conditionals for storing one
|
|||
|
value into a store-flags insn.
|
|||
|
|
|||
|
* vax.md (call_pop, call_value_pop): New names for call patterns.
|
|||
|
Include the popping explicitly in the rtl.
|
|||
|
|
|||
|
* jump.c (jump_optimize): Delete case for condjump followed
|
|||
|
by unconditional to same label; was special case of another case.
|
|||
|
Switch back to next_active_insn or prev_active_insn in a few cases.
|
|||
|
|
|||
|
* function.c (init_function_start): Initialize
|
|||
|
frame_pointer_needed to zero.
|
|||
|
|
|||
|
* i386.md (tstsf): Clobber reg 0 in SImode.
|
|||
|
|
|||
|
Sun Jul 1 14:31:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* jump.c: Use next_real_insn instead of next_active_insn.
|
|||
|
Likewise for prev_active_insn. USE insns make a difference!
|
|||
|
|
|||
|
* function.c (assign_stack_temp): Use largest alignment if BLKmode.
|
|||
|
|
|||
|
* stddef.h: Check __SIZE_T also.
|
|||
|
|
|||
|
* toplev.c: Include types.h first.
|
|||
|
|
|||
|
* i386.md (trunc*2): Don't allow moving symbolic constant to memory.
|
|||
|
Use wider move only for symbolic constant.
|
|||
|
|
|||
|
* tm-convex.h (LINK_SPEC): Posix link flags.
|
|||
|
* tm-convex.h (STARTFILE_SPEC): Posix start files.
|
|||
|
* tm-convex[12].h (CPP_SPEC): Posix defines.
|
|||
|
* tm-convex[12].h (LIB_SPEC): Posix libraries.
|
|||
|
* tm-conv[12]os7.h: New files.
|
|||
|
* config.gcc: use tm-conv*os7 if /usr/include/stdlib.h isn't there.
|
|||
|
|
|||
|
* xm-convex.h (S_IFMT, S_IFREG): make visible if hidden for posix.
|
|||
|
* xm-convex.h (_PROTO): define to keep 8.0 includes from screwing up.
|
|||
|
|
|||
|
* tm-convex.h (ASM_OUTPUT_{FLOAT,DOUBLE}, PRINT_OPERAND):
|
|||
|
use %e instead of %#g, which is broken or non-posix.
|
|||
|
|
|||
|
* tm-convex.h (current_section_is_text): make extern.
|
|||
|
* out-convex.c (current_section_is_text): define here.
|
|||
|
* tm-convex.h (OVERRIDE_OPTIONS), out-convex.c (override_options):
|
|||
|
useless; remove.
|
|||
|
* tm-convex.h (CPP_PREDEFINES): remove parsec, long gone from
|
|||
|
system includes.
|
|||
|
|
|||
|
Sat Jun 30 14:01:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* c-decl.c (pending_xref_error): Fix typo in arg order.
|
|||
|
|
|||
|
* cccp.c (do_include): Mention non-ex system headers for -M.
|
|||
|
Guess the directory.
|
|||
|
(check_macro_name): Should not be static.
|
|||
|
|
|||
|
* rtl.def (inline_header): Add a vector at the end.
|
|||
|
* rtl.h (ORIGINAL_ARG_VECTOR): New macro.
|
|||
|
(RTVEC_ELT): New macro.
|
|||
|
* emit-rtl.c (gen_inline_header_rtx): New argument for that vector.
|
|||
|
* integrate.c (save_for_inline): Copy arg rtls if nec, then make
|
|||
|
an arg vector to put in the header.
|
|||
|
(expand_inline_function): Look in that vector for the rtl.
|
|||
|
(copy_parm_decls): Likewise.
|
|||
|
|
|||
|
* c-decl.c (duplicate_decls): Warn if function declared external
|
|||
|
and later static.
|
|||
|
|
|||
|
Fri Jun 29 13:29:24 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* cccp.c (handle_directive): Supply missing *.
|
|||
|
|
|||
|
Thu Jun 28 21:39:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* m68k.md (muldf3 for 68881): Generate fscale if appropriate.
|
|||
|
* out-m68k.c (floating_exact_log2): New function.
|
|||
|
|
|||
|
Wed Jun 27 17:19:36 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* c-decl.c (finish_struct): New handling of zero-width bit fields.
|
|||
|
Store appropriate data in them like other bit fields.
|
|||
|
Don't delete them until after layout.
|
|||
|
Don't mess with alignment of following field; set its own.
|
|||
|
If PCC_BITFIELD_TYPE_MATTERS, get alignment from type.
|
|||
|
* stor-layout.c (layout_record): For zero-width field, if
|
|||
|
PCC_BITFIELD_TYPE_MATTERS, alignment does not affect that of structure.
|
|||
|
(layout_decl): Don't abort for zero-width if no name.
|
|||
|
|
|||
|
* function.c (expand_function_start):
|
|||
|
Output ...FUNCTION_BEG note here, after assign_parms.
|
|||
|
(init_function_start): Not here.
|
|||
|
|
|||
|
* sdbout.c (sdbout_record_type_name): Conditionalize for
|
|||
|
SDB_ALLOW_FORWARD_REFERENCES. Don't use typedef names, just tags.
|
|||
|
(sdbout_begin_block): Likewise.
|
|||
|
(plain_type_1): Likewise. Also move code to output structure size.
|
|||
|
(sdbout_symbol): Output the type if not yet output.
|
|||
|
Don't output top-level initialized variables yet.
|
|||
|
Avoid crash if variable never got any rtl.
|
|||
|
Add conditional for SDB_AUTO_NORMALIZE_OFFSET.
|
|||
|
(sdbout_toplevel_data, sdbout_queue_anonymous_type):
|
|||
|
(sdbout_dequeue_anonymous_type): New functions.
|
|||
|
(sdbout_tags): Reverse the list first.
|
|||
|
Output enums before other things.
|
|||
|
(sdbout_reg_parm): Fake a name if necessary. Use C_REGPARM.
|
|||
|
* toplev.c (compile_file): Call sdbout_toplevel_data.
|
|||
|
|
|||
|
* c-typeck.c (convert_for_assignment): Disable warnings for pointers
|
|||
|
to const and volatile functions.
|
|||
|
|
|||
|
* expr.c (expand_expr): Mark variable as used.
|
|||
|
|
|||
|
Tue Jun 26 17:05:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* tm-sparc.h (LINK_SPEC): Delete spurious `-'.
|
|||
|
|
|||
|
* tm-sun3.h (ASM_OUTPUT_FLOAT_OPERAND): Handle minus zero.
|
|||
|
(ASM_OUTPUT_DOUBLE_OPERAND): Likewise.
|
|||
|
|
|||
|
* stor-layout.c (layout_type): Check TYPE_NO_FORCE_BLK in union fields.
|
|||
|
|
|||
|
Tue Jun 26 01:48:57 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* tree.c (dump_tree_statistics): Dummy function. To be filled in
|
|||
|
later when we decide what tree statistics should be measured.
|
|||
|
(build): Now ok to take arguments of length 1. `build1' cannot be
|
|||
|
used to allocate 's' tree nodes whcih might have length 1.
|
|||
|
|
|||
|
* All GNU C++ files updated to 1.37.2 (alpha 2). NOTE: cplus-decl.c
|
|||
|
needs to be fixed to not us RTL. I'm leaving this file in its
|
|||
|
current state so that the GNU C++ compiler at least compiles.
|
|||
|
|
|||
|
* All SPARC files: modified to use registers %f30 and %f31 as
|
|||
|
temporaries for holding floating-point zero. Used to use %f0 and
|
|||
|
%f1, which made it impossible to compare function return values with
|
|||
|
zero.
|
|||
|
|
|||
|
Mon Jun 25 16:54:13 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* function.c (init_function_start): New args give file/line for first note.
|
|||
|
* c-decl.c (store_parm_decls): Pass them.
|
|||
|
* integrate.c (output_inline_function): Pass dummies for them.
|
|||
|
* final.c (final_start_function): For sdb, don't output a line number,
|
|||
|
just set last_linenum.
|
|||
|
|
|||
|
* c-parse.y (hash, is_reserved_word): New keyword __label__.
|
|||
|
|
|||
|
* stddef.h: Check _T_SIZE as well as _SIZE_T.
|
|||
|
|
|||
|
Sun Jun 24 16:09:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* expr.c (expand_expr): Do preserve_temp_slots for TARGET_EXPR.
|
|||
|
|
|||
|
Sat Jun 23 09:52:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* genpeep.c (gen_peephole): Ignore USE and CLOBBER insn as well as
|
|||
|
NOTE when matching peephole.
|
|||
|
|
|||
|
Fri Jun 22 17:40:56 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* c-typeck.c (process_init_constructor): Set up TREE_PURPOSE
|
|||
|
in record constructor elements.
|
|||
|
|
|||
|
* cexp.y (exp1): If pedantic, warn about commas.
|
|||
|
(tokentab2): Add entries for ++ and --.
|
|||
|
(yylex): Error if those are used.
|
|||
|
|
|||
|
* c-decl.c (lookup_tag): For wrong kind of type, just set flag.
|
|||
|
(shadow_tag): Clear the flag.
|
|||
|
(pending_xref_error): Print the error message here if flag set.
|
|||
|
* c-parse.y (setspecs): Call that.
|
|||
|
|
|||
|
* calls.c (emit_call_1): Use call_pop and call_value_pop insns
|
|||
|
to record when the called function pops its args.
|
|||
|
|
|||
|
Fri Jun 22 16:43:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* local-alloc.c (wipe_dead_reg): Remove REG_DEAD note for unset reg.
|
|||
|
|
|||
|
* tm-sparc.h: Replace FIX_FRAME_POINTER_ADDRESS with
|
|||
|
INITIAL_FRAME_POINTER_OFFSET.
|
|||
|
|
|||
|
* tm-vax.h (RTX_COSTS): Show shifts are relatively expensive.
|
|||
|
|
|||
|
Fri Jun 22 15:05:24 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* Makefile.in (GEN): New variable.
|
|||
|
(P): New variable.
|
|||
|
(cc1, cc1plus, cc1obj): Use $(P).
|
|||
|
|
|||
|
* cccp.c (check_macro_name): New subroutine taken from do_define.
|
|||
|
(do_define, do_undef): Use this.
|
|||
|
(do_undef): Warn if junk follows name.
|
|||
|
(handle_directive): Always ignore empty directive.
|
|||
|
Warn if \f or \v in directive. Error for malformed directive name.
|
|||
|
|
|||
|
* tree.h (BUILT_IN_NEXT_ARG): Define it.
|
|||
|
* c-decl.c (init_decl_processing): Declare __builtin_next_arg.
|
|||
|
* expr.h (current_function_arg_offset_rtx): Declare it.
|
|||
|
* function.c (assign_parms): Set that variable at end.
|
|||
|
* expr.c (expand_builtin): Implement __builtin_next_arg.
|
|||
|
* stdarg.h (va_start): Use __builtin_next_arg.
|
|||
|
|
|||
|
* c-decl.c (grokdeclarator): Check for TRADITIONAL_RETURN_FLOAT.
|
|||
|
|
|||
|
Fri Jun 22 07:07:53 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* final.c (final_scan_insn): Put label for jump table in same section
|
|||
|
(read-only data) as jump table.
|
|||
|
|
|||
|
* loop.c: Allow tm.h to define ..._BENEFIT and COPY_PENALTY.
|
|||
|
|
|||
|
Wed Jun 20 13:03:53 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* tm-apollo68.h (FUNCTION_ARG_PADDING): Never pad.
|
|||
|
(STACK_BOUNDARY): Make it 32.
|
|||
|
(CPP_SPEC): Add spaces. Define _APOLLO_SOURCE if not -ansi.
|
|||
|
|
|||
|
* c-common.c (check_case_value): New function.
|
|||
|
* c-parse.y (stmt, when parsing case): Use that.
|
|||
|
Add new rule for case range.
|
|||
|
|
|||
|
* reload1.c (reload_inheritance_insn): New variable.
|
|||
|
(reg_reloaded_insn): New variable.
|
|||
|
(choose_reload_regs): Update those variables.
|
|||
|
(emit_reload_insns): Use them to remove deaths from insns
|
|||
|
that used input reloads.
|
|||
|
(reload_as_needed): Clear reg_reloaded_insn when necessary.
|
|||
|
|
|||
|
* m68k.md (ashlsi3, lshlsi3): Use add to self to shift one bit.
|
|||
|
|
|||
|
* dbxout.c (STAB_CODE_TYPE): New macro defined as type for stab codes.
|
|||
|
Use in place of enum __stab_debug_code.
|
|||
|
|
|||
|
Tue Jun 19 22:56:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* expr.c (expand_increment): For preincrement, don't load value twice:
|
|||
|
use TEMP as input to addition.
|
|||
|
|
|||
|
Tue Jun 19 06:53:13 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* explow.c (adjust_stack, anti_adjust_stack): Use expand_binop instead
|
|||
|
of gen_{add,sub}2_insn since the latter will abort if the constant is
|
|||
|
out of range for the machine.
|
|||
|
|
|||
|
Tue Jun 19 00:35:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* local-alloc.c (post_mark_life): Don't decrement DEATH
|
|||
|
if it equals BIRTH. Don't ever increment DEATH.
|
|||
|
|
|||
|
* varasm.c (output_constructor): Discard non_lvalue_expr, not nop_expr.
|
|||
|
Handle missing values. Use field in the tree_list, if any.
|
|||
|
(output_addressed_constants): Don't die if value is missing.
|
|||
|
* c-typeck.c (process_init_constructor): Handle index and field specs.
|
|||
|
* c-parse.y (initlist): Parse them.
|
|||
|
|
|||
|
Mon Jun 18 15:58:48 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* c-decl.c, cplus-decl.c (duplicate_decls):
|
|||
|
Types don't "match" if one is error.
|
|||
|
|
|||
|
* c-parse.y (label_decl): Use new keyword __label__, not colon.
|
|||
|
|
|||
|
* c-parse.gperf (__label__): New keyword.
|
|||
|
|
|||
|
* mips.md (probe): Make a single insn, just a memref.
|
|||
|
|
|||
|
Mon Jun 18 14:27:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* loop.c (loop_optimize): Set max_luid to last luid + 1, as documented.
|
|||
|
|
|||
|
* local-alloc.c (qty_clobber): New variable.
|
|||
|
(local_alloc): Allocate and initialize it.
|
|||
|
(reg_is_set): Set qty_clobber for a clobber of a pseudo used only
|
|||
|
in this insn.
|
|||
|
(find_free_reg): Pass qty_clobber to post_mark_life.
|
|||
|
(post_mark_life): If CLOBBER if non-zero, register isn't live after
|
|||
|
its death insn.
|
|||
|
|
|||
|
* integrate.c (expand_inline_function): Don't call try_constants on
|
|||
|
an insn that sets CC0 until we have processed the next insn. Then
|
|||
|
call it on both. This is because the recognizer for these insns
|
|||
|
may want to look at the user of CC0.
|
|||
|
|
|||
|
Mon Jun 18 13:25:59 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* mips.md (ashlqi3, ashlhi3, one_cmplqi2, one_cmplhi2): Deleted.
|
|||
|
(ashlsi3, ashrsi3, lshrsi3, neg*, one_cmplsi2): Simplified.
|
|||
|
Don't output comments. Use more specific predicates.
|
|||
|
|
|||
|
* mips.md (movsf, movdf): Use L, M codes to avoid #ifdef's.
|
|||
|
Also simplify and don't output comments.
|
|||
|
(anonymous patterns for those insns): Deleted.
|
|||
|
(loading floating constant): New patterns added.
|
|||
|
(move qi to si pattern): Deleted; ridiculous.
|
|||
|
(movdi, movsi, movhi, movqi): No need to check for moving reg to self.
|
|||
|
|
|||
|
* mips.md (nop): Use .set noreorder to placate assembler.
|
|||
|
|
|||
|
Sun Jun 17 20:01:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* gcc.c (set_spec): Don't use `name' for both old spec and name of
|
|||
|
spec. Use new var old_spec for the former use.
|
|||
|
Don't use (char *) 0 for null spec; use a null string instead.
|
|||
|
|
|||
|
* jump.c (jump_optimize): Don't special-case deleting an ADDR_DIFF_VEC.
|
|||
|
Merge code to detect trivial ADDR_VEC and ADDR_DIFF_VEC.
|
|||
|
(mark_jump_label): Don't count the use of a vector table label in
|
|||
|
ADDR_DIFF_VEC.
|
|||
|
(delete_insn): Can now handle ADDR_DIFF_VEC.
|
|||
|
(delete_labelref_insn): New function.
|
|||
|
(redirect_tablejump): Call new function to delete insn that references
|
|||
|
the jump table.
|
|||
|
|
|||
|
Sun Jun 17 01:19:26 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* genemit.c (gen_expand): Don't generate `operands' if size is 0.
|
|||
|
|
|||
|
* tm-i860.h (GO_IF_LEGITIMATE_ADDRESS): Displacement must be multiple
|
|||
|
of the alignment of the operand.
|
|||
|
|
|||
|
* i860.md (signed bit field recognizers): Don't shift by >31 bits.
|
|||
|
|
|||
|
* out-i860.c (output_delayed_branch): Pass register properly to
|
|||
|
load_opcode.
|
|||
|
|
|||
|
* mips.md (general/fp reg move patterns): Use codes L, M, D.
|
|||
|
(movdi): Likewise. And don't output useless comments.
|
|||
|
Use the assembler temp reg for non-offsettable address.
|
|||
|
(movsi, movhi, movqi): Output nothing for move from reg to itself.
|
|||
|
Output li to load a constant. Use `move' instead of `add'.
|
|||
|
Don't output useless comments.
|
|||
|
(load-address pattern): Deleted; handled by addsi3 pattern.
|
|||
|
|
|||
|
* mips.md (addsi3, mulsi3): Make both input predicates arith_operand
|
|||
|
since they are commutative.
|
|||
|
(andsi3, iorsi3, xorsi3): Likewise.
|
|||
|
|
|||
|
* tm-mips.h (MOST_SIGNIFICANT_WORD, LEAST_SIGNIFICANT_WORD): New.
|
|||
|
|
|||
|
* tm-mips.h (PRINT_OPERAND): New codes D, L, M.
|
|||
|
* mips.md (anddi3, iordi3, xordi3): Use earlyclobber to stop overlap.
|
|||
|
Use new print code D.
|
|||
|
|
|||
|
* mips.md (andsi3, iorsi3, xorsi3): Make predicates more specific.
|
|||
|
(andhi3, ..., andqi3, ...): Patterns deleted.
|
|||
|
(patterns for nor): New anonymous patterns.
|
|||
|
* out-mips.c (uns_arith_operand): New function.
|
|||
|
|
|||
|
* mips.md (trunc*, zero_extend*, extend*, fix_trunc*, float*):
|
|||
|
Use more specific predicates.
|
|||
|
|
|||
|
* mips.md (addhi3, ..., addqi3, ...): Patterns deleted.
|
|||
|
(addsi3, subsi3, mulsi3, divsi3): Make predicates more specific.
|
|||
|
Delete useless comments from assembler code.
|
|||
|
Use more generic op codes rather than special cases such as addiu.
|
|||
|
(divmodsi4, udivmodsi4, udivsi3, modsi3, umodsi3): New patterns.
|
|||
|
(abssf2, absdf2): New patterns.
|
|||
|
|
|||
|
Sun Jun 17 06:56:10 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* cse.c (COST, rtx_cost, make_regs_eqv): Indicate that hard registers
|
|||
|
in fixed_regs are even cheaper than pseudos.
|
|||
|
|
|||
|
* function.c (instantiate_virtual_regs_1): If valid, replace PLUS
|
|||
|
whose second operand would be zero with its first operand.
|
|||
|
|
|||
|
Sun Jun 17 00:17:03 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* sdbout.c (sdbout_symbol): Get right regno for var-length object.
|
|||
|
|
|||
|
* combine.c (simplify_set_cc0_and): Strip SUBREGs, but only if
|
|||
|
they truncate. Handle ASHIFTRT like LSHIFTRT.
|
|||
|
(try_combine): Call simplify_set_cc0_and in all those cases.
|
|||
|
(subst): Handle (zero_extract (subreg (lshift (reg )))).
|
|||
|
|
|||
|
Sat Jun 16 23:11:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* tree.c (get_narrower, get_unwidened): Bit field test was backwards.
|
|||
|
|
|||
|
Sat Jun 16 19:07:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* fold-const.c (fold): Fix typo in test for distributing binary
|
|||
|
operator over conditional and compound expressions.
|
|||
|
|
|||
|
* genoutput.c: Remove vestiges of obsolete and never used
|
|||
|
INSN_MACHINE_INFO.
|
|||
|
|
|||
|
* rtl.def (MATCH_PARALLEL): Add new RTL code.
|
|||
|
* genconfig.c (walk_insn_part): Support MATCH_PARALLEL.
|
|||
|
* genemit.c (max_operand_1): Likewise.
|
|||
|
(gen_exp): Just write operand for MATCH_PARALLEL.
|
|||
|
(gen_expand, gen_split): Support MATCH_PARALLEL.
|
|||
|
* genrecog.c (walk_rtx): Add support for MATCH_PARALLEL.
|
|||
|
* genoutput.c (scan_operands): Suppport MATCH_PARALLEL
|
|||
|
like MATCH_OPERATOR.
|
|||
|
* genpeep.c (match_rtx): Add code to support MATCH_PARALLEL.
|
|||
|
Don't write unnecessary cast to `rtx'.
|
|||
|
* genrecog.c (add_to_sequence): Simplify handling of mode.
|
|||
|
Support MATCH_PARALLEL.
|
|||
|
|
|||
|
* expr.c (move_block_{to,from}_reg): Support load/store multiple.
|
|||
|
* function.c (instantiate_virtual_regs_1): If can't substitute
|
|||
|
new pseudo for virtual register, try doing the substitution
|
|||
|
globally throughout the entire insn. This lets load/store multiple
|
|||
|
insns refer to virtual registers in their addresses.
|
|||
|
|
|||
|
* genrecog.c (write_split_tree, write_split_subroutine): Deleted.
|
|||
|
(break_out_subroutines, write_subroutine, write_tree): Accept
|
|||
|
parameters that indicate whether we are making gen_split or gen_recog.
|
|||
|
(main): Pass new parameters to break_out_subroutines and write_tree.
|
|||
|
|
|||
|
* final.c (final_scan_insn): Process insns that set CC whenever a
|
|||
|
REG_CC_STATUS note is found; not only JUMP_INSNs can use CC.
|
|||
|
When scanning REG_CC_STATUS insns, set cc_prev_status from cc_status
|
|||
|
each time.
|
|||
|
|
|||
|
* recog.c (validate_replace_rtx): New function that tries to
|
|||
|
replace all occurrences of an object within an insn and see if the
|
|||
|
resulting insn is valid.
|
|||
|
|
|||
|
Thu Jun 14 06:58:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* optabs.c (emit_no_conflict_block): Write REG_NO_CONFLICT notes all
|
|||
|
all insns in the block that modify the output. Write them on the
|
|||
|
final insn even if we don't put a REG_EQUAL note there.
|
|||
|
|
|||
|
* stmt.c (expand_return): Only distribute return down a conditional
|
|||
|
expression if tail recursion is possible in a branch.
|
|||
|
|
|||
|
* expr.c (expand_expr): Remove obsolete reference to when we had
|
|||
|
a shared structure-value slot.
|
|||
|
|
|||
|
* jump.c (get_label_before, get_label_after, follow_jumps): No longer
|
|||
|
static.
|
|||
|
* rtl.h: Define them.
|
|||
|
|
|||
|
Mon Jun 11 17:35:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* loop.c (INSN_LUID): Check for INSN_UID above the area that we
|
|||
|
know about.
|
|||
|
(loop_optimize): Cannot use INSN_LUID as lhs.
|
|||
|
(scan_loop): If first jump is to label made by loop, we can't
|
|||
|
tell if it is in range or not, so reject loop.
|
|||
|
Reject loop if SCAN_START was an insn previously made by loop since
|
|||
|
we won't know its luid.
|
|||
|
Only call loop_reg_used_before if argument has known luid.
|
|||
|
Mark partial invariant as global if its insn was made by loop.
|
|||
|
(ignore_some_movables): Don't assume all invariants have luids.
|
|||
|
(strength_reduce): Use no_labels_between_p instead of
|
|||
|
labels_in_range_p.
|
|||
|
Don't look at luid of insns for which one doesn't exist.
|
|||
|
(valid_initial_value_p): Reject initializations in insns whose
|
|||
|
luid we don't know.
|
|||
|
|
|||
|
* loop.c (product_cheap_p): Put all our rtl into a separate obstack
|
|||
|
and free memory from it. If we use current_obstack, we may free
|
|||
|
memory allocated by gen_reg_rtx, which must be preserved.
|
|||
|
|
|||
|
* c-common.c (rewrite_for_merged_ref): A non-zero one-bit signed field
|
|||
|
is -1, not 1.
|
|||
|
* c-typeck.c, cplus-typeck.c (build_binary_op_nodefault): If can't
|
|||
|
merge comparisons, don't use result of rewrite_for_merged_ref;
|
|||
|
comparisons with zero are more efficient.
|
|||
|
|
|||
|
* protoize.c (main): Don't declare as extern.
|
|||
|
|
|||
|
* c-aux-info.c (gen_aux_info_record): Don't declare extern.
|
|||
|
|
|||
|
* genemit (gen_split): Rework to fix numerous bugs and typos.
|
|||
|
|
|||
|
* function.c (assign_parms): Avoid generating (PLUS foo (const_int 0)).
|
|||
|
|
|||
|
Wed Jun 6 20:03:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* gencodes.c (main): Count a code number for DEFINE_SPLIT.
|
|||
|
|
|||
|
* rtlanal.c (note_store): Pass SUBREG of a hard register to function.
|
|||
|
(reg_overlap_mentioned_p): Handle receiving SUBREG of hard register.
|
|||
|
* integrate.c (mark_stores): Likewise.
|
|||
|
* local-alloc.c (reg_is_set, reg_is_born): Likewise.
|
|||
|
* reload1.c (mark_not_eliminable): Likewise.
|
|||
|
|
|||
|
* loop.c (move_movables): Don't blow up if moving last real insn
|
|||
|
in function.
|
|||
|
|
|||
|
Wed Jun 6 19:44:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* gcc.c (default_compilers): Pass -traditional before -f*.
|
|||
|
Delete -gg option.
|
|||
|
|
|||
|
Sun Jun 3 22:44:12 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* c-decl.c (grokdeclarator): Warn about extern with initializer.
|
|||
|
|
|||
|
Sun Jun 3 22:32:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* genrecog.c (main): Don't call write_tree with null if no insns
|
|||
|
were in file.
|
|||
|
|
|||
|
Sat Jun 2 21:49:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* expr.c (expand_expr, cases ABS_EXPR, MAX_EXPR, MIN_EXPR): Use target
|
|||
|
unless zero or safe_from_p rejects it.
|
|||
|
(expand_expr, conditional cases): Likewise.
|
|||
|
|
|||
|
Sat Jun 2 14:46:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* c-decl.c (grokdeclarator): Handle const and volatile with parm
|
|||
|
specified as function type.
|
|||
|
|
|||
|
Fri Jun 1 16:13:39 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* rtl.def (DEFINE_FUNCTION_UNIT): Change specifications so
|
|||
|
it now is one per operation type, rather than one per
|
|||
|
function unit.
|
|||
|
* genattr.c (write_units): Write out new function names and
|
|||
|
function unit table structure.
|
|||
|
* genattrtab.c (struct function_unit_op): New structure.
|
|||
|
(struct function_unit): Updated for new definition of
|
|||
|
DEFINE_FUNCTION_UNIT.
|
|||
|
(SIMPLIFY_TEST_EXP): New macro to reduce number of function calls
|
|||
|
to simplify_test_exp. Replace all call to the function with
|
|||
|
uses of the macro.
|
|||
|
(check_attr_test, make_alternative_compare): Show that EQ_ATTR with
|
|||
|
attribute of "alternative", MATCH_OPERAND, and comparison cases can't
|
|||
|
be simplified.
|
|||
|
(expand_units, gen_unit, write_function_unit_info): Support new
|
|||
|
meaning of DEFINE_FUNCTION_UNIT.
|
|||
|
(simplify_test_expr): Rework AND and IOR cases to reduce rescans.
|
|||
|
Once an expression has been simplified, set RTX_UNCHANGING_P so
|
|||
|
we won't try simplifying it again. Don't do this if INSN_CODE == -2.
|
|||
|
(write_attr_set): Don't make a recursive call if we know that
|
|||
|
the test we are writing will always be false. Also clean up a bit.
|
|||
|
(main): true_rtx and false_rtx don't need to be simplified.
|
|||
|
Write gen_attr_... routines before special routines.
|
|||
|
|
|||
|
Fri Jun 1 14:17:48 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* tm-sparc.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE):
|
|||
|
Round frame size to multiple of STACK_BOUNDARY.
|
|||
|
|
|||
|
Fri Jun 1 09:38:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* optabs.c (emit_no_conflict_block): Place REG_NO_CONFLICT notes on
|
|||
|
insn that contains REG_EQUAL note instead of insn doing computation.
|
|||
|
|
|||
|
* cplus-decl2.c, cplus-lex.c: Rename gettime to get_run_time.
|
|||
|
Likewise for my_gettime to my_get_run_time.
|
|||
|
|
|||
|
* Makefile.in (varasm.o, calls.o, explow.o, integrate.o, loop.o):
|
|||
|
These do not depend on insn-codes.h.
|
|||
|
* function.c: Explicitly include insn-codes.h to make it clear that it
|
|||
|
is needed for the values of the CODE_FOR_... macros.
|
|||
|
|
|||
|
Thu May 31 12:59:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* gnulib2.c (__trampoline): New function.
|
|||
|
* Makefile.in (LIB2FUNCS): Compile it.
|
|||
|
* tm-m68k.h (TRAMPOLINE_ALIGN): Define it.
|
|||
|
* function.c (trampoline_address): Handle extra alignment.
|
|||
|
* tm-m68k.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
|
|||
|
Redefine to transfer via __trampoline.
|
|||
|
(TRANSFER_FROM_TRAMPOLINE): Define it, for gnulib2.c.
|
|||
|
|
|||
|
* fold-const.c (fold): Preserve sign on constant when other terms
|
|||
|
cancel (after call to split_tree).
|
|||
|
|
|||
|
Thu May 31 12:39:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* expr.c (preexpand_calls): Ignore BLOCK to avoid infinite recursion.
|
|||
|
|
|||
|
* function.c (assign_parms): Fix typo getting mode of result.
|
|||
|
|
|||
|
* cse.c (cse_basic_block): Don't go past TO if it is target of
|
|||
|
followed jump.
|
|||
|
|
|||
|
Wed May 30 21:31:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* c-parse.y (fndef, nested_function, notype_nested_function):
|
|||
|
Use YYERROR1 instead of YYERROR.
|
|||
|
(YYERROR1): New macro.
|
|||
|
* cplus-parse.y, objc-parse.y: Likewise.
|
|||
|
|
|||
|
Tue May 29 21:53:19 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* optabs.c (expand_float): Don't use hard reg as intermediate.
|
|||
|
|
|||
|
* c-parse.y, objc-parse.y (yylex): Fix typo checking for ERANGE.
|
|||
|
* cplus-lex.c (yylex): Copy current code for ERANGE from c-parse.y.
|
|||
|
|
|||
|
* toplev.c (get_run_time): Renamed from gettime.
|
|||
|
|
|||
|
Mon May 28 15:47:48 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* expr.c (emit_push_insn): Don't push by pieces if alignment
|
|||
|
forces use of small pushes that do problematical padding.
|
|||
|
|
|||
|
* tm-sparc.h (SELECT_SECTION): Use TREE_SIDE_EFFECTS.
|
|||
|
(STACK_POINTER_OFFSET): Now 68; does not include REG_PARM_STACK_SPACE.
|
|||
|
(REG_PARM_STACK_SPACE): Now takes arg and has value.
|
|||
|
(ACCUMULATE_OUTGOING_ARGS): Define this.
|
|||
|
(FUNCTION_PROLOGUE, FUNCTION_EPILOGUE, EXIT_IGNORE_STACK): Use
|
|||
|
current_function_outgoing_args_size, not ..._pretend_...
|
|||
|
(INITIALIZE_TRAMPOLINE): Use size_int.
|
|||
|
|
|||
|
* varasm.c (make_decl_rtl, make_function_rtl): Run ENCODE_SEGMENT_INFO
|
|||
|
if it is defined.
|
|||
|
|
|||
|
* tree.def (BIND_EXPR): Add operand, which holds the BLOCK.
|
|||
|
* expr.c (expand_expr): When BIND_EXPR is seen, flag the BLOCK.
|
|||
|
* dbxout.c (dbxout_block): Test the flag in the BLOCK.
|
|||
|
* sdbout.c (sdbout_block): Likewise.
|
|||
|
* symout.c (symout_function): Likewise.
|
|||
|
* c-parse.y (stmt expr rule): Corresponding change.
|
|||
|
|
|||
|
Sun May 27 20:53:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* caller-save.c (save_call_clobbered_regs): Correctly mark registers
|
|||
|
live for multi-word pseudos.
|
|||
|
|
|||
|
Sat May 26 13:42:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* sdbout.c (sdb_begin_function_line): Now -1 if not in use.
|
|||
|
(sdbout_end_function): Set it to -1.
|
|||
|
|
|||
|
* tree.def: Rename EXIT_STMT to EXIT_EXPR and likewise for LOOP_STMT.
|
|||
|
Also LET_STMT to BIND_EXPR, and GOTO_STMT, LABEL_STMT, RETURN_STMT
|
|||
|
to ..._EXPR.
|
|||
|
(struct tree_stmt, struct tree_if_stmt, struct tree_bind_stmt):
|
|||
|
(struct tree_case_stmt): Types deleted.
|
|||
|
|
|||
|
* tree.c (make_node, copy_node): Treat 's' like 'e' for size of node.
|
|||
|
In make_node, make BLOCK and BIND_EXPR savable.
|
|||
|
* expr.c (expand_expr): Rename, and use TREE_OPERAND to get body.
|
|||
|
* cplus-init.c (build_vec_delete): Likewise, and build appropriately.
|
|||
|
* print-tree.c (print_node): No special handling for these and IF_STMT.
|
|||
|
* stmt.c (warn_if_unused_value): Likewise.
|
|||
|
|
|||
|
* tree.def (BLOCK): New tree code for binding blocks.
|
|||
|
* tree.h (BLOCK_VARS, BLOCK_TYPE_TAGS):
|
|||
|
(BLOCK_SUBBLOCKS, BLOCK_SUPERCONTEXT): Renamed from STMT_...
|
|||
|
(STMT_...): Except for those, all deleted.
|
|||
|
(BLOCK_CONTROLLER): Points to corresponding BIND_EXPR, if any.
|
|||
|
(BLOCK_CHAIN): New macro.
|
|||
|
* tree.c (build_block): Renamed from build_let.
|
|||
|
(decl_type_context, decl_function_context): Corresponding change.
|
|||
|
* print-tree.c (print_node): Likewise.
|
|||
|
* c-decl.c, cplus-decl.c (poplevel): Likewise.
|
|||
|
* integrate.c (copy_decl_tree): Likewise.
|
|||
|
* function.c (setjmp_protect, uninitialized_vars_warning):
|
|||
|
(instantiate_decls_1): Likewise.
|
|||
|
* c-parse.y, cplus-parse.y, objc-parse.y (stmt expr rule): Likewise.
|
|||
|
* dbxout.c (dbxout_block): Expect only BLOCKs in this tree.
|
|||
|
Ignore those with controllers that are not marked used.
|
|||
|
* sdbout.c (sdbout_block): Likewise.
|
|||
|
* symout.c (symout_function): Likewise.
|
|||
|
|
|||
|
* tree.def: Delete IF_STMT, COMPOUND_STMT, WITH_STMT.
|
|||
|
* expr.c (expand_expr): Delete handling of IF_STMT.
|
|||
|
* tree.c (build_if, build_loop, build_case, build_goto): Deleted.
|
|||
|
(build_expr_stmt, build_asm_stmt, build_return, build_exit): Likewise.
|
|||
|
(build_compound): Likewise.
|
|||
|
* cplus-init.c (build_vec_delete): Use COND_EXPR instead of IF_STMT.
|
|||
|
|
|||
|
Sat May 26 13:23:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* calls.c (struct arg_data): Add new fields slot_offset and stack_slot.
|
|||
|
(expand_call): Compute both location of start of stack slot and the
|
|||
|
place in the stack slot where the first byte of the argument will be
|
|||
|
placed.
|
|||
|
Use stack_slot when loading a BLKmode object into registers.
|
|||
|
When loading into registers, don't check reg_parm_seen, just look
|
|||
|
at args[i].reg.
|
|||
|
(expand_call, store_one_arg): Save and restore stack slot starting
|
|||
|
from beginning of slot, not begining location where arg is stored.
|
|||
|
(store_one_arg): After calling emit_push_insn, argument is really
|
|||
|
at arg->stack_slot instead of arg->stack because if we want to
|
|||
|
load it into registers, we include any padding.
|
|||
|
|
|||
|
Sat May 26 01:37:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* tree.h (struct tree_type): Rename sep=>minval, sep_unit=>precision.
|
|||
|
|
|||
|
* tree.c (init_obstacks, init_tree_codes): init_tree split in two.
|
|||
|
* toplev.c (compike_file): Call them.
|
|||
|
|
|||
|
Fri May 25 16:40:45 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* stor-layout.c (layout_record): Nuke excess set of DECL_FIELD_BITPOS.
|
|||
|
* varasm.c (output_constructor): Bitpos is zero for array (field == 0).
|
|||
|
|
|||
|
Fri May 25 00:48:45 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* final.c (final_scan_insn): Restore inadvertent deletion in change
|
|||
|
of May 24th.
|
|||
|
|
|||
|
Fri May 25 00:13:12 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* print-tree.c (print_node): Print some missing fields for decls.
|
|||
|
(print_node_brief): Always print value of integer or real constant.
|
|||
|
|
|||
|
Thu May 24 21:28:36 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* fold-const.c (real_zerop): Function deleted; was redundant.
|
|||
|
|
|||
|
* tree.h (DECL_OFFSET): Macro deleted.
|
|||
|
(struct tree_decl): Field deleted.
|
|||
|
|
|||
|
* c-typeck.c (build_unary_op): For ADDR_EXPR of COMPONENT_REF,
|
|||
|
use DECL_FIELD_BITPOS and handle non-constant values.
|
|||
|
* stor-layout.c (layout_record, layout_union): Likewise.
|
|||
|
* expr.c (expand_assignment, store_constructor, expand_expr): Likewise.
|
|||
|
* dbxout.c (dbxout_type): Likewise.
|
|||
|
* sdbout.c (sdbout_one_type): Likewise.
|
|||
|
* c-common.c (merge_component_comparisons, make_merged_ref): Likewise.
|
|||
|
* print-tree.c (print_node): Likewise.
|
|||
|
* varasm.c (decode_addr_const, output_constructor): Likewise.
|
|||
|
* objc-actions.c (build_ivar_list_initializer): Likewise.
|
|||
|
* cplus-typeck.c (build_component_addr): Likewise.
|
|||
|
And preserve TREE_CONSTANT flag.
|
|||
|
(unary_complex_lvalue): Likewise.
|
|||
|
|
|||
|
* tree.h (DECL_FUNCTION_CODE): Use the frame_size field, not `offset'.
|
|||
|
Now meaningful only if function is built in.
|
|||
|
(DECL_BUILT_IN): New flag macro.
|
|||
|
* c-decl.c (builtin_function): Set the flag.
|
|||
|
(pushdecl, duplicate_decls): Use and set it.
|
|||
|
* c-typeck.c, cplus-typeck.c (build_function_call): Test it.
|
|||
|
* cplus-decl.c (define_function): Set the flag.
|
|||
|
(pushdecl, duplicate_decls): Use and set it.
|
|||
|
* expr.c (expand_expr, preexpand_calls): Test it.
|
|||
|
|
|||
|
* tree.h (DECL_INCOMING_RTL): New macro.
|
|||
|
* function.c (assign_parms): Set up that field.
|
|||
|
* dbxout.c (dbxout_parms, dbxout_reg_parms): Don't try to use
|
|||
|
DECL_OFFSET for a parm; it is not set. Use DECL_INCOMING_RTL.
|
|||
|
(PARM_PASSED_IN_MEMORY): New macro.
|
|||
|
* sdbout.c (sdbout_parms, sdbout_reg_parms): Likewise.
|
|||
|
(PARM_PASSED_IN_MEMORY): New macro.
|
|||
|
|
|||
|
* cccp.c (macarg): When popping frame, free via free_ptr, not buf.
|
|||
|
|
|||
|
Thu May 24 18:04:06 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* emit-rtl.c (next_cc0_user): New function.
|
|||
|
* recog.c (next_insn_tests_no_inequality): Use next_cc0_user.
|
|||
|
* rtl.h: Define next_cc0_user.
|
|||
|
|
|||
|
* cse.c (cse_insn): Make canon_reg calls in separate loop over the
|
|||
|
SETs to avoid problems when MATCH_DUPs are present in an insn
|
|||
|
pattern.
|
|||
|
Don't canon CLOBBER in PARALLEL. Instead, canon MEM of CLOBBER,
|
|||
|
both within a PARALLEL and standalone. Also, call note_mem_clobbered
|
|||
|
only for MEM.
|
|||
|
|
|||
|
Thu May 24 13:08:25 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* gnulib2.c (__negdi2): Make this inline for other functions.
|
|||
|
|
|||
|
Thu May 24 07:15:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* jump.c (no_labels_between_p, prev_real_insn, next_real_insn):
|
|||
|
(prev_active_insn, next_active_insn, next_label): Delete from here.
|
|||
|
* rtlanal.c (no_labels_between_p): Put here.
|
|||
|
* emit-rtl.c (prev_real_insn, next_real_insn, prev_active_insn):
|
|||
|
(next_active_insn, next_label): Add to here.
|
|||
|
|
|||
|
* c-common.c: Define NULL so NULL_TREE macro will work.
|
|||
|
|
|||
|
* cplus-typeck.c (common_parms): Use oballoc and obfree to
|
|||
|
avoid external current_obstack.
|
|||
|
|
|||
|
* cse.c (fold_cc0, cse_insn): Use HASH macro instead of call to
|
|||
|
canon_hash.
|
|||
|
(cse_insn): When just recording jump insn, show it doesn't set CC0
|
|||
|
and set it as previous insn.
|
|||
|
|
|||
|
* genoutput.c (gen_split): Fix typo in comment.
|
|||
|
|
|||
|
* reorg.c: No longer need define next_label and next_real_insn as
|
|||
|
extern.
|
|||
|
|
|||
|
* toplev.c (rest_of_compilation): Use DELAY_SLOTS instead of
|
|||
|
obsolete HAVE_DELAYED_BRANCH; include insn-attr.h.
|
|||
|
|
|||
|
* final.c (dbr_sequence_length): Now present #ifdef DELAYED_BRANCHES.
|
|||
|
Eliminate references to obsolete DBR_INSN_SLOTS.
|
|||
|
(get_attr_length): Support ADJUST_INSN_LENGTH.
|
|||
|
(get_attr_length, shorten_branches): Handle a SEQUENCE built for an
|
|||
|
insn with filled delay slots.
|
|||
|
(final_scan_insn): Avoid unnecessary call to recog_memoized.
|
|||
|
Use validate_change instead of assuming replacement of CC0 by
|
|||
|
STORE_FLAG_VALUE or const0_rtx is valid.
|
|||
|
|
|||
|
Wed May 23 16:32:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* out-m68k.c, out-alliant.c (output_btst):
|
|||
|
Use next_insn_tests_no_inequality, not next_insns_test_...
|
|||
|
* recog.c (next_insns_test_no_inequality): Function deleted.
|
|||
|
|
|||
|
Wed May 23 13:26:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* expmed.c (store_bit_field): Don't bother making a SUBREG when we
|
|||
|
call ourself recursively; the recursive call will just strip it off.
|
|||
|
|
|||
|
* reorg.c: Include insn-attr.h before testing DELAY_SLOTS.
|
|||
|
(emit_delay_sequence): Assign new INSN_UID to the SEQUENCE.
|
|||
|
Chain insns through the sequence via NEXT_INSN and PREV_INSN.
|
|||
|
* emit-rtl.c (next_insn, prev_insn): Go inside a SEQUENCE to
|
|||
|
find the next or previous insn.
|
|||
|
(make_insn_raw): No longer static.
|
|||
|
* rtl.h: Define make_insn_raw, prev_active_insn, next_active_insn,
|
|||
|
next_insn, and previous_insn.
|
|||
|
|
|||
|
* genattrtab.c (write_eligible_delay): Always use "*delay_type";
|
|||
|
annuling only applies to candidate insn, not insn needing slot.
|
|||
|
|
|||
|
* tree.c (init_tree): tree_node_counter doesn't exist any more.
|
|||
|
(make_node, copy_node, make_tree_vec, build1): No longer set TREE_UID.
|
|||
|
|
|||
|
Wed May 23 00:48:57 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* genemit.c, genextract.c: Add support for MATCH_OP_DUP and
|
|||
|
DEFINE_SPLIT.
|
|||
|
|
|||
|
* cplus-init.c (build_delete): TREE_SIDE_EFFECTS can be
|
|||
|
nonzero when address to be deleted is a cast of something
|
|||
|
with side-effects (like a call).
|
|||
|
(build_vec_delete): Simplify code now that `make_node' does the
|
|||
|
right thing for _STMT nodes.
|
|||
|
|
|||
|
Tue May 22 22:59:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* cse.c (cse_end_basic_block): Don't crash if NEXT_INSN of
|
|||
|
our branch target is zero.
|
|||
|
Don't skip scanning first insn after destination label of branch.
|
|||
|
|
|||
|
* expr.c (emit_move_insn): Abort if modes differ.
|
|||
|
(expand_expr, comparison cases): Use TMODE when convenient.
|
|||
|
(expand_expr, case COND): When optimizing (C ? 1 : 0), ensure
|
|||
|
we return a result of the correct mode.
|
|||
|
|
|||
|
* integrate.c (expand_inline_function): Can't call try_constants for
|
|||
|
JUMP_INSN since we may have changed RETURN to jump.
|
|||
|
|
|||
|
Tue May 22 22:40:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* tree.h (struct tree_common): Delete field `uid'.
|
|||
|
(TREE_UID): Macro deleted.
|
|||
|
|
|||
|
* c-decl.c (finish_decl): Discard any variable sizes in the decl.
|
|||
|
|
|||
|
* calls.c (expand_call): When making reg_notes for const function,
|
|||
|
don't test is_const twice, and take account of order of pushing.
|
|||
|
|
|||
|
Tue May 22 21:41:48 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* reload1.c (eliminate_regs): Ensure we process pseudo that is first
|
|||
|
operand of PLUS.
|
|||
|
|
|||
|
* expmed.c (store_bit_field): When stripping a SUBREG, adjust the
|
|||
|
bit position to correspond to the change in modes.
|
|||
|
|
|||
|
* cse.c (rtx_cost): Use COSTS_N_INSNS macro.
|
|||
|
|
|||
|
* cse.c (qty_comparison_*): New vars.
|
|||
|
(new_basic_block): Initialize qty_comparison_code.
|
|||
|
(fold_rtx): If we see a comparison, check if we have seen the
|
|||
|
same comparison before. If so, we know the result.
|
|||
|
(record_jump_equiv): Save the comparison being passed in the
|
|||
|
qty_comparison_* variables for possible later use by fold_rtx.
|
|||
|
(cse_insn): If the current insn doesn't reference cc0, but the
|
|||
|
previous insn sets it, delete the previous insn; presumably we
|
|||
|
used to test it.
|
|||
|
(cse_basic_block): Allocate new qty_comparison_* vars.
|
|||
|
|
|||
|
* reload1.c (eliminate_regs): Second arg is now mode of enclosing
|
|||
|
MEM, if any, rather than simply flag indicating inside MEM.
|
|||
|
Use this mode to determine amount that, e.g., PRE_DEC adjusts by.
|
|||
|
|
|||
|
* reload1.c (reload): Set regs_ever_live for a register that couldn't
|
|||
|
be eliminated.
|
|||
|
* final.c (only_leaf_regs_used): Don't do it here.
|
|||
|
|
|||
|
* reorg.c: Eliminate obsolete macros *_REORG_FUNCTION.
|
|||
|
Entire file is conditional on #ifdef DELAY_SLOTS.
|
|||
|
|
|||
|
* Makefile.in: Use reorg.c instead of dbranch.c.
|
|||
|
|
|||
|
Tue May 22 20:40:30 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* c-decl.c (complete_array_type): Get string elt size in bytes.
|
|||
|
|
|||
|
Tue May 22 00:42:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* toplev.c (rest_of_compilation): Turn off VERBOSE arg to thread_jumps.
|
|||
|
|
|||
|
* objc-parse.y, objc-actions.c: Replaces uses of build with build1
|
|||
|
when being used for 1-operand nodes.
|
|||
|
|
|||
|
Mon May 21 23:59:21 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* global-alloc.c (hard_reg_full_preferences): New variable.
|
|||
|
(global_alloc): Allocate and initialize it.
|
|||
|
(prune_preferences): Include in regs_someone_prefers all words
|
|||
|
of multi-word items that have preferences. Don't includes registers
|
|||
|
we also prefer unless they are prefered by an allocno that needs
|
|||
|
more registers.
|
|||
|
(set_preference): Set hard_reg_full_preferences also.
|
|||
|
|
|||
|
Mon May 21 21:36:29 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* tree.c (make_node): All ..._STMT nodes have side effects, type void.
|
|||
|
|
|||
|
Mon May 21 16:03:23 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* integrate.c (expand_inline_function): Set insns_at_start before
|
|||
|
processing parameters since it might be needed during that processing.
|
|||
|
Set RTX_INTEGRATED_P in all insns emitted, including labels and
|
|||
|
barriers.
|
|||
|
Ensure COPY is set correctly when replacing RETURN and avoid
|
|||
|
duplicate barriers by calling emit_jump_insn instead of emit_jump.
|
|||
|
Call note_stores for JUMP_INSNs and CALL_INSNs in case they have
|
|||
|
side-effects we care about.
|
|||
|
(copy_rtx_and_substitute): Convert (use (subreg FOO)) to (use FOO).
|
|||
|
(subst_constants): Don't crash if we see a SUBREG replaced by a
|
|||
|
REG or vice versa; we have no work to do in that case.
|
|||
|
Fix typo in case MULT.
|
|||
|
|
|||
|
* recog.c (constrain_operands): Call reg_fits_class_p with original
|
|||
|
mode of OP, not mode of SUBREG_REG (op) when OP is SUBREG.
|
|||
|
|
|||
|
Mon May 21 14:25:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* expmed.c (extract_bit_field): Use class of TMODE for simple reg case.
|
|||
|
|
|||
|
* flags.h (flag_pic): Declare it.
|
|||
|
* tree.h (mode_for_size): Declare it.
|
|||
|
* c-tree.h (merge_component_comparisons): Declare it.
|
|||
|
|
|||
|
Mon May 21 07:27:12 1990 Michael Tiemann (tiemann at cygnus.com)
|
|||
|
|
|||
|
* jump.c (thread_jumps): New function to optimize the case where one
|
|||
|
conditional jump jumps to another testing the same condition. This
|
|||
|
function usefully optimzies code both before common subexpression
|
|||
|
elimination (where it "finds" common subexpressions that cse won't
|
|||
|
find) and after loop optimization (where the loop optimizer
|
|||
|
introduces new conditional jumps after rearranging loops).
|
|||
|
(rtx_equal_for_thread_p): cheaply builds equivalences between
|
|||
|
register so that jump threading can be effectively run before cse.
|
|||
|
|
|||
|
* emit-rtl.c (init_emit_once): Initialize PIC_OFFSET_TABLE_RTX if
|
|||
|
PIC_OFFSET_TABLE_REGNUM is defined.
|
|||
|
|
|||
|
* tree.c (build,build1,build_nt): Set TREE_RAISES in addition to
|
|||
|
TREE_SIDE_EFFECTS.
|
|||
|
({temp,saveable,perm}_tree_cons): Call `tree_cons' with arguments
|
|||
|
instead of calling `make_node' directly. Eventually, `tree_cons'
|
|||
|
could be faster than `make_node'.
|
|||
|
(get_identifier): Use `bcmp' instead of `strcmp', since it's
|
|||
|
faster. Also, test the first letter of each string before calling
|
|||
|
the string comparison function.
|
|||
|
|
|||
|
* toplev.c: Add new flags FLAG_THREAD_JUMPS and FLAG_PIC. The
|
|||
|
former gives better common sub-expression elimination while the
|
|||
|
latter tells the compiler to emit position-independent code.
|
|||
|
(rest_of_compilation): Thread jumps if requested.
|
|||
|
|
|||
|
* stor-layout.c (layout_{record,union}): For loop bodies meant only
|
|||
|
for FIELD_DECLs, make sure we have a FIELD_DECL before proceeding.
|
|||
|
|
|||
|
* stmt.c (expand_end_case): Use ADDR_DIFF_VEC if FLAG_PIC is
|
|||
|
nonzero.
|
|||
|
@@ NOTE: This would look a lot nicer if CASE_VECTOR_PC_RELATIVE were
|
|||
|
an expression (like zero/nonzero) instead of soley a #define.
|
|||
|
(fixup_cleanups): If cleanups emitted no code, don't call
|
|||
|
`reorder_insns'.
|
|||
|
(expand_decl_cleanup): Return 0 in case we are not in a block
|
|||
|
(but instead at top-level).
|
|||
|
|
|||
|
* stack.h: New GNU C++ file.
|
|||
|
|
|||
|
* rtl.c (REG_NOTE_NAMES): Add REG_CC_STATUS and REG_TAIL_CALL.
|
|||
|
* rtl.h: Ditto. Also make external declaration of
|
|||
|
pic_offset_table_rtx.
|
|||
|
* rtl.def: Add the following new RTL codes: DEFINE_SPLIT,
|
|||
|
MATCH_OP_DUP, LO_SUM and HIGH.
|
|||
|
|
|||
|
* reorg.c: New file. Performs instruction reorganizations
|
|||
|
(primarily branch scheduling) after register allocation.
|
|||
|
|
|||
|
* local-alloc.c (local_alloc): If defined, execute
|
|||
|
ORDER_REGS_FOR_LOCAL_ALLOC.
|
|||
|
|
|||
|
* genrecog.c (struct decision): Extended to handle DEFINE_SPLITs.
|
|||
|
(write_tree): Split into three subroutines: `write_tree_1' which
|
|||
|
does the main work, `write_tree' which does the original job, and
|
|||
|
`write_split_tree' which builds the recognizer for insn splitting.
|
|||
|
(add_to_sequence): Handle MATCH_OP_DUP.
|
|||
|
(main): Bui.Build both insn->insn_code and insn->insn_list
|
|||
|
recognizers.
|
|||
|
Also, fixed comment at the top of the file.
|
|||
|
* genpeep.c (main): Handle DEFINE_SPLIT.
|
|||
|
(match_rtx): Handle MATCH_OP_DUP.
|
|||
|
* genoutput.c (main): Handle DEFINE_SPLIT.
|
|||
|
* genconfig.c (main): Handle DEFINE_SPLIT and MATCH_OP_DUP.
|
|||
|
* genattrtab.c (main): Handle DEFINE_SPLIT.
|
|||
|
|
|||
|
* fold-const.c (various places): Use `build1' constructor instead of
|
|||
|
`build' constructor whenever possible.
|
|||
|
|
|||
|
* final.c (final_scan_insn): If we know the status of the condition
|
|||
|
codes at a particular JUMP_INSN (by dint of the fact that it has a
|
|||
|
REG_CC_STATUS note), set CC_STATUS to reflect that value.
|
|||
|
(only_leaf_regs_used): @@ For some reason the frame pointer register
|
|||
|
is not marked live, even when it is. If FRAME_POINTER_NEEDED is
|
|||
|
nonzero, set REGS_EVER_LIVE[FRAME_POINTER_REGNUM] to 1.
|
|||
|
|
|||
|
* expr.c (emit_library_call): Round ARGS_SIZE.CONSTANT up, not down.
|
|||
|
Use new macro MAX to accomplish this.
|
|||
|
(safe_from_p): Don't check that EXP is nonzero. Instead, make
|
|||
|
caller check (only in one place) that argument to `safe_from_p' is
|
|||
|
non-zero.
|
|||
|
(expand_expr): In COND_EXPR case, make sure that the predicate is
|
|||
|
safe from the two conditions. Lossage occured in a construct of the
|
|||
|
form (c = c < 0 ? d : -d).
|
|||
|
|
|||
|
* explow.c (plus_constant): Handle LO_SUM rtl.
|
|||
|
|
|||
|
* c-typeck.c (build_binary_op_nodefault): If optimizing, try merging
|
|||
|
component refs and/or comparisons into larger operations.
|
|||
|
|
|||
|
* c-common.c (rewrite_for_merged_ref): New function. Canonicallizes
|
|||
|
expressions to be recognizable as candidates for merged
|
|||
|
COMPONENT_REF operations.
|
|||
|
(make_merged_ref): Builds custom FIELD_DECLs for accessing multiple
|
|||
|
bits in a byte simultaneously.
|
|||
|
(merge_component_comparisons): Optimize COMPONENT_REFs in
|
|||
|
expressions that look like (x.p == y.p && x.q == y.q) or
|
|||
|
(x.p != y.p || x.q != y.q). Also optimize (x.p == c1 && x.q == c2),
|
|||
|
where C1 and C2 are known constants.
|
|||
|
|
|||
|
* c-lang.c (print_lang_statistics): Added new hook function.
|
|||
|
Currently does nothing for C.
|
|||
|
|
|||
|
* c-convert.c: Use `build1' constructor instead of `build'
|
|||
|
constructor whenever possible.
|
|||
|
|
|||
|
* cplus-typeck.c (build_binary_op_nodefault): Call this function for
|
|||
|
better applicability of the merged component ref optimization.
|
|||
|
Also, add more recognized cases.
|
|||
|
|
|||
|
* cplus-type2.c (merge_component_comparisons): Code improved, and
|
|||
|
moved to c-common.c.
|
|||
|
|
|||
|
* cplus-parse.y (operator_name): Recognize `operator,'.
|
|||
|
(expr): On parsing ',', call `build_x_compound_expr' instead of
|
|||
|
`build_compound_expr'.
|
|||
|
(various places): Call `note_decl_list_got_semicolon' instead of
|
|||
|
`note_decl_got_semicolon' where object in question is a list instead
|
|||
|
of a type.
|
|||
|
(component_declarator0): Set CURRENT_DECLSPECS from the bitfield
|
|||
|
type.
|
|||
|
|
|||
|
* cplus-method.c (hack_wrapper): Rename parameter TYPE to CNAME,
|
|||
|
since it is a type name we pass in, not a type.
|
|||
|
|
|||
|
* cplus-lex.c (opname_tab): Add `operator,'.
|
|||
|
(note_decl_list_got_semicolon): Make notation that a list of
|
|||
|
declarations should be considered as having "gotten a semicolon".
|
|||
|
(extract_interface_info,interface_strcmp): Commented.
|
|||
|
|
|||
|
* cplus-init.c (build_delete): Rest of changes to reimplement new
|
|||
|
destructor mechanism.
|
|||
|
(build_vbase_delete): Fix bug whereby arrays of length 0 and 1 were
|
|||
|
not being correctly handled. Also, where elsements were not being
|
|||
|
deleted. Use new destrouct calling convention.
|
|||
|
(various places): Change TYPE_HAS_CONSTRUCTOR to
|
|||
|
TREE_HAS_CONSTRUCTOR where appropriate.
|
|||
|
|
|||
|
* cplus-expr.c (cplus_expand_expr): Use `emit_block_move' to copy
|
|||
|
data from RETURN_TARGET to CALL_TARGET in case they do not line up
|
|||
|
normally.
|
|||
|
|
|||
|
* cplus-decl2.c (finish_file): No need to call `build_vbase_delete'
|
|||
|
on top-level objects anymore, since destructors now do the right
|
|||
|
thing.
|
|||
|
|
|||
|
* cplus-decl.c (finish_function): Implement new destructor
|
|||
|
mechanism: destroy virtual baseclass objects if (in$charge & 2) is
|
|||
|
nonzero. Deallocate if (in$charge & 1) is nonzero.
|
|||
|
|
|||
|
* cplus-cvt.c (build_up_reference): Use TREE_HAS_CONSTRUCTOR, not
|
|||
|
TYPE_HAS_CONSTRUCTOR on non-TYPE tree nodes.
|
|||
|
(build_up_reference): Only build up references between compatible
|
|||
|
types. I.e., don't build a char& to an int object.
|
|||
|
(convert_to_aggr): Set the TREE_SIDE_EFFECTS bit if the result is a
|
|||
|
CALL_EXPR.
|
|||
|
|
|||
|
* cplus-class.c (build_vbase_path): Recover from bad parse errors.
|
|||
|
(build_method_call): Implement new ctor/dtor semantics to allow
|
|||
|
differentiation between tearing an object down and deallocating it.
|
|||
|
This also means that ctors and dtors can now aviod going through the
|
|||
|
virtual function table mechanism as they construct/destruct their
|
|||
|
objects.
|
|||
|
|
|||
|
* ALL GNU C++ files: Use new macro IDENTIFIER_TYPE_VALUE to lookup
|
|||
|
type value of an identifier. Also implement related macros
|
|||
|
IDENTIFIER_HAS_TYPE_VALUE, and IDENTIFIER_TYPEDECL_VALUE.
|
|||
|
|
|||
|
* cplus-cadillac.c (cadillac_switch_source): Change Prototype
|
|||
|
declaration to non-prototype declaration.
|
|||
|
(readable_p): Ditto.
|
|||
|
|
|||
|
Sun May 20 20:23:39 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* c-typeck.c (c_sizeof): For incomplete type, warn and return 0.
|
|||
|
(c_sizeof): Similar.
|
|||
|
|
|||
|
Sun May 20 17:20:48 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* emit-rtl.c (gen_highpart): Support SUBREG like gen_lowpart.
|
|||
|
|
|||
|
Sun May 20 16:59:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* c-typeck.c (build_c_cast): Warn about pointer-integer casts
|
|||
|
where size differs.
|
|||
|
|
|||
|
* stor-layout.c (layout_type): Multi-word field doesn't force BLKmode.
|
|||
|
|
|||
|
* expmed.c (extract_bit_field): Use mode_for_size for lsb-aligned
|
|||
|
fields in regs. No longer knows explicit modes for this.
|
|||
|
|
|||
|
Sun May 20 15:12:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* Makefile.in: (reload1.o): Now depends on output.h.
|
|||
|
|
|||
|
* calls.c (expand_call): No need to set frame_pointer_needed.
|
|||
|
|
|||
|
* emit-rtl.c (gen_rtx): If reference to sp, ap, or fp, use
|
|||
|
appropriate already-made rtx (e.g., stack_pointer_rtx).
|
|||
|
|
|||
|
* expr.c (expand_builtin, case BUILT_IN_ALLOCA): No need to set
|
|||
|
frame_pointer_needed.
|
|||
|
|
|||
|
* final.c (final_start_function): No longer round size of frame here.
|
|||
|
(final_scan_insn): Call constrain_operands with new operand.
|
|||
|
|
|||
|
* flow.c (life_analysis): Change test on whether sp is live or
|
|||
|
not to depend on FRAME_POINTER_REQUIRED and -fomit-frame-pointer.
|
|||
|
(This code may not be relevant any more.)
|
|||
|
|
|||
|
* function.c (push_function_context, pop_function_context): No need
|
|||
|
to save and restore frame_pointer_needed.
|
|||
|
(assign_{outer_,}stack_local): No need to set frame_pointer_needed.
|
|||
|
(assign_parms): Likewise.
|
|||
|
(init_function_start): Don't initialize frame_pointer_needed here.
|
|||
|
|
|||
|
* function.h (frame_pointer_needed): Deleted.
|
|||
|
|
|||
|
* genattrtab.c (write_attr_case): Write call to constrain_operands
|
|||
|
with new second argument (reload_completed).
|
|||
|
|
|||
|
* global-alloc.c (global_alloc): Don't left fp be allocated if we
|
|||
|
already know we can't eliminate it.
|
|||
|
(find_reg): Argument LOSERS is now a HARD_REG_SET instead of an array.
|
|||
|
Precompute HARD_REG_SETs before loop over registers to speed up
|
|||
|
allocation.
|
|||
|
(retry_global_alloc): Argument FORBIDDEN_REGS is now a HARD_REG_SET.
|
|||
|
(check_frame_pointer_required): Deleted; no longer needed.
|
|||
|
|
|||
|
* integrate.c (save_for_inline, output_inline_function): No longer
|
|||
|
need to save and restore frame_pointer_needed.
|
|||
|
|
|||
|
* local-alloc.c (block_alloc): No longer have to worry that having
|
|||
|
a stack variable might cause a frame pointer to be needed when it
|
|||
|
might otherwise not be.
|
|||
|
(find_free_reg): Don't allocate into registers that may be eliminated
|
|||
|
later even if they are not FIXED_REGS.
|
|||
|
|
|||
|
* output.h: Define reload_completed.
|
|||
|
|
|||
|
* recog.c (constrain_operands): Add new argument, STRICT. If zero
|
|||
|
and the constraints could not be matched, try again with a less
|
|||
|
strict view (i.e., assume that reload will fix those things that
|
|||
|
it can). This allows attribute values to be obtained prior to
|
|||
|
reload.
|
|||
|
Don't call alter_subreg or assume it has been called. Instead,
|
|||
|
look inside SUBREGs.
|
|||
|
|
|||
|
* reload.c (find_reloads_address{,_1}): Handle an address that
|
|||
|
is a MEM; it may have been produced by register elimination.
|
|||
|
(find_reloads_address): sp can also be the base register for a
|
|||
|
stack slot.
|
|||
|
(form_sum): No longer static.
|
|||
|
|
|||
|
* reload1.c: Rewrite code that performs frame pointer elimination. Do
|
|||
|
it during reload to ensure that all addresses and operands remain
|
|||
|
valid; also generalize to support more than one pair of eliminations.
|
|||
|
(reg_equiv_stack_slot, bad_spill_regs): New vars.
|
|||
|
(forbidden_regs): Now a HARD_REG_SET.
|
|||
|
(struct elim_table): New structure to describe register eliminations.
|
|||
|
(reload): Start scanning registers after virtual registers.
|
|||
|
Initialize reg_equiv_stack_slot for each register. Compute
|
|||
|
reg_equiv_{mem,address} during register scan only if not eliminating
|
|||
|
registers.
|
|||
|
Compute initial default value of frame_pointer_needed.
|
|||
|
Round frame size to BIGGEST_ALIGNMENT.
|
|||
|
Create obstack for scratch rtl created by register elmination.
|
|||
|
Initialize elimination table and spill registers that we know can't
|
|||
|
be eliminated.
|
|||
|
On each scan of the insns: Reset all elimination entries to initial
|
|||
|
offsets, compute reg_equiv_{mem,address}, and see if any potentially
|
|||
|
eliminable register changed status.
|
|||
|
Try to eliminate registers from each insn unless we know that none
|
|||
|
can be eliminated.
|
|||
|
Don't complete groups for spill registers from registers that
|
|||
|
shouldn't be used as spill registers.
|
|||
|
Call reload_as_needed if register eliminations can be done, even if
|
|||
|
no reloads are needed.
|
|||
|
(new_spill_reg): Don't allow spilling an eliminable register.
|
|||
|
Don't set forbidden_regs here.
|
|||
|
Indicate something changed if a register that wasn't ever used before
|
|||
|
was made a spill register.
|
|||
|
(eliminate_frame_pointer, {alter,fix}_frame_pointer_address): Deleted.
|
|||
|
(delete_dead_insn): New function.
|
|||
|
(alter_reg): Call it.
|
|||
|
Always set reg_equiv_stack_slot; if not eliminating registers, also
|
|||
|
set reg_equiv_{mem,address}.
|
|||
|
(eliminate_regs, eliminate_regs_in_insn): New functions.
|
|||
|
(spill_hard_reg): Add new argument, CANT_ELIMINATE.
|
|||
|
Set bit for register being spilled in forbidden_regs.
|
|||
|
Use new argument instead of seeing if we are spilling fp.
|
|||
|
No longer need to have frame pointer just because a reg needs a
|
|||
|
stack slot.
|
|||
|
(order_regs_for_reload): Set bad_spill_regs to contain those registers
|
|||
|
that can't be used for spill registers.
|
|||
|
Consider any eliminable register as bad to use as a spill register.
|
|||
|
Rework initialization of potential_reload_regs.
|
|||
|
(reload_as_needed): Handle register elimination in a similar manner
|
|||
|
as function reload.
|
|||
|
(gen_input_reload): When generating a reload for a PLUS, first try to
|
|||
|
use a three-operand add insn. If that fails, emit two two-operand
|
|||
|
insns.
|
|||
|
|
|||
|
* rtl.h (FUNCTION_FLAGS_FRAME_POINTER_NEEDED): Deleted; all others
|
|||
|
renumbered.
|
|||
|
|
|||
|
* stmt.c (expand_decl): No longer have to set frame_pointer_needed
|
|||
|
for variable-sized decl.
|
|||
|
|
|||
|
* stupid.c (stupid_find_reg): Don't try to allocate an eliminable
|
|||
|
register.
|
|||
|
|
|||
|
* tm-vax.h (INITIAL_FRAME_POINTER_OFFSET): Add definition.
|
|||
|
|
|||
|
* recog.c (next_insn_tests_no_inequality): If no next insn, return 0.
|
|||
|
|
|||
|
* print-tree.c (print_node): Set length for TREE_VEC.
|
|||
|
|
|||
|
* calls.c (store_one_arg): Set arg->value to location where argument
|
|||
|
was placed (either register or stack).
|
|||
|
|
|||
|
* recog.c: Needs flags.h (for flag_pretend_float):
|
|||
|
* Makefile.in (recog.o): Likewise.
|
|||
|
|
|||
|
* expr.c (convert_move): Add missing RETURN statements.
|
|||
|
|
|||
|
Sat May 19 14:26:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* expr.c (expand_expr, case EXIT_STMT): Return rather than falling
|
|||
|
out of switch statement (and into `binop').
|
|||
|
|
|||
|
* cse.c (cse_insn): Allow conditional branches to be turned into
|
|||
|
noops when the condition is known false by not calling validate_change.
|
|||
|
|
|||
|
* cse.c (fold_rtx): Add LABEL_REF to list of fast RTL codes.
|
|||
|
|
|||
|
Sat May 19 12:41:44 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* tm-i386gas.h (ASM_OUTPUT_ALIGN): Use log as arg to .align.
|
|||
|
(ASM_OUTPUT_ALIGN_CODE): Likewise.
|
|||
|
|
|||
|
* gcc.c (default_compilers): For .cc, pass -g* to cc1.
|
|||
|
|
|||
|
Sat May 19 06:51:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* tree.c (push_obstacks, pop_obstacks): Put struct obstack_stack
|
|||
|
in obstack instead of using xmalloc/free.
|
|||
|
(init_tree): Initialize new obstack for {push,pop}_obstacks.
|
|||
|
|
|||
|
* tree.c (simple_cst_list_equal): No longer static.
|
|||
|
|
|||
|
Fri May 18 19:38:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* expr.h (MUST_PASS_IN_STACK): Refine test for case where padding
|
|||
|
requirement prohibits passing in register.
|
|||
|
|
|||
|
Fri May 18 18:14:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* fixincludes: Fix CAT macro in memvar.h.
|
|||
|
|
|||
|
Fri May 18 16:13:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* expr.c (do_jump): Don't explicitly copy item being tested from
|
|||
|
MEM to REG. If needed, this will be done later.
|
|||
|
|
|||
|
Thu May 17 14:33:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* Makefile.in (bootstrap): Pass LANGUAGES to inner makes.
|
|||
|
|
|||
|
Thu May 17 13:57:34 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* fixincludes: Handle _CTRL like CTRL.
|
|||
|
|
|||
|
Wed May 16 21:09:42 1990 Richard Kenner (kenner at vlsi1.ultra.edu)
|
|||
|
|
|||
|
* fold-const (fold): Two conversions in a row are needed if from an
|
|||
|
integer type to a pointer type of a different precision.
|
|||
|
|
|||
|
Wed May 16 16:09:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* expr.c (expand_expr): Make sure a volatile value is referenced
|
|||
|
even if value is ignored.
|
|||
|
|
|||
|
* c-typeck.c (truthvalue_conversion): Result COND_EXPR gets type int.
|
|||
|
(invert_truthvalue): Simplify COND_EXPR.
|
|||
|
|
|||
|
Tue May 15 00:25:03 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* stor-layout.c (layout_record): Do set TYPE_SIZE if size is var.
|
|||
|
|
|||
|
* reload.c (push_reload): If insn is an asm, verify that CLASS
|
|||
|
is at least possible for the specified mode.
|
|||
|
|
|||
|
* c-decl.c (complete_array_type): Compensate for wide string constant.
|
|||
|
|
|||
|
* final.c (leaf_function_p): Reject everything if profiling.
|
|||
|
|
|||
|
* function.c (optimize_bit_field): Adjust OFFSET if
|
|||
|
BITS_BIG_ENDIAN != BYTES_BIG_ENDIAN.
|
|||
|
|
|||
|
* expmed.c (store_bit_field, extract_bit_field): Rework the code
|
|||
|
to adjust XBITPOS for the size within which to count.
|
|||
|
(extract_bit_field): When converting MEM to REG, don't make SUBREG
|
|||
|
immediately; fall through and let this happen in the code that
|
|||
|
handles original registers of the wrong mode.
|
|||
|
|
|||
|
Mon May 14 16:01:13 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* cexp.y (yylex): Ignore carriage return.
|
|||
|
* cccp.c (initialize_char_syntax): Likewise.
|
|||
|
(newline_fix, name_newline_fix): Likewise.
|
|||
|
|
|||
|
* c-common.c: New file.
|
|||
|
(combine_strings): Moved here. Fix errors for wide string length.
|
|||
|
* c-parse.y, objc-parse.y, cplus-lex.c: Function deleted here.
|
|||
|
|
|||
|
Sun May 13 08:08:41 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* integrate.c (subst_constants): Fix typo in case 'E'.
|
|||
|
|
|||
|
Sat May 12 17:14:26 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* combine.c (subst): Don't change -(y-x) to x-y for IEEE floats.
|
|||
|
Include real.h.
|
|||
|
|
|||
|
* cse.c (fold_rtx): Don't simplify float+0, float-0, float*0
|
|||
|
if using IEEE floating point.
|
|||
|
Don't simplify float-self even if not IEEE.
|
|||
|
* fold-const.c (fold): Likewise.
|
|||
|
|
|||
|
* i386.md (trunc**): Use long move if source is constant.
|
|||
|
* out-i386.c (PRINT_REG): Handle CODE == 'k'.
|
|||
|
|
|||
|
* fixincludes: Use rm -fr to delete before making link.
|
|||
|
|
|||
|
* optabs.c (init_optabs): Support MULDI3_LIBCALL, etc.
|
|||
|
|
|||
|
Sat May 12 17:04:58 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* cse.c (find_best_addr): Don't modify constant address MEMs; they
|
|||
|
are shared.
|
|||
|
|
|||
|
Sat May 12 15:17:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* ns32k.md (signed bitfield extract): Don't output assembler comment.
|
|||
|
|
|||
|
Fri May 11 15:23:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
|
|||
|
|
|||
|
* Makefile.in: Don't use $(libsubdir) as a target since it involves
|
|||
|
shell `...` constructs.
|
|||
|
|
|||
|
* genattr.c (fatal, main): Remove relics of old program name.
|
|||
|
* genattrtab.c: Likewise.
|
|||
|
|
|||
|
* expr.c (expand_expr, case COND_EXPR): Add missing argument to
|
|||
|
operand_equal_p.
|
|||
|
|
|||
|
* reload.c (form_sum): Handle case where second operand is
|
|||
|
(plus foo (const_int ...)).
|
|||
|
|
|||
|
* c-typeck.c (c_sizeof{,_nowarn}, c_alignof): Don't blow up for
|
|||
|
ERROR_MARK.
|
|||
|
* cplus-typeck.c (c_sizeof{,_nowarn}, c_alignof): Likewise.
|
|||
|
|
|||
|
* cplus-typeck.c (c_sizeof{,_nowarn}): Convert from bytes to chars,
|
|||
|
since c defines sizeof (char) as 1.
|
|||
|
|
|||
|
* loop.c (mark_loop_jump): RETURN, SIGN_EXTEND, and ZERO_EXTEND can
|
|||
|
also occur in JUMP_INSN's.
|
|||
|
|
|||
|
* reload.c (find_reloads, find_reloads_address): Correct errors where
|
|||
|
an arg to find_reloads is "VOIDmode" instead of "0" and vice versa.
|
|||
|
(find_reloads_address_1): Likewise.
|
|||
|
|
|||
|
* global-alloc.c (global_alloc): Avoid divide-by-zero for allocnos
|
|||
|
where all regs have reg_live_length == -2.
|
|||
|
|
|||
|
Fri May 11 14:45:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* tm-i860.h (ASM_OUTPUT_CASE_LABEL): Align to multiple of 4.
|
|||
|
|
|||
|
Thu May 10 23:43:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
|||
|
|
|||
|
* out-i860.c (single_insn_src_p, strict_single_insn_src_p):
|
|||
|
Correct conditions for needing multiple instructions.
|
|||
|
(output_delayed_branch): Likewise.
|
|||
|
|
|||
|
See file ChangeLog.1.
|
|||
|
|
|||
|
Local Variables:
|
|||
|
mode: indented-text
|
|||
|
left-margin: 8
|
|||
|
fill-column: 76
|
|||
|
version-control: never
|
|||
|
End:
|