home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GEMini Atari
/
GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso
/
zip
/
gnu
/
gccsrc3.lzh
/
GCCSRC3
/
CHANGELO.G
< prev
next >
Wrap
Text File
|
1993-07-23
|
185KB
|
5,036 lines
Wed Feb 21 00:25:39 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* Version 1.37.1 released.
* tm-mips.h (ASM_OUTPUT_ADDR_VEC_ELT and ASM_OUTPUT_ADDR_DIFF_ELT):
Start label names with $.
Sun Feb 18 13:58:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-mips.h (ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_INTERNAL_LABEL):
Start name with $.
* integrate.c (expand_inline_function): Round up size of parm_map.
Sat Feb 17 20:56:05 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-hp9k320.h (CPP_SPEC): Remove _INCLUDE__STDC__.
Sun Feb 11 20:11:25 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* Version 1.37 released.
* c-decl.c (complete_array_type): In permanent type, add perm nodes.
* out-i386.c (print_operand_address): Handle a MULT by itself.
Sat Feb 10 14:35:03 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* ns32k.md (movsf): Convert double constant to float.
Fri Feb 9 00:02:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-decl.c (duplicate_decls): Don't lose alignment of OLDDECL.
* cccp.c (handle_directive): Keep comments by copying them explicitly.
* cccp.c (rescan): When scanning for open-paren after macro name,
discard comments if appropriate.
Thu Feb 8 14:19:41 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-decl.c (build_enumerator): Error if value outside range of int.
* tm-hp9k320.h (CPP_SPEC): Define _INCLUDE__STDC__ if not traditional.
* tm-hp9k310.h: Missing file brought back.
Mon Feb 5 12:49:36 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* reload1.c (spill_hard_reg): Return 1 if reg is explicitly used.
(reload): Cancel dummy reloads using regs subject to spill.
Sun Feb 4 12:37:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-3b1g.h: New file.
* config.gcc (3b1g, 3b1-gas): New alternative.
* tm-att386.h (ASM_OUTPUT_COMMON): Don't use rounded size.
Fri Feb 2 17:04:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* integrate.c (copy_for_inline): Use real width of rtunion in bcopy.
* emit-rtl.c (copy_rtx_if_shared): Likewise.
* assert.h (assert) [__STDC__]: Use comma operator to avoid warning.
* c-decl.c (grokdeclarator): Traditionally change return type float
to double.
* cse.c (predecide_loop_entry): Give up unless simple jump enters loop.
Thu Feb 1 02:02:21 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-convex.h (FASCIST_ASSEMBLER, VTABLE_USES_MASK, VINDEX_MAX):
New definitions to control c++ files.
* reload1.c (inc_for_reload): Forget reg_last_reload_reg
for the reg being inc'd.
* limits.h (INT_MIN): Define so it has type `int', not unsigned.
(CHAR_MIN, SCHAR_MIN, SHRT_MIN): Put arens around value.
Wed Jan 31 12:54:07 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-mips.h (FUNCTION_PROLOGUE): Use CONST_OK_FOR_LETTER_P to see
if can update fp in one addiu insn.
* reload1.c (reload): Reject fixed regs when finding groups to spill.
* assert.h (assert) [NDEBUG]: Make value nonempty.
(assert) [no NDEBUG]: Split into a version for __STDC__ and one not.
(_assert) [__STDC__]: Pass expression and file separately to _eprintf.
(_assert) [not __STDC__]: Likewise, but implemented differently.
* gnulib.c (__eprintf): Handle 3 args plus format string.
* tm-i386.h (STACK_BOUNDARY): Define it.
Sat Jan 27 17:58:30 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* hard-params.c: Use explicit file name to include self.
Fri Jan 26 01:38:29 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* cccp.c (rescan): Set beg_of_line when string ends at newline.
(skip_quoted_string): Don't swallow newline that ends a string.
(handle_directive): No need to back up here.
Pass LIMIT as second arg to skip_quoted_string.
* cccp.c (rescan): If traditional, end preproc number after expt sign.
Thu Jan 25 01:57:34 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* loop.c (general_induction_var): Reject widening multiply.
* i860.md (andsi3): Truncate xop2 constant to 16 bits.
Wed Jan 17 12:33:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-mips.h (CC1_SPEC): Don't complain about -g.
* c-typeck.c (build_compound_expr): Delete special case
that ignores expressions without side effects.
* stor-layout.c (layout_type): Struct requires BLKmode if any field
crosses a word boundary.
* reload1.c (choose_reload_regs): Refix Sequent problem correctly.
Tue Jan 16 12:03:42 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-parse.y (unary_expr): If sizeof or alignof gets a comma expr
which has array or function type, coerce it to pointer.
* fold-const.c (combine): Propagate carry when subtracting from 0.
* fold-const.c (fold): For x++==const, do arith in type of const.
Mon Jan 15 19:24:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* cexp.y (exp): Accept unary +.
Sun Jan 14 12:18:49 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* fold-const.c (lshift_double, rshift_double, lrotate_double):
(rrotate_double): Don't shift more than width of operand.
Fri Jan 12 18:50:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* recog.c (next_insns_test_no_inequality): Return 1 at end of rtl.
Thu Jan 11 14:09:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* cccp.c (skip_if_group): Skip strings even if -traditional.
(handle_directive): Likewise, when handling copy_command.
* i860.md (movsf): Ensure F to f is reloaded via r.
Wed Jan 10 15:03:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* Makefile [3b1]: Propose redefinition of CCLIBFLAGS.
* reload1.c (choose_reload_regs): Break down hairy if expression.
* loop.c (loop_skip_over): Do nothing if don't find expected compare.
Sun Jan 7 00:58:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* config.gcc: Add i386-mach.
* xm-i386.h: Use built-in alloca if compiling with GCC.
* optabs.c (emit_cmp_insn): Set CLASS after MODE.
Sat Jan 6 15:33:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* out-mips.c (function_arg, function_arg_advance):
Define typedef for CUMULATIVE_ARGS, and use it here.
* cccp.c (main): Recognize `.C' for -M.
* c-parse.y (yylex): Put 0 at end of wide string.
* tm-mips.h (CC1_SPEC): Don't distort meaning of -O.
Fri Jan 5 12:12:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* gcc.c (link_command_spec): If LIBS_COMPILED_WITH_GCC, gnulib is last.
Thu Jan 4 23:58:59 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* Makefile (c-parse.tab.o): Add explicit compilation cmd.
Wed Jan 3 00:27:53 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* Makefile (install): Use nested foreach-loop to expand va*.h.
Mon Jan 1 19:36:49 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* expr.c (store_one_arg): Round size up for move_block_to_reg.
(expand_call): Round up when emitting USE insns.
* stmt.c (assign_parms): Round size up for move_block_from_reg.
* reload1.c (alter_reg): Undo big-endian conversion from
assign_stack_local.
Sun Dec 31 20:10:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tree.h (struct tree_common): Declare `code' as char, not int.
Thu Dec 28 13:49:43 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* gnulib.c (__fixunsdfsi): Turn large numbers to small for conversion.
* Makefile (includes): Set variable LIB. Run from `./'.
Wed Dec 27 18:54:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* Makefile (CCLIBFLAGS): Add -O.
(gnulib): Remove -O here.
(HARD_PARAMS_FLAGS): Like CCLIBFLAGS but no -O.
(hard-params, hard-params.o): Use that.
* loop.c (can_eliminate_biv_p, eliminate_biv): If add_val non zero,
it must be a constant or register.
Mon Dec 25 00:02:31 1989 Torbj|rn Granlund (tege at zevs.sics.se)
* tm-pyr.h (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Should not be defined.
The cvtdw instruction causes a trap for floating point values
that are out-of-range for a signed int.
* out-pyr.c (has_direct_base): Don't accept 0 as a base, if there
is a register displacement. This is a workaround of a bug in
/bin/as. (/bin/as changes things like "cmpw 8(reg),0(reg)" into
"cmpw 8(reg),(reg)", which is invalid assembler.)
Sun Dec 24 11:51:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* expr.c (emit_move_insn): Lossage validating mem addr of constant.
* varasm.c (record_constant_1): Missing `return' in ADDR_EXPR case.
Sat Dec 23 10:54:22 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* ns32k.md (extract byte from register): Delete #if conditionals.
Assume 32532 always.
(adjust stack): Likewise.
Thu Dec 21 10:24:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* i860.md (load DF constant to reg): Typo: extra percent sign.
(floatsidf2): Two words of a double were backwards.
* reload1.c (alter_reg):
Always do big-endian correction on slot address.
* gnulib.c (__fixunsdfsi): Don't rely on host compiler for unsigned.
* i386.md (float push recognizers): Don't pop fpreg if not dead.
Sun Dec 17 12:13:37 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-hp9k320.h (CPP_PREDEFINES): Add __hp9000s300, _HPUX_SOURCE.
Sat Dec 16 17:49:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* loop.c (strength_reduce): When writing insn to init a biv,
update life range of reg used to init it.
* combine.c (try_combine): Do combine (y = x, x = y).
* loop.c (strength_reduce): When finding initial value of a biv,
notice assignments to subregs of it, etc.
Fri Dec 15 00:42:31 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* m68k.md (fpa float and float-trunc): Accept general_operand.
* integrate.c (expand_inline_function):
Put caller's line number after inline stuff.
Put callee's line number before parm manipulation.
* If local-alloc assumes a reg does not conflict,
don't use it as dummy reload.
* local-alloc.c (wipe_dead_reg): Add REG_UNSET note.
* reload.c (find_dummy_reload): Check for that note.
* vax.md (casesi): New pattern for super-trivial cse case.
* jump.c (jump_optimize): Realize that more things can follow
the NOTE_INSN_FUNCTION_END note. Change in two places,
for optimized and one for unoptimized.
Sat Dec 9 15:21:07 1989 Richard M. Stallman (rms at ccvi)
* expr.c (expand_expr): For conversion ops, copy CONST_INT to reg
to avoid lossage on VOIDmode in convert_move or expand_float.
* optabs.c (expand_float): Abort if FROM has VOIDmode.
* final.c (final_scan_insn): Delete unused label.
Thu Dec 7 01:42:30 1989 Richard M. Stallman (rms at ccvi)
* sdbout.c (MAKE_LINE_SAFE): Ensure arg is > sdb_begin_function_line.
(sdbout_begin_block, sdbout_end_block, sdbout_end_function): Use it.
* jump.c (jump_optimize): Leave block-beg, block-end notes
in old context when swapping two ranges of insns.
(squeeze_block_notes): New function.
* expr.c (expand_call): For pcc struct, return reg mode is Pmode.
* c-typeck.c (build_conditional_expr):
Only explicit ints allow predetermined choice.
Wed Dec 6 19:02:07 1989 Richard M. Stallman (rms at ccvi)
* toplev.c: Undef FFS after including param.h.
Tue Dec 5 16:01:18 1989 Richard M. Stallman (rms at ccvi)
* mips.md (movsf): Use mtc1 where needed.
* reload1.c (choose_reload_regs): If run out of spill regs,
set must_reuse and try again.
Mon Dec 4 00:18:24 1989 Richard M. Stallman (rms at ambroise)
* reload1.c (alter_reg):
Don't set spill_stack_slot_width if from_reg is -1.
* cse.c (cse_end_of_basic_block): Typos checking NOTE insns.
* math-68881.h (pow): Add parens around `&'.
* loop.c (can_eliminate_biv_p, eliminate_biv):
In COMPARE, verify the biv is one of the arguments.
(strength_reduce): When eliminating biv, check for use
in a giv in an address, just as in check_eliminate_biv.
* stupid.c (reg_order): Make it int, in case reg # is large.
(stupid_reg_compare, stupid_life_analysis): Implement this.
Sun Dec 3 14:17:36 1989 Richard M. Stallman (rms at ambroise)
* tm-att386.h (ASM_OUTPUT_LOCAL): Don't generate .lcomm.
Go back to putting the variable in the data section.
* expr.c (do_jump): Cast XVECLEN to int for subtracting 1.
* reload.c (decompose): Handle SUBREGs.
* c-typeck.c (build_modify_expr): Prevent -Wall warning
when we generate a COMPOUND_EXPR for (?:)=.
Mon Nov 27 15:39:40 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* Makefile [pyramid]: Use CLIB, not ALLOCA, to access libPW.a.
Use -lc explicitly first.
* pyr.md (SI test recognizer): Fix syntax error,
* c-decl.c (grokdeclarator): Don't test size of error_mark_node
as type of a field.
Sun Nov 26 12:36:01 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
* tm-mips.h (CONST_OK_FOR_LETTER_P): Delete extra paren.
Wed Nov 22 12:56:41 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* pyr.md (mode conversion peepholes): Set CC_NO_OVERFLOW.
* out-pyr.c (consecutive_operands): Don't expect wrap from reg15 to 16.
* Makefile: Fix directions for pyramid.
* tm-mips.h (CONST_OK_FOR_LETTER_P): Define `K'.
(SMALL_INT): Range is 16 bits, not 17.
(SMALL_INT_UNSIGNED): New macro.
* mips.md (andsi3, iorsi3, xorsi3): Use `K', not `I'.
* mips.md (negsi2): Accept general_operand as input.
Tue Nov 21 10:57:45 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* mips.md (one_cmpl*): Accept general_operand as input.
Mon Nov 20 11:18:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* expr.c (expand_expr): For MINUS_EXPR, don't explicitly negate int
constant if it is in a mode too wide for host machine int.
* cse.c (fold_rtx): Simulate negative shift counts.
Sun Nov 19 14:36:18 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* out-pyr.c (notice_update_cc): Set CC_NO_OVERFLOW in many cases.
* cse.c (fold_rtx, fold_cc0): Handle float trap.
Sat Nov 18 00:17:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* varasm.c (output_constant): Handle float trap in fprintf.
* toplev.c (float_signal): Don't print message.
* fold-const.c (combine): Print it here.
* sparc.md (extend patterns): Handle CONST_INT as operand.
* out-i386.c (singlemove_string): Fix paren error.
Fri Nov 17 12:19:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* expr.c (expand_increment): For pre-increment, copy the rtx to return.
* c-parse.y (compstmt): There may be implicit decls, so check
and maybe keep the level.
* tm-mips.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE):
Use call_used_regs, not a private copy.
Thu Nov 16 00:28:29 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* reload1.c: Keep track of paradoxical subregs of each pseudo,
and make extra stack space for their sake.
(reload): Record max size paradoxical subreg for each pseudo.
(scan_paradoxical_subreg): New subroutine for that.
(reload): Make stack slots big enough for that size.
* tm-i860.h (ASM_DECLARE_FUNCTION_NAME): Define it,
so we can output a no-op before each function.
* tm-pyr.h (INIT_CUMULATIVE_ARGS): Simplify.
Pass function type to aggregate_value_p.
* fold-const.c (fold):
For foo++ > const, don't change if foo++ could overflow.
* loop.c (eliminate_biv):
Fix typo; check both coeffs when comparing givs.
Wed Nov 15 00:12:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* integrate.c (copy_for_inline): Correctly handle RTL type "u".
* jump.c (delete_insn): Extra test for PREV != 0.
Tue Nov 14 17:31:08 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-sun3.h (LINK_SPEC): Specify -L to control choice of -lm.
* tm-pyr.h (INIT_CUMULATIVE_ARGS):
If -fpcc-struct-return, always do the scalar thing.
* function.c (expand_function_end): Use FUNCTION_OUTGOING_VALUE.
Sat Nov 11 00:18:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-sun386.h (ASM_OUTPUT_COMMON): Use ROUNDED, not SIZE.
(ASM_OUTPUT_LOCAL): Likewise. Also, generate .lcomm
rather than a .data area symbol.
* tm-att386.h: Likewise.
Fri Nov 10 15:04:15 1989 Richard Stallman (rms at rice-chex)
* caller-save.c (emit_mult_restore, emit_mult_save):
Improve arithmetic for address to save at.
Thu Nov 9 00:14:19 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-pyr.h (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP):
Don't use obsolete pushw and popw insns.
(ASM_OUTPUT_ALIGN): Ensure arg in range 2 to 5.
* pyr.md (tstdi): Pattern deleted.
(SImode test recognizer): Output ucmpw if jump is unsigned.
* out-sparc.c (operands_satisfy_eager_branch_peephole):
Check for moves between FP and non-FP regs; they take two insns.
* sparc.md (eager branch peepholes): Likewise.
(Ordinary delayed branch peepholes): Similar check.
* out-sparc.c (single_insn_extra_test): New subroutine.
Wed Nov 8 18:19:51 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* combine.c (subst): In (sign_extend:M (subreg:N (and:M .. <const>) 0))
insist that constant be positive in mode N.
Tue Nov 7 23:25:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* rtl.h: Undefine FFS in case it was defined by the system.
Mon Nov 6 14:43:55 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-i860.h, tm-m88k.h, tm-pyr.h, tm-spur.h (INIT_CUMULATIVE_ARGS):
Test aggregate_value_p, not just BLKmode.
* gnulib2.c (__builtin_saveregs): Moved from gnulib.c.
Code added for mips.
* pyr.md (conditional branch recognizers): Don't simplify if not -O.
* out-pyr.c (extend_and_branch): Handle two constant operands.
* integrate.c (function_cannot_inline_p): Don't inline if alloca used.
Sun Nov 5 02:59:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* Always make a LET_STMT and notes for the top level of a function
if it has any subblocks.
* c-decl.c (struct binding_level): New field keep_if_subblocks.
(poplevel): Obey the new field.
(keep_next_if_subblocks): New variable.
(pushlevel): Use that variable.
(store_parm_decls): Set that variable.
(compstmt): Pass nonzero to expand_end_bindings
for the new kept binding levels.
(kept_level_p): New function.
* xm-mips.h: Define USE_C_ALLOCA if compiling with CC.
* tm-alliant.h (CHECK_FLOAT_VALUE): Define this.
* expr.c (expand_call): Make valreg 0 if passing structure address.
Sat Nov 4 23:27:02 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* caller-save.c (emit_mult_save, emit_mult_restore):
Test regs for suitability as address before using as temps.
* cccp.c (make_definition, do_define): Better error checks for name.
Fri Nov 3 01:05:04 1989 Torbj|rn Granlund (tege at echnaton)
* pyr.md (tstdi): New pattern. Use 64-bit shift with count zero.
* pyr-tm.h: -mretd pops args with the retd insn.
* pyr.md (peep-holes for loop optimizations): Use the R output
format in PRINT_OPERAND, don't use output_branch.
* out-pyr.c: No need for functions output_branch, output_inv_branch.
* tm-pyr.h (ASM_OUTPUT_ALIGN): Don't truncate alignment to two.
Wed Nov 1 00:38:27 1989 Torbj|rn Granlund (tege at echnaton.sics.se)
* out-pyr.c (output_inv_branch): When reversing test operands, ne
remains ne, and eq eq eq.
* pyr.md: Cleanup output code for compare patterns.
* pyr.md (return): Adjust frame pointer if
current_function_pretend_args_size != 0.
* pyr.md (extendsidi2): Use general_operand for the input operand.
* pyr.md, out-pyr.c: Output shift insns with output_shift.
* tm-pyr.h, out-pyr.c: Make NOTICE_UPDATE_CC understand how
condition codes are really set. Define flag CC_VALID_FOR_UNSIGNED
with to make it possible not to reset cc after each compare or
test.
* pyr.md: Don't use CC_STATUS_INIT for most patterns.
* out-pyr.c (already_sign_extended): Cleanup, correct, optimize.
* out-pyr.c: rename radr_diff to constant_diff.
* out-pyr.c (movdi_possible): Don't combine moves from memory to
memory, because of possible address aliasing. Don't combine moves
with register destination if the source operands are depending on
the destination of the first move, as in
movw (pr3),pr3
movw 4(pr3),pr4.
* out-pyr.c (consecutive_operands): Handle SUBREG in addition to REG.
* out-pyr.c (output_move_double): movl of immediate *sign* extends.
Tue Oct 31 22:51:39 1989 Torbj|rn Granlund (tege at echnaton.sics.se)
* pyr.md (cmpsi): Don't expand this. It's just slower.
* out-pyr.c (extend_and_branch): Handle only QImode and HImode.
Flush code specific for SImode.
* out-pyr.c (extend_and_branch): To make zero extensions to HImode
of constants not crash:
* out-pyr.c (ensure_extended): Call extend_const if it's a
CONST_INT. Don't call extend_const from extend_and_branch.
* pyr.md, out-pyr.md: Use global variable test_mode to determine the
mode of tests and compares. Set in define_expands for tests and
compares. Used in extend_and_branch.
* out-pyr.c: Pass mode between extend_and_branch and ensure_extended.
* out-pyr.c (extend_and_branch): Accept SUBREG whereever REG is
accepted.
* out-pyr.c (weird_memory_memory): Accept SUBREG whereever REG is
accepted.
Thu Nov 2 13:02:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* gnulib2.c (lshrdi2, and other shifts): Take second arg as long long.
* out-i386.c (fp_pop_int): Use %L0 in fistp insn.
Wed Nov 1 00:05:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* stmt.c (init_function_start): Init max_parm_reg.
* varasm.c (compare_constant_1): For ADDR_EXPR, compare symbol name.
(record_constant_1): Likewise.
* out-sparc.c (output_mul_by_constant): Constant zero is legitimate.
* caller-save.c (emit_mult_restore, emit_mult_save):
Handle stack addresses which are invalid.
* cse.c (use_related_value): Don't abort if offset is 0.
Tue Oct 31 15:08:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* config.gcc (pyramid): Set $machine to pyr.
* Makefile: Change temp file names from tmp-insn-* to tmp-*.
* expr.c (expand_call): OK_DEFER_POP for is_const was once too many.
Sun Oct 29 00:53:46 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-parse.y (yylex): Prevent warning for numbers that underflow.
* stmt.c (assign_parms): Convert stack addresses to valid addresses.
(validize_mem): New subroutine.
* stmt.c (check_for_full_enumeration_handling): Accept enum type
as argument (since was finding it incorrectly).
Delete special case for constant index.
(expand_end_case): Pass enum type; check for constant index.
* cexp.y (initialize_random_junk): Test DOLLARS_IN_IDENTIFIERS
for nonzeroness.
Fri Oct 27 16:25:19 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-next.h (__inline): define as macro for old 1.34 Next uses.
Wed Oct 25 17:59:33 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* stmt.c: Include recog.h.
Tue Oct 24 19:23:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* combine.c (try_combine): Don't move a volatile asm.
Mon Oct 23 01:45:34 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* combine.c (try_combine): Don't install a subreg relating two modes
that aren't tieable.
* gnulib2.c (__fixdfdi): Declare __fixunsdfdi.
* combine.c: Make uid_cuid an int *.
(combine_instructions): Allocate as such.
* loop.c: Make uid_luid an int *.
(loop_optimize): Allocate as such.
Sun Oct 22 16:34:28 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* stmt.c (fixup_var_refs_1): New insn before a CALL goes before
the preceding USEs.
Sat Oct 21 00:51:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* out-pyr.c (extend_and_branch): Allow SUBREG like REG.
* pyr.md (mem-reg and reg-mem HI, QI patterns):
Don't match unless one arg is MEM.
* out-sparc.c (output_fp_move_double): Use ldd only when safe,
on same conditions used for std.
* Makefile (gnulib): Fix comments for editing for hpux.
Fri Oct 20 00:27:00 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* out-i386.c (singlemove_string): Handle ordinary constants as input.
* reload1.c (choose_reload_regs): Arg of HARD_REGNO_MODE_OK
was the pseudo; should be the reload reg.
* tm-decstatn.h (CPP_PREDEFINES): Add bsd4_2, ultrix, MIPSEL,
host_mips, R3000, LANGUAGE_C, SYSTYPE_BSD.
* tm-mips.h (CPP_PREDEFINES): Add host_mips, R3000, MIPSEB, LANGUAGE_C.
(CPP_SPEC): Remove those from here.
Define __SYSTYPE_*__ always. Define SYSTYPE_* only if not -ansi.
No CPP_SPEC needed for decstation.
Correct typos in option tests.
Thu Oct 19 18:16:40 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-m68k.h, tm-alliant.h (PRINT_OPERAND):
Don't print :l for address if :w was already printed.
Wed Oct 18 13:03:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-mips.h (FUNCTION_PROLOGUE): Get rid of __0__gcc macro.
Store that value in frame_stack_difference.
(FUNCTION_EPILOGUE): Get rid of __0__gcc macro.
(FIX_FRAME_POINTER_ADDRESS): Use frame_stack_difference.
* out-mips.c (frame_stack_difference): Define here.
* gcc.c (compilers): Define __GNUG__ if g++.
Tue Oct 17 01:17:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-i860.h (HAVE_PRE_INCREMENT): Undefine this.
* mips.md (movsf): New alternatives for r registers.
* tm-mips.h (FUNCTION_PROLOGUE): Handle big stack frames.
* out-mips.c (function_arg): Handle mode distinction for floating args.
* pyr.md (mtstsw pattern): Accept general_operand.
* i860.md (movsf): New alternatives: allow loading r from F.
Prefer f-reg as reload when moving m from F.
* tm-i860.h (PRINT_OPERAND): Handle CONST_DOUBLE if SFmode.
Sun Oct 15 19:45:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* i860.md (movhi, movqi): Support moves to/from fp regs.
* sparc.md (cse'd multiply): New pattern for mult. by -1.
* out-i860.c (load_opcode, store_opcode): Handle DImode and fp reg.
* expr.c (emit_library_call, expand_call): Make a SEQUENCE for
any needed USE insns and pass them to emit_call_1.
(emit_call_1): Place the passed SEQUENCE immediately before the
generated CALL_INSN even if gen_call made more than one insn.
Fri Oct 13 00:12:46 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* recog.c (constrain_operands): Add case for `&'.
* expmed.c (extract_bit_field): With structure reg fetched from mem,
don't put in subreg if mode already correct.
(store_bit_field): Typo: had extzv, wanted insv.
* stmt.c (expand_function_start): Call init_recog.
Thu Oct 12 01:48:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* cccp.c (macarg1): Count newlines even after backslash.
* c-decl.c (pushdecl): Don't warn for explicit extern
followed by static. That case is useful for incomplete arrays.
* tm-sparc.h (SELECT_RTX_SECTION): Test was backwards.
Wed Oct 11 00:35:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-seq386.h (DBX_DEBUGGING_INFO): Override this.
(HARD_REGNO_MODE_OK): Override this.
Mon Oct 9 01:09:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* i860.md (movdi): accept F source in 2nd alternative.
Accept G source in 3rd.
(adddi3, subdi3): Typo in opcode of output.
Sun Oct 8 01:38:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-mips.h (ASM_SPEC): Pass -nocpp to as.
* c-decl.c (grokdeclarator): Ignore variant differences
when preserving typedef types from being altered.
Sat Oct 7 00:46:18 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* xm-mips.h: Use __builtin_alloca.
Fri Oct 6 00:30:42 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* reload.c (find_equiv_reg): Do let xregno be a pseudo reg,
but don't call HARD_REGNO_NREGS in that case.
Thu Oct 5 00:30:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* reload.c (find_equiv_reg): Don't let xregno be a non-hard reg.
Don't do OVERLAPPING_REGNO_P on a pseudo reg number.
* i386.md (trunchiqi2, etc.): Output %1 with size of destination.
* out-i386.c (PRINT_REG): Support 'b' as CODE.
* combine.c (try_distrib): Make sure we don't move a reg use
across a store into that reg.
* reload1.c (order_regs_for_reload): Rate fixed regs at LARGE+2,
and explicitly used regs at LARGE+1.
* stor-layout.c (build_int): When memoizing, make permanent nodes.
Wed Oct 4 19:40:37 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* xm-i860.h: Missing file added.
Mon Oct 2 16:26:33 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* reload1.c (emit_reload_insns): Reject any OLDEQUIV that is
in use in any other reload of this insn.
* expr.c (expand_call): Don't put on notes for const functions
if there aren't real insns to hold them.
Sun Oct 1 19:50:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* integrate.c (expand_inline_function): Handle PARALLEL in CALL_INSNs
when setting follows_call.
* i860.md (pfeq, pfgt and pfle patterns): Add f0 as 3rd arg.
* integrate.c (save_for_inline): Don't delete NOTE_INSN_FUNCTION_END.
Fri Sep 29 08:56:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-next.h (LINK_SPEC): Typo for -Z option.
Thu Sep 28 12:57:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* reload.c (decompose): Handle case of pseudo with no hard reg.
Wed Sep 27 01:20:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* explow.c (round_push): Fix typo: return fast if ALIGN is 1.
* varasm.c (in_text_section): New function.
* tm-3b1.h (ASM_OUTPUT_SKIP): Use that.
Tue Sep 26 02:40:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-typeck.c (commontype): If one arg is error_mark_node, return other.
Sun Sep 24 00:21:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-decl.c (poplevel): When popping a local extern decl,
save the TREE_USED bit in the identifier.
* toplev.c (compile_file): Check that, printing "not used" warnings.
* tree.c (make_node): Always put PARM_DECL in saveable_obstack.
* Version 1.36 released.
* genextract.c (main): Pass `insn' as arg to `fatal_insn_not_found'.
* tahoe.md (casel patterns): Use %@ for operand of .align.
* tm-tahoe.h (PRINT_OPERAND): %@ prints `1'.
* tm-harris.h (PRINT_OPERAND): Redefine it; %@ prints `2'.
* config.gcc (decstation): New entry.
* tm-harris.h: New file, using tm-tahoe.h.
* tm-decstatn.h, tm-mips-bsd.h, tm-mips-sysv.h: New files.
Sat Sep 23 00:28:14 1989 Alain Lichnewsky (lich at glenlivet)
* added -Zxxx flag in tm-mips.h. (-Z stands for systype)
used as -ZSYSV or -ZBSD43 on RISC_OS. I suppose
that at somepoint -ZPOSIX might be required for Ultrix.
* changed command issued to loader to set -systype and to get
crt1 crtn instead of crt0.
* changed predefines for cpp to agree with RISC-OS
* tm-mips.h checks for machine type ( defined(ultrix) == DECSTATION)
so that user does not have to go in and change tm-mips.h anymore
* cpp defines mips host_mips unix and SYSTYPE_SYSV
or SYSTYPE_BSD43.
Fri Sep 22 00:31:29 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* pyr.md (andsi3): Flush spurious paren.
* Makefile (hard-params): Don't use LIBS or LIBDEPS.
* rtl.c (init_rtl):
Use malloc to allocate the string for format of CONST_DOUBLE.
Don't fail to store in rtx_format.
Thu Sep 21 00:33:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* print-tree.c (dump): Move decl of P in REAL_CST case.
* fold-const.c (fold): For ABS_EXPR, handle REAL_IS_NOT_DOUBLE.
* c-convert.c (convert_to_real): Use REAL_VALUE_ATOF to make 0.
* mips.md (movdi): Handle constant with or without WORDS_BIG_ENDIAN.
For alternative 2, output just 2 store insns, not 3.
* dbxout.c (dbxout_symbol): Optionally go to .data for
a static file-scope variable.
* tm-vax.h: Define DBX_STATIC_STAB_DATA_SECTION to request this.
* varasm.c (output_constant, force_const_mem):
ASM_OUTPUT_DOUBLE_INT now takes rtx as argument.
* gvarargs.h [__NeXT__]: Undefine macros defined by stdardg.h.
Define _VARARGS_H.
* stddef.h (size_t): Don't define it if _SIZE_T macro is defined.
(NULL): Undef any previous defn.
* cexp.y (NULL): Don't define if already defined.
* emit-rtl.c (force_next_line_note): New function.
* stmt.c (expand_function_start): Call that just before returning.
Wed Sep 20 01:22:16 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-parse.y (asm_clobbers):
Allow string concatenation: call combine_strings.
Mon Sep 18 00:04:06 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* expr.c (expand_call): If calling const function, don't defer
pops for this call.
* c-parse.y (yylex): When float constant ends in `f',
actually truncate to a single-float.
Sun Sep 17 01:36:43 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* gcc.c (SWITCH_TAKES_ARG): -A takes an arg.
(link_spec): Inhibit start files when -A.
* convex.md (call, call_value): Supply dummy arg to RETURN_POPS_ARGS.
* gnulib2.c (__fixunsdfdi): After removing top half, A can be neg.
(__cmpdi2, __ucmpdi2): Was misusing macros HIGH and LOW--
use .s.high and .s.low to extract words from long_long.
* Makefile (gnulib2): Run `./gcc'.
* Makefile (float.h): Use `make', not `$(MAKE)'.
(hard-params.o): Use `$(srcdir)' in deps as in commands.
* out-tahoe.c (output_move_double): Handle constant operand 1.
Sat Sep 16 01:15:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* reload1.c (emit_reload_insns): Put death note for input reload reg
even if reload was inherited.
* out-i860.c (output_block_move): Typo loading size of block.
* m68k.md (dbra patterns): Do CC_STATUS_INIT.
* cse.c (fold_rtx): Check GET_MODE_CLASS before floating negate.
Fri Sep 15 00:39:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* combine.c (subst): Don't combine (subreg (mem))
if subreg's mode is wider than mem's mode.
Thu Sep 14 04:33:51 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* Makefile (clean): Delete temp files used in making gnulib.
* tm-next.h (LINK_SPEC): Pass -Z and -seglinkedit options.
Tue Sep 12 01:06:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* stor-layout.c (layout_type): Ignore MAX_FIXED_MODE_SIZE for ints.
* mips.md (cmpsi + bleu peephole): Should output unsigned insn.
* expmed.c (store_bit_field, extract_bit_field): If loading mem
into reg for bit field insn, don't use a larger mode than insn wants.
* Makefile (stamp-gnulib2): Depend on gcc, cc1, cpp to avoid
wrong order of making when parallel.
* Makefile (float.h): Do use $(MAKE) to run recursive make.
Mon Sep 11 00:49:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* cccp.c (main): Test for missing arg after -o, etc.
* tm-next.h: Nearly completely new.
* gcc.c (SWITCH_TAKES_ARG, WORD_SWITCH_TAKES_ARG): Move after config.h.
* cccp.c: Cast some args to strcpy and strcat.
* genoutput.c (error): Declare arg S.
* tm-pyr.h, pyr.md, out-pyr.c, xm-pyr.h: New files.
* config.gcc: New item for pyr.
* gvarargs.h: If __pyr__, use va-pyr.h.
Sun Sep 10 00:48:43 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* reload1.c (inc_for_reload): Really return the first of the insns.
* stor-layout.c (build_int): Memoize size nodes for sizes <= 32.
* loop.c (check_dbra_loop): Don't reverse a biv that is used
in between its update and the loop endtest insn.
Sat Sep 9 02:10:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* stor-layout.c (genop): Don't use `combine' for nonexplicit constants.
Handle some identity elements, etc., directly.
(layout_basetypes): Function deleted.
(layout_record): Ignore any TYPE_DECLs in the fieldlist.
Don't do PCC_BUTFIELD_TYPE_MATTERS hack on field with ERROR_MARK type.
(layout_union): Delete error check for base types.
Ignore any TYPE_DECLs in the fieldlist.
(layout_type): Copy layout info directly into all variants of type.
Delete unused local `x'.
* mips.md (movdi): Handle constant source operand.
(movsi): Some output code moved to output_load_immediate.
* out-mips.c (output_load_immediate): New function.
* config.gcc (iris): Use tm-iris.h and xm-iris.h.
* integrate.c (copy_for_inline): Copy all nonconstant MEM addresses.
* tm-3b1.h (ASM_OUTPUT_SPACE): New override defn, to output explicit
bytes of 0 if in text segment.
Fri Sep 8 19:15:08 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* combine.c (try_combine): Don't do i3dest stuff if i3 isn't a SET.
Thu Sep 7 00:16:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* integrate.c (function_cannot_inline_p): Fn is "not even close"
only if > 3 * max_insns.
* toplev.c (fatal_insn_not_found): New fn.
* genextract.c (main): Make insn_extract call that fn.
* integrate.c (expand_inline_function): Don't abort about bad offset
in a parm whose type is error_mark_node.
Make another syntax level to hold parm destructors.
* tm-mips.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE):
Increment push_loc after, not before, each reg save or restore.
When storing reg 9 or 29, use offset tsize-4.
Make tsize larger by 4 initially.
(STARTING_FRAME_OFFSET): -8, not -4.
* gcc.c (choose_temp_base): Make use of TMPDIR and P_tmpdir
if they exist.
* toplev.c, gcc.c, cccp.c, gen*.c (fancy_abort):
New function which can be used to replace `abort'.
* toplev.c (main): Save argv, argc in save_argv, save_argc.
* jump.c (delete_insn): Always advance NEXT across deleted insns,
in case not optimizing. Fixes setting current_function_returns_null.
* symout.c: Include stddef.h with <...>.
Wed Sep 6 00:39:35 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* gcc.c (find_exec_file): Was using `argbuf[0]' where wanted `prog'.
* combine.c (combine_instructions): Dont call record_dead_and_set_regs
if insn has become a NOTE.
* reload.c (combine_reloads): Update reload_when_needed.
* jump.c (delete_insn): If delete label on ADDR_VEC, delete table too.
(jump_optimize): If ADDR_DIFF_VEC label has 1 ref, delete it and table.
* gunlib2.c (__fixunsdfdi, __floatdfdi): Make the long long,
and/or its two halves, unsigned.
* reload1.c (reload): When setting double_reg_address_ok,
require it to be offsettable.
* out-sparc.c (output_fp_move_double): Now safe to use std
for all reg+reg addresses.
* vax.md: Add another simplified-casesi pattern for operand 0 constant.
* cse.c (fold_rtx): Don't truncate VAL at end if WIDTH is 0.
Don't alter WIDTH for that purpose based on the operands.
* stmt.c (warn_if_unused_value): && or || is ok if 2nd op has effect.
* c-parse.y (ALIGNOF unary_expr): Find a larger value if possible.
* reload.c (combine_reloads): Don't combine an output address reload.
(find_reloads): Call combine_reloads after setting reload_when_needed.
(find_reloads_address): Update OPERAND if copy the operand.
* cccp.c (macroexpand): Missing arg no error in 1-arg macro if -trad.
Tue Sep 5 14:12:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* reload.c (find_dummy_reload): Don't use the output reg if it is
a fixed reg which can overlap with other regs.
* cse.c (exp_equiv_p): Two vectors must have same length.
* tree.def (WITH_CLEANUP_EXPR): Print-name string was wrong.
* optabs.c (expand_fix): Undo previous change (unsigned conversion).
It doesn't work.
* gcc.c: Pass -i option to cpp. It takes an arg.
* cccp.c (cplusplus_include_defaults) [VMS]: Typo in array indices.
* Makefile (gnulib): Create it in tmpgnulib, then rename at the end.
* i860.md (movdi from constant pattern): Fix `st' opcode typos.
* Makefile (hard-params*): Use CCLIBFLAGS, not CFLAGS.
Fri Sep 1 03:43:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-i386gas.h (ASM_OUTPUT_ALIGN): .align arg isn't a log, in gas.
(ASM_OUTPUT_ALIGN_CODE): Align labels, etc. to 4-byte boundary.
* integrate.c (save_for_inline): Delete NOTE_INSN_DELETED notes.
* Makefile (clean): Delete dbr and jump2 dumps.
* Makefile (gnulib, gnulib2): Compile in main dir, not libtemp subdir.
This avoids trouble with -I options, etc.
Thu Aug 31 15:07:19 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* reload1.c (emit_reload_insns):
Be specific moving REG_DEAD notes to an output reload.
Sometimes move them to output-operand-address reloads.
* out-sparc.c (output_fp_move_double): Very cautious about std.
Use it only for something visibly aligned, or for an array element.
* cccp.c (main) [VMS]: Remove dirs and extension from PROGNAME.
(pfatal_with_name) [VMS]: Return VMS system call error code as status.
(cplusplus_include_defaults) [VMS]: Add GNU_GXX_INCLUDE.
* xm-vms.h (FATAL_EXIT_CODE): Now (44 | 0x10000000).
* expr.c (do_store_flag): Allow more values of STORE_FLAG_VALUE.
* gnulib2.c (__fixunsdfdi): Explicitly cast doubles to `long int'
to avoid infinite recursion.
Wed Aug 30 13:28:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* loop.c (skip_consec_insns): Skip NOTEs.
* loop.c (general_induction_var): If G or V is a nonreplaceable giv,
give up. If G is allocated here, consider it replaceable.
* stupid.c: Make uid_suid, reg_where_born and reg_where_dead
vectors of ints, not short.
Tue Aug 29 00:21:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-iris.h: Fix typo in formfeed char.
* out-i860.c (singlemove_string): Add missing `.l' to `st', `ld'.
* loop.c (general_induction_var): Don't set G from 2nd op. of MINUS,
since that would negate the result.
Mon Aug 28 00:16:36 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
* dbxout.c (dbxout_symbol): When we need a pointer type, don't
record it in TYPE_POINTER_TO, lest it not live as long as its target.
* tm-hp9k320.h (CPP_PREDEFINES): Delete __hp9000s300 and _HPUX_SOURCE.
* Makefile (gnulib): Deleted stamp-gnulib2 in wrong dir.
(hard-params.o): Copy it into current dir before compiling.
(STAGESTUFF): Include the stamp-*.[ch] files.
Sun Aug 27 13:59:39 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
* out-i860.c (output_size_for_block_move): Typo in CC_KNOW_HI_R31.
* integrate.c (expand_inline_function): Ignore insns to set value reg
if we don't want the value.
* varasm.c (make_function_rtl, make_decl_rtl): Use DECL_ASSEMBLER_NAME.
* Makefile (stamp-gnulib2): Don't explicitly delete old members,
just replace them.
* m68k.md, alliant.md (trunchiqi): Use movew if moving from memory
or from a const_int.
* integrate.c (expand_inline_function): Set first_parm_offset
later on, after computing the args, in case those args
contain inline function calls.
* alliant.md (movqi): Like recent change in m68k.md.
Sat Aug 26 00:26:03 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
* tm-hp9k320.h (CPP_PREDEFINES): Take out m68k and mc68000.
* tm-news.h (CPP_PREDEFINES): Add mc68000.
Fri Aug 25 15:37:35 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
* optabs.c (expand_fix): Can convert to unsigned int
by subtracting 2**(N-1), converting to signed, and adding 2**(N-1).
* reload.c (find_reloads_address): For out-of-range stack slot,
reload the displacement into a reg.
(find_reloads_toplev): For subreg of a reg with a reg_equiv_address,
turn the whole thing into a memref.
Thu Aug 24 14:07:03 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
* c-decl.c (grokdeclarator): If function is declared `extern inline',
set current_extern_inline.
(start_function): In that case, set TREE_EXTERN in function decl.
* toplev.c (rest_of_compilation): In that case, don't really compile.
(compile_file): Don't output such functions at the end either.
* c-typeck.c (build_function_call): Do set NAME if we have one.
* Prevent any variability in results of qsort.
* stupid.c (stupid_reg_compare): Compare by regno as last resort.
* global-alloc.c (allocno_compare): Same idea.
* local-alloc.c (qty_compare_1): Same idea.
* reload1.c (hard_reg_use_compare, reload_reg_class_lower): Same idea.
* cccp.c (macroexpand): If read one arg, but it's whitespace,
consider that 0 args for checking number of args.
Improve plurals in error messages.
* expr.h (inhibit_defer_pop): New name for current_args_size,
now declared here.
(NO_DEFER_POP, OK_DEFER_POP): Moved here.
* expr.c: Names related to current_args_size renamed.
(clear_current_args_size): Deleted.
* stmt.c (expand_function_start): Init inhibit_defer_pop here.
* stmt.c (expand_start_stmt_expr): Do NO_DEFER_POP.
(expand_end_stmt_expr): Do OK_DEFER_POP, and don't do deferred pops.
* Makefile (c-parse.tab.c): Pass -o option to Bison.
Wed Aug 23 23:14:06 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
* expmed.c (store_bit_field, extract_bit_field):
Use GET_MODE_WIDER_MODE to scan possible modes for bestmode.
* Makefile (stamp-gnulib2): Discard error messages from `ar d'.
Tue Aug 22 00:31:51 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
* final.c (output_source_line): In COFF, don't output `.ln 0'.
* Makefile (stamp-gnulib2): Depend on gnulib. For parallel make.
* stmt.c (uninitialized_vars_warning): Don't crash if DECL_RTL is 0.
* i386.md (truncdfsf2): Pay attention whether stack top is dead.
Mon Aug 21 22:02:40 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
* reload1.c (choose_reload_regs): Don't use regno uninitialized,
in the code that does find_equiv_reg.
Sun Aug 20 00:06:47 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
* m68k.md (movqi): Was outputting bad code for areg->mem and mem->areg.
* explow.c (memory_address): Handle a hard reg in wrong reg class.
* stmt.c (expand_function_end): Set REG_FUNCTION_VALUE_P in return
reg when returning address of structure value block.
* integrate.c (save_for_inline): Preserve integrated bit on insns.
Sat Aug 19 14:20:07 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
* combine.c (subst): Don't change (subreg:M (mem:N ...)) to
(mem:M ...) if address is mode-dependent.
* config.gcc: Copy and alter Makefile for any srcdir except `.'.
In that case, make a .gdbinit as well.
* sparc.md (andcbsi3, iorcbsi3, xorcbsi3): These are not commutative.
* vax.md (cmpv and cmpzv patterns): Use COMPARE, not MINUS.
Fri Aug 18 12:24:52 1989 Richard Stallman (rms at hobbes.ai.mit.edu)
* alliant.md (movqi): Change move to mov in assembler code.
* integrate.c (expand_inline_function):
Handle args passed in regs and copied to slots reached via arg ptr.
* out-sparc.c (output_delayed_branch):
Do alter_subreg on operands of delay insn.
* reload1.c (choose_reload_regs): Look for a reg to share
before one that we won't share.
* expr.h: Define OPTAB_MUST_WIDEN.
* optabs.c (expand_binop): Handle that case.
* expmed.c (expand_shift): Use that when widening lshift to ashift.
* optabs.c (emit_cmp_insn): Use CONST0_RTX, not individual vars.
* gnulib2.c (lsh*di3, ash*di3): Return right away if count is zero.
Otherwise tried to shift by 32.
Also replace constant 32 by something symbolic.
* final.c (output_source_line): Output line number in COFF
even if wrong file.
Thu Aug 17 15:16:34 1989 Richard Stallman (rms at hobbes.ai.mit.edu)
* Makefile (version.o): Make this a target; specify source file.
(obstack.o): Likewise.
* config.gcc (i860): New alternative.
* i860.md (movstrsi): Record the alignment as operand 3.
Renumber following (internal) operands.
* out-i860.c (output_block_move): Rewrite as in out-sparc.c.
(output_size_for_block_move): Likewise. And don't
subtract alignment from the size.
Wed Aug 16 13:27:12 1989 Richard Stallman (rms at hobbes.ai.mit.edu)
* loop.c (combine_movables): Don't combine zero-extend
registers that live outside the loop.
* integrate.c (expand_inline_function): Use copy_to_mode_reg
to set up this_struct_value_rtx, to handle sums right.
* Makefile: Use $(srcdir) in bison output files used as deps.
Supply some missing deps.
(*.info, doc): *.info files go in srcdir.
Tue Aug 15 00:11:12 1989 Richard Stallman (rms at hobbes.ai.mit.edu)
* i860.md, tm-i860.h, out-i860.c: New files.
* c-decl.c (duplicate_decls): Fix bug determining whether NEWDECL
is a definition or just a decl.
Combine code to preserve various things from old definition
through a declaration.
* config.gcc: Scan all args at beginning, setting variables.
Arg of form -srcdir=... sets srcdir explicitly.
srcdir now doesn't contain a slash, and is used with a slash.
* Makefile (install): Copy header files and gcc.1 from srcdir.
But copy float.h from current dir. (Remove that from USER_H.)
(various): Use new variable INCLUDES to get the -I options.
Add -I. at the beginning of these.
(gnulib, gnulib2): Likewise, use SUBDIR_INCLUDES.
Also, get source file from srcdir.
Also, depend on $(CONFIG_H).
(alloca.o): Get alloca.c from srcdir.
* reload1.c (emit_reload_insns): Bug in last change:
don't fail to set this_reload_insn.
* Makefile (Bison rules): Specify $(srcdir) for target and source.
(Explicit C rules): Specify $(srcdir)/ for source in commands.
Use sed to eliminate `./' in normal case.
(insn-*.c): Use $(srcdir) to run move-if-change.
* config.gcc: Check . and .. for the sources.
If in .., use that when making links.
Also, copy Makefile, alter srcdir in it, and add a VPATH.
* stmt.c (expand_end_case): When converting CONST_INT index
to an INTEGER_CST, sign-extend if signed type.
Mon Aug 14 13:51:08 1989 Richard Stallman (rms at hobbes.ai.mit.edu)
* c-decl.c (duplicate_decls): Warn for qualifier mismatch
only if pedantic; don't consider it a type mismatch.
Merge the qualifiers of the two decls if the types match.
* expmed.c (store_bit_field): For insv, memref displacement
always counts in bytes, regardless of unit fetched.
When checking predicate of op0, accept any mode.
* optabs.c (expand_float): One call to can_float_p had args backwards.
* loop.c (check_dbra_loop): Set the JUMP_LABEL of the new jump insn.
Increment label's use count rather than storing 2.
* Makefile: Instead of $<, which fails in certain makes,
use $@ and then substitute in the name with sed.
* out-sparc.c (output_scc_insn): Handle CC_REVERSED for ordered tests.
Use orcc insns to store the result and set cc's for it.
* sparc.md (scc combination patterns):
Use operands[0] as basis for recorded cc value.
* gnulib2.c (floatdidf, fixdfdi, fixunsdfdi): New functions.
* gnulib.c (floatdidf, fixdfdi, fixunsdfdi): Deleted.
(union longlong, union double_di): Deleted.
(HIGH, LOW): Deleted.
These were deleted because most did not handle full range of DI
and they didn't use the right calling convention for DI.
Sun Aug 13 13:06:45 1989 Richard Stallman (rms at hobbes.ai.mit.edu)
* c-typeck.c (comptypes): Qualifiers must match.
(Was already true for scalars.)
Also, array elt qualifiers must match.
* tm-apollo68.h (STRUCT_VALUE): Make it 0.
(This was done before and lost.)
* out-i386.c (function_epilogue): Use ret $4 to pop structure address.
(This was done before and lost.)
* out-i386.c (call_top_dead_p): Don't fail to check
the rtx code of the insns themselves.
(This was done before and lost.)
* out-sparc.c (output_block_move): If align is 8, make it 4.
* typeclass.h: New file.
* expr.c: Include it.
(expand_builtin): Use those codes in __builtin_classify_type.
* Makefile (all, lang-c): Reinstall gnulib2.
* Makefile (gnulib2): Don't give up if `ar d' fails.
* expr.c (emit_library_call): New 2nd arg NO_QUEUE.
All callers changed to pass it.
* optabs.c (expand_binop, expand_unop): Don't call emit_queue.
Instead, pass 1 for NO_QUEUE to emit_library_call.
Sat Aug 12 12:05:22 1989 Richard Stallman (rms at hobbes.ai.mit.edu)
* reload1.c (emit_reload_insns): Decision for where to put input
reload insn is now common to ordinary case and auto-increment.
Likewise, updating these positions afterward.
* stmt.c (assign_parms): Treat last named arg as nameless.
* expr.c (expand_call): Likewise.
* explow.c (copy_to_mode_reg): Use force_operand for PLUS or MULT.
(copy_addr_to_reg): Use copy_to_mode_reg.
* expmed.c (store_bit_field): Handle case where insv rejects memrefs.
* tm-convex.h (ASM_OUTPUT_ALIGN): Magic to handle the fact
that this is not called when LOG is 0.
Fri Aug 11 16:39:51 1989 Richard Stallman (rms at hobbes.ai.mit.edu)
* emit-rtl.c (get_lowpart): For multi-word, in error check,
test the unit size of the containing mode.
* cccp.c (macroexpand, dump_all_macros): Return void.
(macroexpand): Cast sprintf arg to char*.
(error, warning, error_with_line): Declare first arg char*.
Thu Aug 10 21:42:13 1989 Richard Stallman (rms at hobbes.ai.mit.edu)
* expr.c (expand_call):
Use force_operand to copy arithmetic to register.
* dbxout.c (dbxout_symbol): Go back to N_FUN for const variable.
* integrate.c (expand_inline_function): Use proper machine mode
for a structure value in memory at address passed by caller.
Wed Aug 9 15:21:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* config.gcc: Delete unnecessary variable assignments in case stmt.
(isi68-nfp): New alternative.
* combine.c (try_combine): Don't substitute for a register
which is being explicitly clobbered.
* This change was requested for C++.
* varasm.c (decode_reg_name, make_decl_rtl): Arg ASMSPEC now char *.
* toplev.c (rest_of_decl_compilation): Likewise.
* c-decl.c (finish_decl): Change call to rest_of_decl_compilation.
* tree.h (struct tree_decl): Pack machine_mode into 8 bits.
* explow.c (memory_address, copy_to_reg):
Use force_operand to copy arithmetic to register.
* tm-isi68-nfp.h: New file.
* tm-isi68.h: Allow overriding TARGET_DEFAULT, and let that
change CPP_SPEC and LINK_SPEC.
(ASM_FILE_START): No `.globl fltused' if soft-float.
Tue Aug 8 21:50:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* varasm.c (const_hash): For constructor, mask TREE_TYPE to HASHBITS
bits and take modulo, so we don't get negative numbers.
* varasm.c (record_constant_1, compare_constant_1):
Record and compare the width of an integer.
* varasm.c (assemble_function, assemble_variable, get_or_assign_label):
(force_const_mem): Don't call ASM_OUTPUT_ALIGN if boundary is 1.
* c-decl.c (duplicate_decls): Consider const and volatile as part of
type when checking for match and when installing new type into OLDDECL.
* expr.c (do_store_flag): Make sure target fits operand predicate.
Also, omit the AND insn when true-value is 1
and the mode we get is wider than the one we want.
* genrecog.c (main): Make insn-recog.c include real.h.
Mon Aug 7 16:58:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* genemit.c (main): Define `operands' as `emit_operands',
not `recog_operands'.
* reload1.c (emit_reload_insns): Don't copy back a dead output reg.
Sun Aug 6 13:56:53 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* sdbout.c (plain_type_1, sdbout_one_type): Use the main variant.
(sdbout_type_fields): No need to check TREE_ASM_WRITTEN here,
since sdbout_one_type does that.
* expr.c (do_store_flag): Ensure the CLOBBER doesn't clobber an input.
* fold-const.c (fold_convert): Attempt to avoid overflow
when converting real to integer. Use unsigned conversion for
low part; always convert as positive and then change sign;
subtract high part before converting low part.
Also, check for real values out of range for chosen int type;
warn and do not convert.
* tm-hp9k320.h (CPP_SPEC) [not HPUX_ASM]: Don't define mc68000 here.
(CPP_PREDEFINES): Remove mc68k, add m68k and mc68000.
[HPUX_ASM]: Define CPP_SPEC here as in the other case,
but add __HPUX_ASM__ to each alternative.
* tm-m68k.h (FUNCTION_EPILOGUE): Call new hook FUNCTION_EXTRA_EPILOGUE.
* tm-altos3068.h (FUNCTION_EXTRA_EPILOGUE): Define it.
* Makefile: Use $< wherever appropriate.
Also put definitions of customization vars before the comments
saying how to override them.
Sat Aug 5 14:15:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* i386.md (sne): Typo in opcode name.
* tree.h (struct tree_identifier): Delete redundant/unused error_locus.
Fri Aug 4 00:04:10 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* varasm.c (const_hash, compare_constant_1, record_constant_1):
Compare types only for record constructors, not for array constructors.
* dbxout.c (dbxout_parms): When outputing parm from home in local slot,
with address from the RTL, don't do big-endian correction on it.
* c-typeck.c (build_unary_op): Do default conversion for unary +.
* cccp.c (rescan): Accept comments between macro and its args.
* c-decl.c (lang_decode_option): -traditional implies writable strings.
* cccp.c (trigraph_pcp): Make warning msg more accurate.
* c-typeck.c (c_expand_asm_operands): Delete the default promotion
which was inserted mysteriously since 1.35.
* global-alloc.c (global_conflicts): Allocate regs_set only once.
Make it twice as big since clobbers are stored twice.
* sparc.md (block move patterns): Record and use alignment operand.
* out-sparc.c (output_block_move): Get alignment from there.
(output_size_for_block_move): Greatly simplified.
* tm-i386v.h (PCC_BITFIELD_TYPE_MATTERS): Define it.
* stor-layout.c (layout_record): Anonymous bitfields don't affect
overall structure alignment, in PCC_BITFIELD_TYPE_MATTERS case.
* loop.c (strength_reduce): Prevent hard reg from becoming biv or giv.
* combine.c (subst): Simplify (eq (neg ...) (const_int 0)).
Thu Aug 3 13:08:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* cse.c (fold_rtx): For (op var const) special cases, also check
for constant as first argument.
* c-decl.c (pushtag): For global_binding_level, make permanent nodes.
* expr.c (do_store_flag): Put the CLOBBER before the comparison.
* expr.c (emit_push_insn): Conditionalize recent changes
on no FIRST_PARM_CALLER_OFFSET, so they don't happen on sparc.
* out-sparc.c (gen_scc_insn):
Don't be confused by CLOBBER emitted by do_store_flag.
Skip past such insns looking for last_insn.
Don't alter last_insn; instead, patch it to a NOTE and emit new insn.
* varasm.c (const_hash, compare_constant_1, record_constant_1):
For a CONSTRUCTOR, hash/compare/record type as well as elts.
* cse.c (cse_insn): July 18 change was wrong.
Now, invalidate at the beginning any regs explicitly clobbered
so they will not be substituted for if they appear as inputs.
* sparc.md (movstrsi): Copy addresses to temp regs, then use them.
* loop.c (record_giv): When comparing life spans for setting
->forces, use luids consistently, not uids.
* sparc.md (ashlsi3, ashrsi3, lshrsi3): Truncate constants mod 32.
Wed Aug 2 17:50:30 1989 Richard Stallman (rms at sugar-bombs)
* mips.md (patterns to move a subreg): Deleted.
Sun Jul 30 19:23:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* gcc.c (process_command): Skip `-b' like `-B', in 2nd scan.
* xm-sunos4.h: Deleted.
* tm-sparc.h, tm-sun3.h: Define LINK_SPEC here instead.
* tm-sun4os3.h: Undef it here.
* tm-sun3os3.h, tm-sun3os3nf.h: New files to undef LINK_SPEC.
* config.gcc: Use those new files where needed.
* config.gcc: Delete sun3-fpa and sun3-os4-fpa.
* tm-sun3-fpa.h: Deleted.
* cccp.c (do_include): Mention even non-ex files for -M.
* out-mips.c (addr_compensate): Handle HImode.
* mips.md (Set HI from subreg of SI rule):
Allow operand in memory.
* mips.md (cmpqi, cmphi): Patterns deleted.
(cmpsi, cmpsf, cmpdf): Change predicates to register_operand.
* cexp.y (rule for ?:): Result is unsigned if either operand is.
* expr.c (emit_push_insn): If PARTIAL > 0, load the partial regs
at the end, in case the rest of the push does a function call.
* reload1.c (alter_frame_pointer_addresses):
After altering a PLUS, re-fetch CODE before scanning subexps.
* stmt.c (assign_parms): Don't copy the arg pointer value
if it is also the frame pointer. If we do copy it,
inhibit REG_EQUIV notes for parms copied into pseudo regs
* integrate.c (copy_for_inline, copy_rtx_and_substitute):
Set up filename and lineno fields of copy of ASM_OPERANDS.
Sat Jul 29 18:58:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* integrate.c (expand_inline_function): Handle struct-value-addr
passed in memory just like that passed in reg:
in either case, translate the pseudo-reg made in
expand_function_start.
(function_cannot_inline_p): Permit inlining in that case.
But reject it if using pcc-style return convention.
* stor-layout.c (layout_type): Consider STRICT_ALIGNMENT
for ARRAY_TYPE just as for RECORD_TYPE.
Wed Jul 26 12:54:59 1989 Richard M. Stallman (rms at mipos3)
* cse.c (fold_rtx): If WIDTH is zero for binary operator,
look at the modes of the original operands.
* cse.c (cse_insn): Set prev_insn_explicit_cc0, for (set (cc0) INT).
(predecide_loop_entry): Likewise.
(fold_rtx): Look at it, for (if_then_else (cc0) ...).
* expr.c (expand_builtin): Pass back return value from
__builtin_saveregs.
* stmt.c (assign_parms): Allow arg pointer reg not to be fixed.
If it is not, copy it to a pseudo reg and use that later on.
Tue Jul 25 15:42:04 1989 Richard M. Stallman (rms at mipos3)
* expr.c (expand_builtin): New builtin __builtin_classify_type.
* tree.h, c-decl.c: Additional support.
* flow.c (mark_used_regs): Treat arg pointer like stack pointer.
* expr.c (emit_library_call):
Pass (tree)0 as TYPE arg to FUNCTION_ARG, etc.
Mon Jul 24 11:18:10 1989 Richard M. Stallman (rms at mipos3)
* loop.c (regs_match_p): Fix braino.
* integrate.c (copy_for_inline, copy_rtx_and_substitute):
Make ASM_OPERANDS constraint vector be shared like operand vector.
* xm-iris.h: New file.
* Makefile (stage4): New target.
* gnulib2.c (badd, bsub, bmul, bdiv): If want long value from
arithmetic, widen the operands first.
(__div_internal aka bdiv): Rename to __bdiv.
* sparc.md (seq combination patterns): Fully initialize cc_status.
* expr.c (emit_push_insn): Like July 19 change, for BLKmode.
* stmt.c (expand_function_end): Stack-restore for alloca
is now done after the return_label.
* loop.c (scan_loop): Set MAYBE_NEVER for conditional jump to loopbeg.
* integrate.c (copy_rtx_and_substitute): Allow mapping of hard regs.
(expand_inline_function): Always create parm_map.
Handle structure value that way if nec. even if no parms.
Otherwise, find the pseudo used in the function to hold the
structure address, and map it to a new pseudo.
* expr.c (expand_call):
Use mark_addressable to make FNDECL addressable.
* c-typeck.c (mark_addressable): No longer static.
* cse.c (cse_insn): Modify last change: don't canon_reg
for hard regs inside clobbers.
* expr.c (expand_assignment): ALIGN arg to store_field comes from
the structure, not from the value stored.
Fri Jul 21 16:23:45 1989 Richard M. Stallman (rms at mipos3)
* stmt.c (warn_if_unused_value): Don't warn for a cast
around a MODIFY_EXPR.
* tm-hp9k320.h (PCC_STATIC_STRUCT_RETURN): Undefine it.
(CPP_PREDEFINES): Add some.
* combine.c (simplify_and_const_int):
Simplify (and (ashiftrt (zero_extend FOO) N) M).
* optabs.c (expand_binop): When widening,
for some operations we need not actually extend.
Thu Jul 20 16:16:35 1989 Richard M. Stallman (rms at mipos3)
* Makefile (insn-emit.o): Depend on insn-codes.h.
* stmt.c (check_for_full_enumeration_handling):
Handle all cases for TYPE_NAME of enum type.
Wed Jul 19 17:00:39 1989 Richard M. Stallman (rms at mipos3)
* fold-const.c (fold_convert): Don't fail to force_fit_type.
* expr.c (emit_push_insn): When pushing only part of scalar on stack,
adjust stack offset not to count the words not pushed.
* stmt.c (expand_function_end): Always put return structure address
in return register.
* c-typeck.c (process_init_constructor): Assume 0 for nameless field.
* recog.c (general_operand, memory_operand):
Check validity of mem address using the mode of the MEM.
* fixincludes: When calling egrep, use redirect, not -s.
Tue Jul 18 11:18:55 1989 Richard M. Stallman (rms at mipos3)
* Makefile (bootstrap*): Pass value of libdir down.
* cse.c (cse_insn): Do canon_reg on any CLOBBERs and USEs.
* cse.c (cse_insn): Don't use no_labels_between_p to check
for jump to following label; find following label and compare.
* combine.c (try_combine): Don't substitute into subreg(x)=y
if modes of x and y are not tieable.
* out-i386.c (call_top_dead_p): Don't fail to check
the rtx code of the insns themselves.
* i386.md (tstsf, tstdf): Don't discard TOS if not dead.
* stupid.c: Don't use regs with PRESERVE_DEATH_INFO_REGNO_P
for pseudos which live across jumps or labels.
(stupid_life_analysis): Update last_jump_suid, last_label_suid.
(stupid_mark_refs): Use those to set reg_crosses_blocks.
(stupid_find_reg): Check that data, passed from stupid_life_analysis.
* toplev.c (main): Avoid using caddr_t.
* mips.md (inverted bgeu peephole): Typo in opcode.
Mon Jul 17 12:29:45 1989 Richard M. Stallman (rms at mipos3)
* i386.md (mulb patterns): Turned off due to assembler bug.
* rtl.c (read_name): Use 0, not NULL, for character.
* alliant.md (movqi): Typos in mov opcodes.
* tm-sparc.h, tm-spur.h (CONST_DOUBLE_OK_FOR_LETTER_P):
Use CONST_DOUBLE_LOW, etc.
* stmt.c (expand_function_end): Check value of EXIT_IGNORE_STACK,
not just whether defined.
* i386.md (seq, etc.): New patterns.
* expr.c (do_store_flags): If result is wrong mode,
ensure rest of bits are cleared.
Before storing low part of TARGET, emit a CLOBBER for it.
* i386.md (load address): Use an immediate add if possible.
* i386.md (ashlsi3): Don't generate leal; shift is faster.
* Now struct_value_rtx is 0 to treat it as a parm.
* expr.c (expand_call): Implement that.
* integrate.c (expand_inline_function): Don't freak out.
* tm-apollo68.h (STRUCT_VALUE): Make it 0.
* On 386, called function must pop the structure value address.
* tm-i386.h (STRUCT_VALUE): Don't change this.
Address is now pushed but not counted as a parm.
* out-i386.c (function_epilogue): Use ret $4 to pop that address.
* output.h: Declare the current_function_... variables.
* final.c: Include output.h.
* varasm.c (make_decl_rtl): Insert missing `else', validating reg decl.
Fri Jul 14 14:12:17 1989 Richard M. Stallman (rms at mipos3)
* out-sparc.c, out-spur.c (output_move_double):
Fixed typo, addreg0 => addreg1.
* c-decl.c (lang_decode_option): Handle -fshort-enums.
(finish_enum): In that case, give enum minimum number of bytes.
* toplev.c (main): Default flag_short_enums.
* toplev.c, flags.h (flag_short_enums, flag_signed_char):
Define those flags here, not in c-decl.c and c-tree.h.
* i386.md (mulqi3, umulqi3): New patterns.
* c-convert.c (convert_to_integer): Tighter restrictions on
distributing truncation through max, min, and multiplication.
If operands were extended from unsigned, make the operation
unsigned.
* cccp.c (main): Fix bug where #include <...>, when -I- was used,
failed to search standard dirs and/or searched some dirs
intended only for #include "...".
* tm-mips.h (FUNCTION_PROLOGUE,FUNCTION_EPILOGUE):
Increment push_loc after store or load, not before.
Thu Jul 13 11:24:30 1989 Richard M. Stallman (rms at mipos3)
* emit-rtl.c (add_insn_after): Don't update last_insn
if insn is in a sequence. Instead, update end of sequence.
* stmt.c (fixup_var_refs): Update end of stacked sequence.
* stmt.c (expand_function_start): Set result rtl before assign_parms.
* optabs.c (emit_unop_insn): Set PREV_INSN after preliminaries.
* stmt.c (warn_if_unused_value): Do CONVERT_EXPR like NOP_EXPR.
* stmt.c (expand_function_start): Make sure parm_birth_insn
is a NOTE.
* Makefile (clean): Delete tmp-insn-*.
Wed Jul 12 14:24:12 1989 Richard M. Stallman (rms at mipos3)
* i386.md (mulqi3): Restrict operand 2 to `q' reg.
* reload1.c (choose_reload_regs): Check HARD_REGNO_MODE_OK
for regs to be inherited.
Also check HARD_REGNO_MODE_OK at end for modes of both
reload_in and reload_out as well as reload_mode.
* Makefile (maketest): Update for config subdir.
Tue Jul 11 16:29:57 1989 Richard M. Stallman (rms at mipos3)
* integrate.c (copy_decl_tree): Copy TREE_USED of each LET_STMT.
* make-cc1.com: Changes by Angel Li.
Define variables CC, CFLAGS, LDFLAGS, LIBS.
Use LIBR library, not LIB. Specify a /INC in CFLAGS.
Use MCR to run the gen* files. Add some comments.
* make-cccp.com: Similar.
* config-gcc.com: New file.
* stmt.c (assign_parms): Compute parm alignment from passed type.
* c-typeck.c (actualparameterlist): Instead of truncating
and then promoting for PROMOTE_PROTOTYPES, go straight to int.
* c-parse.y (setspecs): Save old current_declspecs on a stack.
(decl, component_decl): Restore from that stack.
Wed Jul 5 15:01:00 1989 Richard Stallman (tiemann at yahi)
* tm-aix386.h, xm-aix386.h: New files.
* loop.c (check_dbra_loop): Handle either test or compare
for insn two before loop end; detect and reject anything else.
* expr.c (expand_call, expand_builtin): If alloca is done,
set current_function_calls_alloca.
* stmt.c (expand_function_end): If so, generate code to save and
restore the stack pointer, if not EXIT_IGNORE_STACK.
* ns32k.md (movsi): Fixes for moving from fp or sp.
* tm-mips.h (ASM_OUTPUT_ASCII): Start new .ascii every 256 chars.
Tue Jul 4 11:01:00 1989 Richard Stallman (tiemann at yahi)
* reload1.c (choose_reload_targets): Don't depend on
reload_spill_index when cancelling invalid inheritance.
Also, abort if trying to preserve death info
on a spill reg used in operand addressing.
* fold-const.c (fold): Don't fold "foo"[n] here.
* expr.c (expand_expr): Do it here.
Handle wide strings correctly.
* i386.md (movsf,movdf): Disallow mem-mem moves.
Enable mem-to-reg moves.
* c-decl.c (finish_{struct,enum}): Warn if inside parm decls.
(in_parm_level_p, declare_parm_level): Record when inside.
* c-parse.y (parmlist, parmlist_or_identifiers): Call
declare_parm_level.
* c-decl.c (parmlist_tags_warning): Revise warning message text.
* tm-hp9k320.h (ASM_SPEC): Pass -V switch to assembler.
* tm-sun386.h (ASM_START_FILE): Truncate filename to 14 chars.
* c-typeck.c (decl_constant_value): Use only literal values.
Sat Jul 1 17:29:54 1989 Richard Stallman (tiemann at yahi)
* integrate.c (copy_rtx_and_substitute): Don't make nested SUBREGs.
* stmt.c (expand_function_start): Set new global
current_function_returns_pointer.
* stmt.c (get_frame_size): Return the size, not the offset.
* integrate.c (expand_inline_function): When setting FP_DELTA,
compensate for this change.
* tm-alliant.h,tm-mips.h,tm-sparc.h,tm-tahoe.h
(FUNCTION_PROLOGUE,FUNCTION_EPILOGUE): Compensate.
* out-mips.c (function_arg): Return 0 for BLKmode.
* tm-mips.h (FUNCTION_INCOMING_ARG): Delete; no register windows.
* out-mips.c (function_inarg): Delete; no longer used.
* mips.md (addsi3): Use register_operand for operands 0,1.
(load address): New pattern, following movsi.
(fix_trunc*): Use trunc insn, not cvt.
(cmpfs + bgt peephole): Operands were backwards in template.
* gcc.c (main): Record in explicit_link_files which input files go
straight to linker. If linker is not run, complain about them.
(execute): Increment execution_count, to show we were called.
* gcc.c (validate_all_switches): Check ASM_SPEC, CC1_SPEC, etc.,
so we find all switches that could be valid.
* varasm.c (output_constructor): Position fields according to
DECL_OFFSET; don't try to compute alignment here.
* tm-sparc.h (PCC_BITFIELD_TYPE_MATTERS): Define this.
* reload1.c (emit_reload_insns): Fix stupid error in last change.
* c-decl.c (duplicate_decls): If redeclaring builtin, give error is
type mismatched; otherwise warn only if -W.
* jump.c (jump_back_p): Verify that PREV is not null.
Mon Jun 26 13:50:28 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* reload1.c (choose_reload_regs): If number of reloads needing
spill regs exceeds n_spills, don't inherit any reloads.
* sdbout.c (sdbout_record_type_name): Dumb error in last change.
* reload1.c (emit_reload_insns): Extend last change: don't use
equiv reg if reg is in use at same stage of insn, either.
Sun Jun 25 00:00:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* reload1.c (emit_reload_insns): Don't use an equivalent register
to reload from, if that register was used for reloading
earlier in this insn.
* sdbout.c (sdbout_record_type_name): Handle a TYPE_DECL as the
type name. Get rid of TYPE_TAG_NAME as separate macro.
* optabs.c (emit_cmp_insn): Args to memcmp are addresses, not blocks.
* reload1.c (choose_reload_regs): Typo, clearing reload_override_in.
* tm-i386.h: Add register classes SIREG and DIREG.
(enum reg_class, REG_CLASS_NAMES): Define class names.
(REGNO_REG_CLASS, REG_CLASS_CONTENTS): Define their contents.
(REG_CLASS_FROM_LETTER): Define letters `S' and `D'.
Sat Jun 24 00:17:16 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-decl.c (keep_next_level): New function.
(struct binding): New slot `keep' says make a LET_STMT for this level.
(pushlevel, poplevel): Implement that.
* c-parse.y (stmt exprs): Call keep_next_level.
* sdbout.c (plain_type_1): Handle REFERENCE_TYPE, METHOD_TYPE.
Correct for size less than 0.
(plain_type): Correct for size less than 0.
* global-alloc.c (mark_reg_set): For CLOBBERs, call mark_reg_clobber.
* reload1.c (order_regs_for_reload): Among regs explicitly used,
prefer those used less often.
* reload1.c (choose_reload_regs): If we find alternate place
to reload from, verify it after all reloads assigned.
New variable reload_override_in used for this.
* combine.c (record_dead_and_set_regs): Look inside SIGN_EXTEND and
STRICT_LOW_PART for place being set.
(subst): When using reg_last_set to find what a register contains,
verify the entire register was set.
* toplev.c (rest_of_decl_compilation): Report invalid register name.
Fri Jun 23 13:19:41 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-hp9k3bsd.h: New file.
* config.gcc: New target hp9k320-bsd.
* gcc.c (record_temp_file): Don't add a name twice to one queue.
* stmt.c (expand_expr_stmt): Call warn_if_unused_value.
(warn_if_unused_value): Code extracted from expand_expr_stmt.
Recurse to handle COMPOUND_EXPR. Don't warn about COND_EXPR.
* tm-encore.h (DBX_REGISTER_NUMBER): Override tm-ns32k.h;
return operand unchanged.
* reload1.c (emit_reload_insns): Don't use recog_memoized
on an asm.
* jump.c (delete_insn): Update last_insn.
* emit-rtl.c (set_last_insn): New function.
* reload1.c (reload): Put a note at end of insn chain.
* gcc.c: Put cpp output of .S file into a .s file.
Thu Jun 22 22:14:35 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* optabs.c (expand_binop, expand_unop): Emit queue before library call.
It is done within emit_library_call, and cse screws up if there is a
queued insn in the middle of a cse-able sequence.
Wed Jun 21 11:57:22 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-mips.h (CPP_PREDEFINES): Define -Dunix.
* reload.c (combine_reloads): Combined reload needed for entire insn.
* c-parse.y (yylex): Braino checking for out-of-range escape seq.
* stor-layout.c (layout_union): Handle PCC_BITFIELD_TYPE_MATTERS.
(layout_struct): Don't let a bitfield cross the storage unit
of its type, if PCC_BITFIELD_TYPE_MATTERS.
Tue Jun 20 00:03:48 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* varasm.c (get_or_assign_label): Let CONSTANT_ALIGNMENT specify
alignment of the constant.
CONSTANT_ALIGNMENT is a new optional macro.
* varasm.c (force_const_mem, get_or_assign_label):
Make buffer bigger.
* toplev.c (print_target_switch_defaults): New fn called for -version.
* toplev.c (compile_file): Detect error closing output file.
* stor-layout.c (fixup_unsigned_type): Don't shift by 32.
* stmt.c (emit_case_nodes): Pass UNSIGNEDP along to emit_cmp_insn.
* stmt.c (expand_end_case): If index is narrow and cannot be
directly compared, widen it just once.
* c-parse.y (yylex): Support multi-character constants.
Thorough rewrite of char constant parsing.
* c-decl.c (pushdecl): Replace local extern function decl with
previous global decl if latter is inline, or builtin, or has
more arg type info.
* hard-params.c (xmalloc): Define it, for alloca.c.
* tm-hp9k320.h (STANDARD_STARTFILE_PREFIX): Override -D in Makefile.
* expmed.c (store_fixed_bit_field): Avoid shift by 32.
* stmt.c (expand_function_start): Emit a NOTE_INSN_FUNCTION_BEG.
* final.c (final_scan_insn): For SDB output, do the
sdbout_begin_function at that note.
* reload1.c (choose_reload_regs): If a reload reg inherits
from a previous reload, verify safety after all reloads are assigned.
* c-decl.c (build_enumerator): Remove no-op casts.
* reload.c (find_reloads): If an earlyclobber operand matches
an input operand it is constrained to match, that's not a problem.
If an earlyclobber operand loses due to earlyclobber, its matching
input operand also loses.
* reload1.c (choose_reload_regs): Don't use result of find_equiv_reg
if that reg is used for reloading in an earlier part of the insn.
* cse.c (fold_rtx): If WIDTH is 0, don't try sign-extending ARG0, ARG1.
* Makefile (hard-params*): Use $(OLDCC).
* c-typeck.c (c_alignof): No warning for -pedantic.
* c-parse.y (readescape): Don't have both error and warning
on one hex escape.
* c-parse.y (yylex): Treat vertical tab as white space.
(skip_white_space): Likewise.
* c-parse.y (datadef): If pedantic, warn for stray semicolon.
* expr.c (expand_increment): Pass accurate unsignedp arg
to expand_binary_op.
Mon Jun 19 13:36:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* config.gcc (news, news-gas): Use xm-m68k.h.
* final.c (output_asm_label, output_addr_const): Make buf bigger.
* cexp.y (main): Handle EOF on input.
(lookup, warning): Provide as a dummy.
(is_idchar, is_idstart): Declare as unsigned char.
* cexp.y (parse_escape): Use TARGET_NEWLINE, etc., as values.
Support hex escapes. Warn if octal or hex escape doesn't fit in char.
* cexp.y (yylex): Sign-extend char constants if appropriate.
* genemit.c: Make insn-emit.c include insn-flags.h.
* gcc.c: Move record_temp_file past page which declares vflag.
* integrate.c (expand_inline_function): If copying an insn with
a REG_EQUIV note, make a similar note.
* Allow reload regs to be reused for parts of an insn.
* reload.c (find_reloads): Classify each reload for which part
of the insn it is needed in.
(find_reloads_address, etc.): Pass down the overall operand
that this is part of, to record it on address reloads.
(push_reload): Record that for each reload.
* reload1.c (reload): Compute maximum needs of any part of the insn.
(choose_reload_regs): Part of old choose_reload_targets.
Hairier criteria for inheriting reloads and for which ones are
available for the next insn to inherit.
(emit_reload_insns): The rest of old choose_reload_targets.
Emit reload insns in proper order according to where they are needed.
* Record `reload_reg_in_use' separately for each part of the insn.
(mark_reload_reg_in_use): New function.
(reload_reg_free_p, reload_reg_free_before_p): New functions.
(reload_reg_reaches_end_p): New function.
* expr.c (expand_expr): Emit queue in X+=(Y?Z:A) optimization.
* rtlanal.c (rtx_equal_p): Check vectors have same length.
Sun Jun 18 12:16:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* stmt.c (expand_expr_stmt): Maybe warn if top-level operator
makes an unused result.
* gcc.c (delete_temp_files, delete_failure_queue):
If -v, report failures in unlink.
* Makefile (includes): New target to run fixincludes.
(install): Swap arms of if-statement.
Sat Jun 17 12:41:53 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* stor-layout.c (layout_union): Arg to error_with_decl was missing.
* ns32k.md (movsf): Use CONST_DOUBLE_LOW to extract from CONST_DOUBLE.
* loop.c (consec_sets_giv): Change type of force, force2.
* combine.c (dump*): Declare arg as FILE*.
* Makefile (clean): Delete hard-params.
* flow.c (life_analysis): Use a special obstack for the temporary
regsets.
* m68k.md (clr pattern): On 68000, use moveq to clear data reg.
* gvarargs.h: File varargs.h renamed.
The old name conflicted with <varargs.h>, now that -I. is used.
* tree.c, expr.c, emit-rtl.c: Change #include commands.
* Makefile (install): Install gvarargs.h under name varargs.h.
* gcc.c: Include gvarargs.h, not system's varargs.h.
* Makefile: Use -I$(srcdir) before -I$(srcdir)/config.
* config/tm.h: Deleted; didn't work if config was a symlink.
* cse.c (cse_insn): Record location of inner_dest
so it can be replaced properly if a new MEM rtx is made.
Fri Jun 16 14:17:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* make-cc1.com: Compile and link rtlanal.c.
* c-typeck.c (build_array_ref): Call fold on the array ref.
* fold-const.c (fold): Simplify array ref of string constant.
* stmt.c (expand_asm_operands): Fix error message.
* Makefile (gnulib2): Remove old members before compiling new.
Fix stupid errors.
* gnulib2.c (__cmpdi2, __ucmpdi2): Typos in names of interface unions.
* genconfig.c (main): Don't write MAX_CLOBBERS_PER_INSN; obsolete.
Add 3 to MAX_RECOG_OPERANDS.
* cse.c (fold_cc0): Extra arg specifies machine mode.
Callers changed.
(cse_insn): Record original mode of each src for this purpose.
Thu Jun 15 12:35:18 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* gnulib2.c (_cmpdi2, _ucmpdi2): Moved here from gnulib.c.
Use long long for argument type.
* rtlanal.c (may_trap_p): Moved here from loop.c.
Return 1 for division by explicit zero.
* reload1.c (eliminate_frame_pointer, alter_frame_pointer_addresses):
Rerecognize insns which are changed by this.
* i386.md (call_value): Don't return prematurely.
* alliant.md (movqi): Handle moving Aregs to mem and vice versa.
(bftst -> btst): Restrict to bitpos less than 8
so operand may be non-offsettable.
(nop): New pattern.
(return): Was disabled; now deleted.
* tm-alliant.h (PRINT_OPERAND_PUNCT_VALID_P): Define it.
* out-alliant.c (output_btst): Same change as in out-m68k.c
* alliant.md, out-alliant.c: Offsetable -> offsettable.
* c-parse.y (rule for stmt_exprs): Make the LET_STMT volatile.
* c-decl.c (duplicate_decls): Don't save inline function data
from previous definition if a new *definition* is seen.
* integrate.c (access_parm_map): Handle subregs and constants.
* stmt.c (expand_return): Don't crash if DECL_RTL (DECL_RESULT()) is 0.
* tm-tahoe.h (LONGJMP_RESTORE_FROM_STACK): Define it.
* tm-mips.h (CONSTANT_P): Deleted; duplicates rtl.h.
Fri Jun 9 01:39:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* Makefile (float.h): Avoid using $(MAKE).
* Don't cram two things into STMT_BODY of a LET_STMT.
* tree.h (struct bind_stmt): New field, subblocks.
(STMT_SUBBLOCKS): New macro to access it.
* print-tree.c (walk): Print new field.
* tree.c (build_let_stmt): Store the old BODY arg into subblocks field.
* c-parse.y (stmt expr rule): Put rtl expr alone into body field.
* dbxout.c (dbxout_block): Recurse on subblocks, not body.
* sdbout.c, symout.c: Likewise.
* integrate.c (copy_decl_tree): Likewise.
* stmt.c (setjmp_protect, uninitialized_vars_warning): Likewise.
* expr.c (expand_expr): For LET_STMT, simply use its body.
* machmode.def: Add sixth arg to each entry.
* tree.h, rtl.h, rtl.c: Add arg to DEF_MACHMODE.
* rtl.h (GET_WIDER_MODE): New macro; table in rtl.c.
* expr.c (expand_expr): Use that for widening multiply.
* stmt.c (fixup_var_refs_1): When converting MEM to QImode for
bit field, adjust the address if possible to make bitpos
less than 8.
* m68k.md (bftst -> btst): Restrict to bitpos less than 8
so operand may be non-offsettable.
* cccp.c (do_line): Accept and pass on 3rd arg for enter or leave file.
* out-m68k.c (output_btst): Handle COUNT bigger than size of unit.
* cccp.c (CHECK_DEPTH): Macro to detect instack overflow.
(finclude, macroexpand, expand_to_temp_buffer): Use that.
* cccp.c (rescan): Don't check for disabled macro if traditional.
(macroexpand): Don't disable macro if traditional.
* sdbout.c (sdbout_one_type): Take out last change; assembler barfs.
* c-parse.y (maybe_attribute): Eliminate #-syntaxes.
Make ATTRIBUTE the name for __attribute.
* c-parse.gperf: Add __attribute{,__} and __signed{,__}.
* c-parse.y: Install results of that change.
* Fix bug in sizeof ({...}).
* c-decl.c (poplevel): Set TREE_USED. Return the LET_STMT.
* c-parse.y (stmt-expr rule): Put the RTL_EXPR in the LET_STMT,
clear its TREE_USED, and use it as the result.
* expr.c (expand_expr): Allow LET_STMT as an expr.
Set its TREE_USED and expand the TREE_VALUE of its body.
* dbxout.c (dbxout_block): Ignore LET_STMT if TREE_USED not set.
* sdbout.c, symout.c: Likewise.
Thu Jun 8 00:06:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-parse.y (yylex): Extend ERANGE-inhibitor for 0.0
to 0.0e0 as well.
* flow.c (life_analysis): Prevent allocation of regs live at setjmp
on certain machines. Controlled by LONGJMP_RESTORE_FROM_STACK.
Sets reg_live_length to -1.
* local-alloc.c (block_alloc): Be prepared for that.
* tm-vax.h (LONGJMP_RESTORE_FROM_STACK): Define it.
* gnulib2.c (all interfaces): Declare args and values as long long,
and split them using unions.
* loop.c (check_dbra_loop): Don't reverse loop if there are two
refs to varying addresses. Consider foo[i] = foo[i-1].
(count_nonfixed_refs): Subroutine to count them.
* cexp.y: Distinguish signed and unsigned.
An integer value is now represented by a struct.
All rules for arithmetic changed.
(yylex): Adapt to change in yylval data type.
* limits.h (LONG_MIN): Make sure it's a signed long.
* sdbout.c (sdbout_one_type): Output types of fields first,
if they are structs. Don't go through pointers.
(sdbout_field_types): Subroutine for that
Wed Jun 7 13:00:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* fixincludes: Switch to /usr/include before doing vuid_event.h.
Use $2 as output directory for sed.
* tm-i386.h (FUNCTION_PROFILER): Put counter address in %edx.
* tm-i386v.h (LIB_SPEC): Use -L/usr/lib/libp if profiling.
* expr.c (expand_increment): Typo testing for BImode component.
* convex changes from csmith:
* tm-convex.h: use EXTRA_SECTIONS to do .bss.
out-convex.c: set_section, align_section are now unused.
* convex.md: add pattern to pick an A-reg destination for sums
whose source involves a dedicated A reg (frame or arg pointer)
* convex.md: immediate and, or, xor instructions store a 32-bit
result. Fix instructions that assumed it was 64.
* mips.md (probe): New pattern to create stack space.
* Makefile (float.h): Ignore errors from hard-params.
Specify ./ to run it.
Tue Jun 6 15:45:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* out-tahoe.c: Rename `offsetable' to `offsettable'.
* tahoe.md (nop): New pattern.
* i386.md (umul...): Constrain operand 1 as `0', not `a'.
`a' sometimes wanted two a-regs for operands 0 and 1.
* cccp.c: Forward-declare some structs.
* c-decl.c: Rearrange fcn fwd decls and struct decls.
* expr.c: Move some fcn fwd decls after structs their args use.
* genpeep.c, genextract.c: Likewise.
* loop.c: Forward-declare some structs.
* stmt.c: Move decls of structs before those of static functions.
* loop.c (strength_reduce): Delete extra arg to check_eliminate_biv.
* integrate.c (expand_inline_function): Supply missing arg
to convert_to_mode.
* gcc.c (handle_braces): Supply missing arg to do_spec_1.
* explow.c (lookup_static_chain): Accept a context arg.
* expmed.c (store_split_bit_field): Pass ALIGN arg
to extract_fixed_bit_field.
* expr.c (expand_assignment): Convert TYPE_ALIGN to bytes.
(store_constructor, expand_expr): Likewise.
* m68k.h: NO_ADDSUB_Q conditionals turn off all addq, subq insns.
(Fully supported only with MOTOROLA and HPUX_ASM flags.)
* jump.c (do_cross_jump): Don't die if LABEL is 0.
* tm-mips.h (PRINT_OPERAND_PUNCT_VALID_P): New macro.
* tm-iris.h: New file. Unsplit lines accidentally split.
Mon Jun 5 15:39:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* integrate.c (output_inline_function): Call init_function_start,
not expand_function_start.
* emit-rtl.c (restore_reg_data): No need to init reg_rtx_no.
* stmt.c (init_function_start): Set current_function_returns_struct.
* rtlanal.c (reg_set_between_p): New fn analogous to reg_used_between_p
* loop.c (strength_reduce): Reject biv initial value which is altered
subsequently before actual loop start.
* rtlanal.c: New file split out from rtl.c.
Has things not used in the gen files.
* loop.c (strength_reduce): Reject biv initial value in a hard reg
clobbered by an intervening function call.
* tree.c (get_identifier): New flag needed to enable id-clash warnings.
(start_identifier_warnings): Set that flag.
* c-decl.c (init_decl_processing): Call that, after making built-ins.
Sat Jun 3 14:41:34 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* final.c (final_scan_insn): No basic block profiling at jump tables.
* stmt.c (expand_decl): Probe the stack to make pages exist.
* expr.c (expand_builtin): Likewise, for alloca.
* move-if-change: Specify /bin/sh.
* tm-ns32k.h (INDIRECTABLE_2_ADDRESS_P): Don't accept PLUS
with constant operands but not inside CONST.
* integrate.c (output_inline_function, save_for_inline):
Save stack_slot_list, and restore it for actual output.
* emit-rtl.c (gen_inline_header_rtx): New arg for this.
* emit-rtl.c (restore_reg_data): Initialize reg_rtx_no.
(restore_reg_data_1): Handle reg_rtx_no jumping past
reg_pointer_flag_length.
* reload1.c (alter_reg): Do nothing if regno_reg_rtx has 0.
* integrate.c (copy_rtx_and_substitute): Typos for stack parm
addresses in PLUS case.
* genoutput.c (gen_insn, gen_peephole): Make output_n fns static.
(output_prologue): Use new macro DEFAULT_MACHINE_INFO if defined.
* tree.h (enum machine_mode): Define MAX_MACHINE_MODE as in rtl.h.
Fri Jun 2 15:40:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* cccp.c (do_include): A file included via a system header file
counts as a system header file for -M.
* gnulib2.c: Support boolean ops and shifts.
* loop.c (emit_iv_inc): Use emit_iv_init_code.
* rtl.h (CONST0_RTX): Don't try to cast abort.
* tm-news.h (PRINT_OPERAND_ADDRESS): Fix typo `reg_name'.
Delete two garbage lines.
* loop.c (eliminate_biv): Use emit_iv_init_code to compute comparison
value. If value is constant, recognize the insn, and if that fails,
put the value in a register.
Thu Jun 1 16:56:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* print-tree.c (dump): Don't die if rtx components are null.
* expmed.c (expand_mult_add): New fn to do A * X + B.
(make_tree): New subroutine.
* loop.c (emit_iv_init_code): Use that. Much simpler now.
Tue May 30 17:20:40 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* fold-const.c (fold): Use TREE_SET_CODE to store in tree codes.
* tree.h (struct tree_common): Make `code' an unsigned int.
(TREE_CODE, TREE_SET_CODE): Put in casts.
* optabs.c (emit_cmp_insn): Supply all the args in recursive calls.
* toplev.c (report_error_function): Fix typo; METHOD_TYPE missing.
* fixincludes: Add code to make internal non-directory links.
Mon May 29 21:36:28 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* gcc.c (find_exec_file): Try both with and without machine_suffix.
(find_file): Use machine_suffix here too.
Sat May 27 00:02:26 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* reload.c (decompose): OFFSET wasn't initialized.
* cse.c (cse_main): Assign monotonic cuids.
(make_regs_eqv, CHEAPER): Use cuids, not uids.
(cse_end_of_basic_block): Return a cuid, not a uid.
* expr.c (expand_builtin): For BUILTIN_SAVEREGS, range of regs
moved included one extra previous insn.
* emit-rtl.c (emit_line_note): Don't check -g here.
(emit_note): For line number when no -g, increment cur_insn_uid anyway.
* stmt.c (expand_start_case): Always output a NOTE_INSN_DELETED.
* loop.c (loop_optimize): Don't count line-number NOTEs for luids.
Prevents -g from affecting optimization decisions.
Fri May 26 17:31:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* local-alloc.c (block_alloc): Don't count notes in insn_number.
Prevents -g from affecting order of allocation.
Thu May 25 14:12:19 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* local-alloc.c (block_alloc): Clear full length of regs_live_at.
* ns32k.md (cmpsi): Make this the first cmp pattern.
* jump.c (do_cross_jump): Skip NOTEs while checking for existing label.
* cse.c (cse_insn): When no-oping a jump, decrement use count of label.
(cse_basic_block): If label use count is 0, go past it.
* integrate.c (access_parm_map): New fn, broken out of
copy_rtx_and_substitute, handles case of mem ref to stack arg.
(copy_rtx_and_substitute): Call it.
Also use it for address of a stack arg.
* gen*.c (fatal): Declare 1st arg as string.
Wed May 24 00:13:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* optabs.c (init_optabs): Handle movdi and movdf insns.
* final.c (end_final): Realign locn ctr after outputting string.
* tm-sparc.h (LINK_SPEC): Link bb_link.o before standard lib.
* tm-sun386i.h (LINK_SPEC): Accept and ignore -sun386.
* gcc.c (find_exec_file): Use machine_suffix.
(process_command): Set that for -b option.
* integrate.c (function_cannot_inline_p): No size limit
for functions declared inline.
* loop.c (skip_consec_insns): New fn, skip several insns or libcalls.
(force_movables): New fn, part of scan_loop broken out.
(ignore_some_movables): New fn, ignore a movable whose insn
is within another movable's libcall.
(scan_loop): Call those three.
Don't handle m->consec for zero-extend movables, since always 0.
Tue May 23 12:58:24 1989 Joe Weening (weening at gang-of-four.stanford.edu)
* config/alliant.md:
Removed operand classes 'x', 'y', 'G', 'H'.
Added "%." to many opcodes to simplify comparison with m68k.md.
Changed TARGET_68881 to TARGET_CE.
Changed floating-point insns to better describe the Alliant CE.
Most args to floating-point insns are now nonimmediate_operand.
Removed special insns for pushing doublewords onto stack.
Added non-CE versions of movsf and movdf to avoid using FP
registers in this case.
(float*i*f2): Don't allow immediate ops.
(sne): Fix typo, fsne => fsneq.
(call, call_value): Changed to always pop args from stack
upon return; this gives better code than before and conforms
to Alliant calling standard.
Incorporated some recent changes to m68k.md.
* config/out-alliant.c:
(regno_reg_class): Removed FPA reg classes.
(output_move_const_double): Function not needed, removed.
* config/tm-alliant.h:
Removed FPA registers and reg classes.
Target flags: changed TARGET_68881 to TARGET_CE, removed
TARGET_RTD, TARGET_REGPARM, TARGET_FPA.
Removed TARGET_CE test in several places since we need to
use FP regs even for non-CE programs.
(TARGET_VERSION, CPP_SPEC): Define for Alliant.
(CONDITIONAL_REGISTER_USAGE): Removed, not needed.
(FRAME_POINTER_REQUIRED): Defined.
(RETURN_POPS_ARGS): Defined.
(FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P):
Use fp0 to return floating-point values.
(FUNCTION_ARG): Remove TARGET_REGPARM code.
(FUNCTION_ARG_PARTIAL_NREGS): Always 0.
(FUNCTION_PROFILER): Define for Alliant.
(FUNCTION_EPILOGUE): Remove use of rtd instruction.
Renamed CC_IN_68881 to CC_IN_FP.
(NOTICE_UPDATE_CC): Incorporate changes that were made
in tm-m68k.h.
* config/xm-alliant.h (LINK_SPEC): Pass -X to linker.
Tue May 23 12:58:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* sdbout.c: Don't include c-tree.h.
* tree.c (build_index_type): Use sizetype for min and max values.
Convert maxval rather than clobbering it.
* tm-hp9k320.h: Finish unterminated comment.
* sdbout.c (sdbout_parms): Use gen_fake_label for anonymous parm.
Sun May 21 12:58:06 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* stmt.c (aggregate_value_p): New fn says whether expression is a type
that functions cannot return as a scalar.
(assign_parms, expand_function_start): Use that.
* expr.c (expand_call): Likewise.
* gcc.c (delete_failure_queue): New subroutine.
(delete_temp_files): No longer delete the failure queue.
(main): Delete failure queue after each failing compilation.
Sat May 20 13:16:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* varasm.c (force_const_mem): New optional macro SELECT_RTX_SECTION.
* mips.md: Change %u0 to %:.
(movsi): Add constraint alternative accepting address arg.
* fold-const.c (mul_double): Special case for 2nd arg 2, 4, 8.
(combine): Special case shortcuts for plus, minus, mult, div.
* stmt.c (expand_function_start): Simplify hairy statement for 3B1.
* expr.c (expand_call): Likewise.
* math-68881.h: New file.
* m68k.md (movqi): Handle moving aregs to mem and vice versa.
* dbxout.c (dbxout_type): Don't test use_gdb_dbx_extensions
in cases that occur in C.
* stmt.c (expand_function_{start,end}): Make DECL_RESULT's rtl 0
when function returns no value.
* tree.c (build_decl): Initialize DECL_PRINT_NAME, DECL_ASSEMBLER_NAME.
* c-decl.c (store_parm_decls): Call init_function_start.
Thu May 18 00:41:37 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* stmt.c (expand_null_return_1): New arg USE_GOTO says jump to
return_label even if could otherwise use a return insn.
Make a return_label if we need one and don't have one already.
If have parm cleanups, always jump to cleanup_label.
(expand_null_return): Pass 1 for USE_GOTO if cleanups pending.
(expand_return): Set LAST_INSN if have local cleanups or parm cleanups.
Use that if jumping to tail-recursion label.
Optimization for returning a comparison is safe for local cleanups
but don't do it if there are parm cleanups.
Calling expand_null_return_1, pass 1 for USE_GOTO if local cleanups.
(this_contour_has_cleanups_p): New function.
* stmt.c (init_function_start): New function, beginning of
expand_function_start broken out.
Use DECL_PRINT_NAME to get function's name.
(expand_function_start): Now two args, function and PARMS_HAVE_CLEANUPS
Compute RETURN_LABEL sooner; make one if parm cleanups.
If parms have cleanups, put scalar return value in pseudo-reg.
Don't mark that pseudo with REG_FUNCTION_VALUE_P.
(expand_function_end): Simplify decisions about output of return_label
and return insn.
If DECL_RESULT is pseudo-reg, copy it to real return reg.
* stmt.c (expand_function_end): Handle ordinary struct values
like pcc, but only if unoptimized.
(expand_function_start): Make a return_label for ordinary struct value.
* stor-layout.c (layout_type): Handle METHOD_TYPE like FUNCTION_TYPE.
(layout_decl): Allow TYPE_DECL.
* stor-layout.c (layout_basetypes): Code for basetypes broken
out of layout_record. Sets the type size tentatively.
(layout_record): Start with that tentative size.
Also, don't do anything with CONST_DECL members.
* stor-layout.c (layout_union): Simpler error report for static memb.
* reload1.c (eliminate_frame_pointer): Reduce PUSH_ROUNDING
conditional to apply only to push instructions.
* expr.c (expand_call): Fix stupid errors handling MAX_PARM_BOUNDARY.
* stmt.c (assign_parms): Likewise.
* toplev.c (announce_function, report_error_function):
(error_with_decl, warning_with_decl): Use DECL_PRINT_NAME.
* toplev.c (compile_file): Subtract integration_time from parse_time.
* toplev.c (compile_file): Don't output read-only static variables
at end of compilation if address was not used.
* toplev.c (rest_of_compilation): Handle flag_syntax_only.
* toplev.c (main): Handle -g0 and -G0 options.
For -g and -G, set use_gdb_dbx_extensions.
* toplev.c (main): Set `progname'.
(pfatal_with_name, fatal_io_error, {error,warning}_with_file_and_line):
(sorry): Print value of `progname', not "cc1".
* tree.def: Delete FRIEND_DECL. Add PUSH_EXPR and POP_EXPR.
* tree.c (simple_cst_equal): Handle INDIRECT_REF.
* tree.c (lvalue_p): Handle METHOD_TYPE. Handle NEW_EXPR.
* tree.c (copy_list): New function.
* tree.h (struct tree_decl): New fields print_name and assembler_name.
(DECL_PRINT_NAME, DECL_ASSEMBLER_NAME): New accessors.
* c-decl.c (LONG_DOUBLE_TYPE_SIZE): New compilation parameter.
Wed May 17 22:07:17 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
* dbranch.c (emit_delay_sequence): Reset insn code to -1 when
turning insn into a sequence so that it won't think that it matches
something in the md file.
* dbranch.c (insn_eligible_p): Call refers_to_regno_p with a
non-zero range.
* dbranch.c (pnote): Modified to make sure instruction clobbered
register is a set, rather than, say, a clobber.
Wed May 17 14:01:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* sdbout.c (sdbout_parms): Handle parm with no name.
* loop.c (combine_movables): Test for overlap of zero-extend regs
was screwed up.
* c-typeck.c (c_sizeof{,_nowarn}): Convert from bytes to chars,
since c defines sizeof (char) as 1.
(pointer_int_sum, pointer_diff): Use c_sizeof{,_nowarn}.
Tue May 16 16:27:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* reload1.c (choose_reload_targets): Don't reuse regs
mentioned in reload_reg_rtx.
* tm-tahoe.h, tahoe.md, out-tahoe.c, xm-tahoe.h: New files.
Mon May 15 16:25:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* fixincludes: Exit with explicit status 0 at end.
cd to /usr/include before cd to subtree root in case of relative link.
Create dir $LIB earlier.
When checking for a link, treat .. like an absolute target.
* symout.c (symout_block_symbols): Give every local decl a typespec.
* cexp.y (parse_number):
* flow.c (life_analysis, dump_flow_info):
* loop.c (consec_sets_invariant_p): Logic error accepted consec sets
of which only one was invariant.
* expr.c (expand_expr): Use no subtargets inside loops.
* stmt.c (inside_loop): New function.
Sun May 14 00:11:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tree.h: Declare long long types.
* c-parse.y (combine_strings): Make string contents saveable.
* tree.c (savealloc): New function.
* m68k.md (movdi): % missing in fmove%.d.
* c-parse.y (yylex): Detect overflow past 64-bits.
Detect specially numbers not fitting in signed long long.
Sat May 13 13:16:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* reload1.c (alter_frame_pointer_addresses): Preserve volatility.
* varasm.c (output_constructor): Die if BITS_PER_UNIT is too big
for this function to work.
* genpeep.c (match_rtx): For match_operator, match the operands, too.
* varasm.c (output_constant): Use ASM_OUTPUT_DOUBLE_INT for DImode.
* stor-layout.c (make_signed_type, make_unsigned_type):
(fixup_unsigned_type): Use HOST_BITS_PER_INT.
* stor-layout.c (layout_type): Use TFmode if appro.
* optabs.c (emit_cmp_insn): Use mode sizes to check cmpstrqi, cmpstrhi.
* c-typeck.c (get_floating_type): Compare MODE against modes of types.
(signed_type, unsigned_type, signed_or_unsigned_type, type_for_size):
Handle long long types.
(digest_init): Don't assume width of `char' is BITS_PER_UNIT.
* c-parse.y (yylex): For truncating chars, use width of `char' type.
Allow `ll' in int constants and make long long.
Also make long long if constant won't fit in an int.
* c-decl.c (SHORT_TYPE_SIZE): Round up when dividing.
Fri May 12 22:36:21 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* real.h: Allow multiple inclusion.
* tm-sun386i.h (DBX_REGISTER_NUMBER): Bizarre renumbering.
Thu May 11 00:36:21 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* fixincludes: Fix non-ansi declaration of sprintf in X11/Xmu.h
* c-parse.y (stmt from expr): Do default conversion if useful
for sake of ({...}).
* sparc.md (andcc recognizer): Operand missing in subreg.
Wed May 10 17:20:38 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* rtl.c (read_name): Error if name is missing.
(dump_and_abort): Don't print char args if -1.
* i386.md (umulqihi3): Operand numbers were missing.
* reload1.c (choose_reload_targets): Allow spill reg in find_equiv_reg
if it's free and correct class.
* cse.c (canon_hash): Handle empty strings.
* cccp.c (macroexpand): Newline newline treated like real white space
when stringifying.
* Rename *offsetable* to *offsettable*.
Tue May 9 22:54:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-decl.c (finish_type): Layout any variants of the type.
Tue May 9 12:30:28 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
* final.c (final_scan_insn, final): Added an argument to
final_scan_insn to disallow peephole processing (to turn it off
during delayed branch scheduling).
* final.c (final_scan_insn): Made insn not matching any MD rtl a
criteria for delayed branch case. Moved delayed branch case to just
before real insn recognition to reduce the number of insns on which
recog_memoized is called.
Mon May 8 15:02:42 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* fixincludes (LIB): Allow overriding.
* cccp.c: Don't search /usr/include/CC by default.
Mon May 8 13:09:21 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
* print-tree.c (dump): Fixed typo; IDENTIFIER ==> IDENTIFIER_NODE.
Sun May 7 12:44:53 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* print-tree.c (dump): TYPE_NAME may be IDENTIFIER or TYPE_DECL.
Sat May 6 00:13:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tree.def: Define EXACT_DIV_EXPR, for when remainder known as 0.
* fold-const.c (combine, fold, div_and_round_double): Handle new code.
* expr.c (expand_expr): Likewise.
* c-typeck.c (pointer_diff): Use EXACT_DIV_EXPR.
* integrate.c (expand_inline_function): Use size of passed type
for allocating stack slot with that type.
* c-parse.y (maybe_attribute, attribute*): New syntax for Apollos.
These tokens currently not generated.
Fri May 5 18:43:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* toplev.c [USG]: Undefine FLOAT for sake of sys/param.h on hpux.
* optabs.c (expand_binop): If backtracking, don't delete insns made
for -fforce-mem.
Thu May 4 01:57:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* reload.c (find_reloads): Don't compare an earlyclobber operand
with itself.
* reload.c (immune_p): Constants and stack slots don't overlap.
* Put no-ops in front of loops and labels,
to prevent confusion in the debugger.
* c-parse.y (loops and labels): Call emit_nop.
* stmt.c (emit_nop): New function--sometimes emit a no-op.
* *.md (nop): New insn.
* expr.c (expand_call): Typo in arg to FIRST_PARM_CALLER_OFFSET.
Wed May 3 01:34:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* loop.c (scan_loop): Scanning around end of loop
should not set maybe_never.
* Rename SELECT_VARIABLE_SECTION to SELECT_SECTION.
* varasm.c (get_or_assign_label): Use SELECT_SECTION if defined.
* varasm.c: Use EXTRA_SECTION_FUNCTIONS if defined (new macro).
* mips.md: Change %u to %u0 to avoid error check.
* tm-mips.h (TARGET_VERSNUM): Inc. to 1 08.
(TARGET_VERSION): Change strings.
(AL_DEBUG): Don't define it.
(HARD_REGNO_MODE_OK): Add some casts to int.
(STACK_ARGS_ADJUST): Name was misspelled.
(PRINT_OPERAND_ADDRESS): Just abort for MEM, POST_INC, etc.
(EXTRA_SECTIONS, SELECT_VARIABLE_SECTION, SELECTORS_EXTRA_SECTIONS,
SELECT_VARIABLE_CONST_SECTION): New macros.
(ASM_FILE_END): Change function name.
* out-mips.c (function_arg_advance): Delete debugging printfs.
(function_inarg, function_arg): Likewise.
(compare_collect, compare_restore): Add some.
* reload1.c (reload): Fix handling of caller_save_needed.
* stmt.c (expand_function_start): Clear caller_save_needed.
* stmt.c (emit_case_nodes): Some compiler has trouble with calling
a function pointer.
* gnulib.c: likewise.
Tue May 2 15:32:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* loop.c (combine_movables): For zero extend,
do each from-mode separately.
Mon May 1 00:18:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-apollo68.h: New file.
* c-parse.y (is_reserved_word, hash): Add keywords `__asm__', etc.
* c-parse.gperf: Corresponding changes.
* c-parse.y (check_newline): Set main_input_filename before
considering optional arguments.
* final.c (final_scan_function): Return next insn to process.
Usually that's the following insn; occasionally, previous compare.
* c-decl.c (DOUBLE_TYPE_SIZE): Wrong value.
* reload.c (decompose): Failed to return value.
* Support local specified-register variables.
* varasm.c (decode_reg_name): New function, cvt asmspec to regnum.
(make_decl_rtl): Call that.
* toplev.c (rest_of_decl_compilation): Handle local specified-register
declarations.
* i386.md (tstqi, trunc*qi): Constrain to `q' regs.
* loop.c (scan_loop, move_movables): ->global for zero-extend register
now means register is used outside range from where it is set
to the following label. Non-global zero-extend regs
may be entirely cleared.
* loop.c (combine_movables): Loop that combines matching movables
broken out from scan_loop.
Now also combine non-global zero-extend registers with each other
if their lifespans don't overlap.
* c-typeck.c (build_unary_op, ADDR_EXPR of a COMPONENT_REF):
Always convert to desired result type.
Sun Apr 30 12:58:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-decl.c (init_decl_processing): New macros parameterize int types.
CHAR_TYPE_SIZE, SHORT_TYPE_SIZE, LONG_TYPE_SIZE, LONG_LONG_TYPE_SIZE,
FLOAT_TYPE_SIZE, DOUBLE_TYPE_SIZE.
* fixincludes: Use sed instead of ex. No problem with split lines.
* print-tree.c (dump): Print type's name, if any.
* c-parse.y: Use __inline, not plain inline.
* toplev.c: New option -fdelayed-branch.
(compile_file): Open and close dbranch dump file.
Collect and print dbranch time.
(rest_of_compilation): Optionally do dbranch scheduling,
only if HAVE_DELAYED_BRANCH.
(main): Handle -dd.
* rtl.c (copy_rtx): Handle null pointers as code `e'.
* final.c (dbr_sequence_length): New function.
(final_scan_insn): Most of `final' broken out.
Add support for SEQUENCE insns.
last_ignored_compare and new_block now top-level static.
* c-parse.y (MAX_WORD_LENGTH): Long enough for __volatile.
Sat Apr 29 13:03:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-parse.y (asm statements): Output line numbers.
* loop.c (emit_iv_init_code, emit_iv_inc, eliminate_biv): Copy
additive term rtx's to prevent sharing between insns.
* c-parse.y (check_newline): Increment input_file_stack_tick.
* toplev.c (report_error_function): Describe input stack only if
changed.
* c-decl.c (finish_struct): Reject zero width for named field.
* tm-sun3.h (CC1_SPEC): Prevent error on `-sun3'.
* tm-sparc.h (CC1_SPEC): Prevent error on `-sun4'.
* Makefile (cleanconfig): cleanlinks renamed; also delete gnulib.
(gnulib): Delete stamp-gnulib2 since gnulib2 should be redone after.
Fri Apr 28 00:38:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* config.gcc (genix): Correct xm file name.
* tm-genix.h: Undefine ASM_SPEC inherited from tm-encore.h.
* Makefile: Make float.h using hard-params.
(clean): Delete float.h.
* hard-params.c: New program.
* varasm.c (assemble_variable): Use SELECT_VARIABLE_SECTION if defined.
(in_section): Use EXTRA_SECTIONS if defined.
* toplev.c (compile_file): Call ASM_FILE_END if defined.
* gcc.c (SWITCH_TAKES_ARG, WORD_SWITCH_TAKES_ARG): Let config override.
* loop.c (emit_iv_init_code): Force A to a reg if it isn't.
Thu Apr 27 12:51:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-mips.h (ASM_START_FILES): Don't call print_options.
Don't call the funny abort-functions.
* out-mips.c: Delete funny debugging functions and aborts.
(print_options): #if 0.
(compare_restore): Test for COMPARE, not MINUS.
(mips_section_get, mips_output_external, mips_asm_final): New fns.
* input.h: New file with *input_filename, lineno and input_file_stack.
Included in toplev.c and c-parse.y.
* c-decl.c (finish_function): LINENO is now arg.
* c-parse.y: Calls changed.
* c-parse.y (check_newline): Handle `1' or `2' from cpp
by pushing or popping input_file_stack.
* toplev.c (compile_file): Push main input file on input_file_stack.
(report_error_function): If in include file, print the chain
of include-locations.
* cccp.c (output_line_command): New arg says whether entering or
leaving a file. Output `1' or `2' on #-line if so. Callers changed.
* gnulib2.c: Little-endian fixes from csmith@convex.com.
* fixincludes: Wrong quoting in `echo' command.
* tm-mips.h (REG_P): Duplicate defn deleted.
(PRINT_OPERAND): `\' was missing.
Wed Apr 26 02:44:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* cccp.c (handle_directive): Preprocess even #pragma, but copy
to output file afterward.
(do_pragma): Use standard calling convention.
(install_builtins, special_symbol): Define __INCLUDE_LEVEL__.
* cccp.c (do_include): Don't forget to close file.
* final.c (output_asm_insn): Use PRINT_OPERAND_PUNCT_VALID_P
to validate punctuation after percent.
* tm-m68k.h, tm-alliant.h, tm-ns32k.h, tm-vax.h, tm-i386.h:
Define PRINT_OPERAND_PUNCT_VALID_P.
* Version 1.35 released.
* c-decl.c (grokdeclarator): Use INT_CST_LT only on int constants.
Tue Apr 25 15:47:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* reload.c (find_reloads_address_1): Always return a value.
* flow.c (mark_set_1): Look inside zero_extract, sign_extract.
* expr.c (emit_library_call) [STACK_ARGS_ADJUST]:
Fix typo for `struct args_size'.
Mon Apr 24 00:12:18 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* flow.c (mark_set_1): Look inside strict_low_part.
* c-typeck.c (decl_constant_value): Don't use var's init if volatile.
* print-tree.c (dump): Don't call walk on rtx's.
* integrate.c (expand_inline_function): Convert expanded arg from
passed mode to nominal mode.
Sun Apr 23 13:14:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* fixincludes: fix _IO macros if split across two lines.
Fix typo: EOF was indented.
* gnulib2.c: New file with DImode library routines.
* Makefile (gnulib2): Put them into gnulib.
Must be explicitly requested.
Fri Apr 21 13:45:45 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* cccp.c (main): Don't turn on trigraphs for -Wtrigraphs or -Wall;
use -trigraphs for that.
* cccp.c (main): Use -trigraphs to enable trigraphs.
* gcc.c: Pass -trigraphs to cpp; don't pass -T.
* Makefile: Variable srcdir relates location of sources
to current directory. Default is `.'.
* integrate.c (expand_inline_function): When copying expanded arg,
use mode it's passed in, not arg's nominal mode.
* dbxout.c (dbxout_block): Print generated name with assemble_name.
Thu Apr 20 12:36:09 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* stdarg.h: check __sparc__ instead of sparc.
Tue Apr 18 18:58:03 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-next.h (STARTFILE_SPEC): Define it.
Mon Apr 17 19:56:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* dbxout.c (dbxout_block): Use ASM_GENERATE_INTERNAL_LABEL to format
the labels LBB... and LBE...
Sun Apr 16 23:57:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* mips.md: Change MINUS to COMPARE where appropriate.
Sat Apr 15 16:11:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-decl.c (finish_struct, redeclaration_error_message):
Rename variables named OLD and NEW.
* sparc.md (cse'd mult pattern): Handle memory operands.
Optimize small integer operands.
* stmt.c (expand_decl): On sparc, ensure dynamic arrays of doubles
are properly aligned, despite unaligned STACK_POINTER_OFFSET.
Fri Apr 14 10:59:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* expr.c (expand_call): Bugs treating struct value address as param:
do so only if it's supposed to be pushed;
decode value of FUNCTION_ARG properly.
* tm-altos3068.h (CPP_SPEC): Some braces were dropped.
* gcc.c (pexecute): Print message when exec fails.
(perror_exec): New fn.
(perror_with_name,pfatal_with_name): Change message syntax.
* tm-hp9k320.h (ASM_IDENTIFY_GCC): Define as no-op.
Wed Apr 12 00:20:31 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* cse.c (cse_insn): Can record constant value being stored in
a bit field, if we can tell that truncation won't change it.
* m68k.md (bfset, bfclr, bfchg insns): Do CC_STATUS_INIT
since the cc's are set from the old contents.
* gcc.c (compilers): Running `as', put -o option before input file.
* gcc.c: Delete output file only if that file's compilation fails.
* gcc.c (record_temp_file): Changed args: always_delete, fail_delete.
(store_arg): Likewise. Callers changed.
(clear_failure_queue): Called after each compilation.
Tue Apr 11 01:18:53 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* combine.c (subst): (SET (ZERO_EXTRACT) (OR (ZERO_EXTRACT) const))
optimization was sometimes invalid.
* tm-m68k.h (NOTICE_UPDATE_CC): A doubleword move that requires 2 insns
does not set the cc's usefully.
* Makefile (cleanlinks): Just do `clean', not `realclean'.
(realclean): Delete config links also.
* expr.c (expand_call): Handle case where return value is in memory
but TARGET is a register.
* c-typeck.c (build_binary_op_nodefault): New arg ERROR_CODE
is passed to binary_op_error instead of CODE.
All callers changed.
(binary_op_error): CODE = NOP_EXPR is new special case.
(truthvalue_conversion): Call build_binary_op_nodefault directly
and specify NOP_EXPR for the error code.
* c-decl.c (xref_tag): If pedantic, warn on fwd ref to enum.
Mon Apr 10 19:44:48 1989 Chris Smith (csmith at mozart)
* tm-convex.h (PCC_BITFIELD_TYPE_MATTERS): It doesn't,
but set it anyway. It makes for better code on this
word machine.
* convex.md (one_compl*): add not:QI and not:HI, which
do get used after all.
* tm-convex.h (A_REG_P, S_REG_P): define new macros
convex.md: use them
* convex.md (addsi3): tidy up constraints.
* tm-convex.h (REG_OK_FOR_INDEX_P): stack pointer is not ok.
* convex.md: add a pattern to push REG+CONST so we can
prefer an A reg.
* tm-convex.h (tstqi): should sign extend, not zero extend.
* expr.c (convert_move): Extending narrow to DI via SI,
operand of extendsidi2 was wrong.
* emit-rtl.c (gen_lowpart): Handle CONST_DOUBLE.
Mon Apr 10 05:19:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* recog.c (nonmemory_operand): Test constant operands
as general_operand does.
* tm-m68k.h (PRINT_OPERAND): Limit effect of code `d'
to constant addresses.
* loop.c (can_eliminate_biv_p, eliminate_biv): Don't rely on givs with
nonconstant coefficients, since the coeffs could be zero.
* loop.c (can_eliminate_biv_p): Check each giv for ! ignore
before assuming it can be used.
(check_eliminate_biv): New fn, a piece of strength_reduce broken out.
* cccp.c (error_from_errno): New fn, like error and perror_with_name.
(do_include): Call that if open fails.
(finclude): Print I/O error msg before closing desc.
* c-decl.c (shadow_tag): If more than one tag or structure,
or anything other than a tag, warning.
* c-parse.y (components): Just warn if memb decl has no member,
and only if pedantic.
* loop.c (strength_reduce): Print uids, not luids, for dump.
(record_giv): giv_count field counts only DEST_REG givs.
(check_dbra_loop): src_two_before_end was set wrong.
* loop.c (record_giv): New arg LOOP_END; all callers changed.
Don't mark giv replaceable if used past LOOP_END.
(find_mem_givs): New arg LOOP_END; all callers changed.
* out-i386.c (FP_CALL): Make this a `return' stmt.
Fri Apr 7 11:56:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* expr.c (expand_expr, case ..._DECL): Preserve mode thru
calling change_address.
* expr.c (emit_library_call): Typo: ARGNUM => COUNT.
* expr.c (preexpand_calls, expand_call): Take note of RETURN_IN_MEMORY.
* stmt.c (assign_parms): Likewise.
* integrate.c (function_cannot_inline_p): Likewise.
* STACK_ARGS_ADJUST: Arg is now a `struct arg_data' and it should
be updated in place.
* tm-mips.h: Define it.
* expr.c (expand_call): Adapt to this. Assume padding comes after args
so turn off the feature of changing the args' offsets.
(emit_library_call): Adapt to this.
* tm-mips.h (PRINT_OPERAND): Use CONST_DOUBLE_{LOW,HIGH}.
Truncate SFmode constants to single precision.
* c-typeck.c (mark_addressable): Fix test for local vs global reg var.
* config.gcc: Change `:-' to `-' in var refs.
Shell on convex doesn't handle `:-'.
Thu Apr 6 00:09:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* integrate.c (expand_inline_function): Compare actual's mode
against formal's DECL_ARG_TYPE's mode, not TREE_TYPE's mode.
* c-decl.c (implicitly_declare): Make the decl permanent if
in global binding level. (Can happen for certain invalid input.)
* c-typeck.c (build_modify_expr): Block path that made a MODIFY_EXPR
containing an ERROR_MARK.
* config/tm.h: New file.
* loop.c (only_reg_use_p): Fix bugs in recursion, add some fast
special cases. Comment on return value was backwards.
(strength_reduce): Negate the value of only_reg_use_p.
* genoutput.c (output_prologue): Output `#include hard-reg-set.h'.
* Makefile: insn-output.o depends on that.
* toplev.c (main): Typo recognizing -Wswitch.
* config.gcc (mips): New alternative.
* tm-mips.h, out-mips.c, mips.md, va-mips.h: New files.
* varargs.h: Include va-mips.h if on mips.
Wed Apr 5 16:58:04 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-decl.c (duplicate_decls): Rename OLD, NEW to OLDDECL, NEWDECL.
* stmt.c (expand_function_start): Ref subr instead of
current_function_decl; should make no difference.
* stmt.c (assign_parms): Do extra padding for some parms,
controlled by MAX_PARM_BOUNDARY.
* expr.c (expand_call): Same thing for caller side.
Note this is implemented only for machines that lack push insns.
Also, in both cases, it doesn't handle variable-size args.
Tue Apr 4 12:22:06 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* gcc.c (find_file): Try STANDARD_EXEC_PREFIX for startfiles too.
* varasm.c (make_decl_rtl): Delete never-executed clause.
* spur.md (movqi, loadhi, extend*, zero_extendhisi):
Make subregs with C code, not RTL patterns, so we can
avoid generating subreg of subreg.
* optabs.c (emit_cmp_insn): Not all clauses always succeed,
so stop using `else' structure.
* stmt.c (expand_return): Avoid moving void to void, in cleanups case.
Mon Apr 3 18:04:33 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* m68k.md (cmphi): Don't allow a-reg vs a-reg, since that sign-extends.
If there is one a-reg, make sure it is not last.
Sun Apr 2 13:02:26 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* stor-layout.c (agg_mode): Use highest mode that has desired size.
Allow all integer modes, but reject sizes > MAX_FIXED_MODE_SIZE.
(That defaults to the size of DImode.)
* machmode.def: Add PSI, PDI and XF, CXF modes.
Sat Apr 1 00:50:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* ns32k.md (ashd, lshd): Delete patterns that logand the count with 31.
The shift count is not truncated on this machine.
* combine.c (subst): Simplify nested or's, nested xor's.
(try_distrib): XOR doesn't distribute through anything.
* rtl.c (rtx_equal_p): Don't die on null pointers.
* loop.c (eliminate_biv): Use COMPARE, not MINUS, in generated compare.
* loop.c (invariant_p): Mem refs in constant pool are invariant.
* c-decl.c (redeclaration_error_message): If -traditional, allow
redeclarations of typedef provided they agree.
* c-decl.c (start_decl): Do expand_decl on the decl that pushdecl
returns. If there was a prev. decl with a different type,
we have changed its type and cleared its old rtl, so it need new rtl.
Sat Apr 1 00:50:11 1989 Matthew Self (rms at sugar-bombs.ai.mit.edu)
* expr.c (convert_move): Modified to use mode classes
instead of refering to specific machine modes.
* expr.c (do_jump): Converted to use CONST0_RTX macro.
do_jmp no longer refers to any machine modes directly except
for VOIDmode!
* expr.c (compare, compare1): Modified to use CONST0_RTX
macro. No longer refers to any machine modes directly
except VOIDmode and BLKmode!
* machmode.def: Documented assumptions made about the order
of machine modes during mode widening.
* optabs.c (expand_binop, expand_twoval_binop, expand_unop,
emit_cmp_insn): Added mode widening which is independent of
specific machine modes. It assumes that we may widen to any
higher numbered mode of the same mode class.
NOTE: the checks for VOIDmode ops which were present in
QI and HI to SI widening are now present in all widening.
I assume this is correct. Also, widening is now possible
from QI to HI. This may or may not be a good thing....
* rtl.h (CONST0_RTX): Added definition of new macro
CONST0_RTX (mode).
* rtl.h (GET_NOTE_INSN_NAME, GET_REG_NOTE_NAME): New macros.
* rtl.c (note_insn_name, reg_note_name): New tables.
* rtl.def (NOTE): Change last field from `i' to `n'.
* rtl.c (print_rtx): Print mode of INSN_LIST or EXPR_LIST as reg-note.
Print operand code `n' as name of kind of note.
(read_rtx): treat `n' like `i'.
* loop.c (struct induction): Add `mode' field.
(strength_reduce, record_giv): Set the `mode' field in V.
(can_eliminate_biv_p, eliminate_biv): Use that field.
* loop.c (struct iv_class): `init_insn' records what inits the biv.
Replaces `init_val_set' flag.
(strength_reduce): Update and test `init_insn' instead.
Use of a biv between its init and the start of the loop
does not preclude its elimination from the loop.
Setting a giv is ok for eliminating a biv, even if giv is "ignore",
since that just means giv will be combined with another.
Handle some DEST_ADDR givs for that purpose.
Test for giv-setting before check can_eliminate_biv_p.
New error check for replaceable giv whose value needed after loop.
(only_reg_use_p): New fn.
* expr.c (expand_expr): PLUS, MINUS with EXPAND_SUM:
Associate even harder.
* loop.c (strength_reduce): Treat all constant biv init vals like ints.
* loop.c (strength_reduce): Clear all_reduced when v->ignore is set;
the code to check this later didn't always do the job.
* loop.c (verify_loop): Set loop_continue.
(scan_loop): mention its value.
* rtl.h: Define NOTE_INSN_LOOP_CONT.
* stmt.c (expand_loop_continue_here): Output one.
Fri Mar 31 10:08:29 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-typeck.c (pointer_int_sum, pointer_diff): Treat const void * like
void *.
* rtl.c (rtx_addr_varies_p): Don't die on null exp.
* cse.c (refers_to_mem_p, refers_to_p): Likewise.
* gcc.c (validate_switches, validate_all_switches): New fns.
Mark a switch as valid if any compiler spec or the linker spec
matches it, even for languages not being used.
Thu Mar 30 00:22:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* loop.c (loop_optimize, move_movables): when moving a `clr' insn used
in zero-extension, sometimes change it to an `and' so that the
significant low bits are not clobbered.
* cccp.c: Implement __BASE_FILE__ and #once.
(savestring): New fn.
(struct file_name_list): new name for struct directory_stack.
(enum node_type): Add T_ONCE, T_BASE_FILE.
(directive_table): Add #pragma once.
(initialize_builtins): Add __BASE_FILE__.
(special_symbol): Handle __BASE_FILE__, together with __FILE__.
(do_include): Ignore the file if it's on the #pragma once list.
(do_once): New fn; add current file to #pragma once list.
* cccp.c (do_include): Don't add non-ex files to list of deps.
* config.gcc: Use {...:-...}, not {...=...}.
* c-parse.y: Add precedence for IF/ELSE, and for parens;
avoids some conflicts.
* tm-newsgas.h: Include tm-news.h and define USE_GAS.
* tm-news.h: New name for tm-news800.h.
If not USE_GAS, define SONY_ASM.
Don't define USE_GAS by default.
(CPP_PREDEFINES): Various alternatives depending on processor type.
(ASM_FORMAT_PRIVATE_NAME): Override this.
(ASM_IDENTIFY_GCC): Override; output nothing.
(FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Round fsize up to % 4.
Max for halfword link insn is 32k, not 64k.
(FUNCTION_EPILOGUE): Don't output move.l if no regs to restore.
(PRINT_OPERAND_ADDRESS): Change handling of tableref pc-rel addresses.
* m68k.md (movhi): Add SONY_ASM conditional.
* cse.c (cse_insn): If replacing a dest address, preserve MEM_IN_STRUCT
* gcc.c (error, fatal): alternate varargs defns if HAVE_VPRINTF.
Wed Mar 29 09:54:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* gcc.c (process_command): Check WORD_SWITCH_TAKES_ARG, so that
-Tdata can be handled right.
* stmt.c (check_for_full_enumeration_handling): new fn, for warn_switch
(expand_end_case): Call it, if orig index was enum.
* toplev.c (main): Handle -Wswitch.
* c-parse.y (SWITCH stmt): Pass orig switch expr to expand_end_case.
* tm-*.h, out-*.c: Uniformly use reg_names, not reg_name, and don't
define any duplicates.
* final.c: Delete reg_name.
* c-parse.y (is_reserved_word): Add keywords __asm and __inline;
also __const and __volatile.
(yylex): Keywords that start with `__' are recognized regardless of
-traditional or -ansi.
* c-parse.y (check_newline): Always recognize #ident.
Macro IDENT_DIRECTIVE is no more.
If ASM_OUTPUT_IDENT is undefined, don't output anything for #ident.
* tm-3b1.h: Don't define IDENT_DIRECTIVE or ASM_OUTPUT_IDENT.
* tm-encore.h, tm-i386gas.h, tm-i368v.h, tm-sun386i.h, tm-vaxv.h:
Don't define IDENT_DIRECTIVE; define ASM_OUTPUT_IDENT to output in
default way.
* expr.h (RETURN_IN_MEMORY): New macro, default defn here.
* expr.c (expand_call): Use it to control where to return value.
* stmt.c (expand_function_start): Likewise.
* out-sparc.c (find_addr_reg): Abort if none found.
Eliminate confusion; do only one change between tests for PLUSness.
(output_move_double): Arg to find_addr_reg is address, not mem ref.
* out-m68k.c, out-spur.c, out-i386.c, out-alliant.c: Likewise.
* jump.c (find_cross_jump): Don't let either E1 or E2 be included
in the range of matching insns preceding the other (E2 or E1).
* c-parse.y (check_newline): No error for `#pragma\n'.
* Makefile (gcc.o): Control STANDARD_STARTFILE_PREFIX here.
* stmt.c (walk_fixup_memory_subreg): handle null.
* tm-sparc.h (FUNCTION_BLOCK_PROFILER): Change LPBnn to LPYnn,
to avoid conflict with final.c.
Tue Mar 28 15:23:17 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* cccp.c (do_include): If fail, print system error message.
(perror_with_name): Use more standard error format. Inc. `errors'.
* dbxout.c (dbxout_function): Output any temporary types
that were made by dbxout itself.
* stmt.c: always use an epilogue if pcc-struct-return.
(expand_function_start): Compute return_label after testing that.
(expand_function_end): Output a return insn after pcc-struct-return
processing, if there is a return insn.
(expand_null_return): Don't output a return insn, in that case.
Simplify the conditions--depends entirely on HAVE_return.
* tm-m68k.h (FUNCTION_BLOCK_PROFILER): Use jsr, not call.
* reload.c (find_reloads): Certain mem addresses will be offsetable
after reloading; in particular, those where reg_equiv_address applies.
* loop.c (check_dbra_loop): Change MINUS to COMPARE.
* c-typeck.c (convert_for_assignment): Return THE standard error_mark.
Thu Mar 23 09:39:02 1989 Richard M. Stallman (rms at watson)
* c-parse.y (components): Error if empty.
* dbxout.c (dbxout_symbol): Output const variables as N_STSYM.
* varasm.c (force_const_mem): Use ASM_OUTPUT_DOUBLE_INT if defnd.
* c-decl.c (grokdeclarator): Warn about `long long long'.
* reload1.c (reload): When changing REG to MEM, clear REG_USERVAR_P.
* final.c (alter_subreg): Preserve volatile bit of MEM.
* m68k.md (cmpsi, cmphi): Permit cmpm.
* gcc.c (find_file): Use standard_startfile_prefix_2.
Now search /usr/local/lib/, /lib/ and /usr/lib/.
* tm-m68k.h (PRINT_OPERAND): Support code `d'.
* m68k.md (cmpsi, cmphi, cmpqi): Use it for all mem addresses.
* final.c (output_asm_insn): Don't allow %LETTER without an
operand number.
* tm-m68k.h, m68k.md, tm-hp9k320.h, tm-news*.h: Use %@ instead of %s.
* tm-alliant.h, alliant.md: Likewise.
* i386.md, out-i386.h: Put `0' after each %L, %W, %B, %S, %Q, %R.
* stmt.c (expand_end_stmt_expr): Pop pending stack args.
* varasm.c (assemble_variable): For 0-size common variable,
allocate at least 1 byte.
* tm-encore.h (ASM_OUTPUT_DOUBLE, PRINT_OPERAND): Use 0f, not 0l,
for doubles.
Mon Mar 13 10:24:56 1989 Richard M. Stallman (rms at ccvi)
* out-i386.h (function_prologue, function_epilogue):
Use call_used_regs, not a copy, so -f options work.
Save regs in the opposite order.
Save regs even starting from 0 if they happen to be call-saved.
* Bug fixes from Rob McMahon.
* loop.c (strength_reduce): When inserting insn to set
nonreplaceable giv, put it after all the consecutive insns
that compute it.
* reload.c (find_reloads): When forcing const to mem,
use the insn's operand mode, not the const's mode.
* reload1.c (choose_reload_targets): Use wider of inmode and outmode
when determining have_groups.
* reload1.c (choose_reload_targets): typo checked wrong insn with
constraint_accepts_reg_p.
* reload1.c (choose_reload_targets): Enable #if-0'd code for
forgetting old reloads in case of output reload from a non-spill-reg.
Sun Mar 12 00:04:49 1989 Richard M. Stallman (rms at ccvi)
* c-parse.y (yyerror): Add forward-decl here.
* c-tree.h: Delete decl here.
* New macro USE_C_ALLOCA.
* cse.c (cse_main): Do alloca (0) to clear out C alloca.
* flow.c (life_analysis):
* local-alloc.c (local_alloc):
* reload1.c (reload_as_needed): likewise.
* loop.c (emit_iv_init_code, eliminate_biv):
Always put constant in a PLUS last.
* gcc.c (make_switch): Unused function deleted.
*gcc.c (switches): Each switch has a `used' field.
(process_command): Init it to 0 when making `switches'.
(do_spec_1, handle_braces, give_switch): Set to 1 when switch is used.
(main): If it remains 0 at the end, print error message.
* expr.c (convert_move, convert_to_mode): Don't truncate a MEM in
place if it is volatile.
* loop.c (strength_reduce): When reducing a giv, if the biv is
incremented between the giv's creation and its use, increment
the reduced giv var *after* its use.
* c-decl.c (duplicate_decls): Warn about proto vs nonproto
only if no other errors apply.
* jump.c (invert_exp): Don't crash if arg is null.
* alliant.md (float*i*f2): Don't allow immediate ops.
(sne): Fix typo, fsne => fsneq.
* expr.c (store_one_arg, expand_call): When size doesn't matter,
pass const0_rtx, not (rtx) 0.
* expr.c (do_jump): Args to invert_exp were missing.
* gcc.c (store_arg): Now 2 separate args for delete-on-success
and delete-on-failure. All calls changed.
(do_spec_1): DELETE_THIS_FILE is meaningful for output files.
* config/xm-alliant.h (LINK_SPEC): Pass -X to linker.
Sat Mar 11 10:30:41 1989 Richard M. Stallman (rms at ccvi)
* tm-*.h, xm-*.h, *.md: Moved to subdir `config'.
* output-*.c: Moved to `config/out-*.c'.
* Makefile (.c.o): Define rule to use -Iconfig when compiling.
(various): Delete the commands from some compilation rules.
Put -Iconfig in other compilation commands.
Also some reordering of variable defs and comments for cleanliness.
(realclean): Change a shell comment to a Make comment.
* fold-const.c (fold): Simplify and extend TRUTH_... operators
knowing that args must be ints and values will be 0 or 1.
* gcc.hlp: New file (for VMS).
* reload1.c (reload): Don't let two 2-groups overlap.
* reload.c (push_reloads): When a plain reg matches a reload
for an increment, don't change the reload_in to a plain reg.
Leave the increment there.
* integrate.c (expand_inline_function): Don't try to inline
unless the parm machine modes really match what's expected.
* stmt.c (emit_case_nodes): default_label is an rtx, not tree.
* tm-next.h (DOLLARS_IN_IDENTIFIERS): Define it as 1.
* output-sparc.c (output_move_double): Don't trust random structs
to be double-word aligned.
* gcc.c: Pass -Wcomments to cpp.
* rtl.def (ASM_OPERANDS): New operands, source file and line.
* rtl.h (ASM_OPERANDS_*): New macros for components of ASM_OPERANDS.
* stmt.c (expand_asm_operands): Use new fields, not REG_ASM_* notes.
* toplev.c (error_for_asm): likewise.
* rtl.h (enum reg_note): Delete REG_ASM_FILE, REG_ASM_LINE.
* combine.c (try_combine): Check explicitly for volatility in I2, I1.
Fri Mar 10 19:30:10 1989 Richard M. Stallman (rms at ccvi)
* c-parse.y (GOTO stmt): Set TREE_USED for the label.
* c-decl.c (poplevel): Warn about unused label.
* c-decl.c (warn_pointer_arith, warn_strict_prototypes): New vars.
(lang_decode_options): Options to set them.
* c-typeck.c (pointer_int_sum, c_sizeof): Maybe warn if bad target.
* c-decl.c (grokparms): Maybe warn if nonprototype fn decl.
* flags.h, toplev.c (warn_shadow): New flag.
* toplev.c (main): Decode it.
* c-decl.c (pushdecl): Maybe warn about any shadowing.
Existing parm-shadowing warning now disabled if shadowing decl
is also a parm.
* flags.h, toplev.c (warn_id_clash, id_clash_len): New flags.
* toplev.c (main): Decode -Wid-clash-LEN.
* tree.c (get_identifier): Implement warning if two idents match.
* toplev.c (compile_file): Warn about statics defined and unused.
* rtl.h (CONST0_RTX): New macro.
* recog.c (offsetable_address_p): New 1st arg says whether to demand
a strictly valid address.
(offsetable_memref_p): Pass nonzero.
* stmt.c (optimize_bit_field): Pass zero.
* cccp.c (main): Allow -Wcomment like -Wcomments.
* c-decl.c (lang_decode_options): Likewise.
Sun Mar 5 15:02:59 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
* m68k.md [tstdf, cmp[sd]f, truncdfsf2, floatsi[sd]f2, add[sd]f3,
sub[sd]f3, mul[sd]f3, div[sd]f3, neg[sd]f2, abs[sd]f2]: Made sure
that the test function's in the match_operands of the define_expand
and define_insn's matched, and made that test function
"register_operand" when both define_insn's really needed registers
in that spot.
Sat Mar 4 00:25:37 1989 Richard M. Stallman (rms at c2v)
* expr.c (emit_push_insn): Don't ever bypass the big-endian
padding at the end.
* cccp.c (deps_output): Break line if would otherwise exceed 75 chars.
Make a name for that value 75.
* combine.c (subst): Handle general case of (subreg (sign_extend X)).
* tm-sun386i.h (CPP_PREDEFINES): Define `sun'.
* fixincludes: change `find' calls to find dirs thru symlinks.
* flow.c (mark_set_1): (set (subreg (reg N))...)
does make reg N significant for this basic block.
Fri Mar 3 13:55:25 1989 Richard M. Stallman (rms at c2v)
* c-decl.c (parmlist_tags_warning): Print an explanation
for the first such warning.
* i386.md (extendsfdf): Let op 1 match op0 if that is an fp reg.
* expr.c (expand_call): Fix stupid errors copying pcc struct value.
* varasm.c (output_constructor): Discard NOP_EXPRs from build_c_cast.
Thu Feb 23 05:55:57 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* Version 1.34 released.
* c-typeck.c (build_c_cast): If EXPR is an error mark, return that.
* fold-const.c (div_and_round_double): Abort if divisor is 0.
(combine): Likewise, for real constants.
(real_zerop): New subroutine.
(fold): Don't try to fold division if divisor is 0.
Don't try to fold reals if can't do arithmetic on them.
Don't try to compare reals for TRUTH_..._EXPR if can't do arith.
Use real_zerop to test reals for zeroness.
For TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR, can simplify based on
first operand alone.
* c-typeck.c (store_init_value): Fix error msg text.
* tm-sparc.h (FUNCTION_PROFILER): Use `mcount'.
* tm-sun4os3.h (FUNCTION_PROFILER): Override it; use `.mcount'.
Wed Feb 22 04:33:22 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-hp9k320.h (CPP_SPEC, CPP_PREDEFINES): Make handling of
-Dmc68000 depend on TARGET_DEFAULT.
* tm-sparc.h (FUNCTION_PROFILER): Missing newline in fprintf.
* integrate.c (expand_inline_function): Don't map struct-value-address
in memory if fn does not use it.
* c-parse.y (check_newline): At skipline, detect eof.
* stmt.c (uninitialized_vars_warning): Change text of warning.
Tue Feb 21 03:58:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* output-sparc.c (output_mul_insn): Handle case of both args
in reg 8, or both in reg 9.
* tm-sparc.h (ASM_SPEC): Define, to handle -pipe.
* tm-sparc.h (FUNCTION_PROFILER): Add omitted fprintf args.
(BLOCK_PROFILER): Likewise. Use tempvar.
* m68k.md (QImode btst): Allow nonoffsetable mem refs.
Mon Feb 20 00:32:42 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* flow.c (mark_used_regs): Don't record about global reg vars.
* config.gcc (convex-*): tm file names are tm-convex1.h, tm-convex2.h.
* tm-vax.h, tm-ns32k.h, tm-alliant.h: Define PCC_STATIC_STRUCT_RETURN.
* gcc.c (compilers): Pass `-a' to cc1.
* tm-sun3.h, tm-sparc.h (LIB_SPEC): Define, to handle `-a'.
* expr.c (emit_push_insn): Copy stack addresses to be passed to bcopy;
old method of preadjustment is broken by changes in emit_library_call.
* c-decl.c (finish_decl): New temp `temporary'; don't get confused
about whether allocation was temporary.
Sun Feb 19 17:03:35 1989 Chris Smith (csmith at mozart)
* tm-convex.h: define PCC_STATIC_STRUCT_RETURN
* convex.md:
remove pshea patterns, movsi does it better.
add ashift:DI abs:DF abs:SF
(tstdi): use a clobbered register instead of a bogus DImode zero.
(trunchiqi2): delete noninstruction cvth.b
(udivsi3, udivhi3, udivqi3): deleted, expand_divmod does it now.
(call, call_value): delete stupid call/ret -> jump optimization.
(call, call_value): flush call_ap_check, use reg_mentioned_p instead.
* convex.md: (movxx): swap constraint alternatives so that the
leftmost alternative is (set =g r). This makes (set mem const)
get combinable input reloads of const instead of uncombinable
output reloads to mem. They still do not combine, but wtf,
I'll inch up on it.
* output-convex.c: (const_double_{high,low}_int): new routines
to pick apart const_doubles for assembler.
Sun Feb 19 01:40:17 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* sparc.md (shift memory right 24 bits): Another `a1' typo.
* config.gcc (convex-*): Delete troublesome whitespace.
* c-decl.c (grokparms): Delete redundant `parm != 0' tests.
* stmt.c (fixup_memory_subreg): Slight simplification.
* tm-sparc.h (FUNCTION_PROFILER): Fill delay slot.
(FUNCTION_BLOCK_PROFILER): Use sethi.
(BLOCK_PROFILER): Use %g2, not %g0. Use sethi.
Sat Feb 18 02:11:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* expr.c (expand_expr): Ignore const array's initial value
if it's an error_mark.
* c-decl.c (finish_decl): Set DECL_INITIAL to an error_mark
if the decl is a permanent node.
* cccp.c (rescan): If traditional, if macro ends inside string,
keep scanning for the end of the string.
(handle_directive): A line of just `#' becomes blank.
(collect_expansion): \ in strings traditionally doesn't hide macro arg.
* m68k.md, alliant.md (addsi3): New alternative a=r+a, in addition
to old a=a+r, needed since reload-insns are not commuted.
Fri Feb 17 03:15:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-m68k.h (PCC_STATIC_STRUCT_RETURN): Define it.
* toplev.c, flags.h: New var flag_pcc_struct_return.
* stmt.c (expand_function_start): Obey new flag and new variable.
* expr.c (expand_call): Obey new flag and new variable.
* varasm.c (assemble_static_space): New function.
* stmt.c (expand_return): If we need cleanups, compute retval first
into pseudo reg, then do the cleanups, then copy it to return reg.
Thu Feb 16 02:59:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* regclass.c (init_reg_sets_1): Win if STATIC_CHAIN_REGNUM undefined.
* expr.c (expand_call): Handle conflict between two precomputed
args that are both function calls returning structures.
* loop.c (move_movables): Bkwds test of m->partial, for a matching reg.
* expr.c (emit_library_call, expand_call): Handle STACK_ARGS_ADJUST.
Wed Feb 15 01:59:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* toplev.c (flag_caller_saves): New var, for -fcaller-saves.
DEFAULT_CALLER_SAVES controls initial value.
* global-alloc.c (find_reg): Do caller saves only if flag set.
* local-alloc.c (find_free_reg): Do caller saves only if flag set.
* tm-alliant.h, tm-convex.h: Define DEFAULT_CALLER_SAVES.
Wed Feb 15 01:59:15 1989 Chris Smith (rms at sugar-bombs.ai.mit.edu)
* caller-save.c: New file.
* regs.h (CALLER_SAVE_PROFITABLE): New macro.
(reg_n_calls_crossed): new int-vector replaces reg_crosses_calls.
* flow.c (allocate_for_life_analysis, propagate_block, dump_flow_info):
Use reg_n_calls_crossed.
* stupid.c (stupid_mark_refs, stupid_life_analysis): Likewise.
* global-alloc.c (find_reg): Sometimes allocate call-clobbered regs
for call-crossing pseudos.
New arg ACCEPT_CALL_CLOBBERED; callers changed.
* local-alloc.c (find_free_reg): Similar changes.
(qty_n_calls_crossed): New int-vector replaces qty_crosses_calls.
(alloc_qty, local_alloc, combine_regs, find_free_reg): change that var.
* regclass.c (call_fixed_regs, call_fixed_reg_set): new vars.
(init_reg_sets_1): Initialize them.
* reload1.c (reload): Call caller-saves processing if needed.
Wed Feb 15 01:59:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* expr.c (expand_expr): INTEGER_CST for DImode: don't handle
endianness here. So CONST_DOUBLE_LOW is always the low word.
* varasm.c (force_const_mem): Handle it here.
* expr.c (convert_move): widening followed by extendsidi2 had braino.
* integrate.c: Don't include ctype.h; not needed and kills Sun cpp.
* m68k.md (cmpsf, cmpdf and their recognizers):
Replace MINUS with COMPARE.
Also, use VOIDmode for COMPAREs, not SF or DF.
* optabs.c (sign_expand_binop): Handle ops such as division where
an unsigned char could be widened and handled with signed int insns.
* expmed.c (expand_divmod): Use that.
* c-typeck.c (digest_init): Allow for type variants in validating
initialization from a string constant.
* c-typeck.c (decl_constant_value): Disable opt. if pedantic or
outside functions, so that validity of program is never affected.
* fold-const.c (fold): Signedness-test for ABS_EXPR was backwards.
Tue Feb 14 01:30:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* cccp.c (main): Don't omit normal output, if we want deps on
a separate stream.
* c-decl.c (grokdeclarator): Don't record any arg types for functions
if -traditional.
* print-tree.c (prtypeinfo): Mention permanent attribute.
* tm-next.h: New file.
* c-typeck.c (decl_constant_value): The DECL_INITIAL may be ERROR_MARK.
* c-decl.c (duplicate_decls): For fns, new static decl overrides
old non-static one.
* emit-rtl.c (gen_lowpar, gen_highpart): Use change_address, so we
preserve volatility, etc.
* stmt.c (expand_expr_stmt): Use emit_filename, emit_lineno
as file and line for any warning.
* emit-rtl.c (emit_line_note): Set those vars.
* c-decl.c (store_parm_decls): If -Wimplicit, warn of arg with no decl.
* recog.c (offsetable_address_p): Use strict_memory_address_p,
since called from reload.c.
Mon Feb 13 03:11:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* sparc.md (compare-to-reg patterns): Some still had MINUS.
* toplev.c (main): Warn if `-a' on system that can't handle it.
* stmt.c (expand_asm_operands): Delete unused local `val'.
(pushcase_range): Likewise for `value'.
(fixup_var_refs): Likewise for `insn'.
* emit-rtl.c (start_sequence): Likewise for `save'.
* loop.c (scan_loop): Likewise for `before_start'.
* expr.c (expand_expr): Delete label `binop1'.
* reload1.c (constraint_accepts_reg_p): Handle SUBREGs of REGs.
Sun Feb 12 05:37:46 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* gnulib.c (__bb_init_func): New function
* tm-m68k.h (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): Defined.
Sat Feb 11 00:05:55 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-sparc.h (FUNCTION_PROFILER): Make it really work.
(BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): New macros.
* final.c (final): Use BLOCK_PROFILER at start of each basic block.
(final_start_function): Use FUNCTION_BLOCK_PROFILER if -a.
(end_final): New fn to output the block-profiling tables.
* toplev.c (profile_block_flag): Set if -a.
(compile_file): Call end_final.
* combine.c (try_combine): Avoid combining in most cases if I3
has an inc or dec and I1 or I2 uses the same register.
* tree.c (size_in_bytes, int_size_in_bytes): Use type's main variant.
* c-typeck.c (actualparameterlist): Error if parm type is incomplete.
* expr.c (expand_call): Ignore args that have incomplete type.
Fri Feb 10 02:26:02 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-parse.y (case stmts): strip dummy NOP_EXPRs.
* reload1.c (reload_as_needed): Clear reg_{has,is}_output_reload here,
(choose_reload_targets): not here.
Thu Feb 9 01:35:55 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* output-sparc.c (output_mul_by_constant): Forget cc status.
* stmt.c (assign_parms): Don't put volatile parms in regs.
* vax.md (jlbs/jlbc recognizers): Move them before jbc/jbs recognizers.
* cse.c (fold_rtx): Handle (EQ (COMPARE ...) (CONST_INT 0)).
* c-typeck.c (default_conversion, digest_init): For static const
nonvolatile scalar variable, use its initial value if known.
* expr.c (expand_expr: case COMPONENT_REF): If containing structure
comes out volatile, leave the component MEM volatile too.
* hard-reg-set.h: Fix multi-word case macros to swallow semicolon.
* c-typeck.c (default_conversion): In array=>ptr, volatility
of target type comes from TREE_THIS_VOLATILE, not TREE_VOLATILE.
* reload1.c (forget_old_reload_1, choose_reload_targets):
New array reg_is_output_reload is converse of reg_has_output_reload.
forget_old_reload_1 needs both.
Wed Feb 8 01:26:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* reload1.c (forget_old_reloads_1): New fn, guts of forget_old_reloads.
Do process a spill reg if it isn't used for reloading in this insn.
(forget_old_reloads): Deleted, replaced with note_stores.
(reload_as_needed): Undo Feb 1 change.
Call forget_old_reloads_1 on pseudos autoincremented and not reloaded.
* c-typeck.c (convert_for_assignment): Handle variant types.
* c-decl.c (lang_decode_option): -Wall implies -Wunused.
Tue Feb 7 01:32:28 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* combine.c (try_combine): Don't try adding outputs to an asm_operands.
* cse.c (CHEAPER): Don't ever let a hard reg get ahead of a pseudo.
* stmt.c (fixup_gotos): Don't crash on undef label if THISBLOCK is 0.
* c-decl.c (parmlist_tags_warning): New fn.
* c-parse.y (parmlist, parmlist_or_identifiers): Call it,
to warn about any tags defined inside the parmlist.
* c-decl.c (grokparms): Don't warn about ptr to incomplete type.
The new warning is better.
Mon Feb 6 01:11:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* expr.c (store_constructor): Incorrect ALIGN arg in store_field calls.
* c-parse.y (%union): Delete unused alternative.
* c-decl.c (grokparms): Use main variant to test for ptr to incomplete.
* c-decl.c (finish_enum): Delete superfluous init for `pair'.
* cse.c (fold_rtx): Optimize X+0, X-0 in floating point.
Fix typo in PLUS case; omitted value to compare GET_MODE_CLASS against.
(equiv_constant): Allow CONST_DOUBLE.
* cse.c: Optimize past if-statements that are known to fail.
(cse_insn): If condjump becomes uncond to end of this block,
set cse_skip_to_next_block.
(cse_basic_block): If that happens, ignore rest of block, and maybe
treat next block as part of this one (if tables have room).
Resume insn that starts next basic block to be scanned.
(cse_main): Make room for at least 500 qtys.
(cse_end_of_basic_block): Subroutine broken out of cse_main.
* c-parse.y (hash, is_reserved_word): Rewrite: new hash technique.
* c-decl.c (duplicate_decls): Be smart about proto vs nonproto mismatch
involving a function definition.
Sun Feb 5 17:31:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* alliant.md (movdi): Typo in `fmoved'.
(ftruncsf2): Handle moving into fp reg.
* jump.c (jump_optimize): Typo in testing PRESERVE_DEATH_INFO_REGNO_P.
* reload1.c (choose_reload_targets): Move all death notes to the
output reload insn.
* m68k.md (fix_truncsfsi2,fix_truncdfsi2): Use accurate rtl pattern.
* loop.c (delete_insn_forces): Use presence of REG_RETVAL to check
for value-of-library-call insn.
Sat Feb 4 18:17:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* integrate.c (expand_inline_function): Make addresses of stack
slots valid somehow.
* tm-3b1.h (DIVSI3_LIBCALL, etc.): Define these macros; avoid gnulib.
* expmed.c (store_bit_field): Avoid (subreg (mem)) when converting
VALUE1 to SImode.
* jump.c (jump_optimize): Do delete USE and CLOBBER insns.
This is needed for proper jump optimization.
* rtl.def (COMPARE): New code.
* *.md (compare and related patterns): Use COMPARE, not MINUS:VOID.
* loop.c (eliminate_biv, can_eliminate_biv_p): Likewise.
* cse.c (fold_rtx, fold_cc0, cse_insn):
* output-m88k.c (output_{f,}compare, output_store):
* output-sparc.c (strict_single_insn_op_p, single_insn_src_p, safe_insn_src_p):
* combine.c (subst):
* jump.c (jump_back_p):
Fri Feb 3 18:34:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* output-i386.c (notice_update_cc): If arith insn sets the cc's,
discard all remnants of previous cc value and flags.
* sparc.md (ashiftrt mem by 24): Fix typo `a1'.
Thu Feb 2 14:55:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* output-sparc.c (output_mul_insn): Clear the CC status.
Wed Feb 1 20:01:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* Version 1.33 released.
* reload1.c (reload_as_needed): On entering new basic block,
if it didn't need reload regs, forget all inherited contents of those.
* tm-alliant.h (NOTICE_UPDATE_CC): Floating moves don't set the cc's.
Also delete the clauses and tests for FPA regs.
Tue Jan 31 21:51:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* config.gcc: Handle convex-c1, convex-c2.
* tm-convex1.h, tm-convex2.h: New files that include tm-convex.h.
* tm-convex.h: Define switches -mnoc1, -mnoc2.
* config.gcc: rename `nofp' to `nfp', to match the file names.
Mon Jan 30 22:12:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* output-sparc.c (output_delay_insn): Extract the operands,
call alter_subreg, constrain_operands and NOTICE_UPDATE_CC.
So callers other than output_eager_then_insn don't lose.
(output_eager_then_insn): No need to do that stuff.
* symout.c (symout_block_symbols): Handle (MEM (REG)) for
variable-sized arrays.
* tm-encore.h (ASM_SPEC): Always pass -j; avoid jump-range lossage.
Sun Jan 29 17:06:26 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* alliant.md: Fix refs to CONST_DOUBLEs to use CONST_DOUBLE_{HIGH,LOW}.
* combine.c (subst): (minus (zero_extend ...) (const_int ...)) opt.
now limited to within the context of (set (cc0) ...).
Sat Jan 28 14:26:08 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* cse.c (fold_cc0): Missing `&' extracting CONST_DOUBLEs.
(fold_rtx): Don't put CONST_DOUBLEs together into a (CONST (PLUS...)).
* output-convex.c (gen_cmp): Recognize CONST_DOUBLE as a constant.
* tree.c (build_real_from_int_cst): Typo in REAL_ARITHMETIC case.
* Makefile (bootstrap2): Don't use bootstrap3 as subroutine.
* varasm.c (force_const_mem): Put the CONST_DOUBLE on the chain
if its MEM is stored in it; so it can be cleared at end of function.
* stmt.c (emit_case_nodes): Put a compare before each cond-jump.
Two cond-jumps after one cond is invalid and makes cse produce garbage.
Fri Jan 27 01:05:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-sun2.h (CPP_SPEC): Define __HAVE_68881__ only if -m68881.
* c-decl.c (start_decl): Don't expand_decl if DECL already has rtl.
(grokparms): If just declaring fcn, incomplete parm type is just
a warning, and don't discard the specified type.
* expmed.c (expand_divmod): Be smarter about not clobbering args
with intermediate results; one mem can clobber another, and a reg
can clobber a mem.
* tm-i386.h (FUNCTION_PROFILER): Use LPREFIX. May actually work now.
* tm-i386gas.h: Include tm-bsd386.h, not tm-att386.h.
This means changing asm syntax.
#undef DBX_NO_XREFS and DBX_CONTIN_LENGTH.
* sparc.md (eager branch peepholes): Don't forget 2nd arg to
safe_insn_src_p.
Don't print warnings.
* output-sparc.c: (strict_single_insn_op_p): Return 0 for floating
REG or MEM, since copying that may take 2 insns.
(operands_satisfy_eager_branch_peephole): require delay insn to
be strict_single_insn_op_p as well as safe_insn_src_p.
(operand_clobbered_before_used_after): Don't print warnings.
* varasm.c (decode_rtx_const): Clear entire structure incl. gaps.
Avoids spurious hash mismatches.
(force_const_mem): If CONST_DOUBLE, store its CONST_DOUBLE_MEM field.
Also look in that field rather than hashing, to save time.
* c-typeck.c (build_c_cast): If value is literal, mark NOP_EXPR as so.
(store_init_value): Change error msg.
* c-decl.c (duplicate_decls): Classify prototype vs nonprototype
mismatches better.
* tm-3b1.h: Fix comment.
Wed Jan 25 12:46:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* Makefile (cleanlinks): Use -f.
Tue Jan 24 17:54:16 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* cse.c (canon_hash): Fix paren error in last change.
* varasm.c (immed_real_const_1): Missing arg to bcmp.
Mon Jan 23 02:43:45 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* stor-layout.c (layout_type): BLKmode elts force array to be BLKmode.
* genpeep.c, genoutput.c, genemit.c: Put `#include "real.h"' in output.
* stmt.c (expand_expr_stmt): No "no effect" warning for error-mark.
* varargs.h: Rename implicit arg name to __builtin_va_alist
which triggers code in assign_parms. Does this really matter?
* sparc.md (sne): New define_expand.
(seq recognizers): Handle sne as well.
* output-sparc.c ({strict_,}single_insn_src_p):
Some NEG and MINUS insns are actually 2 asm insns.
(safe_insn_src_p): No floating arith is safe; they can trap.
(eq_or_neq): New fn, for seq/sne recognizers.
* c-decl.c (grokdeclarator, size of array type):
Strip from SIZE any NOP_EXPRs that don't change anything.
* reload.c, recog.c: Include real.h so constraint macros can examine
CONST_DOUBLEs.
Sun Jan 22 04:12:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-decl.c (init_decl_processing): Define __builtin_saveregs.
* tree.h: likewise.
* expr.c (expand_builtin): Handle it.
* tm-sparc.h: Define TARGET_EAGER and -meager.
* sparc.md (eager branch peepholes): Reenable, but test TARGET_EAGER.
Change fb insns to use %F. Delete `,a' from some of them.
* jump.c (jump_optimize): Don't delete USE and CLOBBER insns.
* xm-vms.h (const): Define it as empty.
* make-cccp.com: Move the rename of cexp_tab.c.
Compile cccp.c with no macro definitions.
* cccp.c (main): VMS conditional for setting max_include_len.
Sat Jan 21 12:53:00 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* varargs.h (va_start): On sparc, call __builtin_saveregs.
Delete the old conditional that used va-sparc.h.
Rename macros and locals to start with two underscores.
* va-sparc.h: File deleted.
* c-decl.c (store_parm_decls): Initialize OTHERS.
* stmt.c (assign_parms): Obey layout_decl.
Fri Jan 20 02:19:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* cse.c (fold_rtx): For SYMBOL_REF and LABEL_REF, mask address
to 16 bits.
* tree.h (NUM_TREE_CODES): NUM_TREE_CODE renamed.
Thu Jan 19 13:53:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-typeck.c (mark_addressable): For global reg var, report error.
Now returns an int; value of 0 means caller should fail.
All calls (in this file) changed.
* stor-layout.c (layout_decl): Don't let an more than 1 word
of any aggregate go in any 1 register. (Needed for machines whose
integer regs are 64 bits).
* tm-convex.h, xm-convex.h, convex.md, output-convex.c: new files.
* expr.c (convert_move): Use extendqidi2, etc. for converting
small ints to double ints. Use zero_extendsidi2 rather than
clearing the high half.
Wed Jan 18 01:20:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* varasm.c (make_decl_rtl): If global `register' decl is invalid,
make ordinary non-register rtl.
* output-sparc.c (operand_clobbered_before_used_after): new fn.
(reg_clobbered_p, safe_insn_src_p): New fns.
(single_insn_src_p): Treat constants all as ok, even though not
always literally so. Also accept some SIGN_EXTENDs and ZERO_EXTENDs.
(strict_single_insn_src_p): New fn, like above but is strict
about constants and constant memory addresses.
(relop): New fn.
(output_move_double): Don't make a MEM, and don't use %m.
(output_delayed_branch): New name for output_delay_insn.
Now handle non-small constant operands.
Avoid duplicate loads of g1 for constant addresses.
Use recog_operand directly for output of the delay insn.
(output_delay_insn): Now a completely new fn.
(output_eager_then_insn, next_real_insn_no_labels): New fns.
(operands_satisfy_eager_branch_peephole): New fn.
* sparc.md: New peepholes for testing a recently used operand.
New peepholes for delayed branches, incl. conditional ones.
** Some of them commented out because they seem not to work.
(andcc recognizer): Fix typo, missing %.
(bgt): Change bgt to bg in output.
(reversed jumps): Replace with one pattern using match_operand.
It uses %F to output the condition.
(movsi): For round-valued immed const, use just a sethi.
For other immed, use explicit sethi and or.
(movhi, movqi): use `move' for reg source or small int source.
For other immed, use explicit sethi and or.
(movsi, etc.): Handle all constant addresses like SYMBOL_REFs.
(movsf): Delete never-used duplicate code for constant addresses.
(addsi3, subsi3, cse'd multiply): Use sethi and or, rather than set.
(andsi3, iorsi3, xorsi3): Likewise.
(jump): Make an annulled branch.
* tm-sparc.h (PROMOTE_PROTOTYPES): Define this.
(GO_IF_LEGITIMATE_ADDRESS): Now accept all constant addresses;
also cleaned up.
(NOTICE_UPDATE_CC): Don't change the G1 status when storing in memory.
Assume all PARALLEL insns are peepholes.
(PRINT_OPERAND): New codes C and N for outputting conditions,
either forward or reversed. Also F for reversed floating.
* jump.c (delete_for_peephole): New function to delete range of insns.
* genpeep.c (gen_peephole): Output code to use this.
* Makefile (install): Fix typo, had $${name} for $${file}.
Tue Jan 17 00:00:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* i386.md (ashlsi3): Use addl or leal for special cases.
* c-decl.c (grokdeclarator): Make a non-global VAR_DECL public
if it is external.
* masm386.c: Clean up formatting.
* cse.c (fold_rtx): Typo simplifying x|0 or x^0
when the 0 comes second.
* expmed.c (store_fixed_bit_field): For halfwords, verify that
the field fits in an *aligned* halfword.
(extract_fixed_bit_field): likewise.
* expmed.c (store_split_bit_field): New arg align, passed in from
store_fixed_bit_field and passed back to it.
(extract_split_bit_field): likewise.
* expr.c: Reinsert changes from Jan 2, mysteriously deleted Jan 3.
Also changes from Dec 23, Dec 28 and Dec 29.
* tm-i386.h: Likewise for changes from Dec 30.
* c-typeck.c (build_component_ref): If field's type is error-mark,
return an error-mark.
Mon Jan 16 14:16:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* genpeep.c (main): Output code to exit early if insn is followed
by a barrier.
(gen_peephole): Reject barriers just like labels.
* stmt.c (do_jump_if_equal): New arg UNSIGNEDP, for emit_cmp_insn.
Caller changed. Now static.
* final.c (final): Set INSN_DELETED_P in insns when output.
* final.c (final): Re-set BODY if peephole does anything.
* c-decl.c (grokparms): Ignore anything but PARM_DECLs in the list.
(store_parm_decls): If we had a prototype, separate out anything other
than a PARM_DECL declared in it, and pushdecl those at the end,
after DECL_ARGUMENTS is set.
* stmt.c (expand_end_case): Do stack adjusts after computing index.
* expr.c (store_one_arg): Handle padding for case of BLKmode
for which space was preallocated.
* integrate.c (copy_rtx_and_substitute): When copying asm insn,
preserve sharing of the input-operand vectors.
(expand_inline_function): Clear {orig,copy}_asm_operands_vector
to make that mechanism work.
(save_for_inline, copy_for_inline): Likewise.
* stmt.c (expand_asm_operands): Reject `+' in constraints.
Every output constraint requires `='; inputs reject it.
* stmt.c (expand_function_end): Arg to fixup_gotos was missing.
Sun Jan 15 00:28:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* cccp.c, gcc.c (main): Handle SIGPIPE.
(pipe_closed): New fn; report suitable fatal error.
* loop.c (loop_optimize): Initialize moved_once.
* gcc.c (do_spec): Don't call `execute' if value != 0.
Delete redundant second call to do_spec_1.
* toplev.c (compile_file): Make declared-but-not-defined warnings
only if -Wunused.
* stmt.c (emit_case_nodes): Fix typo setting gen_ble_pat.
* tm-sparc.h ({U,}MODSI3_LIBCALL): Name was wrong.
* gcc.c (env_exec_prefix refs): Don't try to open via it if it's null.
* output-sparc.c (output_store, output_load_{fixed,floating}):
Fixed confusions between the mem ref and its address.
* cse.c (canon_hash): global_regs has entries only for hard regs.
* flow.c (insn_dead_p, mark_set_p, mark_used_regs): Likewise.
* cse.c (fold_rtx): More simplifications for MULT, IOR, AND, XOR
DIV and shifts with one arg 0 or 1.
Sat Jan 14 11:41:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-typeck.c (build_array_ref): If pedantic, check for regdecl arrays.
* fixincludes: Make all subdirs in advance, so no need for `dirname'.
* genpeep.c (gen_peephole): Delete code to increment LABEL_NUSES;
instead, clear JUMP_LABEL for any jumps being deleted.
No need to test INSN1 for being a label, since not called then.
[If any of the matched insns is a JUMP_INSN, set want_jump,
and in that case make the matched peephole a JUMP_INSN itself.]
That's in an #if 0 now; it's good in jump, but not in final.
* jump.c (jump_optimize): Don't do peepholes here.
* final.c (final): Do them here.
* jump.c (jump_optimize): In optimizing `if (foo) bar; else break;',
don't try to invert anything but a standard-looking conditional jump.
* jump.c (jump_optimize): Do peepholes on ALL BUT the first pass.
* gcc.c (env_exec_prefix): New var used like user_exec_prefix
but set from envvar GCC_EXEC_PREFIX.
Fri Jan 13 13:21:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* genpeep.c (gen_peephole): Test INSN1 for a label at the very start,
then test following insns at the end of the loop.
* sparc.md (call recognizers): do CC_STATUS_INIT, for %g1.
Thu Jan 12 02:13:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* varasm.c (make_decl_rtl): Recognize more error cases for reg vars:
BLKmode, or initializer given.
Distinguisn missing asm from invalid name.
* expr.c (expand_call): Never return 0; return const0_rtx instead.
This makes expand_expr more uniform.
* c-decl.c (grokparms): For ptr to incomplete type, just warn;
don't change the parm's type.
* stmt.c (expand_return): Set RETVAL_RHS so as to recognize
tail-recursive fcn returning void.
Unconditionally test value of expand_expr for being a REG.
* reload.c (find_reloads): Don't process insns that have
no constraint alternatives. No more need for have_constraints.
* recog.c (constrain_operands): New local var nalternatives.
Don't bother checking the insn if nalternatives is 0.
Wed Jan 11 01:27:48 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* Implement global register decls.
* varasm.c (make_decl_rtl): Handle global register vars.
(make_function_rtl): Set function_defined: after 1st function dfn.
(assemble_variable): Ignore global register vars.
* c-decl.c (grokdeclarator): Don't reject global register decls.
(builtin_function): Use make_decl_rtl, not make_function_rtl,
to avoid setting function_defined.
* regclass.c (init_reg_class{,_1}): Init and process global_regs.
They are fixed, and call-clobbered.
* flow.c (insn_dead_p): Storing one of global_regs is never dead.
(mark_used_regs, mark_set_1): A global reg is never dead.
* cse.c (canon_hash): Consider global regs volatile.
* expr.c (do_jump): Know how to invert jumps which are sequences.
* dbxout.c, symout.c, final.c: On USG, use our own stab.h.
* tm-i386gas.h: New file for GAS on sysV (with DBX debugging info).
* m68k.md (bfchg and bfins patterns): Make # alternatives uniform.
* alliant.md: Likewise; also in movdf patterns.
* genoutput.c (output_epilogue): Spurious `break' disabled
error check for mismatched # of alternatives.
(output_epilogue, scan_operands): Errors in input are not fatal.
* flow.c (regno_uninitialized): Avoid crash if no basic blocks.
* sparc.md (move insns): Delete special patterns that handled
symbolic constant addresses. The main move patterns now do this.
* output-sparc.c (output_store, output_load_{fixed,floating}):
Subroutines to do the work for this; has the code from those
special patterns. Also fixed bugs in testing against cc_status.mdep.
* output-sparc.c (output_delay_insn): Clear the CC status.
This is necessary for %g1 in the case of a call insn.
* tm-i386.h (REG_CLASS_CONTENTS): INDEX_REGS is now all but ESP.
(REGNO_REG_CLASS): Corresponding change.
(REG_CLASS_FROM_LETTER): Eliminate `x' letter since not used.
* optabs.c (emit_cmp_insn): New arg ALIGN, used for BLKmode.
All callers changed.
Pass alignment (as rtx) as 4th arg to cmpstr gen functions.
Use cmpstrhi if available.
* expr.c (compare): Only this call passes a nonzero ALIGN.
* expr.c (emit_push_insn, emit_block_move): Pass alignment (as rtx)
as 4th arg to movstr gen functions.
Tue Jan 10 23:43:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* stor-layout.c (layout_type): Use BLKmode, if a struct isn't
aligned well enough for a scalar mode.
* expr.c (expand_expr): For static CONSTRUCTOR, ensure memory
address is made valid.
* genpeep.c (match_rtx): For MATCH_OPERATOR, set max_opno, n_operands.
Mon Jan 9 17:07:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* varasm.c (output_constant): Split strings every 2000 chars.
* stmt.c (expand_end_case): Test bkwds, handling constant switch arg.
Fri Jan 6 09:11:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* output-sparc.c (output_delay_insn): Add parens to first if test.
(output_move_double): Turn addr for `sethi' into MEM for %m.
* c-typeck.c (convert_for_assignment): move test for ERROR_MARK.
* c-parse.y (unary_expr): Allow cast_expr as arg of unary op.
* stmt.c (expand_decl): Don't abort if FUNCTION_DECL lacks rtl;
assemble_variable is called after this.
* c-parse.y (primary -> identifier): Separate case for undeclared
identifier outside of functions; avoids confusing error msgs.
Thu Jan 5 01:24:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* Makefile (install): Ignore errors in all `if' commands.
Create $(libdir) if nec.
* Makefile (insn-*.[ch]): Put in empty commands. May help Ultrix Make.
* stmt.c (emit_case_nodes): New arg UNSIGNEDP says do unsigned jumps.
Arg INDEX is an rtx, not a tree.
(expand_end_case): Pass that arg.
(node_has_{low,high}_bound): check for overflow, avoid confusion.
Wed Jan 4 02:24:21 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* sparc.md (movdi, movdf): Use `&' constraint when loading reg from;
otherwise can lose on (set (reg X) (mem (plus (reg X) (reg X+1)))).
* expr.c (emit_push_insn): For memory scalar partially going in regs,
copy each word to reg before pushing. Avoids memory-to-memory move.
Make the displaced address valid.
Also delete unfinished STACK_OFFSET variable.
* c-parse.y (check_newline): Read just one #-directive and return.
This prevents lossage when toplev.c calls it to get the main input file
name, and it gets a following #ident as well.
* c-decl.c (lang_decode_option): Set warn_cast_qual for -Wcast-qual.
* c-typeck.c (build_c_cast): Issue some warnings if set.
* tm-3b1.h (ASM_OUTPUT_CASE_LABEL): Missing `;'.
Tue Jan 3 18:07:31 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* expr.c (emit_library_call): Do force_operand on each operand
if it isn't a REG, MEM or constant.
Do this, or mode conversions, earlier, before loading any hard regs.
* m68k.md (addsi3) [SGS]: Put a zero displacement in the `lea'.
* c-typeck.c (default_conversion): Don't lose `const' or `volatile'
when converting array type to pointer.
Mon Jan 2 01:18:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* expmed.c (store_bit_field, store_fixed_bit_field): New arg,
alignment in bytes the structure is known to have.
(store_fixed_bit_field): Handle working in halfwords,
in case the pointer isn't known to have fullword alignment.
* expmed.c (extract_bit_field, extract_fixed_bit_field): likewise.
(extract_bit_field): fix unsignedp arg to extract_fixed_bit_field.
* expr.c (store_field): New arg, passed to {store,extract}_bit_field
(expand_assignment, store_constructor): Pass that arg.
(expand_expr): Pass new arg to extract_bit_field.
* m68k.md (casesi_2 recognizer): Offset always 6 for 3b1.
* c-typeck.c (convert_for_assignment): Strip from rhs no-op NOP_EXPRs
put on by build_c_cast (to make the result not an lvalue).
(build_modify_expr, build_compound_expr): likewise.
(build_conditional_expr): likewise.
(actualparameterlist, build_function_call): likewise.
(default_conversion, truthvalue_conversion): likewise.
* loop.c (move_movables): If reg has moved out of one loop,
divide `savings' by 2.
Sun Jan 1 03:00:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-typeck.c (truthvalue_conversion): Distribute the conversion
into the arms of a COND_EXPR.
* cse.c (fold_rtx): Don't fold a MINUS with VOIDmode
into a symbolic constant--it's incorrect.
* cse.c (cse_insn): If SRC is a subreg with known value, simplify it.
* integrate.c (copy_rtx_and_substitute): Allow a ref to a part of
MEM parm whose actual parm is a reg, provided it refs
the low part of the MEM.
(function_cannot_inline_p): Don't inline functions which have
aggregate parameters and take their addresses. This could produce
refs to non-low-parts, which copy_rtx_and_substitute can't handle.
* c-typeck.c (build_modify_expr): If lhs is COND_EXPR,
make a COMPOUND_EXPR to ensure the rhs is computed before the branch.
* Implement -pipe.
* gcc.c (do_spec_1): `|' is now a special delimiter
which goes in the argbuf.
When a newline is preceded by a `|', delete it if no -pipe.
Otherwise, don't execute yet, and keep scanning.
(do_spec): At end, if we have stuff with no newline, execute it.
(handle_braces): Implement %{|foo:...}.
(execute): If argbuf contains some `|'s, run several processes
and pipe them together.
(pexecute): new subroutine to make one of the processes.
(find_exec_file): new fn to search for program to execute.
(record_temp_file): new arg FAIL_ONLY.
(store_arg): 2nd arg == 3 means delete file on failure.
This is used for output files.
(delete_temp_files): delete certain files only if fail.
* cccp.c (include_defaults): /usr/include before /usr/local/include.
* recog.c (asm_noperands): 1-off in loop checking CLOBBERS
when no output operands and PARALLEL.
* expmed.c (negate_rtx): Sign-extend the high bits rather than clear.
* cse.c (fold_rtx): fold negation of real values.
(fold_cc0): fold comparisons on real values.
* Makefile (install): Use $(INSTALL) for gcc.1 and files in USER_H.
* Handle floating-point problems for cross-compilation.
* real.h (CONST_DOUBLE_LOW, etc.): new macros to access CONST_DOUBLE.
* varasm.c (immed_double_const, decode_rtx_const): Use these.
({force,clear}_const_double_mem): Likewise.
* output-*.c (output_move_double): Use these.
* output-m68k.c (standard_{68881,sun_fpa}_constant_p): Likewise.
* tm-*.h (PRINT_OPERAND): Use these.
* output-i386.c (print_operand): Use these.
* final.c (output_addr_const): Likewise.
* emit-rtl.c (gen_rtx): Delete special code for CONST_DOUBLE.
* real.h (union real_extract): Portable type for storing real as ints.
* varasm.c (immed_double_const, decode_rtx_const): Use these.
* varasm.c (immed_real_const_1, decode_rtx_const):
Don't assume REAL_VALUE_TYPE is 2 ints long.
* emit-rtl.c (init_emit_once): Likewise.
* real.h (REAL_VALUE_TYPE): Define as `double' if not defined.
(REAL_IS_NOT_DOUBLE): Define this if default REAL_VALUE_TYPE not used.
(REAL_VALUES_EQUAL, REAL_VALUES_LESS): Define, if not already defined.
(REAL_VALUE_LDEXP, REAL_VALUE_ATOF): Likewise.
* tree.h (struct tree_real_cst): Use REAL_VALUE_TYPE for the value.
* rtl.c (init_rtl): Increase length of CONST_DOUBLE if REAL_VALUE_TYPE
needs more space. Change the rtx_format element to match.
* varasm.c (immed_real_const_1): 1st arg now has REAL_VALUE_TYPE.
(force_const_mem): Assume a CONST_DOUBLE contains REAL_VALUE_TYPE.
* emit-rtl.c (init_emit_once): Likewise.
And use REAL_VALUE_ATOF to get a floating zero.
* optabs.c (expand_float): Use REAL_VALUE_TYPE, REAL_VALUE_LDEXP.
* c-parse.y (yylex): Likewise, and use REAL_VALUE_ATOF.
* fold-const.c (split_tree): Don't accept REAL_CSTs.
(combine, fold_convert, fold): Use REAL_ARITHMETIC if defined;
else don't fold reals if they are not doubles.
* tree.c (build_real_from_int_cst): Likewise.
* print-tree.c (dump) [REAL_IS_NOT_DOUBLE]: output float value
in hex, since we don't know how to do it right.
Sat Dec 31 14:15:13 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* optabs.c (init_optabs): Handle new macros {U,}MULSI3_LIBCALL,
DIVSI3_LIBCALL, MODSI3_LIBCALL.
* tm-sparc.h: Define {,U}{MUL,DIV,MOD}SI3 to call Sun's library direct.
* tm-sun3-nfp.h, tm-sun3-fpa.h: New files.
Fri Dec 30 00:14:36 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* cccp.c (main): Certain envvars specify a file to write deps info to.
* toplev.c (compile_file): Warn about undefined fns declared static.
* m68k.md (casesi_2 recognizer) [SGS] RTX_INTEGRATED_P test backwards.
* tm-3b1.h (ASM_OUTPUT_CASE_LABEL): Likewise. Also missing `\'.
* reload1.c (count_occurrences): New function.
(choose_reload_targets): Don't delete a reload if the same reg
is used elsewhere in the current insn.
(delete_output_reload): code split out from choose_reload_targets.
* c-typeck.c (build_c_cast): Always put on some operator,
so the cast is never an lvalue for strict ANSI.
* c-typeck.c (initializer_constant_valid_p): Don't depend on
distinction between NOP_EXPR and CONVERT_EXPR.
* c-convert.c: Fns reordered; new comments.
* fold-const.c (fold): If simplifying a NOP_EXPR within a BIT_AND_EXPR,
return a NOP_EXPR.
New var TYPE holds type of expr.
* c-parse.y (expr_no_commas): Split off cast_expr and unary_expr,
to reject `sizeof (int) foo'.
* toplev.c (main): Treat plain `-' as input filename.
* final.c (final): If an insn's output routine returns 0,
it means to output the deleted compare insn immediately preceding.
* m68k.md (branch insns): Use 0 as 3rd arg for OUTPUT_JUMP
rather than explicitly clearing the overflow flag.
* tm-i386.h (OUTPUT_JUMP): Really use NO_OV; don't abort.
* i386.md (branch insns): Put real data (sometimes 0) in 3rd arg
of OUTPUT_JUMP. 0 means preceding test may not be deleted.
(lea pattern): Clear the cc's.
* output-i386.c (notice_update_cc): various arith insns set the cc's.
Thu Dec 29 13:22:01 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* stmt.c (expand_decl_init): Do nothing for static decls.
* reload.c (find_reloads_address{,_1}): Return 1 iff entire arg
was reloaded as a whole, else 0.
(find_reload): If find_reloads_address returns 1, don't let that MEM
satisfy a `>' or `<' constraint.
* m68k.md (cmpmb): Delete special pattern, make cmpqi handle it.
The special pattern couldn't handle reloading the incremented register.
* integrate.c (copy_rtx_and_substitute): Test BYTES_BIG_ENDIAN,
not BITS...
* combine.c (subst): Consider big-endian correction
when simplifying (subreg (mem ...) ...).
* reload.c (find_reloads): Don't crash if matching operands in `asm'
are both read or both write.
* expr.c (emit_push_insn): Address for movstr must be XINNER, not X.
* toplev.c (main): Typo parsing `-fno...'.
Wed Dec 28 13:07:21 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* toplev.c (rest_of_compilation): `volatile' fns need jump_optimize
for warnings, as if -Wreturn-type.
* c-typeck.c (c_expand_return): Warn about `return' in a `volatile' fn.
* c-decl.c (finish_function): Warn if `volatile' fn can drop thru end.
* cse.c (canon_reg): Handle nulls as subexpressions.
(fold_rtx, canon_hash, mention_regs, exp_equiv_p): Likewise.
* loop.c (invariant_p, replace_regs, replace_call_address, may_trap_p,
{basic,general}_induction_var): Likewise.
* expr.c (expand_call): Handle `const' functions:
Local IS_CONST is 1 if function is const.
Attach REG_RETVAL and REG_LIBCALL notes around the call.
Copy fn address to register outside of those notes.
Likewise precompute all parms outside them.
* expr.c (expand_call): If fn is volatile, emit barrier after the call.
* c-decl.c (grokdeclarator): Allow function declared const or volatile.
Sat Dec 24 18:40:12 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* integrate.c (function_cannot_inline_p): If STRUCT_VALUE_INCOMING
or STRUCT_VALUE is defined, can't inline functions returning BLKmode.
Fri Dec 23 13:26:26 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* expr.c (store_constructor): Compute array's size
with int_size_in_bytes.
* varasm.c (assemble_variable): If shared data, go to data section
before outputting an uninitialized symbol.
* tm-sequent.h (ASM_OUTPUT_ALIGN_CODE): Missing backslash.
(SHARED_SECTION_ASM_OP): Macro defined.
* tm-seq386.h (SHARED_SECTION_ASM_OP): Macro defined.
* c-typeck.c (c_expand_asm_operands): Warn if output op is `const'.
* Fix problem where a stmt expr in an initialization
refers to the variable it is initializing.
* stmt.c (expand_decl_init): New fn split out from `expand_decl'.
* c-decl.c (finish_decl): Call that.
Don't call expand_decl if already done.
(start_decl): Call expand_decl if type is complete already.
* Makefile (install): Typo in ranlib command.
Thu Dec 22 15:57:12 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tree.h (tree_identifier): New field.
(IDENTIFIER_ERROR_LOCUS): Accessor for it.
* c-parse.y (primary => IDENTIFIER):
Undeclared variable gets one err msg per function it appears in.
* ns32k.md (andsi3): Delete extra brace.
* alliant.md, xm-alliant.h, tm-alliant.h, output-alliant.c: New files.
* combine.c (SUBST, SUBST_INT): Store new field `is_int'.
(copy_substitutions): Don't copy an int as an rtx.
* Makefile (INSTALL): Install gcc.1 properly.
* tm-ns32k.h (FUNCTION_PROLOGUE, ASM_OUTPUT_ALIGN_CODE):
Add missing backslashes.
See file OChangeLog.
Local Variables:
mode: indented-text
left-margin: 8
fill-column: 76
version-control: never
End: