From: Jeff Law Date: Fri, 15 Aug 1997 05:15:07 +0000 (-0600) Subject: Remove old (pre gcc-2.7.2) ChangeLog files. X-Git-Tag: releases/egcs-1.0.0~871 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=37a70e57279e1c5d63c0453daaf0559043c2eac9;p=thirdparty%2Fgcc.git Remove old (pre gcc-2.7.2) ChangeLog files. Remove pre-built into files. From-SVN: r14799 --- diff --git a/gcc/ChangeLog.0 b/gcc/ChangeLog.0 deleted file mode 100644 index 2e413b1c25fe..000000000000 --- a/gcc/ChangeLog.0 +++ /dev/null @@ -1,6671 +0,0 @@ - -Wed Dec 21 02:46:34 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Version 1.32 released. - - * toplev.c (main): Vax pcc enforces goto-less programming - with fatal error. - - * stmt.c (fixup_memory_subreg): New arg INSN says where to emit insns. - (walk_fixup_memory_subreg): Likewise. All callers changed. - -Tue Dec 20 01:26:56 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (start_function): Don't clear TREE_PERMANENT in fn decl. - Make the result decl a permanent node. - (finish_function): Don't clear DECL_RESULT in an inline function. - (duplicate_decls): Don't lose DECL_RESULT or DECL_SAVED_INSNS - or old decl, when defn is followed by redeclaration. - Likewise DECL_ARGUMENTS and DECL_RESULT_TYPE. - - * stmt.c (expand_function_end): End any sequences left unterminated. - - * cse.c (predecide_loop_entry): If "loop" has no label, do nothing. - - * recog.c (asm_noperands): Now return -1 if not that kind of insn. - All callers changed. - * combine.c (check_asm_operands): Calling changes not quite trivial. - * final.c (final): Likewise. - * reload.c (find_reloads): Likewise. - * recog.c (asm_noperands): Other changes: - Loop computing # of SETs in a PARALLEL was off by 1. - Validate all elts of any PARALLEL, to block invalid combinations. - - * ns32k.md (andsi3, andhi3): Make new CONST_INTs; don't clobber old. - - * integrate.c (copy_rtx_and_substitute): When looking in `parm_map', - if our mode mismatches parm's mode, use change_address to extract part. - On BYTES_BIG_ENDIAN machines, adjust the offset. - -Mon Dec 19 23:50:14 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cexp.y ('/' and '%' ops): If divide by 0, print error, don't die. - -Sun Dec 18 14:03:02 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * toplev.c (main): Avoid shadowing I in inner block. - - * flow.c (propagate_block): The insn at the end of a libcall - may be dead, but the libcall might still be needed if the - hard return reg is used later. Detect this case. - (libcall_dead_p): New fn used to check that the libcall is dead. - - * output-m68k.c, tm-m68k.h (standard_sun_fpa_constant_p): Fn renamed. - -Sat Dec 17 13:23:51 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stmt.c (expand_end_bindings): error_with_file_and_line => ..._decl. - - * combine.o (try_combine): Accept combination making a valid - asm with operands. - (check_asm_operands): Recognize asm with operands that are valid. - - * loop.c (strength_reduce): Don't accept a reg as a giv - if the reg was made by loop-optimize. - - * stmt.c (balance_case_nodes): A list of 3 always splits in middle. - -Fri Dec 16 17:22:07 1988 Tiemann (rms at sugar-bombs.ai.mit.edu) - - * sparc.md (fetch from constant address): Split into two patterns, - one fixed point and one floating. - (store at constant address): Handle remembered hi-half differently. - Other bug fixes. - (fix_truncsfsi2): Use f1, not f0, as temp. - (fix_truncdfsi2): Don't clear CC_F1_IS_0. - - * output-sparc.c (singlemove_string): Changed handling of case - where op1 is not memory and op0 has varying address. - (output_fp_move_double): Avoid reloading high half address - in the ldd and std cases with constant address. - (make_f0_contain_0): Handle f0 and f1 individually. - - * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): CONST is now illegitimate. - - * rtl.c (note_stores): Pass entire SET rtx, not flag, as 2nd arg to FN. - * local-alloc.c (reg_is_set): New type for 2nd arg. - - * Makefile: Comment out cc1plus, since not ready for release. - -Thu Dec 15 16:39:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * local-alloc.c (reg_is_set): If a hard reg is clobbered, make it free - before and after the insn. - * stupid.c (stupid_mark_refs): Likewise. - * global-alloc.c (global_conflicts): Likewise. - Use note_stores to call mark_reg_{store,clobber}. - (mark_reg_store): Changed calling conventions - All work done on set/clobbered regs is now done here. - Ignore CLOBBERs. - (mark_reg_clobber): Similar fn, but ignore SETs and handle CLOBBERs. - (regs_set, n_regs_set): New static vars for comm. among the above. - - * stmt.c (expand_asm_operands): call protect_from_queue on operands. - This requires preexpanding the outputs into a vector of rtx's. - - * Makefile (install): cd to $(libdir) before ranlib. - - * c-typeck.c (c_expand_asm_operands): emit_queue at the end. - - * reload.c (find_reloads): Count # alternatives properly for - an asm insn, and check that all operands correspond. - - * loop.c (verify_loop): Reject loops containg setjmps. - * cse.c (cse_main): Don't cse across a call to setjmp. - - * expr.c (expand_expr): Permit any non0 DECL_RTL for a VAR_DECL. - - * stmt.c (balance_case_nodes): Count ranges double when balancing. - -Wed Dec 14 13:50:45 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * final.c (output_addr_const): Output just `-', not `+-'. - - * make-cc1.com: Update filenames changed to `c-'. - * make-cccp.com: Pass needed -D options when compiling cccp.c. - Use /nomap when linking. - - * loop.c (strength_reduce): Paraphrase setting NEW_REG, for Iris cc. - - * output-m68k.c (output_move_const_single): %'s must be doubled twice. - - * loop.c (record_giv): A giv can be replaceable if its uses are - all in the same basic block as its sole setting. - (last_use_this_basic_block): Subroutine to test that. - -Tue Dec 13 13:41:57 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expr.c (do_store_flag): Allow for COMPARISON to be a const_int. - - * c-decl.c (pushdecl): Warn if type mismatch with another external decl - in a global scope. - - * fixincludes: Fix typo in msg of deleting unchanged file. - - * Makefile (insn-*): Use two-step rules with a separate time-stamp file - to avoid rerunning gen* unless md has changed again. - -Mon Dec 12 13:32:05 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * i386.md (tstsf, tstdf, cmpsf, cmpdf): Use fnstsw, not fstsw. Faster. - - * tm-vax.h (ASM_OUTPUT_REG_POP): Use correct asm syntax for pop insn. - - * combine.c (subst): Handle (subreg (mem)) by making a changed mem. - This avoids producing any (subreg (mem))s except in the special - case they are supposed to be made here. - Also set undo_storage in a couple of cases that forgot to. - - * reload.c (push_reload): When handling (SUBREG (MEM)) for IN, - if there is an OUT, make that a separate reload. - Return its number in `output_reloadnum' - (find_reloads): When pushing matching-reloads, note that the - two operands can have different reload-numbers. - - * tm-3b1.h (ASM_OUTPUT_CASE_END): Test flag on TABLE, not its pattern. - (ASM_OUTPUT_CASE_LABEL): If /i flag set, don't output the dummy entry - since the fetcher-insn will not be off by 2 in this case. - * m68k.md (casesi_2 recognizer): For 3b1 syntax, compensate for that. - -Sun Dec 11 12:51:49 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * genrecog.c (try_merge_2): No longer put all explicit decompositions - before all predicates. Patterns are now tested in the order written. - * vax.md: Move the push-or-move-address patterns to the end. - * m68k.md: Move load-address pattern to end. - Rearrange the special-case movsi patterns. - * ns32k.md: Move special load-reg-17 pattern before movsi. - * i386.md: Move the QI and DI push patterns to logical places. - This should not actually change anything. - - * stmt.c: Add Andy Hitchins's binary-tree case statement code. - (struct case_stmt): case_list field is now a case_node chain. - Replace has_default field with default_label field. - (pushcase, pushcase_range): Build case_list in its new type, - and keep it sorted. - (expand_end_case): Use case_list in its new type. - Count a range of > 1 as two cases, when choosing strategy. - (group_case_nodes, balance_case_nodes): New fns, rearrange case_list. - (node_has_{low,high}_bound, node_is_bounded): New fns test - relationships of values of various case_list tree nodes. - (emit_jump_if_reachable): New fn. - (emit_case_nodes): Emit compares and jumps based on tree of case_list. - - * cccp.c (finclude): Handle nonordinary files (stat doesn't give size). - - * tm-3b1.h (PRINT_OPERAND_ADDRESS): Handle case of breg and no ireg. - -Sat Dec 10 16:30:32 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * sparc.md (movstrsi): Separate define_expand and define_insn; - clobber some pseudos to get temp regs to use in the output. - * output-sparc.c (output_block_move): Use those temp regs, - guaranteed to be free. - - * sparc.md (andcc patterns for bitfields from memory): - Test immed. arg for being in range. - (load DFmode constant): Use %m for output in one case. - * output-sparc.c (singlemove_string, output_move_double): Likewise. - - * output-sparc.c (singlemove_string): New case for mem-to-mem move. - -Fri Dec 9 11:42:15 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stupid.c (stupid_mark_refs): for CLOBBER of a pseudo, - it is born just before this insn and dies just after. - - * tm-vax.h (NOTICE_UPDATE_CC): For aob, sob insns, forget the cc's. - - * basic-block.h (REG_BLOCK_UNKNOWN, REG_BLOCK_GLOBAL): Move defn here. - * local-alloc.c: Use them. - - * c-decl.c (store_parm_decls): Additional explanatory message - for some prototype mismatches. - - * gnulib.c (SItype): New macro used instead of `int' - for SImode operands and values. Definition is `long int'. - -Thu Dec 8 18:45:48 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * reload.c (operands_match_p): Move the label `slow' so that - it doesn't cause a REG and a SUBREG to be compared wrong. - - * toplev.c (compile_file): Output a label `gcc_compiled.' for GDB. - If new macro ASM_IDENTIFY_GCC is defined, run that instead. - * tm-3b1.h (ASM_IDENTIFY_GCC): Define this as no-op. - -Wed Dec 7 12:20:42 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * i386.md (adddf3): Typo: paren was in a constraint. - - * c-decl.c (grokparms): Avoid duplicate msgs for incomplete type ptrs. - - * gnulib.c: Rename all fns to start with `__'. - * optabs.c, expr.c: Rename all references. - - * gnulib.c (__cmpdi2, __ucmpdi2): New fns. - * optabs.c (emit_cmp_insn): Use them. - - * Makefile (stage*): Ignore errors on the main `mv' (for cc1plus). - Run ranlib if we have to copy gnulib. - - * expmed.c (expand_divmod): Split `label' into several local vars. - - * jump.c (jump_back_p): Do nothing unless cc's were set from integers. - -Tue Dec 6 12:00:21 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-parse.y (extend_token_buffer): Use xrealloc, not realloc. - - * integrate.c (output_inline_function): fix args of expand_function_end - (expand_inline_function): Add missing arg to expand_end_bindings. - - * cse.c (cse_insn): Add missing MODE arg to canon_hash. - - * reload1.c (reload_as_needed): Del. extra arg of choose_reload_targets - (reload): Add missing MODE arg to immediate_operand. - - * expmed.c (expand_mult): Delete extra arg to expand_unop. - - * c-typeck.c (default_conversion): - Add missing NOCONVERT arg to build_unary_op. - - * c-decl.c (duplicate_decls, finish_struct): Add missing arg - KNOWN_ALIGMENT to layout_decl. - * stor-layout.c (layout_record): Likewise. - * varasm.c (assemble_variable): Likewise. - - * dbxout.c (dbxout_init): Add missing LOCAL arg to dbxout_symbol. - - * expr.c (clear_storage): Remove excess arg to emit_move_insn. - - * loop.c (consec_sets_invariant_p): Add parens in hairy if-condition. - - * fold-const.c (fold): Typo, missing `case'. - - * cccp.c (main): Typo handling `-I-' option. - - * tm-i386.h (NO_FUNCTION_CSE): Define this; cse is said to slow - things down with less than 7 calls. - - * stmt.c (fixup_var_refs_insn): When scanning the reg-notes, - don't touch other insns they point at. - - * expr.c (do_jump): Use invert_exp, not reverse_condition, - to invert sense of a jump. - * jump.c reverse_condition now static, invert_exp now global. - -Mon Dec 5 10:51:39 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tm-sun386.h (ASM_FILE_START): In the .file arg, exclude directories. - - * stmt.c (expand_expr_stmt): If -W, warn if stmt has no side effect. - - * cccp.c (monthnames): Capitalize each name. - - * rtl.def: New code MATCH_OPERATOR. - * genconfig.c (walk_insn_part): Handle it. - * genextract.c (walk_rtx): Handle it. - * genpeep.c (match_rtx): Handle it. - * genrecog.c (add_to_sequence): Handle it. - * genemit.c (max_operand_1, gen_exp, gen_expand): Handle it. - * genoutput.c (scan_operands): Handle it. - (insn_n_alternatives): New array in the output. - (struct data): New slots n_alternatives and op_n_alternatives. - (scan_operands, gen_insn, gen_peephole): - Record op_n_alternatives for each operand. - (output_epilogue): Verify that all operands have same # of alternatives - Also output insn_n_alternatives. - - * reload.c (find_reloads): use insn_n_alternatives to control - the loop over all alternatives. - An empty constraint or empty alternative in a constraint - is always satisfied. - * recog.c (constrain_operands): Likewise. - - * c-decl.c (lang_decode_option): For each -f option, recognize a form - with `no-' and a form without, as contraries. - - * toplev.c (main): Decode -f options using a table - so that each option automatically has a `no-' variant. - - * combine.c (try_combine): Give up if I1 or I2 follows a compare insn. - -Sun Dec 4 12:00:36 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * varasm.c (data_section): If flag_shared, use SHARED_SECTION_ASM_OP - if that is defined. - - * cccp.c (include_default): Add /usr/local/include. - - * Makefile (install): Install the makefile. - - * varasm.c (assemble_external): New fn to declare an external. - (assemble_variable): Output nothing for externals. - * c-parse.y (primary => identifier): Call assemble_variable on 1st use. - - * toplev.c (main): Print version info on stderr, not stdout. - * tm-*.h (TARGET_VERSION): Likewise. - - * tm-isi68.h, tm-news800.h: Rename __HAVE_FPU__ to __HAVE_68881__. - - * sparc.md (seq, etc): Entire page rewritten by Tiemann - to avoid incorrect use of PARALLEL. - * output-sparc.c (gen_scc_insn): Corresponding changes. - -Sat Dec 3 00:03:19 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * gcc.c (do_spec_1): %P is an ANSIfied form of %p: - put __ at beg and end of each predefined macro name. - - * tm-sun3.h (CPP_SPEC): Don't define -Dmc68010, etc., if -ansi. - * tm-sun2.h (CPP_SPEC): Likewise. - - * c-decl.c (shadow_tag): Don't complain if declare a new tag - at top level, or if redeclare a tag. - - * c-decl.c (grokparms): Warn if parm points to incomplete type. - (We already err if its own type is incomplete.) - - * stmt.c (fixup_var_refs_insns): Fix any (SUBREG (MEM)) in REG_NOTES. - (walk_fixup_memory_subreg): New subroutine used for this. - - * integrate.c (copy_rtx_and_substitute): Handle MEM refs to the middle - of a stack-parm--at least in the case of reading the parm. - - * rtl.c (rtx_equal_p): REG_FUNCTION_VALUE_P is significant - only until end of reload pass. - * toplev.c (rest_of_compilation): - Control that by setting new var rtx_equal_function_value_matters. - - * c-decl.c (init_decl_processing): Don't declare the builtins - that aren't really implemented. - - * output-sparc.c (output_move_double): "in structure" implies - 8-byte alignment only for DFmode, not for DImode. - - * final.c (output_operand_lossage): Cleaner text for error msg. - No longer need to write text into .s file, now that linenum is correct. - - * c-decl.c (pushdecl): -traditional stops warning - about "declared extern, later static". - - * c-typeck.c (build_indirect_ref): Don't handle flag_volatile here. - * expr.c (expand_expr): Handle it here, in INDIRECT_REF case. - This prevents -fvolatile from causing additional warnings. - - * output-sparc.c (output_load_address): Allow REG+REG for operands[3]. - - * m68k.md (movsi): If we output the label LIn, - set the RTL_INTEGRATED flag in the switch table's pattern. - * tm-3b1.h (ASM_OUTPUT_CASE_END): Define LD%n only if LI%n was output. - - * i386.md (push-and-add pattern): Comment it out. - It's said to result in slower code. - - * i386.md (tstqi, tsthi, tstsi): Output real `test' insn if op is reg. - - * i386.md (push for DI): Allow `oiF' for 2nd operand. - -Fri Dec 2 13:57:35 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * i386.md (movdi): Allow F constraint for 2nd operand. - - * i386.md (push for QI): define pattern to push a QImode - which really uses pushw and therefore really pushes a halfword. - * tm-i386.h (PUSH_ROUNDING): Round up to multiple of 2. - - * gcc.c (do_spec_1): Handle %e, which means report an error. - Use it to prohibit -pg with -fomit-frame-pointer. - - * tree.h (DECL_RESULT_TYPE): New field in FUNCTION_DECL holds the type - of the widened returned value (not nec. the declared return type). - * c-decl.c (start_function): Set DECL_RESULT_TYPE. - * integrate.c (expan_inline_function): Use that, not DECL_RESULT. - -Thu Dec 1 16:44:10 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cse.c (fold_rtx): When reordering constant args, insist on - manifest constants; regs with known contents won't do. - - * i386.md (mulsi3): Don't use rtx_equal_p to compare regs. - - * expr.c (move_by_pieces_1): Don't call change_address - if address is autoinc, since that may not be memory_address_p. - Subroutine-macro add_offset deleted. - - * optabs.c (bcc_gen_fctn, setcc_gen_fctn): Moved to this file. - (init_optabs): Init those tables here. - * expr.c (init_conditions): Not here. - - * stmt.c (assign_stack_local): Make a list of all stack slots. - * emit-rtl.c (unshare_all_rtl): Unshare all the stack slots. - - * final.c (final): Handle BARRIER with ASM_OUTPUT_ALIGN_CODE. - * tm-ns32k.h (ASM_OUTPUT_ALIGN_CODE): Align to 4-byte bdry. -?? * tm-sequent.h (ASM_OUTPUT_ALIGN_CODE): Override: just 2-byte bdry. - - * tm-m68k.h (PRINT_OPERAND): use new macros to print floats. - (ASM_OUTPUT_FLOAT_OPERAND): New macro. - (ASM_OUTPUT_DOUBLE_OPERAND): New macro. - * tm-sun3.h: Override those macros, to check for infinities. - -Wed Nov 30 06:35:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tm-ns32k.h (FUNCTION_{PRO,EPI}LOGUE): if no frame pointer, - do explicit push or pop insns. - - * tm-genix.h (PRINT_OPERAND): Fix typo `file'. - Extedn decl for paren_base_reg_printed. - (MAIN_FUNCTION_PROLOGUE): Deleted. - (ASM_OUTPUT_EXTERNAL): Defined. - - * c-parse.y (yyerror): Better error msg for unprintable char in token. - (primary => identifier): Set TREE_USED if implicit decl made. - - * Makefile (cleanlinks): New target. - (INSTALL): New variable, has program used for installing files in sys. - - * output-ns32k.c (print_operand_address): If addr is sum of 2 consts, - output ADDR first, then OFFSET. - - * ns32k.md (addsi3): Allow adding const+reg with result in another reg. - - * tm-seq386.h (FUNCTION_PROFILER): Provide overriding definition. - - * tm-hp9k320.h: Alternate ASM_SPEC if using GAS. - Define STANDARD_STARTFILE_PREFIX if using GAS. - (FUNCTION_PROLOGUE): on 68020 for big stack frame use link.l. - - * gcc.c (STANDARD_STARTFILE_PREFIX): New cust. macro replaces `/lib/'. - - * va-sparc.h, va-spur.h: Prefix non-interface identifiers with `__'. - - * optabs.c (init_optabs): Don't set up libcalls for ftrunc_optab - because (1) they aren't supported and (2) they are never used. - - * gnulib.c (__builtin_saveregs): If not sparc, define the symbol anyway - to avoid a warning in ranlib. - -Mon Nov 28 01:46:12 1988 Michael Tiemann (mdt at choctaw) - - * c-parse.y (yylex): Typo, `=' for `==' making wide strings. - - * sparc.md (various places): make sure that all patterns which store - can store using const0_rtx (i.e., make all operands to `st' %rx). - - * output-sparc.c (various places): changed dispatches on SYMBOL_REF - to dispatches on CONSTANT_ADDRESS_P since we now recognize any CONST - (and not just SYMBOL_REFs). Don't recognize special case CONST for - output_block_move. Compiler doesn't have enough information to use - it. - - * stmt.c (expand_fixup): If the control stack is nested within the - nesting stack, then no fixup is needed. Otherwise, compiler must - check for possible fixups between the current nesting stack and the - nesting stack that immediately contains the control stack. - - * stmt.c (expand_function_start): functions which are nested use - DECL_CONTEXT. For these functions, test that their DECL_CONTEXT is - a LET_STMT node. - - * tree.h: declare `build_offset_type'. - -Sun Nov 27 10:34:53 1988 Richard Stallman (mdt at yahi) - - * output-sparc.c (output_move_double): - Don't try to use ldd/std if OP1 is a constant. - * sparc.md (movdi): Allow immediate args moved into general regs. - - * c-decl.c (grokparms): Reject incomplete parm types even if just - declarating, not defining. Change types to error_mark_node - in both the PARM_DECL and the list of types. - - * dbxout.c (dbxout_type): It's not a bug if a RECORD_TYPE - has a typedef as its TYPE_NAME. That happens in C++. - - * Make each `asm' with operands record its source file/line - with reg-notes. It doesn't work to emit a special note before the insn - because the insn can be moved by loop_optimize. - * stmt.c (expand_asm_operands): New args FILENAME, LINE. - Record them in the insn, in reg notes. - * c-typeck.c (c_expand_asm_operands): New args, passed along. - * c-parse.y: Pass those args. - (maybe_type_qual): Line #s for asm stmts emitted like all others. - * rtl.h (REG_ASM_FILE, REG_ASM_LINE): New kinds of reg notes. - * toplev.c (error_for_asm): Get the info from those notes. - - * reload.c (find_reloads): Don't clear BADOP for a reg letter - if the alternative ultimately doesn't allow any regs. - - * reload.c (find_reloads): If an `asm' insn gets an error, - change it to a USE to avoid duplicate error msgs or later trouble. - - * reload.c (find_reloads_address): Reloading a constant address, - specify Pmode as the mode for push_reloads, in case of CONST_INT. - - * expr.c (emit_push_insn): Fix calc. of space needed when PARTIAL > 0. - Both scalar case and BLKmode case needed fixing. - - * sparc.md (load/store constant address): - Moving DF from mem to cpu regs, don't go via %f0. - Don't use std/ltd if alignment is wrong or uncertain. - -Sun Nov 27 10:34:53 1988 Michael Tiemann (mdt at yahi) - - * reload.c (push_reload): Allow VOIDmode for INMODE, OUTMODE; - default the mode from the operand values. - - * sparc.md: remove patterns which generate annulled branch insns. - They are correct, but those insns confuse GDB. - - * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): - Treat any constant address like a SYMBOL_REF. - * sparc.md: Check for CONSTANT_ADDRESS_P rather than SYMBOL_REF. - - * sparc.md: Peepholes now accept SYMBOL_REF addresses. - The output routine can now split them properly even as delay insns. - - * print-tree.c (dump): added entry for METHOD_TYPE and - METHOD_CALL_EXPR. Also added entry for WITH_CLEANUP_EXPR. Suggest - that we make first_rtl of WITH_CLEANUP_EXPR 2 instead of 1. - -Sun Nov 27 00:15:33 1988 Michael Tiemann (mdt at yahi) - - * print-tree.c (dump): added entry for OP_IDENTIFIER. - - * tree.c (build_op_identifier): new function. Needed because - `build_nt' expects an "e" node, but OP_IDENTIFIER is an "x" node. - - * store_layout.c (layout_record): use DECL_FIELD_CONTEXT instead of - DECL_CONTEXT. - - * tree.h (DECL_FIELD_CONTEXT): new macro. Points to the type that a - FIELD_DECL is a member of. For C, this is just DECL_CONTEXT. - - * tree.c (build_method_type): typo used "==" to assign basetype to - TYPE_METHOD_BASETYPE with predictably poor results. - -Sat Nov 26 22:55:32 1988 Michael Tiemann (mdt at yahi) - - * output-sparc.c (output_sized_memop): new function to output a load - or store insn based on the size of the operand loaded or stored. - (make_f0_contain_0): use info from condition codes to decide whether - the register %f0 needs to have 0 loaded from memory or not in order - to contain zero. - (gen_scc_insn): new function used by define_expands for - set-on-condition-code insns. - (output_delay_insn): now knows how to handle load and store - scheduling when the load or store operation takes two insns instead - of one. The rewrite is now understands is this: - - sethi %hi(address),%g1 -> sethi %hi(address),%g1 - ld/st [%g1+%lo(address)],%reg -> b target - b target -> ld/st [%g1+%lo(address)],%reg - nop -> ;; gone - - * jump.c (reverse_condition): make this function publicly visible, - now needed in expr.c. - - * output-sparc.c (reg_or_0_operand): new function, returns nonzero - if operand is const0_rtx or a register of specified mode. - (hardreg): deleted. - - * expr.c, stmt.c: fixed random syntax errors. - - * tree.c (build_method_type): now corresponds to defn in tree.def - expr.c (expand_call): removed code to get FUNCTION_TYPE from - METHOD_TYPE. This should probably be looked at harder. - - * tree.def (METHOD_TYPE): Changed definition so that TREE_TYPE (m) - (where m is a METHOD_TYPE) is the type of the return value of the - method, not the FUNCTION_TYPE from which the METHOD_TYPE is derived. - - * Makefile: Changed target of BINDIR from /usr/local to - /usr/local/bin. - -Sat Nov 26 16:29:22 1988 Michael Tiemann (mdt at chickasaw) - - * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): Allow any SYMBOL_REF. - (NOTICE_UPDATE_CC): Remember high half of %g1 as a "condition code" - to avoid reloading it if it does not change. - (NOTICE_UPDATE_CC): Test SET_SRC, not SET_DEST, for a CALL rtx. - (PRINT_OPERAND): New code-letter `m' says output operand as an address. - - * toplev.c (flag_syntax_only): New flag variable. - * flags.h: Likewise. - - * toplev.c (error_with_decl): Extra arg, passed to fprintf. - (warning_with_decl): Likewise. - - * tree.c (build_offset_type): New function. - - * tree.h (TYPE_METHOD_BASETYPE): New name for TYPE_METHOD_CLASS. - Uses in tree.c and... renamed. - - * combine.c (SUBST_INT): New macro, for replacing an int. - (subst): Collapse nested SUBREGs even if SUBREG_WORDs are not 0. - - * expr.c (bcc_gen_fctn, setcc_gen_fctn): new tables, - initialized in init_comparisons. - Used in expand_expr, do_jump, do_store_flag - instead of explicit construction of a jump. - - * expr.c (save_noncopied_parts): New function. - - * expr.c (expand_expr): - ARRAY_REF: Special case for array of constants. - WITH_CLEANUP_EXPR: Handle it. - INIT_EXPR: Case deleted. - MODIFY_EXPR: Use save_noncopied_parts. - - * expr.c (expand_call): blkmode_parms_forced can be >0 - even when no stack arg space otherwise needed. - Don't use a hard reg as a target if there are cleanups. - - * stmt.c (struct block): New elt. outer_cleanups. - (struct case): New elt. num_ranges. - (struct fixup): Changed meaning of cleanup_list_list. - Changes in expand_fixup, fixup_gotos. - (expand_fixup): Detect some internal forward-jumps - that need no fixups--for speed. - (fixup_gotos): New arg THISBLOCK. - (expand_expr_stmt): Handle flag_syntax_only. - (use_variable): No longer static. - (use_variable_after): new fn. - (expand_end_bindings): handle cleanups like a stack level. - (expand_decl): Handle a cleanup with no decl. - (move_cleanups_up): Preserve relative order of cleanups. - (expand_anon_union_decl): New fn. - (pushcase): New fast clause if no ranges yet. - (pushcase_range): Turned on. - (expand_function_start): New temp var `fntype'. - Set TREE_USED for a parm we are ignoring. - (expand_function_end): Really use the `filename' arg. - Use use_variable_after for SAVE_EXPR regs. - - * dbxout.c (dbxout_type): Handle OFFSET_TYPE. - - * gnulib.c (__builtin_new, etc.): Support for C++. - - * emit-rtl.c (next_insn, prev_insn): New fns. - -Sat Nov 26 16:29:22 1988 Richard Stallman (mdt at chickasaw) - - * tree.h (TREE_LANG_FLAG_[1234]): New attributes. - (TYPE_METHOD_BASETYPE): New name for TYPE_METHOD_CLASS. - (TYPE_OFFSET_BASETYPE): New macro. - (NUM_TREE_CODE): New macro. - (TYPE_NONCOPIED_PARTS): new field in a type-node. - - * varasm.c (make_decl_rtl): Split out from assemble_variable. - (assemble_variable): No longer creates the rtl. - No longer handles policy of whether to output tentative decl yet. - (output_constant_def): Don't lose if wasn't temp allocation - when this was called. - (output_constant): Handle REFERENCE_EXPR. - - * Makefile (BISONFLAGS): new variable. - (prefix): New variable, used in bindir and libdir. - (C_OBJS, CPLUS_OBJS): New vars, split off from OBJS. - (LIBFUNCS): C++ support functions added. - (CPLUS_TREE_H): New variable. - (cc1plus): New target. - (lang_c, lang_cplus): Combines all targets for one language. - (gplus.info): New target. - (cplus-*.o): New targets. - (realclean): Handle new C++ files and recent renamings. - (install, TAGS): Likewise. - - * print-tree.c (prtypeinfo): Handle TREE_LANG_FLAG_[1-4]. - - * tm-sparc.h (ASM_OUTPUT_DOUBLE): Special case for infinity. - (ASM_OUTPUT_FLOAT): Likewise. - - * gcc.c: Don't define __GNU__. - For .cc files, pass -+ to cpp, and don't handle -ansi. - Use cc1plus as name of compiler for .cc files. - - * stor-layout.c (layout_type): abort if given a LANG_TYPE node. - (layout_union): Complain if union has basetypes or static members. - (layout_record): Handle anonymous union members. - - * tree.def (LANG_TYPE): New tree code for language-specific purposes. - (WITH_CLEANUP_EXPR): New tree code for expressions whose values - need to be cleaned up when they are deallocated. - (OP_IDENTIFIER): New tree code for certain C++ purposes. - - * toplev.c (rest_of_decl_compilation): Call make_var_rtl - before assemble_variable. - -Wed Nov 23 02:15:45 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * xm-sunos4.h: Rename included config files to xm-*. - * xm-*.h: Likewise. - - * fixincludes: Avoid altering args to names other than CTRL - that end in ...CTRL. - If a file isn't actually changed, delete the copy. - -Mon Nov 21 12:48:22 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * loop.c (move_movables): Never move a reg w/ # > old_max_reg. - (strength_reduce): For nonreplaceable giv, put insn to load it - after the insn that used to compute it, in case the latter - is the last of a libcall sequence. - - * stmt.c (expand_function_end): If returning BLKmode, also copy - address where value is returned to the place that GDB will - expect to see it after the return. - - * c-parse.y (readescape): Warn about hex constant out of range - for a target integer. - (yylex): Warn about escape out of range for non-wide char or string. - Use a buffer of ints to read a wide string. - -Sat Nov 19 02:18:02 1988 Richard Stallman (rms at apple-gunkies.ai.mit.edu) - - * Version 1.31 released. - - * sparc.md: Change `K' to `I' in all constraints. - - * loop.c (gen_iv_mult): Handle TARGET==0. - - * c-decl.c (duplicate_decls): Undo last change. - - * c-decl.c (pushdecl): Instead of that change, - save old-decl's file/line before calling duplicate_decls, - and pass them later to warning_with_file_and_line. - * toplev.c (warning_with_file_and_line): New fn. - -Fri Nov 18 13:07:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stmt.c (fixup_var_refs_1): (SUBREG (MEM)) was slipping through - in case where a SET was writing in the variable being fixed. - - * recog.c (register_operand, nonmemory_operand, memory_operand): - Changes to handle new var reload_completed: 1 means that - (SUBREG (MEM)) now counts as a mem-ref, since alter_subreg - will make it one. - * toplev.c (rest_of_compilation): Set and clear reload_completed. - - * sparc.md (call patterns): If TARGET_SUN_ASM, and address in reg, - output a jmpl rather than a call. - * tm-sun4os3.h: Like tm-sparc.h but turn on TARGET_SUN_ASM. - - * reload.c (push_reloads): Reinstate handling of reg_equiv_constant. - -Thu Nov 17 09:48:14 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * reload1.c (constraint_accepts_reg_p): Name changed from - constraint_all_regs_p; new arg is reg we are concerned with, - and condition tested takes some advantage of that reg. - - * gcc.c (main): Rename var `error' to `error_count' for name conflict. - - * emit-rtl.c (emit_note): Output line #s even if no debug info wanted. - (emit_line_note): New fn, does what emit_note did. - (emit_line_note_force): New name for emit_note_force. - * stmt.c, c-parse.y: Call emit_line_note instead of emit_note. - - * c-parse.y (maybe_type_qual): Call emit_note instead of emit_line_note - Now we can find the line # of every `asm' from the RTL. - * toplev.c (error_for_asm): New fn, gets line # by searching for NOTE. - * reload.c (find_reloads): Use error_for_asm. - * reload1.c (choose_reload_targets): Likewise. - * final.c (output_operand_lossage): Likewise. - Variable this_is_asm_operands is now current insn if it's nonzero. - - * loop.c (move_movables): When a reg is moved, update regno_first_uid - and regno_last_uid; say life span includes entire loop. - * Decrement THRESHOLD per reg moved, not per insn moved. - -Wed Nov 16 08:41:32 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * gnulib.c (___builtin_saveregs): New fn, for sparc. - - * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): Don't recognize - SYMBOL_REFs, except for the constants pool. - But do recognize REG+REG and SMALLINT+REG. - * sparc.md: New patterns for fetching and storing memory - whose address is symbolic and not "legitimate". - - * sparc.md (movsi): Add `f' to op1 constraint. - New output clause for result in fp reg. - (Floating point fetch patterns): Output sethi insns. - (call_value, related patterns): value-register has `register_operand'. - - * output-sparc.c (hardreg): New function. - (COMPATIBLE): Clause added for n_regs == 2. - (single_insn_src_p): Return 0 for MEM whose address is absolute. - - * tm-genix.h (GO_IF_LEGITIMATE_ADDRESS subroutines): - Redefine, to exclude any possibility of SB-referencing addresses. - - * loop.c (strength_reduce): Can't eliminate a biv if used before - start of the loop. Used before is same as used after, if contained - in another loop. - - * recog.c (asm_noperands, decode_asm_operands): - Handle case of no outputs, but some clobbers. - * stmt.c (expand_asm_operands): Generate right stuff for that case. - - * tm-sun3.h (CPP_SPEC): Don't define __HAVE_68881__ if using fpa. - -Tue Nov 15 00:10:26 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * loop.c (gen_iv_mult): Arg OP0 may not be a constant. - Pay attention to return value of expand_mult. - (eliminate_biv): Call changed. - - * output-m88k.c, output-sparc.c (output_move_double): - Fix typo `optype0' for `optype1'. - - * c-decl.c (duplicate_decls): Don't alter file, line of old decl. - - * c-parse.y (skip_white_space): Don't recognize comments; rely on cpp. - - * rtl.c (rtx_equal_p): Handle vectors. - - * loop.c (scan_loop): Change elts of n_times_set back to positive - for candidates that weren't moved, before doing strength reduction. - - * ns32k.md (movdi, movdf): Use `&' constraint for first operand. - - * reload1.c (reload): Initialize spill_indirect_ok here. - - * config-sun4.h: Recognize `-static' switch. - - * global-alloc.c (set_preference): Avoid using nonsense hard reg #s - that result from adding OFFSET. - - * sdbout.c (sdbout_end_function): Line # in .ef should be relative. - - * final.c (output_source_line): For SDB, don't output negative #s. - - * tm-encore.h (ASM_OUTPUT_LOCAL): Don't ignore SIZE arg. - -Mon Nov 14 11:03:16 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * reload.c: Don't declare refers_to_regno_p. - - * gcc.c (main): Warn if any input files are for the linker - but the linker is not being run. - - * jump.c (sets_cc0_p): Dumb bug fetching elts of a PARALLEL. - - * local-alloc.c: qty_birth, qty_death elements are now -1, not 0, - when the value is not known. - - * expmed.c (extract_bit_field): Bug computing xbitpos, xoffset - when changing units from bytes to words. - - * loop.c: Rename `times_used' field in `struct movable' to `savings'. - (scan_loop): When scanning the consecutive sets, for each libcall, - increment `savings'--leave `consec'. - When making movable for (SET (REG) 0) which is part of zero-extension, - set `savings' to 1 initially, since only 1 insn will be moved. - And don't let any other reg force that insn. - Reduce initial THRESHOLDs. - (move_movables): Don't add `consec' into `savings' - since the initial `savings' was proportional to `consec'. - Decrement THRESHOLD by 3 (not 2) for each move done. - - * reload1.c (choose_reload_targets): Strip subregs from OLD - before writing the output-reload move-insn. - - * reload1.c (reload): counted_for_groups and counted_for_nongroups - are now file-scope. Update them both when spilling. - (new_spill_reg): No need for counted_for_nongroups as arg. - (choose_reload_targets): Don't use for a group - any spill regs for which counted_for_nongroups is set. - - * dbxout.c (dbxout_symbol): Indirect-symbol case checked erroneously - for PARM_DECL. - -Sun Nov 13 08:13:49 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cse.c (fold_rtx): Don't alter MULT by -1 if arg mode != result mode. - - * loop.c (move_movables): If moving a CALL_INSN, make a new CALL_INSN. - * emit-rtl.c (emit_call_insn_before): New fn. - - * config-sun4.h (LINK_SPEC): Avoid shared libraries if -g. - - * expr.c (store_one_arg): Stabilize ARG->stack so it doesn't use SP - before computing the arg value. - - * combine.c (use_crosses_set_p): Moving a ref to stack ptr - is always forbidden if machine has push insns, since might cross one. - - * vax.md (movqi): Avoid out-of-range immed ops in mcomb. - - * expmed.c (extract_bit_field): Don't say `extzv' in the - clause for `extv'. - - * emit-rtl.c (copy_rtx_if_shared): Even if a MEM can be shared, - unshare its address from everything outside that MEM. - - * expr.c (expand_builtin): Fix omitted arg to `convert_to_mode'. - - * expr.c (store_expr): In case where will not return TARGET - and must do type conversion, don't fail to store into TARGET. - - * dbxout.c (FORCE_TEXT): New macro used before output `.stabs' - to go to the text section on targets that require it. - (DEBUG_SYMS_TEXT): Target macro which turns on that feature. - - * reload1.c (reload): Index in spill_regs was wrong - when checking counted_for_groups. - (choose_reload_targets): When calling find_equiv_reg looking for - a reload reg, reject all spill regs, even those not in use now. - - * tm-sun386.h, tm-sun386i.h, config-sun386i.h: New files. - - * cccp.c (main): Don't die if no output file arg given. - - * fixincludes: Tell `find' to find only ordinary files. - - * config.gcc: If symlink fails, make a hard link. - -Sat Nov 12 20:43:20 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Makefile (gnulib): Use cp to make the temporary .c files; - less likely to fail than ln. - -Sat Nov 5 12:46:39 1988 Randall Smith (randy at sugar-bombs.ai.mit.edu) - - * tm-m68k.h (HARD_REGNO_MODE_OK): Disallowed d7:a0 as an allowable - pair of registers to hold a double value. This is correct for the - fpa but incorrect for the 68881. It was, however, simpler than - defining a new regclass. - -Tue Oct 25 12:03:49 1988 Randall Smith (randy at gluteus.ai.mit.edu) - - * m68k.md: Added some thoughts (comments) on best method to allow - 68881 code with fpa code. - -Thu Oct 13 14:19:17 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Version 1.30 released. - - * stupid.c (stupid_life_analysis): Init last_call_suid with - largest possible value, not 0. - -Wed Oct 12 04:40:18 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * output-i386.c (output_asm_insn_double_reg_op): Compensate for - assembler bug that interchanges fsub and fsubr. - - * reload1.c (order_regs_for_reload): Undo 29 Sept change. - It breaks the 386. - - * varasm.c (decode_rtx_const): Don't example value->addr - if what was stored in was value->d. - - * toplev.c (set_float_handler): New fn, specify where to jump - on floating exception signal. - * fold-const.c (combine): Use that to handle overflow in arithmetic. - - * c-decl.c (grokdeclarator): Don't clear CONSTP, VOLATILEP - when making an array type. - - * dbxout.c (dbxout_symbol): Ignore VAR_DECLs in memory whose - addresses we can't represent. - - * fold-const.c (fold): don't convert >= to > if both args are constant. - When converting >= to >, don't fail to change CODE. - -Tue Oct 11 04:13:40 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * vax.md (movhi): Error in truncating mcomw, addh3 args to 16 bits. - - * final.c: Better error checking for %-specs in templates. - (output_operand_lossage): new fn to report errors. - (insn_noperands): new var: # operands in current fn. - (this_insn_asm_operands): new var: 1 for `asm', 0 otherwise. - (output_asm_insn): Check for operand # out of range. - (output_asm_label, output_operand): Call new fn to report errors. - - * reload.c (push_reloads): An input reload for (REG N) can match one - for (POST_INC (REG N)) or (PRE_INC (REG N)), since the value - reloaded is the same in any case. - -Mon Oct 10 06:19:05 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * recog.c (next_insns_test_no_inequality): Like next_insn_tests... - but check all insns that follow this one and can use it's cc's. - * output-m68k.c (output_btst): Use that. - - * vax.md (movsf, movdf): Undo last change; movq/movl set the cc wrong. - - * expr.c (expand_call): Set current_function_calls_setjmp if appro. - * stmt.c (setjmp_protect): New fn: move all vars into stack - unless declared `register'. - * c-decl.c (finish_function): Call it if -traditional and setjmp used. - - * cccp.c (main): Open output after the input. - Handle `-o -'. - -Sun Oct 9 00:28:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tm-sun3.h (CPP_SPEC): Define __HAVE_FPA__ if appropriate. - - * c-decl.c (pushdecl): After duplicate_decls, maybe warn about - "declared extern and later static". - - * expmed.c (store_bit_field): In insv case, avoid turning - VALUE into a subreg of a subreg. - - * loop.c (move_movables): When moving a libcall, - un-cse the function address; put it into the call insn. - -Sat Oct 8 01:48:03 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cse.c (equiv_constant): Subroutine to find the constant equivalent - of a reg. Now handles SUBREGs too. - (fold_rtx, fold_cc0): Use that function. - Don't handle SUBREGs like arithmetic. - - * reload1.c (choose_reload_targets): Don't call reg_overlap_mentioned_p - if arg is 0. - -Fri Oct 7 01:00:19 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * assert.h: Typo declaring __eprintf. - - * config.gcc: New file for making the links. - Fixed bugs for sun-[23]-os4. Added sun-[234] for sunos 3. - Added sequent-i386. - - * emit-rtl.c (gen_rtx): Return const0_rtx for 0 in DImode. - * varasm.c (immed_double_const): Don't be confused by this. - - * expmed.c (negate_rtx): New 1st arg MODE. - * expr.c (push_block): Calls changed. - * m68k.md, ns32k.md, vax.md: Calls changed. - - * c-decl.c (duplicate_decls): Don't discard DECL_BLOCK_SYMTAB_ADDRESS. - - * tree.c (staticp): INDIRECT_REF with constant address is static. - COMPONENT_REF may not be, if component offset isn't constant. - - * c-typeck.c (default_conversion): Converting array to ptr, if array - isn't a VAR_DECL, go through build_unary_op so that COMPONENT_REFs - will be simplified away. - - * ns32k.md (tbitd patterns): op 0 constraint: reject constants. - * ns32k.md (extzv for SImode and HImode): - Use adj_offsetable_operand; plus_constant was the wrong thing. - -Thu Oct 6 00:10:41 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Version 1.29 released. - - * loop.c (scan_loop): Don't think a `return' insn enters the loop. - - * ns32k.md (ashrsi3, etc): New define_expands for right shift. - - * reload1.c (choose_reload_targets): Change in the `force_group' - logic to avoid crashes. - -Wed Oct 5 04:09:19 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) - - * expr.c (expand_expr, MINUS_EXPR): When negating integer op1, - truncate it to its mode. - - * expmed.c (extract_bit_field): SUBREG error check was wrong; - SImode SUBREGs are possible and ok in extzv, extv. - - * tm-ns32k.h (REGISTER_NAMES): Had two excess elements; deleted. - -Mon Oct 3 01:15:51 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) - - * toplev.c (main, compile_file): If no files spec'd, use stdin, stdout. - - * flow.c (propagate_block): When checking for stack-adjust insns, - exclude non-SET patterns. - - * jump.c (jump_optimize): When changing jump=>return to return, - must rerecognize the insn. - - * toplev.c (compile_file): Allow `-' for main input or output filename. - -Sun Oct 2 10:30:09 1988 Richard Stallman (rms at apple-gunkies.ai.mit.edu) - - * final.c (final): NOTICE_UPDATE_CC has extra arg, INSN. - * tm-*.h: Change definitions. - - * stmt.c (optimize_bit_field): Use gen_lowpart to make subregs. - - * stmt.c (assign_parms): Don't obey regdecls in inline function. - Don't lose existing REG_NOTES when adding one. - - * stmt.c (expand_function_start): Make return rtx before - marking parms live. - (expand_function_end): Use use_variable to emit USEs for SAVE_EXPRs. - - * stmt.c (expand_return): Handle TRUTH_AND_EXPR like ANDIF; OR also. - - * stmt.c (expand_end_stmt_expr): Always set TREE_VOLATILE, - sometimes TREE_THIS_VOLATILE. - - * jump.c (delete_insn): When finding PREV, skip deleted insns. - - * varasm.c (output_constant): WORDS_BIG_ENDIAN test was backwards. - - * emit-rtl.c (gen_lowpart): Allow MODE > 1 word if X is same size. - - * final.c (final): Don't delete no-op moves (jump did it if appro.). - - * final.c: Support prescan pass. - (final_start_function): init_recog and CC_STATUS_INIT mvd to `final'. - (final): New arg PRESCAN. Do no output if prescanning. - Don't alter conditionals if PRESCAN < 0 (prescan already done). - If jump becomes no-op, change it to a NOTE. - Remember to free the temp space for ASM_OPERANDS. - - * final.c (final): Altering store-flag must check STORE_FLAG_VALUE. - Don't try to do it if that isn't defined. - Don't try it if condition doesn't test CC0. - (alter_cond): No need to check COND != 0. - Handle CC_Z_IN_NOT_N and CC_Z_IN_N. - (m68k.md): Delete code that handled CC_Z_IN_NOT_N. - - * conditions.h: New flag CC_Z_IN_N. - * tm-*.h: Renumber all CC_... flags to make room. - - * combine.c (use_crosses_set_p): Loop start was 1 off. - - * local-alloc.c (reg_is_set): When a reg is CLOBBERed and dies in - one insn, make it live immediately before and after that insn. - - * global-alloc.c: Hard reg preferences for global pseudos. - Var allocno_preferred_reg deleted; new vars hard_reg_preferences - and regs_someone_prefers. - (global_alloc): Init those vars. Pass hard_reg_preferences elt - to find_reg. - (set_preference): New function makes entries in those vars. - (global_conflicts): new arg to mark_reg_store. Call set_preference. - (find_reg): Last arg now a preferred hard_reg_set. - Scan that set first of all. - (mark_reg_store): New arg is offset for renumbered regno. - But the code to use it is turned off. - - * global_alloc (check_frame_pointer_required): Handle reg_equiv_address - like reg_equiv_mem. Don't try to allocate pseudos with equiv mems - that don't use the frame pointer. - * reload1.c (reload): Call changed. - - * jump.c (sets_cc0_p): Tests whether rtx sets cc0, and whether - it does nothing but set cc0. - (find_cross_jump, delete_jump): Use that fn for these tests. - * loop.c (loop_skip_over): Likewise. - * reload.c (push_reload): Likewise. - - * genoutput.c: Output `const' before the data arrays. - Define it as nothing if not __STDC__. - -Sat Oct 1 02:19:29 1988 Richard Stallman (rms at apple-gunkies.ai.mit.edu) - - * expr.c (store_one_arg): 3rd arg to emit_block_move is in bytes. - - * cse.c (fold_rtx): Handling ZERO_EXTEND or SIGN_EXTEND of constant, - if the arg width is too wide to handle, return safely. - - * combine.c (FAKE_EXTEND_SAFE_P): Don't allow extend to > 1 word. - - * rtl.c (refers_to_regno_p): Moved from reload.c. Not static. - (reg_overlap_mentioned_p): New function, calls the above. - * output-*.c: Use that instead of reg_mentioned_p. - * tm-*.h (NOTICE_UPDATE_CC): Likewise. - * reload.c (push_reload, combine_reloads): Likewise. - * reload1.c (choose_reload_targets): Use it to check earlyclobbers. - - * reload1.c (choose_reload_targets): Elimination of previous - output-reload feeding our input now limited to pseudo-regs. - - * flow.c (life_analysis): Delete any insn copying reg to itself. - (propagate_block): Move update of OLD after special life and death - for CALL_INSNs. - - * vax.md (ashrsi3, ashrdi3, rotrsi3): define_expands to negate - the shift count. - * expmed.c (expand_shift): Eliminate negate-the-shift-count feature. - - * vax.md (and*i3): define_expands which use complement and bit-clear. - * expmed.c (expand_bit_and): Eliminate feature to do that. - This function could be eliminated. - - * expmed.c (store_bit_field): Handle nested subregs. - Allow gen_insv to fail; if it does, delete what we did and then - use store_fixed_bit_field. - (store_fixed_bit_field): Use gen_lowpart to make SUBREGs. - Do that for SUBREGs just as for REGs. - Error check OFFSET must be 0 for REGs. - (store_split_bit_field): Error check OP0 is a SUBREG when expected. - (extract_bit_field): Allow gen_ext{,z}v to fail. - Use gen_lowpart to make subregs. - (expand_shift): If a try fails, delete any insns it made. - - * expmed.c (expand_mult): Use expand_unop to negate. - When adding 2 powers of 2, do serial shifts, not parallel. - Handle absval==1 like other powers of 2. - - * explow.c (force_reg): Don't lose any existing reg notes. - - * stmt.c (expand_start_stmt_expr): Eliminate return value. - (expand_end_stmt_expr): No need for argument. - * c-parse.y (primary): Change calls. - -Fri Sep 30 01:50:22 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) - - * integrate.c (copy_rtx_and_substitute, copy_address): - 'u' case erroneously returned the translated single element. - (copy_address): Special cases for frame-ptr and sums containing it. - MEM and LABEL_REF cases passed wrong arg to copy_rtx_and_substitute. - (copy_rtx_and_substitute): adjust mode of inline_target for context. - - * jump.c (true_regnum): For SUBREG of pseudo, use pseudo's # unchanged. - -Thu Sep 29 02:50:46 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) - - * i386.md (movsi, mov{q,h}i): Use find_reg_note to look for REG_WAS_0. - * vax.md (movsi, movhi): Likewise. - - * varasm.c (decode_rtx_const): Was setting un.addr.base wrong - for a CONST. Should be symbol name, not the SYMBOL_REF. - - * rtl.c (rtx_equal_p): When comparing registers, check - REG_FUNCTION_VALUE_P. If there are `u'-slots in the rtx, ignore them. - - * rtl.c (reg_mentioned_p): Some rtx types were mistakenly treated - as uniquified (various constants). - - * rtl.c (read_rtx): Element type 'S' is string that may be omitted. - * rtl.def (define_insn, define_peephole): Add a last element, type 'S'. - * genoutput.c: Collect these optional last elements and output as - array `insn_machine_info' of structs `INSN_MACHINE_INFO'. - The last must be defined as a macro. - * recog.h (insn_machine_info): Declare it if appropriate. - - * regclass.c (record_address_regs): In PLUS case, look inside SUBREGs. - - * reload1.c (reload): Use reg_equiv_address for REG_EQUIVs with - invalid memory addresses. - When changing pseudos to mem refs at end, do FIX_FRAME_POINTER_ADDRESS - on their addresses. - (alter_reg): Check that with reg_equiv_mem. - (spill_hard_reg): If fp reg, spill regardless of basic_block_needs. - - * reload1.c (order_regs_for_reload): Don't put invalid regs into - potential_reload_regs at all. (They used to go at the end.) - - * reload.c (find_reloads): Store all earlyclobber operand in - reload_earlyclobbers (# in n_earlyclobbers): - * reload1.c (choose_reload_targets): Don't use value of find_equiv_reg - if it matches an earlyclobber operand. - - * reload.c (find_reloads_address for REG): - No need for explicitly excluding hard regs in these tests. - (find_reloads, find_reloads_address_1 for REG): likewise. - - * reload.c (push_reload): Code testing reg_equiv_constant should - be obsolete; add error check to verify this. - - * reload.c (hard_reg_set_here_p): Handle CLOBBERs, SUBREGs, overlap. - (refers_to_regno_p): Handle CLOBBERS. Handle overlap. - New arg ENDREGNO specs end of range to check for; - all callers changed (all in this file). - - * reload.c (find_reloads): SUBREG like REG in alternate recovery - for earlyclobber conflict. - The operands to unswap are those that are supposed to commute. - When operands match, copy the regclass of earlier one for later one. - - * stmt.c (optimize_bit_field): Don't use gen_extend_insn; - use convert_move, then reorder the insns. - * optabs.c (gen_extend_insn): Deleted. - - * optabs.c (emit_cmp_insn): Don't emit queue before recursion. - Don't convert size to SImode for cmpstrqi. - - * optabs.c (expand_binop): Keep any old REG_NOTES when adding them. - Always delete_insns_since if returning failure. - (expand_unop, emit_unop_insn): Keep any old REG_NOTES when adding them. - * spur.md (movhi): likewise. - - * RTL_EXPR_SEQUENCE is now a chain of insns, not a SEQUENCE. - * emit-rtl.c (emit_insns): New fn, emit a chain of insns. - * expr.c (expand_expr): Use that. - Also put const0_rtx in the RTL_EXPR_SEQUENCE (mark RTL_EXPR as output). - * stmt.c (expand_end_stmt_expr): Use get_insns to get the chain. - - * stmt.c (expand_end_stmt_expr): Put the RTL_EXPR on rtl_expr_chain. - (fixup_var_refs): Scan all waiting RTL_EXPRs not yet output. - Also scan all stacked sequences on sequence_stack. - - * genemit.c (gen_expand): Generate calls to {start,end}_sequence. - Use `emit' to handle a PARALLEL. - (FAIL, DONE): Change to fit gen_expand changes. - - * emit-rtl.c (change_address): abort if arg isn't a MEM. - - * emit-rtl.c: Sequences work now by saving and restoring first_insn - and last_insn. So these variables are used even when in a sequence. - emit_to_sequence has been deleted. - (start_sequence, end_sequence): Save and restore first_insn, last_insn. - (get_last_insn, add_insn): Sequences no longer need special treatment. - (delete_insns_since, reorder_insns): likewise. - (push_to_sequence): Set up to emit to a given existing insn chain. - - * emit-rtl.c (copy_rtx_if_shared): Don't copy INSNs. - Insert missing return stmt in MEM case (for MEMs ok to share). - (unshare_all_rtx): Now can copy the REG_NOTES simply. - Copy the LOG_LINKS too. - - * emit-rtl.c (make_safe_from): Treat SUBREG as X like a REG. - (delete_insns_since): Don't lose if FROM is the first insn. - (emit): Declare void, since no useful value. - Call simplejump_p properly. - (restore_reg_data_1): When a reg is an address, do mark_reg_pointer. - - * dbxout.c (dbxout_types): Call dbxout_symbol to do the work. - (dbxout_type_def): Deleted. - (dbxout_symbol): Set TREE_ASM_WRITTEN when a TYPE_DECL is output. - Don't output the same one twice. - - * cse.c (fold_cc0): LABEL_REF is not zero. - - * cse.c (cse_insn): Don't insert src, dest if they are the same place. - - * cse.c (lookup_as_function): Return entire rtx, not just operand. - (cse_insn): Caller changed. Also, copy the result before inserting it. - - * cse.c (fold_rtx): Put constant arg last if commutative op. - Handle idempotents and identities for mult, div, booleans, shifts. - - * cse.c (canon_hash): Parens were missing around shifts in "rotates". - - * c-convert.c (convert_to_integer): Truncate TRUTH_ANDIF_EXPR - like TRUTH_AND_EXPR; OR also. - - * c-typeck.c (build_binary_op_nodefault): Do truthvalue_conversion - for TRUTH_ANDIF, etc. - (build_unary_op): More simplifications for TRUTH_NOT_EXPR; - uses new fn `invert_truthvalue'. - - * recog.c (reg_fits_class_p): New name for reg_renumbered_fits_class_p - since it no longer needs to renumber. Also it now really assumes - arg is a REG. Callers changed. - * reload.c: Callers changed. - - * recog.c (general_operand): (SUBREG (MEM...)) need not alter mode. - (register_operand, nonmemory_operand): (SUBREG (MEM...)) is allowed. - (memory_operand): (SUBREG (MEM...)) is *not* allowed. - (mode_independent_operand): Operand names were backwards! - (No change in effect of this function.) - - * print-tree.c (dump): Some expr nodes contain rtx's. Print as rtx's. - -Wed Sep 28 18:51:12 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * reload1.c (choose_reload_targets): If a reload wanted a group, - don't allow a single register for it. - -Tue Sep 27 11:43:56 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * final.c (output_addr_const): Handle DImode CONST_DOUBLEs. - * tm-*.h (PRINT_OPERAND): Treat DImode CONST_DOUBLE like a CONST_INT. - - * vax.md (rotldi3): Insn deleted; it doesn't really exist. - - * toplev.c (report_error_function): Also mention the file name, - for parallel makes. New arg FILE; all callers changed. - -Mon Sep 26 15:44:18 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expmed.c (expand_shift): When using extzv, convert OP1 to SImode. - * c-typeck.c (build_binary_op_nodefault): Convert shift-count - to int regardless of result type. - - * output-spur.c (output_move_double): Fix typo, optype0=>optype1. - - * expr.c (expand_call): Avoid null deref on result of FUNCTION_ARG. - - * tm-i386.h (FUNCTION_PROFILER): Use correct assembler syntax. - -Sun Sep 25 12:13:56 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * fixincludes: Handle some files in netdnet, netdna, vaxif, vaxuba. - - * reload.c (find_reloads): Make no optional reloads if not -O. - - * loop.c (strength_reduce): Can't eliminate a biv if it's used - to compute a DEST_ADDR giv. Only DEST_REG givs are safe. - - * loop.c (general_induction_var): Shift & divide ops are linear - only in 1st operand; don't look for biv or giv in 2nd operand. - - * vax.md (fix_truncdfqi2): Use `%#'. - -Sat Sep 24 00:25:48 1988 Richard Stallman (rms at gluteus.ai.mit.edu) - - * loop.c (n_times_set, n_times_used): Now file-scope; - no longer passed as args to several functions. - - * loop.c (basic_induction_var): Accept reg as source value - only if it's invariant. - (strength_reduce): Benefit calculation and threshold changed. - Check reducibility of givs before trying to reduce them. - Check eliminability of biv before considering the givs; - let this affect the threshold. - (record_giv): New subroutine adds a giv to the chain. - - * ns32k.md (incrementing sp): Use cmpd insns to increment by 4 or 8. - - * integrate.c (expand_inline_function): Rename return_label - to local_return_label; avoid shadowing. - -Fri Sep 23 13:57:52 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * loop.c (loop_skip_over): Put the new label after the note that ends - the loop. - - * loop.c: New function strength_reduce and subroutines. - * toplev.c: New var flag_strength_reduce, set from -fstrength-reduce. - - * vax.md (sob insns): They were broken, with plus in one place - and minus in another. Use plus consistently. - - * rtl.h (REG_LIBCALL, REG_NONNEG): Two new kinds of reg-note. - * optabs.c (expand_binop, expand_unop): Make REG_LIBCALL notes. - * loop.c (scan_loop, move_movables): Move entire library calls. - Use m->set_src to get the expression, in case it's from a REG_EQUAL. - (consec_sets_invariant_p): Likewise. - - * loop.c (scan_loop): Start scan from loop_top, if entry is rearranged. - Watch out for pseudo regs created by strength_reduce; - they can't index regno_last_uid. - (replace_regs): # regs mapped is now an arg. - - * loop.c (count_loop_regs_set): Don't increment n_times_set past 127. - (consec_sets_invariant_p): Reject if N_SETS arg is 127. - - * toplev.c (rest_of_compilation): NREGS arg of loop_optimize deleted. - - * c-decl.c (store_parm_decls): Anything but an IDENTIFIER_NODE - in SPECPARMS indicates a parmlist, not an identifier list. - (get_parm_info): Use only PARM_DECLs when making the list of arg types. - - * combine.c (try_distrib): Boolean ops can't distribute through PLUS. - MULT can distribute through PLUS and only PLUS. - -Thu Sep 22 15:57:41 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * jump.c (jump_optimize): uncond jump to a return becomes a return. - - * integrate.c (copy_parm_decls, copy_decl_tree): Set TREE_USED. - Avoid inevitable "unused" warning for these decls. - - * c-typeck.c (comptypes): When comparing array types, - ignore qualifiers of element type. - - * tm-*.h (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Define new macros. - * final.c (final_start_function): Use them to protect around - the call to the profiling function. - * stmt.c (expand_function_start): Set current_function_needs_context - and current_function_returns_struct. - - * stmt.c (expand_null_return_1): If clear_pending_stack_adjust - doesn't clear it, do the adjust now. - * expr.c (clear_pending_stack_adjust): No-op if -finline-functions. - - * cccp.c (macarg1, skip_if_group): Backslash makes next char ordinary. - - * reload.c (find_reloads): Delete code to look for an equiv reg - for a reg being input-reloaded. This isn't safe. - * reload1.c (choose_reload_targets): Do it here. - -Wed Sep 21 00:36:22 1988 Richard Stallman (rms at hobbes.ai.mit.edu) - - * tm-sun3.h (CPP_SPEC): Define it based on TARGET_DEFAULT. - (STARTFILE_SPEC): Likewise. - - * reload1.c (choose_reload_targets): When redirecting prev insn - into this insn's reload-reg, check this doesn't break the prev insn - by giving it a reg it can't accept. Use new fn constraint_all_regs_p. - - * tm-sparc.h (ASM_OUTPUT_LOCAL): Use .reserve, not .common. - - * tree.h (TREE_USED): New attribute macro. - * c-parse.y (primary): Set TREE_USED in ..._DECL nodes. - * toplev.c, flags.h: Define and set warn_unused. - * stmt.c (expand_end_bindings): Warn if any var is unused. - * print-tree.c (prtypeinfo): Print this attribute. - -Tue Sep 20 15:29:01 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * assert.h: `assert' must expand to an expression. - Error message should show arg before expansion, not after. - - * c-decl.c (implicitly_declare): Make decl perm if !warn_implicit - since start_function needs to look inside it in that case. - - * toplev.c (announce_function): If we don't print, don't record we did. - -Mon Sep 19 15:21:11 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-parse.y (structsp): If pedantic, warn if comma at end of enumlist. - - * reload.c (find_reloads): Check insn_code_number >= 0 when - looking in insn_operand_strict_low. - - * tm-sun[23].h (CPP_SPEC): Rename __HAVE_FPU__ to __HAVE_68881__ - and put a space after that option. - -Sun Sep 18 01:12:56 1988 Richard Stallman (rms at hobbes.ai.mit.edu) - - * reload.c (find_reloads): Make optional reloads for explicit MEMs. - - * tm-m68k.h (MODES_TIEABLE_P): If no 68881, can tie fixed to floating. - * m68k.md (movdi): Allow F's (can be DImode now). - Don't allow f-regs (experiment). Don't preference x-regs. - (DImode push): Allow y-regs. - (DFmode push): Allow y-regs, not x-regs. - - * reload1.c (modes_equiv_for_class_p): New function. - (reload): Compare multiple modes for reg group with that function. - Allows differing modes in some cases when not tieable. - - * c-parse.y (check_newline): Let ASM_OUTPUT_IDENT override .ident. - * tm-3b1.h (ASM_OUTPUT_IDENT): Define this as no-op. - - * emit-rtl.c (reorder_insns): Update sequence_{first,last}_insn if nec. - (get_last_insn): If in a sequence, return last insn of sequence. - (delete_insns_since): If in a sequence, set sequence_last_insn. - - * spur.md (CONST_DOUBLE load insn): Use & for most dests. - (cond branches): pass additional args to output_compare. - (movdf, movdi): Use & loading reg from mem. - (trunc*): Enable these. - (add): New pattern for adding large immediate operand. - (shifts): A define_expand for each kind of shift, - plus a recognizer which outputs repeated insns if necessary. - (call*): Use r9 as temp, not r2. - - * output-spur.c (output_compare): New args NEG_{EXCHANGE_,}OPCODE. - (singlemove_string): Handle reg as operand 1. - (output_add_large_offset): Fake add insn with large immediate arg. - (big_immediate_operand): Match such an arg. - - * tm-spur.h (FUNCTION_PROLOGUE): Align the stack pointer. - Handle bigger frames. - (TARGET_LONG_JUMP, TARGET_EXPAND_SHIFT): New target flags. - - * va-spur.h: Track position in regs and stack separately. - - * c-decl.c (duplicate_decls): Warn if prototype follows - non-prototype definition. - -Sat Sep 17 14:30:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expr.c (expand_builtin): Avoid crash if arg isn't integer type. - - * c-decl.c (duplicate_decls): Just warn if redeclaring a builtin, - and leave it built in unless it is redefined. - - * vax.md (ashlsi3): Use addl3, moval or movad when useful. - (addsi3): Avoid pushab, movab for constants < 64. - Do use movab when > 64 when operands match. - (mov*i): Use mcom* rather than mneg*. - Use add*3 with two quick immediate args when useful. - (movhi): Don't use movzbw or cvtbw; said to be slow. - - * rtl.h: New macros MEM_VOLATILE_P, MEM_IN_STRUCT_P, - INSN_DELETED_P, REG_USER_VAR_P, RTX_UNCHANGING_P, RTX_INTEGRATED_P, - CONSTANT_POOL_ADDRESS_P. - Most places changed to use them. - -Fri Sep 16 11:50:15 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * jump.c (jump_optimize): Was testing volatil on non-MEMs erroneously - when looking for no-op move insns. - - * cccp.c (handle_directive): Ignore comments between # and directive. - - * integrate.c (copy_rtx_and_substitute): Stack-push memrefs need - to be copied. - - * tm-bsd386.h (ASM_OUTPUT_DOUBLE): Undef previous def. - - * reload1.c (alter_reg): Don't reuse spill_stack_slot - if it isn't big enough for this reg's mode. - - * expr.c (emit_move_insn): After force_const_mem, ensure - mem address is valid. - (move_block_to_reg, move_block_from_reg): Likewise. - - * expr.c (expand_call): Spurious TREE_VALUE on args[i].tree_value. - - * m68k.md (zero_extend*): Require register_operand for operand 0. - - * stdarg.h (va_start): Alternate defn for sparc. - -Thu Sep 15 11:39:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-parse.y (yylex): When atof gives ERANGE, check for "0.0", etc. - - * assert.h (__assert): Alternative definition for -traditional. - - * output-sparc.c (output_block_move): Initialize xoperands. - - * combine.c (try_combine): Never subst for a reg that is incremented. - - * m68k.md (cmpm pattern): Make the match_operands match memrefs - and check that they are pushes in the extra condition. - This makes reloading handle the pushes properly. - - * expr.c (MOVE_RATIO): Make it 15. Allow overriding it. - -Wed Sep 14 09:50:08 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (build_enumerator): Use saveable_tree_cons. - - * vax.md (movdf): Use movq when safe. - - * Version 1.28 released. - - * tm-sparc.h (FIRST_PARM_CALLER_OFFSET): Defined. - -Tue Sep 13 00:11:37 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) - - * tree.c (saveable_tree_cons): New function. - * c-decl.c (pushtag): Use it; lists of tags needed for inlining. - (get_parm_info): Likewise. - - * print-tree.c (dump): Handle each kind of statement node individually. - - * integrate.c (copy_decl_tree): Don't pass DECL_RTL through - copy_rtx_and_substitute if it's a memref with constant address. - - * sdbout.c (sdbout_symbol): Don't output garbage when DECL_RTL - has a form we don't understand. - - * reload.c (find_reloads_address_1): Don't reload an autoincrement - if it has a suitable hard reg already. - - * c-typeck.c (process_init_constructor): Error check after digest_init. - - * c-parse.y (is_reserved_word): Now static. - -Mon Sep 12 19:19:28 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * i386.md (all push insns): Use `<' for the constraint, - since a push_operand won't fit an `m' constraint on this machine. - - * expr.c (expand_call): If fn name is `__builtin_alloca', - it may be alloca. This case arises if the user redeclares - `__builtin_alloca'. - -Sun Sep 11 01:47:01 1988 Richard Stallman (rms at gluteus.ai.mit.edu) - - * Eliminate MAX_SETS_PER_INSN. - * cse.c (cse_insn): Combine all the tables and dynamically allocate. - (cse_main): Count the actual number of SETs; don't estimate. - * genconfig.c: Don't calculate MAX_SETS_PER_INSN. - * stmt.c (expand_asm_operands): No limit on # of output operands. - - * expr.c (expand_call): - Store all non-reg parms first, then store all partially-in-reg - parms, then all the (precomputed) wholly-in-reg parms. - Special hair for BLKmode parms which must be passed entirely - in memory; also for BLKmode parms initialized from function calls, - for which it is best to allocate the space before computing value. - Use macro FIRST_PARM_CALLER_OFFSET to handle machines where reg - parms "take up space" on the stack below the stack pointer. - (store_one_arg): Handle case of preallocated stack loc for BLKmode. - Update current_args_size here, not in caller. - -Sat Sep 10 19:58:03 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * output-sparc.c (output_scc_insn): Changed asm templates. - Use common code to emit the move insns and label at the end of fn. - (output_mul_by_constant): Use %g1 as temporary reg. - - * sparc.md (indexed load pattern): Deleted. - (fix_truncdfsi2): Don't ignore value of output_fp_move_double. - (cse'd multiply): Operand 1 predicate is general_operand. - (return peepholes): Conditionalize on ! TARGET_EPILOGUE. - - * tm-sparc.h (INIT_CUMULATIVE_ARGS,FUNCTION_ARG...): - Use partial regs for args that start in regs but won't entirely fit. - - * tm-sparc.h (CONST_COSTS): 0 for args that can be immediate. - (STRUCTURE_SIZE_BOUNDARY): Now 8. - (STRUCT_VALUE_OFFSET): Defined as symbolic name for `64'. - - * expr.c (struct arg_data): New component `stack' says where in the - stack to put a BLKmode arg (if it's nonzero). - (store_one_arg): Handle case where it's nonzero. - (target_for_arg): New fn, precompute stack locn for BLKmode arg. - -Fri Sep 9 01:41:13 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) - - * cse.c (fold_rtx): Misnested ifs screwed SUBREG case. - - * reload.c (find_reloads_toplev): Special case for (SUBREG REG) - where REG is equivalent to a CONST_INT. - (find_reloads): Don't ignore the value returned by find_reloads_toplev. - Treat a (SUBREG constant) like a (SUBREG MEM): set force_reload. - - * reload.c (push_reload): Abort if memory subreg is not - paradoxical; the MEM mode should be narrower than the SUBREG. - - * stmt.c (fixup_var_ref_1): Fixup memory subregs in an insn - copying VAR to or from a register. - - * m68k.md (movdi, movdf): the x-reg constraint accidentally allowed - moving rm to rm with no &. - - * vax.md (call_value): Typo. - - * expr.c (emit_block_move, emit_push_insn): prefer movstrqi to movstrsi - - * m68k.md (FPA multiply): bad opcodes for 3-operand multiply insns. - -Thu Sep 8 18:22:14 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-parse.y: Use YYERROR instead of synonym YYFAIL. - BISON VERSIONS PRIOR TO THIS DATE WON'T WORK! - - * c-typeck.c (digest_init): Use TYPE_MAIN_VARIANT of array elt type. - - * tm-sun[23].h (CPP_SPEC, ASM_SPEC): Let -m(c|)680[12]0 control - options for CPP and assembler. - -Wed Sep 7 13:44:59 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * New handling of reloading of PRE_DEC, etc. - Now reload_in is the PRE_DEC, etc, and reload_inc is always positive. - * reload.c (push_reloads): Old code to set reload_inc deleted. - (find_reloads_address_1): Call push_reload the new way. - (find_inc_amount): Value always positive. - * reload1.c (choose_reload_targets): Detect this case. - (inc_for_reload): New fn; does the real work for this case. - * m68k.md (call, call_value): Fn address must be offsetable. - - * combine.c (try_distrib): Reject strange cases such as if - result of PREV1 or PREV2 is used in a memory address in INSN. - - * vax.md (movsf): Generate movl instead of movf. - - * expr.c (expand_call): If have regparms, store all BLKmode args - before all the other args. - (store_one_arg): New subroutine broken out. - - * output-sparc.c (output_block_move): Complete rewrite. - - * sparc.md (cse'd multiply insn): Typo in asm-output code. - -Tue Sep 6 20:05:48 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-parse.y (yylex, etc.) Install Schmidt's perfect hash table. - - * gcc.c: handle extension `.cc'. - -Mon Sep 5 12:09:58 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Version 1.27 released. - - * tm-i386.h (PREFERRED_RELOAD_REG): When reloading a QImode, - make sure the class doesn't include %esi or %edi. - * i386.md (movqi): Eliminate only use of the class `x', - for which PREFERRED_RELOAD_REG cannot work. - (In next version, get rid of INDEX_CLASS). - Also use `*' to cause preferencing of Q_REGS. - * tm-m68k.h (PREFERRED_RELOAD_REG): When reloading a QImode, - use DATA_REGS. - - * reload.c (push_reloads): Braino in last change when IN == 0. - - * flow.c (mark_used_regs, mark_set_1): Bug if HARD_REGNO_NREGS - returns 0 for VOIDmode reg (inside a CLOBBER). - - * c-parse.y (asm_operand): Handle `("REGNAME")' as an operand. - * recog.c (decode_asm_operands, asm_noperands): Ignore any CLOBBERs. - * regclass.c (reg_names): Variable now global. - * stmt.c (expand_asm_operands): Generate CLOBBERS when appropriate. - - * stmt.c (assign_parms): Ignore parms that aren't PARM_DECLs. - - * varasm.c (assemble_variable): Do ASM_OUTPUT_EXTERNAL for functions. - - * c-parse.y (yylex): floatflag is now an enum. - Detect invalid use of decimal points (> 1, or in exponent) - and multiple exponent letters. - - * expr.c (expand_call): If inlining fails, set TREE_ADDRESSABLE. - -Sun Sep 4 00:36:30 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) - - * c-decl.c (grokdeclarator): A const array becomes an array of consts. - * c-typeck.c (build_array_ref): Array ref is const if array elts are. - - * output-sparc.c (output_move_double): Change criteria for ldd, std. - (output_fp_move_double): New alternatives avoid ldd, std for - stack refs that aren't aligned. - (output_block_move): Use %g1 as temp reg. - - * sparc.md (floating point load from constant mem address): - Use %g1 as temp reg. Use output_move_double in DF case, not ldd. - (movsf): Asm insn typo in FPreg to FPreg case. - (floatsi{s,d}f2): Constraint changed. - Also new special case pattern in front of it. - (fix_truncdfsi2): Use output_move_double, not ldd. - (addsi3, subsi3): Use %g1 as temp reg. - (cse-optimized multiply): Constraint now `g'; output generalized. - (andsi3, orsi3, xorsi3): Use %g1 as temp reg. - - * reload.c (find_reloads): Force int constants into memory just - like floating ones, if memory is allowed and no regs are. - - * expr.c (expand_call): Don't treat structure_value_addr like a parm - if the first parm would be passed in a register. - Also, write comments for all local vars. - - * tm-386v.h (START_SPEC): Use {g,m}crt1.o, not {g,m}crt0.o. - (LIB_SPEC): Always use crtn.o. - -Sat Sep 3 13:05:50 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * explow.c (plus_constant): Don't put CONST around lone SYMBOL_REF. - - * combine.c (subst): Simplify zero- or sign-extend of a constant. - - * expr.c (expand_expr): for REAL_CST, etc., check for invalid - memory addresses and copy into registers. - - * integrate.c (expand_inline_function): If incoming struct value addr - is in memory, map it like a memory parameter. - - * tm-*.h (FIRST_PARM_OFFSET): Now takes fndecl as argument. - * integrate.c (expand_inline_function): Calc., use and save - this fns value of FIRST_PARM_OFFSET. - (copy_rtx_and_substitute): Use that value. - * stmt.c (assign_parms): Likewise. - - * tm-sparc.h (FIRST_PARM_OFFSET): Make it 64 if value is BLKmode. - (STRUCT_VALUE{,_INCOMING}): Put the value in 64(fp). - - * tm-sparc.h (PRINT_OPERAND_ADDRESS): Print offsets in decimal. - Avoid excess `+' before a negative offset. - - * stmt.c (expand_function_start): Create the return value rtl - before making the tail-recursion loop point. - - * combine.c (gen_lowpart_for_combine): Generate a paradoxical subreg - rather than a wider memref. - - * reload.c (push_reload): Extend last change to case where OUT != 0. - -Fri Sep 2 11:43:20 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stmt.c (fixup_var_refs): Adjust last_parm_insn when deleting insns. - - * expr.c (emit_push_insn): calling memcpy, bump TEMP 2 pointers worth. - -Thu Sep 1 16:39:57 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * reload1.c (choose_reload_targets): Test for canceled reload - before looking inside reload_out. - - * jump.c (jump_optimize): Bug in last change. - - * m68k.md (return): Pattern disabled; confuses Aug 29 stmt.c change. - * ns32k.md, i386.md: likewise. - - * emit-rtl.c (emit_note_force): New, like emit_note but always do it. - * stmt.c (expand_function_end): Use emit_note_force. - -Wed Aug 31 11:34:08 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * reload1.c (alter_reg): New arg FROM_REG is hard reg that the pseudo - was spilled from. Works with spill_stack_slot. Callers changed. - Now all pseudos spilled from one hard reg get the same slot. - (reload): Initialize new variable spill_stack_slot. - - * cse.c (cse_insn): Don't insert floating point mems if -ffloat-store. - - * reload.c (find_equiv_reg): Allow no equivs for volatile memrefs. - Also none for floating mem refs if -ffloat-store. - - * output-sparc.c (output_mul_by_constant): make `p' and `log' unsigned. - -Tue Aug 30 13:47:12 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * jump.c (jump_optimize): Ignore other NOTEs while looking for - a NOTE_INSN_FUNCTION_END. - - * integrate.c (save_for_inline): Flush extra call to max_reg_num. - Don't copy NOTEs that are NOTE_INSN_FUNCTION_END. - (copy_for_inline): Don't copy NOTEs that are NOTE_INSN_FUNCTION_END. - - * stmt.c (optimize_bit_field): If bit field is SRC, strip subregs - from the DEST. - - * expmed.c (expand_mult): Special case for -1 as one operand. - -Mon Aug 29 12:14:51 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stmt.c (expand_goto_internal, expand_fixup): New arg LAST_INSN. - (expand_return): Pass that arg in tail-recursive case. - (other callers): Pass 0 for that arg. - (expand_null_return): Handle HAVE_return nonzero w/ FUNCTION_EPILOGUE. - (expand_null_return_1): New fn, has guts of old expand_null_return. - (expand_return): Call expand_null_return_1 to pass LAST_INSN arg. - (expand_return): Handle HAVE_return nonzero w/ FUNCTION_EPILOGUE. - (expand_function_{start,end}): Likewise. - (expand_cleanups): Fix typo in recursive-list case. - (move_cleanups_up): New fn. - - * expr.c (expand_call): Execute cleanups_of_this_call on exiting. - Notice calls to __builtin_new (but don't do anything about them yet). - - * reload.c (push_reload): If reloading a (SUBREG (MEM ...) ...), - really reload just the MEM in the MEM's own mode. - - * sparc.md: Define patterns for insns that set the ccs. - Define set-flag insns. - New patterns for indexed load, and for optimizing signed bit fields. - (mulsi3, umulsi3): Give "r" constraint to operand 0. - Peephole optimizers recognize some cases where delay insns are safe. - Changed patterns for call and return insns as well. - - * output-sparc.c (single_insn_src_p): New fn. - (output_delay_insn): New fn. - - * tm-sparc.h (TARGET_EPILOGUE): New target flag. - (NOTICE_UPDATE_CC): New clause for funny PARALLEL with a REG in it. - - * m68k.md (movqi): Use *'s to ensure preferencing d-regs. - - * c-parse.y (datadef): If traditional, no warning about no specs. - -Sun Aug 28 14:34:33 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tm-i386.h: Define PROMOTE_PROTOTYPES. - POINTER_BOUNDARY now 32. - - * regclass.c (reg_scan): Compute `max_parallel', max # of sets and - clobbers in any insn in this function. - * global-alloc.c (global_conflicts): Use that, not MAX_SETS_PER_INSN. - - * stmt.c (expand_asm_operands): MAX_SETS_PER_INSN limits # output ops. - - * emit-rtl.c (init_emit_once): Make elt 2 of {f,d}const0_rtx nonzero. - - * c-decl.c (lang_decode_option): Handle -Wwrite-string. - * c-parse.y (combine_strings): If that flag, make array of const char. - - * expr.c (expand_expr): for INTEGER_CST, always use immed_double_const; - never do output_constant_def (it didn't work). - Also heed WORDS_BIG_ENDIAN. - - * varasm.c (output_constant): Handle integer CONST_DOUBLEs. - (output_constant_def): Abort if arg is an INTEGER_CST. - - * emit-rtl.c (gen_rtx): Don't return {f,d}const0_rtx for DImode. - -Sat Aug 27 12:37:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (pushdecl): Global extern decls set TREE_PUBLIC - like local ones. - - * integrate.c (expand_inline_function): Handle parms that were - passed in registers but whose homes are on the stack. - - * varasm.c (force_const_mem): Output ints according to spec'd mode. - ({record,compare}_constant_rtx,const_hash_rtx,decode_rtx_const): - Take mode as argument; pass it along. - - * c-parse.y (read_escape): No warning for `\{' or `\['. - -Fri Aug 26 12:23:07 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stmt.c (fixup_memory_subreg): Typo calculating big-endian adjust. - - * vax.md (call_value): Handle >255 args as in `call'. - -Thu Aug 25 16:00:51 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * jump.c (delete_jump): Don't delete the cc-setter if it has autoinc. - -Wed Aug 24 16:33:37 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expr.c (expand_expr): For sun with a COND_EXPR, use SUBTARGET - if validate_subtarget says ok. - - * tree.c (build_index_type): make_index_type moved here and renamed. - - * combine.c (move_deaths_2): New function. - (try_distrib): Use that, not move_deaths. - - * tm-sparc.h (SHIFT_COUNT_TRUNCATED, STORE_FLAG_VALUE): Define them. - - * tm-sparc.h: FUNCTION_{PRO,EPI}LOGUE: Save room for ins and - locals to spill to the frame if any ins *or* locals are live. - - * tm-sparc.h (NOTICE_UPDATE_CC): Delete the clause that always - cleared the cc's for unrecognized insns. - - * reload1.c (reload_as_needed): Don't try to use a spill-reg - in a basic block that wasn't spilled: ignore optional reloads. - -Tue Aug 23 09:45:05 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * output-sparc.c (output_scc_insn): New function. - - * expr.c (expand_builtin, alloca): Round result of alloca - up to a multiple of STACK_BYTES. - - * toplev.c (compile_file): Default main_input_filename is cc1 input. - - * tm-i386.h (FUNCTION_BOUNDARY): 32 avoids extra prefetch. - - * i386.md (movdi, movdf): Add `&' where needed in constraints. - -Mon Aug 22 11:57:51 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * symout.c (symout_finish): Allocate typevector after the symout_types. - -Sun Aug 21 16:10:54 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tm-3b1.h (ASM_FORMAT_PRIVATE_NAME): Use a `_' as well as `%'. - - * expr.c (expand_expr): Typo setting MODE for MAX_EXPR. - - * Makefile (stage*): If ln fails, copy gnulib to stage*. - (realclean): Do `clean' and then some. - (install): new var USER_H specifies headers to copy. - - * c-typeck.c (build_binary_op_nodefault): LT_EXPR, etc. - on ptr vs int failed to set result_type. - (build_conditional_expr): Don't replace nonzero int - with null_pointer_node. - - * combine.c (remove_links, try_distrib): New fns. - (subst): New simplifications for ZERO_EXTEND, SIGN_EXTEND. - (combine_instructions): Call try_distrib. - (FAKE_EXTEND_SAFE_P): Allow SUBREGs. - - * m68k.md (non-FPA pattern for floatsisf2): Typo, had DF for SF. - -Sat Aug 20 12:04:37 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * integrate.c (copy_address): Variant of copy_rtx_and_substitute. - (copy_rtx_and_substitute): Use copy_address for MEM address that - doesn't satisfy memory_address_p. - - * reload.c (find_reloads): If force_reload set, don't set WIN - for a MEM even if `m', `o' or `g' in constraint. - - * i386.md (expendqihi2): Typo in asm template. - - * toplev.c (rest_of_compilation): Call clear_const_double_mem. - * varasm.c (init_const_rtx_hash_table): Don't call it here. - (immed_real_const): Don't record the rtx in the REAL_CST node. - (force_const_double_mem, clear_const_double_mem): Use cc0_rtx, not 0, - as flag for a CONST_DOUBLE not on the chain. - - * cccp.c (handle_directive): If traditional, do scan strings - but accept unterminated ones. - (collect_expansion): -traditional: Don't recognize comments in strings. - Stringify arguments that appear within strings. - (skip_quoted_string): -traditional: Always exit at newline. - (macroexpand): -traditional: Don't put `"'s around stringified arg. - (macarg): Set stringified_length accordingly. - - * c-decl.c (duplicate_decls): Avoid error redeclaring fcn after - implicit decl if -traditional. - - * toplev.c (announce_function, report_error_function): - Change communication logic between these fcns. - - * c-decl.c (lang_decode_options): Handle -Wall here. - * toplev.c (main): not here. - - * tm-bsd386.h: Don't include tm-i386.h--be like tm-att386.h - -Fri Aug 19 11:08:36 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * config-sun4.h: If sparc, include config-sparc.h. - Never include alloca.h. - - * tm-m68k.h (TARGET_SWITCHES): Define `-mc68020', `-mc68000'. - - * c-decl.c (init_decl_processing): If traditional, use signed sizetype. - - * gcc.c (main): Use stderr for printing version. - -Thu Aug 18 14:42:36 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Version 1.26 released. - - * m68k.md (movsi): Constraint change for fpa regs. - - * reload1.c (choose_reload_targets): Clear reg_reloaded_contents - for all regs of a multi-reg group. - - * reload.c (find_equiv_reg): HARD_REGNO_NREGS wants mode, not size. - Check properly for overlap against multiword reload regs. - -Tue Aug 16 14:54:18 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * varasm.c, expr.c (immed_double_const): immed_real_const_2 renamed. - - * tm-i386.h (SFVALUE): Should be `double'. - * tm-i386v.h (SFVALUE): Don't override it. - - * tm-i386.h (ASM_OUTPUT_ASCII): Don't define it. - * tm-att386.h: Definition moved here. - - * tm-bsd386.h: New file, for Sequent. - * tm-seq386.h: New file, for Sequent. - * config-i386.h: New file, for Sequent. - - * expr.c (push_block): Take account of STACK_POINTER_OFFSET. - (expand_call): Therefore need not do so here. - - * optabs.c (expand_fix): Typo if going via DImode. - - * reload1.c (choose_reload_targets): Don't * reload_reg_rtx if 0. - -Mon Aug 15 01:11:49 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * integrate.c (copy_for_inline): Don't try copying 0-length vector. - (copy_rtx_and_substitute): Likewise. - - * m68k.md (andsi3): use clrw instead of andw #0. - - * print-tree.c (walk): Don't omit permanent nodes reach from temps. - - * m68k.md (zero_extend...): Reinstall the old zero-extend insns - without names, so they can help the combiner. - - * expr.c (expand_expr): Don't use hard regs as subtargets. - * combine.c (FAKE_EXTEND_SAFE_P): Always consider MEMs safe. - * reload.c (find_reloads): For (SUBREG (MEM ...)) set force_reload. - - * c-parse.y (redescape): Don't warn for `\('. - - * reload.c (find_reloads_address): #if was backwards. - -Sun Aug 14 16:52:22 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-typeck.c (shorten_compare): Change switch to chain of ifs. - - * tm-ns32k.h (PRINT_OPERAND): CONST_DOUBLE contains a double - even if it's SFmode. - (FUNCTION_PROLOGUE): If MAIN_FUNCTION_PROLOGUE defined, run it. - - * cccp.c (file_buf): Rename field `free' to `free_ptr'. - - * Makefile (ALLOCA, MALLOC, LIBDEPS): New variables for easier - customization. Executables depend on LIBDEPS instead of OBSTACK1. - (cccp): Deps and libs now work like the others. - - * output-i386.c (notice_update_cc): Rewritten for clarity. - - * tm-i386.h (OUTPUT_JUMP): If CC_IN_OVERFLOW, abort. - - * recog.c (push_operand): Test for stack_pointer_rtx. - - * integrate.c (copy_rtx_and_substitute): Don't submit push-operands - to `memory_address'--it would lose on machines where pushing is - a special insn, not an addressing mode. - - * output-i386.c (top_dead_p): No more redundancy--that didn't work. - Now one method if optimized, one for call_insns if noopt, one for - other insns if noopt. - (call_top_dead_p): fp_top_dead_p renamed - and only the call-insn clause remains. - - * i386.md (cmpsf, cmpdf): Output was backwards. - (", tstsf, tstdf): Set CC_IN_80387. - (incb pattern): Restrict allowable registers. - (movsf, movdf): Call top_dead_p only when absolutely necessary. - (call_value): Use top_dead_p, not subroutine. - -Sat Aug 13 15:19:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stupid.c (stupid_life_analysis): If only 1 reg class, - call stupid_find_reg only once. - - * stmt.c (expand_function_start): - Clear current_function_pretend_args_size. - - * expr.c (store_constructor): If target is hard reg, go via a pseudo. - - * varasm.c (real_constant_chain): Now static in this file. - (force_const_double_mem): Put R on chain if not already on. - (clear_const_double_mem): Set XEXP (,2) to 0; - also clear real_constant_chain and the chain links. - * emit-rtl.c (init_emit_once): Put 0 in XEXP (,2) of {d,f}const0_rtx. - * cse.c (canon_hash): For CONST_DOUBLE, ignore elts other than 0,1. - -Fri Aug 12 11:48:38 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * reload1.c (order_regs_for_reload): Handle REG_ALLOC_ORDER more spots. - - * global-alloc.c (find_reg): error handling REG_ALLOC_ORDER; - also error skipping regs known to be hopeless. - * local-alloc.c (find_free_reg): error skipping hopeless regs. - * stupid.c (stupid_find_reg): likewise. - - * local-alloc.c (qty_compare_1): typo, had q1 for q2. - - * expr.c (expand_expr): Don't use supplied target when optimizing - arithmetic using a comparison or conditional; that target could be - needed for the result of the comparison. - - * reload1.c (reload): Don't set reg_equiv_constant for hard regs. - - * stupid.c (stupid_life_analysis): Ignore reg R if regno_reg_rtx[R]==0. - - * symout.c (symout_finish): Use perm. links in permanent_fwd_refs. - - * i386.md (movhi, movqi): Check no_labels_between_p. - -Thu Aug 11 10:44:46 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-parse.y (yylex): Out-of-range float is just a warning. - - * tm-gnx-v3.h: New file for Genix. - * ns32k.md (movsi, call, call_value): GNX_V3 conditionals. - * tm-ns32k.h (PRINT_OPERAND_ADDRESS): Changes for Genix. - - * ns32k.md (insv patterns): Operand 0 is read-write. - - * i386.md (tstsf, tstdf): Don't push the arg if already in st(0). - - * varasm.c (output_constant_def): If EXP is permanent, the rtl is too. - - * tm-*.h (ASM_OUTPUT_{LOCAL,COMMON}): New 4th arg, rounded size - vs unrounded size. - * varasm.c (assemble_variable): Pass new arg. - * symout.c (symout_init): Likewise. - - * cccp.c (rescan): Don't let char const cross lines. - (skip_quoted_string, macarg1, discard_comments): Likewise. - - * expr.c (expand_expr, VAR_DECL case): handle flag_force_addr. - - * tm-i386v.h (TAREGT_DEFAULT): Assume 80387. - * config-i386v.h (alloca): Use __builtin_alloca under GNU C. - -Wed Aug 10 11:23:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * reload.c (find_reloads): Alternative loses - if it has no regs for a reg operand. - - * tm-sun3.h (STARTFILE_SPEC): Define, for fpa's sake. - * tm-m68k.h: New hard regs, reg classes, reg class letters, - target flag and switch, operand syntax and CC handling for fpa. - * m68k.md: Add fpa insn patterns. - * output-m68k.c (standard_SunFPA_constant_p): New fn. - (output_move_const_{single,double}): Handle fpa regs. - (singlemove_string): Handle fpa regs. - - * stmt.c (fixup_memory_subreg): Result had wrong mode. - - * ns32k.md (insv patterns): Adjust bit-number along with address. - - * sparc.md (negdf2, absdf2): Order of the words was backwards. - - * reload1.c (new_spill_reg): End confusion about meaning of 1st arg. - Arg counted_for_nongroups had wrong type. - - * tm-m68k.h (FUNCTION_{PRO,EPI}LOGUE): Round frame size to word bdry. - -Tue Aug 9 07:53:59 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tm-i386.h (ASM_OUTPUT_ASCII): Don't lose the sign bit. - - * tm-i386v.h (STARTFILE_SPEC, LIB_SPEC): Use crt1.o, crtn.o. - - * stmt.c (fixup_var_refs_1): fixup all memory subregs. - - * reload1.c (choose_reload_targets): Don't strip paradoxical - subregs from values to be reloaded. - - * cccp.c: Comment out text after #endif. - - * c-parse.y (init): Allow empty braces as init; warn if pedantic. - - * c-decl.c: Move C-specific options from toplev.c. - * c-tree.h: Move their externs from flags.h. - * c-decl.c (lang_decode_option): New fn called by `main'. - * toplev.c (sorry, really_sorry): New error reporting fns. - * c-decl.c (language_string): New var, name of this language. - - * c-parse.y: Don't include flags.h. - * dbxout.c: Do include it. - - * dbxout.c (dbxout_type): Handle function fields and static fields - and basetypes. Handle METHOD_TYPE and REFERENCE_TYPE. - Abort on unexpected tree code. - (dbxout_args): New fn to output prototype arg types. - (everywhere): Use IDENTIFIER_LENGTH instead of strlen. - (dbxout_type_name): Cleanup; avoid strlen. - - * local-alloc.c (reg_is_set): Don't call {post_,}mark_life for pseudos. - - * tree.h (TYPE_BASECLASSES): New field in type nodes. - - * ns32k.md (insv patterns): Was adjusting the address wrong. - - * c-decl.c (grokdeclarator): Just a warning for inline varargs fn. - -Mon Aug 8 08:16:46 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * varasm.c (immed_real_const_2): Guts of creating a CONST_DOUBLE. - * expr.c (expand_expr): Use that for 64-bit int constants. - - * loop.c (invariant_p): Don't check x->unchanging; it's not safe. - - * c-typeck.c (build_indirect_ref): Handle flag_volatile here - so that it propagates to component_refs. - * expr.c (expand_expr): No need to handle it here. - - * integrate.c (save_for_inline, expand_inline_function): - Set up insn_map to record mapping of old uids to copied insns. - (copy_for_inline, copy_rtx_and_substitute): Map 'u' refs via insn_map. - - * emit-rtl (emit_label, emit_barrier): Return what was emitted. - - * sdbout.c (sdbout_filename): Split off from sdbout_init. - * tm-encore.h, tm-3b1.h, tm-vaxv.h, tm-att386.h (ASM_FILE_START): - Call sdbout_filename. - - * toplev.c: Better messages for invalid options. - - * tm-m68k.h (PRINT_OPERAND_ADDRESS): Handle labelref+basereg. - - * tm-3b1.h (PUT_SDB_DIM): Override sdbout's definition. - (ASM_FORMAT_PRIVATE_NAME): Override tm-hp...s definition. - (PUT_SDB_PLAIN_DEF): Prepend `~' to specified name. - (SDB_GENERATE_FAKE): Prepend `~'. - - * gcc.c: Include config.h before obstack.h. - -Sun Aug 7 11:17:56 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stor-layout.c (layout_decl): Do nothing with CONST_DECL. - Treat FRIEND_DECLs like variables. - (layout_record): Handle VAR_DECLs and FUNCTION_DECLs in the fieldlist. - Handle basetypes (almost like fields). - (layout_type): Handle REFERENCE_TYPE and METHOD_TYPE. - - * tree.c (temp_tree_cons): New fn. - (array_type_nelts, simple_cst_equal): New fns. - (lvalue_p): CALL_EXPR is an lvalue if it returns REFERENCE_TYPE. - () Manage TYPE_REFERENCE_TO. - (TYPE_HASH_SIZE): Bigger. - (type_list_equal): Compare the TREE_PURPOSE fields. - (build_reference_type, build_method_type): New fns. - - * stmt.c (block_stack): Add field `cleanups' to each element. - (expand_{start,end}_bindings, expand_decl): Update that field. - (stack_block_stack): Now includes blocks that have cleanups. - (goto_fixup_chain): Add field `cleanup_list_list'. - (expand_goto_internal): Execute cleanups for blocks being exited. - (expand_fixup): Make a fixup if any block has cleanups. - (fixup_gotos): New args CLEANUPS and DONT_JUMP_IN. - Execute cleanups for blocks being exited, or add to cleanup_list_list. - (expand_end_bindings): New arg DONT_JUMP_IN. Execute any cleanups. - (expand_decl): New arg CLEANUP. - (expand_cleanups, fixup_cleanups): New functions. - * c-decl.c: Calls to expand_decl pass new arg. - * c-parse.y: Calls to expand_end_bindings pass new arg. - - * stmt.c (expand_return): Handle INIT_EXPR, or bare RESULT_DECL. - - * stmt.c (case_stack): Add field `has_default' to each element. - (pushcase,expand_end_case): Maintain and use that field. - - * stmt.c (pushcase): Handle RANGE_EXPR cases. - (pushcase_range): Create RANGE_EXPR cases. - - * final.c (final): Always pass 3 args to ASM_OUTPUT_CASE_END. - * tm-3b1.h: Delete offending spaces. - -Fri Aug 5 16:17:16 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * integrate.c (copy_rtx_and_substitute): Don't make fp+reg+const - without an intermediate temporary reg. - - * print-tree.c (dump): Don't print an identifier's chain. - - * toplev.c (compile_file): Treat `.i' suffix like `.co'. - - * gcc.c: New config macro CC1_SPEC: extra switches for cc1. - Make a new spec for `.i' files. - - * c-decl.c (pushdecl, finish_decl): Delete duplicate tests. - - * varargs.h: Maybe include va-sparc.h or va-spur.h. - * va-sparc.h: New file. - * va-spur.h: renamed file. - - * tree.h ({TYPE,DECL}_LANG_SPECIFIC): Types and decls can point to - language-specific structures containing other info. - * print-tree.c (dump): Hooks for printing the language-specific - data in types and decls. - -Thu Aug 4 08:54:30 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tree.def: Add some tree codes for C++. - - * Rename files: parse.[yh] -> c-parse.[yh], decl.c -> c-decl.c, - typecheck.c -> c-typeck.c. - Part of tree.c split out to c-convert.c. - - * expr.c (push_block): No longer static. - (expand_expr): Handle REFERENCE_EXPR and INIT_EXPR. - (expand_call): Turn a METHOD_TYPE to a FUNCTION_TYPE. - This is probably not all that is required. - - * parse.y (yylex): Use p->rid to check for `signed' and `inline'. - - * tm-sparc.h (ASM_OUTPUT_SOURCE_LINE): typo. - - * sparc.md: Add a pattern for andcc. - (cmpsf): Clobber reg 32 in DFmode. - (branches): There are no unsigned floating branches; abort. - (bgt): Correct name of floating variant. - (mov?i): Load small constants via mov. - (movdf for constants): Use mov, not add, to move regs. - (movsf, floatsi*, fix*): Simplify reg-to-reg-via-mem move generation. - (trunc*): Use mov, not or, to move regs. - (negsi2, one_cmplsi2): Avoid "neg" and "not" assembler syntax. - (call...): Generate "call" insns; handle #-reg-parms value. - * Define some peepholes for return insns. - - * tm-sparc.h (TARGET_SUN_ASM): New target flag. - (TARGET_DEFAULT): Now 1. - (FRAME_POINTER_REQUIRED): Now 1. - (STARTING_FRAME_OFFSET): Now -16. - (LEGITIMATE_CONSTANT_P): Only CONST_DOUBLEs fail. - (FUNCTION_{PROLOGUE,EPILOGUE}): Rewritten. - - * output-sparc.c (small_int): Test for int that mov can load. - (singlemove_string): Use mov, not add. - (output_move_double): Changes for overlap and for use of ldd, std. - (output_fp_move_double): Use ldd, std when safe. - (make_f0_contain_0): Simplify. - - * integrate.c (expand_inline_function): Some special CALL_INSN - handling no longer needed due to REG_FUNCTION_VALUE_P. - - * m68k.md (movqi): Constraints allow moving areg to areg. - -Wed Aug 3 08:29:31 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Version 1.25 released. - - * integrate.c (expand_inline_function): Don't let MEM be inline_target. - -Tue Aug 2 09:13:37 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * integrate.c (INTEGRATE_THRESHOLD): New macro, default dfn here. - (function_cannot_inline_p): Use it. - - * rtl.h (REG_FUNCTION_VALUE_P): New macro. - * stmt.c (expand_function_start): Set that flag in the return reg. - * integrate.c (expand_inline_function, copy_rtx_and_substitute): - Test that flag to test for the return value. - * expmed.c (expand_fixed_bit_field, expand_mult, expand_divmod): ditto. - FUNCTION_VALUE_OUTGOING_REGNO_P no longer needed. - -Mon Aug 1 02:46:08 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * integrate.c (copy_rtx_and_substitute): If NO_FUNCTION_CSE, - don't break out constant fcn addresses here. - - * expmed.c (expand_fixed_bit_field): Tests of FUNCTION_VALUE_REGNO_P - were backwards. - -Sun Jul 31 13:10:07 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * recog.c (indirect_operand): New function. - - * output-i386.c (print_operand): define %*. eliminate %s. - (fp_top_dead_p): In nonopt case, skip stack-adjusts while looking - for the insn that uses the function value. - - * varasm.c (text_section, data_section): New functions. - Replaced explicit printfs elsewhere with calls to them. - * final.c (final_start_function): Use these fns. - * sdbout.c (sdbout_one_type): Use text_section. - * tm-att386.h (ASM_OUTPUT_LOCAL): Use data_section. - - * expr.c (prepare_call_address): Don't pass const via reg if no -O. - - * tm-sparc.h (FUNCTION_{PROLOGUE,EPILOGUE}) Round the size of saved - registers. Fix bug counting saved registers. - - * tm-sparc.h (ASM_OUTPUT_SOURCE_LINE): Define this macro. - - * tm-sparc.h (DEFAULT_SIGNED_CHAR): Now 1. - - * expr.c (expand_builtin, alloca case): Adding stack offset needs - special code if TARGET is a MEM. - - * dbxout.c (dbxout_init): Define Ltext: after the reference to it. - - * tm-3b1.h (ASM_OUTPUT_CASE_LABEL): `short 0' triggers assembler bug; - `short L%nn-L%nn' supposedly works. - -Sat Jul 30 00:25:52 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * sparc.md (floatsidf2): Minor change in output. - (fix_trunc{sf,df}si2): Similar. - - * output-sparc.c (output_fp_move_double): Minor change in output. - - * stmt.c (assign_parms): Don't count stack space for struct value - address if the function does not have one. - - * sdbout.c: Output .dim's and total size for arrays. - Detect bit-fields properly. - Changed handling of structure tags. - - * reload1.c (new_spill_reg): counted_for_nongroups is a new arg; - store 1 in it if this reg is needed for max_nongroups. - - * reload1.c (choose_reload_targets): Allow inheritance of DFmode - if it needs only one register. - - * reload1.c (choose_reload_targets): Delete the death-note from the - store-insn of an inherited reload if PRESERVE_DEATH_INFO_REGNO_P. - - * reload.c (push_reload): Crash if PREFERRED_RELOAD_CLASS is NO_REGS. - (find_reloads): Smarter handling of forcing CONST_DOUBLE into mem. - Check PREFERRED_RELOAD_CLASS & do this if it says NO_REGS. - - * reload.c (subst_indexed_address): Handle case with 2 regs - and no constant term. - - * local-alloc.c: New variable qty_n_refs, set from reg_n_refs - and tested in qty_compare{,_1}. - (combine_regs): Update qty_n_refs. - Update qty_preferred_or_nothing more intelligently. - - * regclass.c (regclass, reg_class_record, record_address_regs): - Count the number of refs to each reg along with the costs, - and use it when computing the preferred_or_nothing flag. - (Can't use reg_n_refs since that is weighted by loop depth). - - * global-alloc.c (global_alloc): Enable test of OVERLAPPING_REGNO_P - for setting no_global_alloc_regs. - - * expr.c (prepare_call_address): Use force_reg, so it gets a REG_EQUIV. - - * optabs.c (can_{fix,float}_p): Return enum insn_code, not a function. - (init_{fix,float}_tab): Store enum insn_code's in fixtab and floattab. - (expand_{fix,float}): Change calls to can_{fix,float}_p. - Also, use emit_unop_insn to make the actual insns. - -Fri Jul 29 02:42:40 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cccp.c (initialize_char_syntax): If dollars_in_identifiers is 0, - set entries for `$' to 0. - Set entries to 1 rather than incrementing them. - -Tue Jul 26 11:14:22 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * varasm.c (assemble_variable): Make SDB output only if top-level. - - * local-alloc.c (reg_is_set): Arg to mark_life is regno, not qty. - - * output-ns32k.c (print_operand_address): New flag SEQUENT_BASE_REGS - * tm-sequent.h: Define that flag. - - * Makefile: add some missing deps. - - * tm-encore.h (ASM_FILE_START): Changed to do nothing. - - * sdbout.c (sdbout_init): Fix two dumb errors. - - * sdbout.c (sdbout_end_epilogue): No longer takes arg. - Examine current_function_decl here, not in caller. - * final.c: Call changed. - -Mon Jul 25 01:32:54 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stor-layout.c (layout_record): Handle PCC_BITFIELD_TYPE_MATTERS. - - * tm-3b1.h (__PTR_TO_INT, __INT_TO_PTR): Define these, to alter - parts of obstack.h. - -Sun Jul 24 17:56:53 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Padding for an arg may now go below or above it; new macro - FUNCTION_ARG_PADDING can now choose which, or can inhibit padding. - This makes for compatibility with PCC. - * expr.h: Default definition of that macro. - * expr.c (emit_push_insn): Put the padding above or below. - (expand_call): Don't count the padding if none wanted. - * stmt.c (assign_parms): Adjust parm stack addr if padded below. - Don't count the padding if none wanted. - * tm-3b1.h: Define FUNCTION_ARG_PADDING: no padding for > 4 bytes. - - * final.c (alter_subreg): Now returns the altered value - (but may still modify the original structure). - Handles (SUBREG:DI (CONST_DOUBLE:DF...)) by returning the CONST_DOUBLE. - - * m68k.md (DImode push): now allows `F'. - * ns32k.md (movdi): now allows `F'. - - * tm-m68k.h (FIX_FRAME_POINTER_ADDRESS): - Handle indexed references to frame pointer. - * tm-i386.h, tm-m88k.h, tm-sparc.h: Likewise. - - * cse.c (predecide_loop_entry): Must search for the loop top label. - -Sat Jul 23 08:53:01 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * parse.y (yylex): typo in wide strings. - - * tm-vaxv.h, config-vaxv.h: New files for sysV on vax. - - * config-sun4.h: If sparc and not compiling with GCC, include alloca.h. - -Fri Jul 22 02:38:02 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * tree.c (build_real_from_int_cst): CHECK_FLOAT_VALUE at proper place. - - * tm-hp9k320.h ({TEXT,DATA}_SECTION_ASM_OP): Should not include a tab. - * final.c (final_start_function): Don't output a tab before those. - - * sdbout.c (PUT_SDB_EPILOGUE_END): New macro. - * sdbout.c (sdbout_end_epilogue): New function to output the C_EFCN. - Like former sdbout_mark_end_function. Uses that macro. - * final.c (final_end_function): Call that function. - * tm-3b1.h: Override PUT_SDB_EPILOGUE_END like the other PUT_SDB... - - * tm-3b1.h (PRINT_OPERAND_ADDRESS, ASM_OUTPUT_INTERNAL_LABEL, - ASM_OUTPUT_CASE_{LABEL,END}): Put a % in names of internal labels. - (ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_ADDR_{VEC,DIFF}_ELT): - New macros, for same reason. - (FUNCTION_PROFILER): New macro, for % and also to put addr in a0. - - * final.c (output_source_line): For fcn's first line, use lineno 1. - * sdbout.c (sdbout_end_function): Clear sdb_begin_function_line - so can recognize first line of next function. - - * sdbout.c (sdbout_init): Output the .file pseudo here. - * tm-3b1.h, tm-att386.h (ASM_FILE_START): Don't do it here. - - * sdbout.c (PUT_SDB_VAL): Output leading tab, like the other macros. - * tm-3b1.h (PUT_SDB_VAL): Likewise. - - * regclass.c (regclass): Cast enums to int, not char. - * varasm.c (record_constant): Likewise. Avoids 3b1 PCC bug. - - * decl.c (pushdecl): Better choice of error message for extern/static. - - * emit-rtl.c: Do look for STRUCT_VALUE_INCOMING_REGNUM. - -Thu Jul 21 02:13:03 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cse.c (canon_hash): CONST_INT case failed to add to prev. value - of HASH; was inconsistent with cse_insn mem address hashing. - - * m68k.md (divide insns): Alternate 3B1 syntax for `swap' insn. - -Wed Jul 20 18:27:10 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * m68k.md: In shift-by-24 patterns, rejects autoincrement memrefs - since they are mode-dependent. - -Tue Jul 19 13:01:38 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * parse.y (check_newline): Handle #ident by writing .ident to output. - * cccp.c: Don't handle #ident; delete IDENT_DIRECTIVE conditionals. - - * stmt.c (expand_end_case): In compares, put constant arg second. - - * jump.c (jump_optimize): Delete conditional jump if followed by - an unconditional jump to the same place. - -Mon Jul 18 17:49:13 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * emit-rtl.c (init_emit_once): Now STRUCT_VALUE_INCOMING is an - expression for an rtx. It can make a MEM. Likewise STRUCT_VALUE - for outgoing structure value addresses. - - * stmt.c (assign_parms): If incoming struct addr on stack, leave room. - * expr.c (expand_call): If outgoing addr on stack, push it like an arg. - - * PROMOTE_PROTOTYPES means if proto says `char', pass `int'. - * decl.c (get_parm_info): Alter DECL_ARG_TYPE to do this. - * typecheck.c (actualparameterlist): Convert value for this. - * tm-m68k.h: Define PROMOTE_PROTOTYPES. - -Sun Jul 17 14:25:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * jump.c (jump_optimize): peephole can delete insns following INSN. - Set NEXT after peephole. - - * decl.c (finish_decl): Always restart perm alloc if global. - - * stmt.c (assign_parms): When a float is passed as double, store the - float in low-numbered word. Avoids trouble with parm_map in integrate. - - * vax.md: New pattern for decrement and compare against -1. - -Sat Jul 16 14:18:00 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * decl.c (pushdecl): Ignore previous decl if it's really an error_mark. - - * stmt.c (expand_start_case): Make sure case_stmt.start is a NOTE. - - * combine.c (subst): In the simplification for - (set (zero_extract ...) (and/or/xor (zero_extract ...) const)), - require same memory location in both extracts. - - * *386*: New files. - - * cse.c (fold_rtx): Save time in memory address if it didn't change. - Don't replace cheaper expression with coslier one. - (cse_insn): Reenable generation of REG_WAS_0. It wasn't obsolete. - - * cccp.c: `ident' has 5 letters. - - * final.c (output_source_line): SDB can't handle multiple source - files, so ignore line-NOTEs for other files. - - * hard-reg-set.h: New var reg_class_size (# regs in the class). - * regclass.c (init_reg_class): Set it up. - - * reload.c (find_reloads): If an earlyclobber is in a class of size 1 - as an output, reload it as input instead of as output. - - * reload1.c (choose_reload_targets): Improve elimimation of spilled - pseudos made dead by reloading: if pseudo is limited to one block - and that block contains just stores, delete all the stores. - - * reload1.c (choose_reload_targets): reg_has_output_reload is now - static and survives through reload pass. - (forget_old_reloads): Don't cancel data on spilled regs of output - reloads of the insn just made. - - * sdbout.c (sdbout_one_type): Go to .text before defining a type. - (sdbout_block): Test against do_block was backwards. - - * stmt.c (expand_end_function): New args to make a NOTE for last line. - * decl.c (finish_function): Pass the args. - - * rtl.c (no_labels_between): New function. - * vax.md (movsi): Call it. - - * print-tree.c (dump): Don't follow chain of a decl. - - * rtl.c (volatile_refs_p): Moved from flow.c. - -Fri Jul 15 13:36:20 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * sdbout.c (PUT_SDB...): Allow config to override any of them. - * sdbout.c (PUT_SDB_{BLOCK,FUNCTION}_{START,END}): New macros. - * tm-3b1.h: Override all of them. - * sdbout.c (SDB_GENERATE_FAKE): New macro to create dummy tag name. - (gen_fake_label): Use SDB_GENERATE_FAKE. - * tm-3b1.h: Override its defn. - - * sdbout.c (sdbout_mark_function_end): Unused; deleted. - - * tm-3b1.h: Define SDB_DEBUGGING_INFO. - -Thu Jul 14 01:55:15 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * config-sunv4.h: New file for Sunos version 4. - - * tm-sun3.h (CPP_SPEC): Define mc68010 or mc68020, depending. - -Tue Jul 12 15:31:30 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stmt.c (expand_fixup, expand_goto_internal): New functions to - emit a jump that can restore the stack level, even without tree node. - (expand_null_return, expand_exit_loop, etc.): Use expand_goto_internal. - (expand_end_function): Do fixup_gotos after emitting return_label. - - * cse.c (predecide_loop_entry): Avoid using JUMP_LABEL. - * flow.c (find_basic_blocks): Avoid using JUMP_LABEL. - - * flow.c (insn_dead_p): Delete special case for stack-adjust insns. - (life_analysis): Mark those insns with INSN_VOLATILE here. - (mark_used_regs): a SET of a hard reg, in a volatile insn, - always makes its source live. - -Mon Jul 11 10:46:26 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * ns32k.md (floatqidf2): Commented out since assemblers warn about it. - -Sun Jul 10 11:49:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * decl.c (xref_tag): Default the TYPE_MODE of enum xrefs - to avoid making MEM and REG with VOIDmode. - - * vax.md (call): If > 255 args, pop them explicitly. - -Sat Jul 9 10:53:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * symout.c (symout_types): Fix up forward refs to previously - undefined structure types. - (filter_undefined_types): New function. - (symout_finish, symout_function_end): Output any never-defined structs. - * toplev.c (rest_of_compilation): call symout_function_end. - - * parse.y: Don't declare errno if it's a macro. - - * tm-hp9k320 (FUNCTION_PROFILER): Pass ptr in a0, not d0. - - * typecheck.c (truthvalue_conversion): Flush unnec recursive call. - (build_cond_expr): Bug testing zeroness of IFEXP with TREE_LITERAL. - - * cse.c (fold_cc0): Constants not CONST_INT are certainly nonzero. - * fold-const.c (fold): ADDR_EXPR is not equal to zero. - - * cccp.c (macroexpand): Disable the macro even if traditional. - (rescan): Error if use a disabled macro. - - * combine.c (try_combine): Don't substitute a different reg into - an auto-increment. Handle multiple REG_INC notes in I1 or I2. - - * decl.c (implicitly_declare): Don't reuse old implicit decl. - - * varasm.c (assemble_variable): Avoid syntax err if no DBX and no SDB. - * final.c (output_source_line): likewise. - - * fold-const.c (fold): PLUS/MINUS_EXPR: in case of cancellation, - convert result to original type. - - * regclass.c (reg_class_record): Changed arguments include address - of entire vector of constraints. - -Fri Jul 8 07:59:00 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * reload1.c (reload): Find groups of more than 2 registers. - -Thu Jul 7 08:33:07 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expr.c (emit_push_insn): Typo adjusting arg for bcopy - if not STACK_GROWS_DOWNWARD. - - * gnulib.c (_cmpsf2): Value is int, not SFVALUE. - -Wed Jul 6 11:53:46 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tm-encore.h, tm-3b1.h: Replace ASM_FILE_START; output a .file. - - * *m88*: New files for Motorola 88000. They don't really work. - -Tue Jul 5 14:40:03 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * local-alloc.c (combine_regs): Don't tie a reg to itself. - - * finxincludes: Make a variable LIB for the target dir. - - * m68k.md (movhi, addhi3, addsi3): Micro-optimize choice of asm insns. - - * expr.c (expand_expr): Use new macros NO_DEFER_POP, OK_DEFER_POP - in several places, to keep stack predictable. - -Mon Jul 4 09:50:18 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * integrate.c (function_cannot_inline_p): Increase threshold size. - - * flags.h (use_gdb_dbx_extensions): New variable. - * toplev.c: - - * sdbout.c (PUT_SDB_TAG): Delete duplicate defn. - - * expr.c (expand_expr): For FIX_TRUNC_EXPR to unsigned short/char, - REALLY go via signed int. - - * loop.c (may_trap_p): Was detecting floating arithmetic incorrectly. - - * tm-news800.h (CPP_PREDEFINES): Add sony and sony_news. - - * parse.y (check_newline): Avoid infinite loop at eof. - -Sat Jul 2 10:35:17 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Version 1.24 released. - - * stmt.c (expand_asm_operands): Produce proper no-outputs insn. - * recog.c (asm_noperands): Detect no-outputs insns. - (decode_asm_operands): Likewise. - * reload.c (find_reloads): Likewise (add case ASM_OPERANDS:). - - * local-alloc.c (block_alloc): Tests of qty_compare were backwards. - - * flow.c (life_analysis): Turn off code that finds regs live at - function start and marks them not local to any basic block. - - * cse.c (insert_regs): Fix typo (UNITS_PER_WORD). - - * cccp.c: Define max. - - * expr.c (expand_expr): Put each SAVE_EXPR's reg on save_expr_regs, - if not optimizing. - * stmt.c (expand_function_end): Mark each of those regs live - at the end and also retroactively at the beginning of the function. - - * output-vax.c (print_operand_address): New function from old macro. - * tm-vax.h (PRINT_OPERAND_ADDRESS): Call that function. - - * config-vms.h: If not under GNU C, define X_OK, etc. - - * expr.c (move_by_pieces_1): Use * to call GENFUN. - (expand_expr): Compare DECL_FUNCTION_CODE against an enum const. - (preexpand_calls): Likewise. - * genrecog.c (write_tree): Likewise. - * final.c (final): Use * to call the output function. - * reload.c (push_reload): Rename `noshare' to `dont_share'. - - * genoutput.c (output_epilogue): Put more newlines in insn_outfun. - * genemit (gen_exp): Put in more newlines. - -Fri Jul 1 00:23:57 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * global-alloc.c (allocno_compare): Avoid comparisons of floats - since that is sensitive to roundoff errors. - -Thu Jun 30 09:25:40 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * sdbout.c (PUT_SDB_{DEF,TAG}): Use ASM_OUTPUT_LABELREF. - (PUT_SDB_PLAIN_DEF): New name for old defn of PUT_SDB_DEF - (sdbout_one_type): Use PUT_SDB_PLAIN_DEF for `.eos'. - - * tree.c (allocation_temporary_p): New fcn. - (all_types_permanent): New variable. - (make_node): If that's set, make each ...TYPE node permanent. - * decl.c (grokdeclarator): If traditional, make decl data permanent. - (finish_decl): Make the rtl permanent too. - * stor-layout.c (layout_type): If type is permanent, - make its layout data permanent too. - - * cccp.c: Choose C++ or C at run time via var `cplusplus'. - Separate cplusplus_include_default from include_default. - Get GNU-specific include directory names from macros - GCC_INCLUDE_DIR and GPLUSPLUS_INCLUDE_DIR. - (main): Initialize based on CPLUSPLUS; `-+' sets it. - * Makefile: Set *_INCLUDE_DIR based on $(libdir). - -Tue Jun 28 09:25:49 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tree.c (copy_node): Round LENGTH up to multiple of sizeof (int). - - * expr.c (emit_push_insn): Avoid using PUSH_ROUNDING if not defined. - - * sparc.md (floatsisf2): Insert missing brace. - (mulsi3): Replace reg_o0_rtx, reg_o1_rtx. - - * tm-sparc.h: Define DBX_DEBUGGING_INFO. - - * parse.y (yylex): If traditional, no error for out-of-range float. - - * Makefile: Comment saying how to compile on an Apollo. - - * tm-sparc.h (ASM_FILE_START): Switch to new calling convention. - - * decl.c (init_decl_processing): Create type nodes for 64-bit ints. - (grokdeclarator): use them for `long long'. Warn only if pedantic. - - * optabs.c (init_optabs): Add missing DImode insn names. - - * expr.c (emit_block_move, emit_push_insn): Use movstrqi if appro. - - * expr.c (convert_move): use extendsidi if appropriate. - - * cccp.c (initialize_builtins): Don't install __STDC__ if traditional. - (main): Call initialize_builtins after option processing. - - * integrate.c (output_inline_function): Set current_function_decl. - - * cse.c (fold_rtx): Typo in avoiding 32-bit shifts. - - * cccp.c: Add forward-decl. - -Mon Jun 27 18:06:42 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * hard-reg-set.h (reg_alloc_order): New variable - based on REG_ALLOC_ORDER, a new machine-description macro. - * regclass.c (reg_alloc_order): Define it. - * local-alloc.c (find_free_reg): Handle reg_alloc_order. - * global-alloc.c (find_reg): Likewise. - * stupid.c (stupid_find_reg): Likewise. - -Sun Jun 26 10:47:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Version 1.23 released. - - * tm-3b1.h: Define IDENT_DIRECTIVE. - - * tm-encore.h: Define SDB_DEBUGGING_INFO. - Define SCCS_DIRECTIVE and IDENT_DIRECTIVE. - - * output-ns32k.c: Decl of paren_base_reg_printed must be outside fcns. - - * tm-encore.h (ASM_OUTPUT_DOUBLE): Do 0f, not 0l. - (CPP_PREDEFINES): No -Dns32032. - - * sdbout.c: Include syms.h, not storclass.h. - (unnamed_struct_member): Decl was missing. - (PUT_SDB_INT_VAL, PUT_SDB_VAL): Fix typos. - (sdbout_types, sdbout_one_type, sdbout_parms): Fix typos. - - * Makefile: Add file sdbout.o. - Changed comments pertaining to sysV. - Make a separate target `doc' to make the info files. - - * m68k.md (bit-field insns): Use nonimmediate_operand for the thing - to extract from. - * vax.md (QImode bit-field insns): Likewise. - - * recog.c (nonimmediate_operand): Accept any nonconst general operand. - -Sat Jun 25 07:54:42 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cse.c (lookup_as_function): arg to exp_equiv_p was missing. - -Fri Jun 24 09:14:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * recog.c (memory_operand): Allow (subreg (mem...)). - -Thu Jun 23 07:34:07 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * decl.c (finish_enum): Compute minimum value like maximum. - If minimum is negative, install it in the type and make it signed. - - * stor-layout.c (layout_record): STRUCTURE_SIZE_BOUNDARY is minimum. - (layout_type): A RECORD_TYPE or UNION_TYPE must be BLKmode if - any member is BLKmode. This is to prevent putting it in a register. - (layout_decl): If decl's type is BLKmode, the decl *must* be BLKmode. - - * local-alloc.c (find_free_reg): Never allocate the frame pointer reg. - - * tm-sequent.h (PRINT_OPERAND): Bug in SFmode CONST_DOUBLE. - * tm-encore.h: Likewise. - - * flow.c (flow_analysis): Bug in n_basic_blocks error check. - - * stmt.c (expand_asm_operands): Emit no insn if an arg is erroneous. - -Tue Jun 21 08:34:24 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * reload.c (find_reloads_address): Write back *loc even if - subst_reg_equivs makes no change, in case subst_index_address did. - - * flow.c: Define macros for -1 and -2 as values of reg_basic_block. - (mark_used_regs): Add an `else'; no change in behavior. - (mark_label_ref): Abort if LABEL_REF doesn't contain a CODE_LABEL. - (find_basic_blocks): Extra error check. - - * output-ns32k.c (print_operand_address): Changes in handling of - register-indirect, and of indexing by sb register. - -Mon Jun 20 04:55:38 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cccp.c (collect_definition): Compute needed space more accurately. - Abort if use more space than was allocated. - (rescan) [USE_C_ALLOCA]: Do alloca (0) after handle_directive. - - * genflags.c (gen_insn): Put parens around defns of HAVE_... macros. - -Sun Jun 19 02:52:53 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expr.c (emit_push_insn): Consider PARM_BOUNDARY when compensating - for size of a pushed arg to bcopy. - -Sat Jun 18 07:20:54 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * New files sparc.md, tm-sparc.h, config-sparc.h, output-sparc.c. - - * final.c (final): After an ADDR_{,DIFF_}VEC, do ASM_OUTPUT_CASE_END. - * tm-3b1.h: Define ASM_OUTPUT_CASE_END. - (PRINT_OPERAND_ADDRESS): Ref the case tables via an intermediate symbol - `LDnnn' whose def. is output by ASM_OUTPUT_CASE_END. - (ASM_OUTPUT_CASE_LABEL): Add missing newline. - - * reload.c (find_equiv_reg): Reject a MEM containing an autoincrement. - -Fri Jun 17 06:58:37 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * genpeep.c (main): Write `extern' in the decl for `peep_operand'. - - * flow.c (propagate_block): When a dead insn has a REG_RETVAL note, - call mark_set_regs anyway, so that `significant' is updated. - - * jump.c (follow_jumps): New arg IGNORE_LOOPS. If 0, don't follow - the insn at the beginning of a loop that enters the loop; this avoids - interference with loop optimizer. - (jump_optimize, tension_vector_labels): Pass that arg. - - * loop.c (loop_optimize): Mention invalid multiple-entry loops in log. - - * m68k.md (extv, extzv): Fix # of alternatives mismatch in constraints. - -Thu Jun 16 03:06:48 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) - - * genrecog.c (change_state): Was mishandling printing XVECEXP indices - greater than 9. - - * combine.c (subst, simplify_and_const_int): Avoid making SUBREG - of a non-REG. - - * expr.c (expand_expr): For FIX_TRUNC_EXPR to unsigned short/char, - go via signed int. - - * optabs.c (expand_fix): Copy hard_libcall_value reg only once. - - * reload1.c (order_regs_for_reload): Init all elements - of potential_reload_regs to -1. - - * Prevent generation of (set (reg) (plus ... (label_ref ...))). - * explow.c (memory_address_noforce): Like `memory_address' but - never force it into a register. - * expr.c (do_tablejump): Use that. - * m68k.md (casesi): Use that. - - * rtl.h (struct rtx_def, GET_CODE, PUT_CODE): If SHORT_ENUM_BUG, - define the `code' field as a short. - -Wed Jun 15 01:25:57 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * gcc.c (CPP_SPEC): New spec set by config.h gives flags to cpp. - * tm-*.h for m68k: Define CPP_SPEC to define __HAVE_FPU__ on - appropriate conditions. - - * combine.c (subst): Simplify (not (minus x 1)) and (neg (minus x y)). - -Mon Jun 13 02:22:43 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) - - * typecheck.c (build_array_ref): Avoid duplicate errmsg if index - is an error-mark. - -Sun Jun 12 23:04:39 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) - - * cccp.c (handle_directive): If -traditional, quotes aren't special. - (rescan): Assume newline ends a string constant. - - * cccp.c, cexp.y: Make all fcns non-static; add some forward decls. - - * various: add static forward-decls for various functions. - -Fri Jun 10 00:25:18 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * reload1.c (choose_reload_targets): When writing back an incremented - value (handling reload_inc), write back to the real place, not to - OLDEQUIV (a register that holds the same value). - - * tm-m68k.h (LEGITIMIZE_ADDRESS): Don't give force_operand a target. - This can cause the use of multiple insns with same output reg, - which can confuse cse. - - * loop.c (consec_sets_invariant_p): - If invariant_p ever returns 2, we return 2. - New arg is # of consecutive sets to look for, - since this info is no longer in n_times_set at move_movables. - (scan_loop): If consec_sets_invariant_p returns 2, set m->cond. - (move_movables): check consecutive insns if m->consec && m->cond. - - * tm*.h: ASM_DECLARE_FUNCTION_NAME now takes 3rd arg, - the FUNCTION_DECL node. - * varasm.c (assemble_function): Pass this arg. - - * expr.c (expand_call, expand_builtin [alloca]): - If STACK_POINTER_OFFSET is defined, add it to stack pointer contents - before using it as address of actual data on the stack. - * stmt.c (expand_decl): Likewise. - - * stmt.c (assign_parms): If 1st parm named `__builtin_va_alist' - came in regs, pretend it came on stack. - Handle pretending a BLKmode var came on the stack. - If REG_PARM_STACK_SLOT, count stack space for each parm - even if the parm came in a register; and use that stack space - if the parm needs to be addressable or is BLKmode. - Rearrange to simplify conditionals. - -Thu Jun 9 01:21:29 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * local-alloc.c: - `qty_...' vectors' elements for hard-reg-numbers now aren't used. - `reg_qty' elements for hard-reg numbers now aren't used, - and the element for a pseudo is never a hard-reg number. - (local_alloc): No need to reset those elements. - No need to reset elements out of range of prev block's NEXT_QTY. - (reg_is_born, reg_is_set, wipe_dead_reg): - Divide labor in same way for hard regs and pseudos; - simplify using fact that locality-to-basic-block has been precomputed - and recorded in reg_qty; avoid refs to reg_qty[HARDREG]. - (reg_is_born, wipe_dead_regs): Block-number arg no longer needed. - - * local-alloc.c (combine_regs): Remove old code for tying hard regs - to pseudos; great simplification results. - Use find_regno_note, not regno_dead_p. - -Wed Jun 8 00:18:04 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * reload.c (subst_reg_equivs): Set a flag if anything is changed. - (find_reloads_address): Check that flag to avoid extra work. - Also check early for safe reg+const address and avoid work. - - * reload.c (find_reloads): Use loops instead of bcopy. - Check early for insn with no real constraints, and return. - Also check for move from hard reg to hard reg and return. - - * cse.c (canon_reg): Rewrite for speed; use a switch. - (cse_insn): Don't call find_reg_note if REG_NOTES is 0. - - * cse.c (cse_insn): Store modified SET_SRC even if there's a REG_EQUIV. - Inhibition was needed when the SET_SRC was the only place to find the - equivalent value; now it is in the REG_EQUIV note. - - * stmt.c (expand_asm_operands): If NINPUTS is 0, make vec of no elts. - * regclass.c (reg_scan_mark_refs): Don't lose if XVEC (x,i) is 0. - -Tue Jun 7 03:51:28 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stmt.c (assign_stack_local): If big-endian and MODE is narrow, - the bytes actually used are the least significant. - - * parse.y (skip_white_space): Accept char as arg; let caller read it. - (yylex): Change call. - (check_newline): Return 1st nonwhite char after skipping lines. - (skip_white_space): Change call. - * toplev.c (compile_file): Change call. - - * gcc.c: Pass -traditional to cc1. - - * cse.c (cse_insn): Return very early for (set (reg) (call...)). - Mainly to save time. - (cse-insn) Old code to add REG_WAS_0 note wasted time but did nothing. - - * expr.c (clear_pending_stack_adjust): Really do clear it, - if current fcn doesn't want to be inline. - - * cse.c (cse_insn): Speedup: instead of safe_hash, use canon_hash - or HASHREG. - -Mon Jun 6 21:47:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * jump.c (rtx_renumbered_equal_p): Reject ADDR_VEC fast. - - * cse.c (cse_insn): Ignore a REG_EQUIV or REG_EQUAL note if the - equivalent value is the same as the SET_SRC of the insn. - - * flow.c (life_analysis): Don't call volatile_refs_p for a CALL_INSN; - just assume value is 1. - (propagate_block): Don't call mark_{used,set}_regs for a stack-pop - since if it isn't dead it has no effect on any useful life data. - (mark_set_1): Return quickly if setting stack-ptr, and almost as - quickly if setting any hard reg. - (mark_used_regs): Likewise for refs. - Also don't scan the vector of an ADDR_VEC or ADDR_DIFF_VEC. - (volatile_refs_p): Likewise. - - * varasm.c (output_constant): Discard NOP_EXPR and CONVERT_EXPR - in integer case (they were for casting a pointer). - - * parse.y (compstmt_or_error): Parse a compstmt after ignoring error. - Use this for fctn body so that an error after store_parm_decls - won't recover to xdecls and call store_parm_decls again. - Typical cause was missing semi at end of last parmdecl. - - * parse.y: Add missing semicolons in actions. - (yylex): Don't use yylloc. - -Sun Jun 5 16:14:40 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * typecheck.c (build_array_ref): Check arg types here, to make - error message more accurate (not about "addition"). - -Thu Jun 2 02:41:40 1988 Richard Stallman (rms at rice-krispies.ai.mit.edu) - - * cccp.c (collect_expansion): `#' isn't special if -traditional. - - * dbxout.c (dbxout_parms): Don't output a regparm symbol - unless the parm got a hard reg assigned. - - * tm-encore.h (ASM_OUTPUT_DOUBLE): Use 0f... not 0d... - - * tm-vax.h (CHECK_FLOAT_VALUE): Define this. - -Wed Jun 1 17:13:00 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expr.c (expand_call): Have sequence points between args. - -Tue May 31 00:27:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expmed.c (store_fixed_bit_field): Avoid shifting by 32. - * cse.c (fold_rtx): - * symout.c (subrange_p): likewise. - - * local-alloc.c (block_alloc): If operands 1 and 2 commute, - try tying output to operand 2 if operand 1 won't do. - - * toplev.c (compile_file): Pass main_input_file to symout_init. - - * tree.c (build_real, build_real_from_int_cst): - Call CHECK_FLOAT_VALUE if it's defined, to report out-of-range values. - - * tree.c (build_real, build_real_from_int_cst): New 1st arg TYPE. - * parse.y (yylex): Pass this arg; requires parsing suffixes first. - * fold-const.c (fold, combine, fold_convert): Pass this arg. - Handling of float binops in `combine' simplified. - - * tm-encore.h (CPP_PREDEFINES): Remove -Dencore since CC lacks it. - - * final.c (output_source_line): Let ASM_OUTPUT_SOURCE_LINE - be used for SDB also. - -Mon May 30 00:21:15 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cse.c (insert): Was inserting in wrong place in list. - (exp_equiv_p): Was failing to check validity when x == y. - - * tree.c (build_pointer_type): Handle saveable_obstack - like current_obstack. - - * decl.c (finish_decl): Error in test for zero-size array warning. - - * reload.c (find_equiv_reg): New arg MODE specifies mode in which - an equivalent value is needed. Equivalence must be good in that mode. - In addition, notice overlap with multiword register modes. - Simplify, knowing that registers have already been renumbered. - It was invalidating memory-goals too easily; setting a reg - only invalidates memory-goal if its address varies. - * reload.c, reload1.c, jump.c: Calls pass the new argument. - - * cccp.c: For correct ANSI, must reject `$' in identifiers. - (dollars_in_ident): Variable says whether to allow them. - (rescan): Handle `$' as randomchar if that's 0. - (main): dollars_in_ident is set to 0 by -$, to 1 by -traditional. - (rescan, do_define): Delete former pedantic warnings for `$'. - (initialize_char_syntax, initialize_builtins): Inits split to two - functions; former is called after options are scanned - so `$' is in is_idchar conditionally. - * gcc.c: For -ansi, pass -$ to cccp. - * toplev.c, flags.h: Define dollars_in_ident. - * parse.y (yylex): Treat $ as punctuation unless dollars_in_ident. - Delete old pedantic warning about $. - * tm-vms.h: Define DOLLARS_IN_IDENTIFIERS as 1. - - * cccp.c (rescan): Preprocessing numbers can have signs, after `e'. - - * integrate.c (expand_inline_function): Abort, don't return failure, - if max_regno is too low. I believe this can't happen. - - * typecheck.c (build_binary_op_nodefault): - For ordered comparisons, no pedantic warning about void *. - For MAX, MIN, ditto, and also don't allow pointer vs 0. - - * typecheck.c (build_unary_op): Don't allow pointer for +. - - * typecheck.c (convert_for_assignment): - Add missing warning for case of unrelated pointer types. - Change criteria for new ANSI C draft. - - * optabs.c (expand_binop): Don't set unused target_is_not_an_operand. - - * fold-const.c (fold_convert): Don't set unused inprec, outprec. - - * emit-rtl.c, parse.y: Delete unused var. - - * stor-layout.c (add_vc_sizes): Unused function deleted. - * loop.c (constant_high_bytes): #if 0 this unused function. - - * gcc.c (fatal): Add missing arg to delete_temp_files. - - * cccp.c (dump_defn_1): Add missing arg to skip_quoted_string. - - * reload.c (find_reloads): If constraints don't fit in an `asm', - print error instead of aborting. - - * regclass.c (reg_class_record): Ignore `&' in constraint. - -Sun May 29 00:20:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Makefile: Run ranlib only if /usr/bin/ranlib exists. - Add comment saying what to do on system V. - - * tree.c (suspend_momentary): Switch to the saveable_obstack - for the sake of inline functions. - - * flags.h (enum debugger): New enum for write_symbols. - * toplev.c, varasm.c, final.c: Use the enum constants where appro. - Add calls to sdbout paralleling the calls to dbxout; - put each in the appropriate conditional {SDB,DBX}_DEBUGGING_INFO. - - * toplev.c (main): Delete -noreg option; it's now the default. - Make -O an alias for -opt. Rename -g to -gg. -g is alias for -G. - Accept and ignore -Wtrigraphs. - * gcc.c: Simplify the specs. - - * toplev.c (compile_file), tm-*.h: - ASM_FILE_START is now a statement, not just a string to be output. - Output it *after* determining the real source file name. - - * fold-const.c (fold): Simplify x >= CST to x > CST-1 (CST positive). - To simplify this, canonicalize relationals to put constat last. - - * decl.c (duplicate_decls): Make a 2nd errmsg to show previous decl. - - * cccp.c (file_size_and_mode): Delete temporary VMS bootstrap patch. - - * tm-att386.h: New file. - - * decl.c (pushdecl): Warn if a local `extern' decl precedes - a file-scope `static' decl. - - * expr.c (expand_call): No warning for failure to inline. - - * expmed.c (extract_bit_field): copy operand 1 of extv or extzv - into register if memory isn't allowed. - -Sat May 28 02:10:56 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * gnulib.c, Makefile: Delete va_end. - - * final.c, symout.c: Check DBX_DEBUGGING_INFO, not NO_DBX_FORMAT. - - * genemit.c (gen_expand): Notice a CALL inside a PARALLEL. - - * regclass.c (init_reg_sets_1): Part of init_reg_set is put in this - new fn which is called after options are scanned. - Now CONDITIONAL_REGISTER_USAGE can depend on the options. - (fix_register): Just alter the data that init_reg_sets_1 will look at. - - * reload1.c (reload): Don't complain if two different but tieable - modes require groups of the same regclass (assuming same size group). - - * cccp.c: Add 3rd arg to all `open' calls. - - * parse.y (check_newline): Typo prevented ignoring whitespace. - - * cccp.c (perror_with_name): fprintf had harmful extra arg. - - * cccp.c (main, trigraph_pcp): -Wtrigraphs means warn if any trigraphs. - - * emit-rtl.c (gen_sequence): If LEN is 1, avoid looking at PATTERN - of something that doesn't have one. - - * reload1.c (alter_frame_pointer_addresses): frame pointer can - occur by itself, not just inside a PLUS. - (reload): Call eliminate_frame_pointer before reload_as_needed. - Otherwise the latter can make reload insns that copy the frame ptr - to a data reg, but 68k can't copy sp+const to a data reg. - - * decl.c (implicitly_declare): Always save the implicit decl - permanently. Reuse an old one if it exists. - * tree.c (resume_temporary_allocation): Used after `end_temporary...' - to go back to temporary allocation. - - * stor-layout (layout_{type,decl}): Call variable_size. - (variable_size): Turn a size into a SAVE_EXPR and either compute - it right away or put it on a list to be computed later. - (get_pending_sizes): Return that list and clear it out. - * stmt.c (expand_start_function): Tell `variable_size' to compute - sizes right away, and compute those saved on the list. - (expand_end_function): Tell it to put them on a list. - -Fri May 27 00:02:34 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * dbxout.c (dbxout_symbol): For local static var, use 'V', not 'v'. - - * gcc.c (main): Don't handle SIGHUP or SIGTERM if shell ignored it. - - * Makefile, gcc.c: Propagate Make var `libdir' to gcc search path. - - * expr.c (expand_expr): a PARM_DECL with no rtl can occur in size of - `a' in `foo (a,i) int i; struct {int x[i];} a;', so report an error. - - * flow.c (insn_dead_p): insn that makes stack bigger is never dead. - * combine.c (try_combine): Don't splice out stores into stack ptr. - - * reload.c (find_equiv_reg): Test given regno for OVERLAPPING_REGNO_P. - - * varasm.c (assemble_variable): Use saveable_obstack for allocation. - -Thu May 26 01:17:00 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * integrate.c (save_for_inline): Clear unused slots in parmdecl_map. - (There may be some non-parm regs below max_parm_regno.) - * integrate.c (copy_for_inline): Don't crash if parmdecl_map elt is 0. - - * Don't fail to output a static inline function that was referenced - via a local extern decl before its definition. - * expr.c (expand_call): If need to mark a fcn decl addressable, - mark the identifier addressable also. - * typecheck.c (mark_addressable): If marking fcn addressable, - mark the identifier as well. - * decl.c (start_function): If identifier was marked addressable, - propagate it to the function. - - * parse.y (yylex): Check for ERANGE after atof is called. - (Sun doesn't report ERANGE.) - - * loop.c (may_trap_p): Any floating arithmetic may trap. - -Wed May 25 00:03:34 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * parse.y: Delete `noalias'. - (asm_operand): Don't allow this to be empty. - (asm_operands): Do allow this to be empty. - - * reload.c (operands_match_p): Don't let REG and SUBREG match - if the reg isn't a hard reg. - No longer nec. to check reg_renumber, now that reload - substitutes the hard regno. - - * reload1.c (reload): Counting existing spilled groups, - check HARD_REGNO_MODE_OK so we don't get fooled by an odd-even pair. - Spill entire need for new groups before spilling any solitary regs. - Reg already counted against max_nongroups can't become part of a group. - (new_spill_reg): Do bookkeeping associated with a new spill-reg. - (n_spills): This var is now static, no longer passed as arg - within the file. - - (reload_reg_class_lower): Handle all group-reloads before solitaries. - (choose_reload_targets): therefore #if 0 the special code for - finding solitary registers that aren't suitable for groups. - But fix two bugs in it: braino deciding whether a reload - is looking for 1 register (not a group). Use CLASS_MAX_NREGS. - Also braino deciding whether a spill reg can be in a group. - Did not fix bug that it fails to test HARD_REGNO_MODE_OK, - so it might split up an even-odd pair. - - * vax.md: Special patterns for 8 and 16-bit fields, to make - move-insns (like the ones for the 68k). - - * tree.c (convert_to_integer): Pass truncation down thru COND_EXPR - as through a binary operator. - - * typecheck.c (build_cond_expr): If unpromoted operand types match, - don't promote them--let containing expression promote (just once). - -Tue May 24 14:46:26 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * combine.c (subst): Simplify (subreg (sign_extend X) 0). - - * tm-hp9k320.h: Delete NO_DBX_FORMAT. - * Most tm...h files: Define DBX_DEBUGGING_INFO. - * dbxout.c: Change conditional to DBX_DEBUGGING_INFO. - - * integrate.c (expand_inline_function): If inline fcn was declared to - return QI, but actually computes an SI, use SImode for INLINE_TARGET - but actually return a QI. - - * varasm.c (force_const_mem): Failed to determine alignment bdry - from machine mode. - - * jump.c (jump_optimize): Don't delete (move X Y) if X or Y is a - PRESERVE_DEATH_INFO_REGNO_P register. - - * final.c (output_addr_const): In PLUS, output constant term last. - - * final.c (final): Before outputting an insn, do FINAL_PRESCAN_INSN. - - * final.c (next_block_index): No longer static. - (final): Add SDB_DEBUGGING_INFO cases for outputing NOTEs - for beginning and end of a block. - (output_source_line): Add SDB_DEBUGGING_INFO case for line number. - * varasm.c (assemble_function): Add code for SDB symbol output. - - * gnulib.c: Allow config to override INTIFY. - New macro SFVALUE for data type to return a single-float in. - - * combine.c (remove_death): No longer `static'. - - * reload1. (choose_reload_targets): PRESERVE_DEATH_INFO_REGNO_P - selects hard regs for which death info should be updated for final. - - * reload1.c (reload_as_needed): Let INSN_CLOBBERS_REGNO_P - prevent inheritance of certain reloads. - - * reload.c (find_equiv_reg): Let OVERLAPPING_REGNO_P reject - an equiv reg. Needed for funny float regs on 80387. - - * cccp.c (do_ident): Define #ident as a no-op if IDENT_DIRECTIVE. - Warn if pedantic. - (do_sccs): Warn if pedantic. - - * emit-rtl.c (restore_reg_data): Set cur_insn_uid--prevent duplicates. - -Sun May 22 12:25:06 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * Version 1.22 released. - - * reload1.c (reload): Spilling isn't finished till max_nongroups is 0. - - * tm-encore.h (PRINT_OPERAND): No `$' before a CONST. - -Sat May 21 13:08:54 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * fold-const.c (combine): Typo in MIN_EXPR, MAX_EXPR. - - * reload1.c (reload): Was counting insn_groups as total size of groups, - not number of groups. - A new spilled group counts against group-needs of superclasses. - - * parse.y (parmlist{,_or_identifiers}_1): In error case, - return a tree list just as in the other cases. - -Fri May 20 02:14:51 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * config-vax.h, config-m68k.h: If __GNUC__, use builtin-alloca. - - * genpeep.c (match_rtx): Generated code was testing the wrong rtx - when testing an int or string at a nonzero index in the rtx. - - * reload.c (find_reloads): Typo checking `modified' for conflict - with an earlyclobber. - - * reload.c (find_equiv_reg): Reject stack ptr as return value. - - * expr.c (expand_builtin): Alloca must do pending stack adjust. - -Thu May 19 13:01:01 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * flow.c (propagate_block): Skipping back across libcall didn't happen - due to failing to set PREV. - - * expr.c (emit_library_call): Code to increment and decrement - current_args_size broke since emit_call_1 was changed to restore it. - - * combine.c (try_combine): When i1 or i2 auto-incs a reg, don't combine - if i3 uses that reg. - - * config-hp9k3.h: #define bcopy, bcmp, bzero here. - * conf-hp9k320.h: Delete file. - - * integrate.c: Don't include strings.h--no need. - - * stmt.c (expand_asm_operands): Don't make zero-length vectors. - - * loop.c (scan_loop): After a fcn call, maybe-trap insns can't move. - The fcn call might exit and that would prevent the trap. - - * reload1.c (reload): Set reload_first_uid to next uid to be used. - * reload.c (find_equiv_reg): Use reload_first_uid to ignore insns - that are due to reloading--only if reload_reg_p is not 0 or 1. - -Wed May 18 22:11:20 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * typecheck.c (build_unary_op): Don't complain about array - as argument to `!'. - - * decl.c (pushdecl): If locally declaring an extern function, - check the identifier's global value in case it's an inline function. - -Mon May 16 03:06:08 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * output-ns32k.c (output_shift_insn): New fn, maybe turn shift to adds. - (reg_or_mem_operand): Predicate for a non-immediate general_operand. - * tm-ns32k.h (CONST_OK_FOR_LETTER_P): Define letter K. - * ns32k.md: Use output_shift_insn for various addr insns that shift. - Don't allow nonexplicit constants in lprd, multiply or truncate insns. - Use reg_or_mem_operand for constraint in op1 of divide insns; - a constant there causes regclass to screw up. - Split alternative constraints on the bit-field insns to avoid - out-of-range operands in exts, inss. Some cases of extraction - can be done faster via memory. - - * flow.c (mark_set_1): When adding a REG_DEAD note, inc reg_n_deaths. - - * dbxout.c (dbxout_type_def): Do nothing for {integer,char}_type_node. - -Sun May 15 00:56:44 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * tm-sequent.h, tm-ns32k.h, tm-encore.h (PRINT_OPERAND): - Was treating SF's as SI's. - - * expr.c (emit_move_insn): Check all CONST_DOUBLEs for - LEGITIMATE_CONSTANT_P and put them in memory if not. - - * local-alloc.c (combine_regs): Allow a reg to be tied to a qty - if the reg's class is contained in the qty's class - (as well as if the reg's class contains the qty's class as before). - Rename qty_reg_class to qty_min_class and make it the smallest - class of any reg tied to the qty. - (reg_class_subset_p, reg_meets_class_p, update_qty_class): - New subroutines to implement this. - (local_alloc): Init reg_qty to -1 for pseudos not in cur. basic block. - (reg_is_born): Abort if pseudo not in basic block has -2 in reg_qty. - - * jump.c (rtx_renumbered_equal_p): Insist that modes of REGs match. - -Sat May 14 01:05:35 1988 Richard Stallman (rms at lucky-charms.ai.mit.edu) - - * stmt.c (expand_return): Empty frame frame_offset isn't nec. 0. - - * expr.c (emit_call_1): Use stack_size_rtx everywhere appropriate. - - * decl.c (init_decl_processing): Set sizetype to `unsigned long' - if `int' is less than a word. - - * stddef.h (size_t, ptrdiff_t): Both are now long. - -Fri May 13 01:06:00 1988 Richard Stallman (rms at lucky-charms.ai.mit.edu) - - * emit-rtl.c (gen_lowpart): Handle non-lowpart subreg as arg. - - * recog.c (register_operand): VOIDmode means allow any mode. - (immediate_operand, nonmemory_operand): Likewise. - - * emit-rtl.c (classify_insn): Update for changed CALL_INSN format. - (emit): New function to emit an rtl pattern as the right kind of insn. - * jump.c (simplejump_p): No longer static. - - * genemit.c (gen_expand): For match_operand at top level, call `emit'. - Use `emit_call_insn' when appropriate. - (gen_exp): Handle rtx's that contain strings. - - * final.c, symout.c: If not NO_DBX_FORMAT, include stab.h to get the - N_... symbols. Use their default definitions only if they're undef. - - * expr.c (expand_call) [no PUSH_ROUNDING]: Always set argblock - if there are any stack-passed arguments. - - * typecheck.c (build_unary_op): Mark all increment-exprs volatile. - - * recog.c (reg_renumbered_fits_class_p): Delete private copy of - reg_class_contents. - - * reload1.c (forget_old_reloads): Handle PARALLEL case by recursion. - Explicit store into a spilled reg invalidates old reloaded contents; - this can occur when we drop through into a basic block whose need was 0 - (and so whose local pseudos were not spilled). - - * gcc.c (main): If -v, print gcc's own version; also no error msg - if no input files. - - * loop.c (may_trap_p): Mem ref to nonconstant address may trap. - (scan_loop): Check may_trap_p only when insn is in other respects ok. - - * cexp.y: #include config.h (for decl of alloca on some machines). - -Thu May 12 17:24:19 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * regclass.c (regclass): When inserting an insn at start of block, - update basic_block_head. - -Wed May 11 00:47:09 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) - - * stmt.c (assign_parms): DECL_OFFSET should be offset as passed - (not including big-endian width-change correction). - - * typecheck.c (shorten_compare): Set unsignedp[01] right in case - where get_narrower makes no change. - (build_binary_op_nodefault): Likewise for shortening shifts. - - * stmt.c (expand_end_case): Use type_for_size to get the type - to convert the index to, since `int' is wrong if -mshort. - - * decl.c (grokdeclarator): Don't check PARM type for completeness. - (grokparms): If fn definition, check all parm types for completeness. - (store_parm_decls): Likewise. - -Tue May 10 22:42:13 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) - - * typecheck.c (store_init): For invalid init, store error_mark_node. - * varasm.c (assemble_variable): Ignore error_mark as an init. - * stmt.c (expand_decl): If init is error_mark, init to 0 if possible. - This avoids a spurious "uninitialized variable" warning. - -Sun May 8 17:08:07 1988 Richard Stallman (rms at lucky-charms.ai.mit.edu) - - * tm-hp9k320.h: Define STRUCTURE_SIZE_BOUNDARY. - - * decl.c (get_parm_info): Replaces get_parm_types. Returns a tree_list - containing parmdecls and tag list as well as type list. - (grokparms): Accept that tree_list as argument. - (grokdeclarator): Calling grokparms, say "not a definition" for the - function declarators for arg or value types within a definition. - - * parse.y: Call get_parm_info. - (parmlist_or_identifiers): If identifiers, make a tree_list - like the one get_parm_info returns. - -Fri May 6 16:44:19 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * m68k.md (casesi): Delete template aside from match_operand's. - - * tm-encore.h: New file from Robert Brown. - - * ns32k.md: Use %c in some addr insns. - (tst*): Use {d,f,}const0_rtx to make the constant 0; OS-independent. - (call, call_value): Use %? before address in a bsr. - - * output-ns32k.c (print_operand_address): To output a local label, - use `output_asm_label'. - Make SEQUENT_ADDRESS_BUG conditionals happen at compile time. - - * tm-ns32k.h: Delete SEQUENT_HAS_FIXED_THEIR_BUG. - (PRINT_OPERAND): Output nothing for `%?'. - * tm-sequent.h: (PRINT_OPERAND): Output nothing for `%?'. - - * final.c (output_asm_label): No longer `static'. - -Thu May 5 09:03:37 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * explow.c (memory_address): Ignore flag_force_reg unless optimize. - Also ignore it for addresses of stack slots (avoid invalid REG_EQUIVs). - - * typecheck.c (digest_init): If traditional, allow `char x[100]=0;'. - - * tree.c (get_unwidened): Don't alter a COMPONENT_REF if - innerprec equals the precision of the existing type. - It was changing pointers to integers. - - * m68k.md (movdi): Put all fpregs in separate constraint alternatives - and handicap them so spill reg won't be an fp reg. - - * parse.y (yyerror): Use the arg as part of the error message. - - * decl.c (start_function): Give the RESULT_DECL type int rather - than char or short. - * typecheck.c (c_expand_return): Convert value from fn's return type - to the RESULT_DECL's type. - - * Avoid generating dbx xrefs to enums, since dbx loses on them. - Do this by outputting all types in order of definition. - This is done only for top-level types; problem remains for local ones. - - * decl.c (finish_decl): Do rest_of_decl_compilation for TYPE_DECLs. - * toplev.c (rest_of_decl_compilation): Do dbxout_symbol for them. - - * dbxout.c (dbxout_symbol): Check DECL_RTL only for fns and variables. - For a TYPE_DECL, ignore it if the type was already output - and its preferred name is the TYPE_DECL. Else output type in full. - - * decl.c (pushdecl): Don't prefer typedef names to type tag names. - - * stor-layout.c (chain_type): Build chain in forward order. - - - * tm-3b1.h (ASM_OUTPUT_CASE_LABEL): Error getting length of table. - - * tm-3b1.h: #define SGS_3B1 was missing. - - * typecheck.c (build_compound_expr): Ignore non-volatile subexprs. - - * fold-const.c (fold): Simplify (unsigned) foo >= 0, etc. - - * stor-layout.c (layout_type): Set TYPE_PRECISION of ptr types. - -Wed May 4 08:06:25 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * parse.y: Don't use the Bison @ construct, since it makes parser slow. - - * decl.c (finish_function): Delete FILENAME and LINE args. - - * typecheck.c (digest_init): No pedantic warning for array="string". - -Tue May 3 09:09:30 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * toplev.c (main): Ignore `-Wcomment'. - * gcc.c: Pass -Wall to cpp (which treats it like -Wcomment). - - * tm-isi68.h: Greatly simplified; now works only with GAS. - - * tm-m68k.h (EMPTY_FIELD_BOUNDARY): now 16 (right on Sun, ISI and HP). - * tm-sun3.h: No need to redefine it. - - * decl.c (finish_struct): Don't ever make DECL_ALIGN smaller. - - * decl.c: Rename min, max to MIN, MAX. - - * typecheck.c (convert_for_assignment): Avoid warning if assigning - a `void *' from a `const void *'. - - * combine.c (FAKE_EXTEND_SAFE_P): Turn off for mem refs; avoid faults. - -Mon May 2 07:28:27 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * tm-vax.h: Support -mg switch to use g-float instead of d-float. - New macros TARGET_G_SWITCH, ASM_DOUBLE_CHAR. - Changes in TARGET_SWITCHES, ASM_OUTPUT_DOUBLE. - Define code `#' for PRINT_OPERAND. - * vax.md: use `#' in opcodes for doubleword float. - - * tm-vax.h: Define UDIVSI3_LIBCALL and UMODSI3_LIBCALL. - - * cccp.c (main, do_include): Implement -I- switch. - - * jump.c (jump_optimize): When hunting NOTE_INSN_FUNCTION_END, - skip final RETURN (found on the vax). - - * toplev.c (main): -Wall is equiv to all -W switches combined. - - * stmt.c (expand_decl, expand_end_bindings, - expand_{start,end}_function). The -noreg treatment of `register' vars - is extended to vars used as addresses of vars in memory (varying-size - structures). - (use_variable): Emit USE for regs used in specified rtx. - - * cse.c (fold_cc0): Stack-frame addresses are always nonzero. - (fold_rtx): 0200 bit in prev_insn_cc0 means only zeroness is known. - - * parse.y (parmlist): poplevel needs 3 args. - -Sun May 1 07:20:34 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * decl.c (start_function): typo checking for incomplete return type. - - * emit-rtl.c (restore_reg_data): If a pseudo appears nowhere, - don't leave its slot empty; create a pseudo for that slot. - - * Version 1.21 released. - - * expr.c (expand_call): Merge duplicate code for structure_value_addr. - - * emit-rtl.c (restore_reg_data): Delete error check; it's legit for - a pseudo reg to appear nowhere in the rtl. - -Sat Apr 30 07:35:31 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * integrate.c (copy_rtx_and_substitute): Fix typo for arg_pointer_rtx. - - * decl.c (poplevel): Undo previous change with #if 0. - - * stmt.c: `struct nesting' now records the depth on the stack. - Each expand_start... must update and record the depth; - each expand_end... uses macro POPSTACK to pop. - This way, if a level isn't explicitly popped, it won't cause - circular structure. - - * dbxout.c (dbxout_type): Replace with main variant only if incomplete. - - * typecheck.c (build_unary_op): Test of `pedantic' was backwards. - - * expr.c (STACK_BYTES): Typo in definition. - - * typecheck.c (build_binary_op_nodefault): Rename code1 to code0, - and likewise for code2, tt1, tt2. - - * expr.c (expand_call): Wrong arg order for warning_with_decl. - -Fri Apr 29 08:41:06 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * integrate.c (copy_decl_tree): New arg is depth in recursion. - Always discard the outermost LET_STMT being copied; never discard any - others. This way the copied LET_STMTs correspond to the copied NOTEs. - - * varasm.c (decode_rtx_const): For SYMBOL_REF, use string address - not address of the rtx. Library fns have only one copy of the name - but many copies of the SYMBOL_REF. - - * expr.c (emit_call_1): New arg OLD_ARGS_SIZE is used to reset - current_args_size. - (emit_library_call, expand_call): Pass new arg; don't restore it here. - - * flow.c (life_analysis): Don't mark sp live at end if fn is empty. - - * parse.y (parse_or_identifiers_1): Handle `error' in here, not in - callers notype_declarator etc. Also read the closeparen here. - -Thu Apr 28 12:43:52 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * expmed.c (expand_shift): In extzv strategy, handle the operand - predicates for operands 0, 1 and 3. (Not needed for 2.) - * vax.md: extzv pattern for SImode op1 must recognize general_operand - since the pattern named "extzv" allows them. - -Wed Apr 27 00:52:44 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * expr.c (emit_call_1): New arg NEXT_ARG_REG describes # regs - used for passing args. - (emit_library_call, expand_call): Provide that argument. - - * explow.c (round_push): New fn: round arg up to STACK_BOUNDARY. - * expr.c (expand_builtin): Use round_push on size for __builtin_alloca. - * stmt.c (expand_decl): Likewise for variable-size objects. - * expr.c (expand_call): Likewise for args_size.var. - Also use STACK_BOUNDARY to round a constant arg-block size. - Pass emit_call_1 that rounded value. - (emit_library_call): Round arg_size with STACK_BOUNDARY. - * tm-spur.h: Define STACK_BOUNDARY instead of ROUND_CALL_BLOCK_SIZE. - * tm-m68k.h: Define STACK_BOUNDARY as 16. - - * expr.c (emit_call_1): Don't change current_args_size. - (emit_library_call, expand_call): Always restore current_args_size - to ambient value, after calling emit_call_1. - - * tm-hp9k320.h: Don't define USG here. - * config-hp9k3.h: New file. USG defined here. - - * tm-3b1.h: #undef ASM_OUTPUT_ASCII (a defn came from tm-hp9k320.h). - - * decl.c (grokdeclarator primarily): Cast all RID_... to (int) before - using them in arithmetic. Placates CC on Sequent. - - * emit-rtl.c (emit_jump_insn): Return proper value, for a SEQUENCE. - * emit-rtl.c (emit_call_insn): Handle SEQUENCE like emit_jump_insn. - -Tue Apr 26 02:41:26 1988 Richard Stallman (rms at lucky-charms.ai.mit.edu) - - * cccp.c (macroexpand): If traditional, don't disable called macro. - (macarg1): Was failing to count backslash-newline inside a string - in a macro arg as part of file's linenumber. - -Mon Apr 25 18:46:53 1988 Richard Stallman (rms at lucky-charms.ai.mit.edu) - - * jump.c (jump_optimize): Don't do April 20 optimization on first - iteration; let other simpler opts be done before this is considered. - -Sun Apr 24 02:45:28 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * tree.c (staticp): a CONSTRUCTOR can be static. - - * varasm.c (output_constant_def): Always return memref, not address. - - * decl.c (complete_array_type): New fn, make an array type complete - based on an initializer. - (finish_decl): Use complete_array_type. - * parse.y (expr_no_commas): When parsing a constructor, - Use complete_array_type on constructors for incomplete array types. - - * typecheck.c (digest_init, store_init_value,process_init_constructor): - It's now TREE_STATIC, not TREE_ADDRESSABLE, that records that all elts - in a CONSTRUCTOR are simple constants. - (digest_init): A CONSTRUCTOR with non-null type is treated as ordinary - expression, not as a braced initializer. - Allow init of an array from an array-valued expr; warn if pedantic. - * expr.c (expand_expr, CONSTRUCTOR case): Put in memory only if static. - Was making an extraneous level of MEM; output_constant_def does it all. - - * typecheck.c (build_unary_op): Allow ADDR_EXPR of static CONSTRUCTOR. - (default_conversion): Likewise. - (initializer_constant_valid_p): Constructor is ok if static. - - * gcc.c: Change -fnostd... to -nostd... - * cccp.c (main): Likewise. - - * Everywhere: Use REG_NOTE_KIND to get the kind of a reg note. - - * rtl.c (find_regno_note): New function. - * flow.c (flow_deadp): Deleted; caller uses find_regno_note. - * global-alloc.c (reg_dead_p): Deleted. - (global_conflicts): Use find_regno_note instead of reg_dead_p. - - * final.c (final) Use find_reg_note to look for a REG_INC. - * combine.c (insn_has_inc_p): deleted; callers use find_reg_note. - (try_combine): Use find_reg_note whenever looking for a REG_INC. - (regno_dead_p, remove_death): Check the REG_NOTE_KIND before assuming - that the datum in it is a REG. - * reload1.c (reload): Use find_reg_note to find a REG_EQUIV. - - * gcc.c: Don't delete .o files if not all compilations succeed. - (record_temp_file): New arg SUCCESS_ONLY--delete file only if succeed. - (delete_temp_files): New arg SUCCESS says compilation succeeded. - (store_arg): Now 3 possibilities for arg TEMPNAMEP; 2 = del on success. - (do_spec_1): For %d, set delete_this_arg to 2. - - * decl.c (poplevel): Warn about any still-incomplete type-tags. - -Sat Apr 23 02:54:16 1988 Richard Stallman (rms at rice-krispies.ai.mit.edu) - - * expr.c (expand_builtin): For alloca, round arg up to multiple - of PARM_BOUNDARY. Also to convert it to Pmode unless it already is. - - * stor-layout.c (layout_union): Bug in 14 April change: - use caller-specified alignment as minimum, not as maximum. - - * parse.y (skip_white_space): Avoid infinite loop on unterm. comment. - -Fri Apr 22 00:22:59 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * cccp.c: Text following #else or #endif is just a warning. - (rescan): Digit-case was dropping into the $-case; reorder. - - * cccp.c (rescan): Comment start when -traditional was output as - `/*'; should be nothing. - - * jump.c (jump_optimize): Fix prev change: - do nothing if range1end == range2end; - don't lose any NOTEs when splicing. - - * flow.c (propagate-block): For CALL_INSN, clobber the call-used regs - only after mark_set_regs is done; avoids confusion about lifespan - of function value reg. - - * gcc.c: Pass -Wcomment to cpp. - - * cccp.c (main, rescan): If -Wcomment, warn if `/*' inside comment. - - * decl.c (duplicate_decls): Ignore `inline' decl following definition. - - * m68k.md (casesi): Split it up into subroutines, so insns emitted - by the call to memory_address (on 68000) come in the right place. - - * combine.c (record_dead_and_set_regs): Notice storing in a SUBREG. - - * integrate.c (expand_inline_function): Insn to copy a subroutine's - return-value was being output twice, once incorrectly. - - * reload.c (find_equiv_reg): A stack-push insn does not invalidate - an equiv for a goal in memory. - Any other write to memory does invalidate any goal in memory - (PARALLEL case failed to check for this). - - * expmed.c (expand_shift): In the extzv clause, force shifted value - out of memory if -fforce-mem. - - * print-tree.c (prtypeinfo): Some attributes were missing. - (dump): In ..._TYPE nodes, ignore the TREE_CHAIN field. - - * cse.c (note_mem_written): Pushing on stack does not invalidate mem. - - * vax.md (extv/andl peephole opt): Made incorrect code if output was - pushed on stack. Added special case code. - (extv, extzv for SImode operand): Require register_operand. - -Thu Apr 21 00:24:52 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) - - * stmt.c (assign_parms): Round current_function_pretend_args_size up. - - * integrate.c: `pushlevel' arg was missing. - - * dbxout.c (dbxout_type): Undo rest of March 29 change: - When a named type is first seen inside another type, output an xref - and let the real definition come out later. - It is strange that Sun dbx has sometimes appeared to demand - one strategy and sometimes appeared to demand the other. - - * typecheck.c (convert_for_assignment): Allow conversion to or from - `const void *', etc., unless pedantic. - - * decl.c (get_parm_types): For `foo (void){}', set last_function_parms - to nil so store_parm_decls won't lose. - - * combine.c (subst): (plus (plus X N) -N) => X. - - * explow.c ({anti_,}adjust_stack): Don't make a copy of - `stack_pointer_rtx'. - - * integrate.c (expand_inline_function): Typo testing for the - USE that indicates a CALL_INSN's value is being returned. - - * expr.c (expand_builtin, alloca case): Copy arg to reg before - adjusting stack, to avoid invalid insns on some machines. - -Wed Apr 20 00:15:14 1988 Richard Stallman (rms at rice-krispies.ai.mit.edu) - - * typecheck.c (build_binary_op_nodefault): When shortening, - get_narrower may make no change because ARGn is already narrow. - In this case, set UNSIGNEPn from ARGn's type. - - * typecheck.c: Rename ARG1,ARG2 to ARG0,ARG1, etc. in several fns. - - * tm-vax.h: Turn off continuation on DBX output. - - * typecheck.c (build_function_call): Don't change __builtin_ffs to an - FFS_EXPR. Note that __builtin_alloca has always made a CALL_EXPR. - * expr.c (expand_builtin): New function expands all CALL_EXPRs that - are really built-in functions. - (preexpand_calls): Do nothing to a CALL_EXPR for a built-in function. - - * loop.c (count_loop_regs_set): Don't move a reg that is in a CLOBBER. - - * stupid.c (stupid_mark_refs): Was getting hard reg's mode from - the wrong place. - - * rtl.c (note_stores): Typo in checking vector elt for SET vs CLOBBER. - - * stmt.c (expand_end_bindings): If restoring stack level, - first do pending stack adjust (so it won't be done erroneously after). - (expand_goto): likewise. - - * rtl.h: LABEL_NUSES was an rtx. It should be an int. - * stmt.c (expand_label, expand_goto): Delete frobbing with LABEL_NUSES; - the value stored there was the same as the CODE_LABEL rtx. - - * jump.c (jump_optimize): Detect if (foo) ...; else { ... break;} - and change to if (! foo) { ... break;} else ...; so can drop out. - (next_label): New fn returns the next label after given insn. - -Tue Apr 19 21:30:05 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * flow.c (insn_dead_p): Delete special handling for stack ptr. - (mark_set_regs, mark_used_regs): Likewise. - (life_analysis): Mark stack ptr live at end of fn if necessary. - (propagate_block): Mark stack ptr live leading up to a CALL_INSN. - - * jump.c (jump_optimize): #if 0 around stack-adjust-deletion code. - - * cse.c (fold_rtx): Change const_arg from an array to 3 separate - scalars for the first three operands. - Handle SIGN_EXTEND and ZERO_EXTEND. - - * integrate.c (copy_rtx_and_substitute): If arg is 0, return 0. - (expand_inline_function): Separate vars for old pattern and new insn. - - * expr.c (expand_call): Set TREE_ADDRESSABLE if call is not inlined. - -Tue Apr 19 02:25:22 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * Version 1.20 released. - - * tm-ns32k.h: Define new reg class GEN_OR_FLOAT_REGS - so that GENERAL_REGS and FLOAT_REGS have a union. - - * tm-ns32k.h (GO_IF_LEGITIMATE_ADDRESS): Recognize a stack-push. - * ns32k.md: Many constraints must now allow or reject pushes. - Delete the special patterns for pushing. - -Mon Apr 18 06:02:39 1988 Richard Stallman (rms at rice-krispies.ai.mit.edu) - - * reload1.c (forget_old_reloads): For a multiword hard reg, - forget old reloads for each word. - - * reload.c (find_reloads): Typo in calling push_replacement. - - * tm-ns32k.h (HARD_REGNO_MODE_OK): Failed to allow fp regs for SFmode. - -Sun Apr 17 01:21:35 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * tm-sequent.h (PRINT_OPERAND): Handle absolute integer memaddress. - - * ns32k.md: Add DImode push insns. Add QImode and HImode push insns. - Supply missing statement in movsf. - - * dbxout.c (dbxout_type): Don't contin before 1st field of struct. - - * dbxout.c (dbx_continue): Use DBX_CONTIN_CHAR instead of backslash. - - * loop.c (scan_loop): Ov vax, the "loop-entry jump" can be a return, - in which case perhaps there is no label following it. - Detect phoniness of loop before looking for that label. - - * decl.c (init_decl_processing): Builtin fn names start with `__'. - - * typecheck.c (shorten_compare): Warn about constant result only in - cases like (char)x < 0x80, where old C compilers made it -0x80. - - * vax.md: All jbs/jbc/jlbs/jlbc patters with op0 in SImode - must reject mode-dependent memory addresses. - - * recog.c (mode_independent_operand): Test for general operand - that doesn't have a mode-dependent memory address. - - * varasm.c (assemble_function): ASM_DECLARE_FUNCTION_NAME, if def, - is now responsible for outputting the function name as a label. - -Sat Apr 16 05:02:55 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * cccp.c (do_xifdef): Warn about punctuation or other junk in argument. - Warn about no argument. If pedantic, warn if arg starts with digit. - If traditional, ignore all after first non-idchar and never warn. - -Thu Apr 14 01:12:59 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * integrate.c (expand_inline_function): Typo for addressable parms. - - * cse.c (insert_regs): Copying half a DImode into half of another - does not make the two DImode regs equivalent. - - * recog.c (general_operand): Was failing to accept symbol_ref:SI - when MODE arg was VOIDmode. - - * expr.c (preexpand_calls): For RTL_EXPR, do nothing. - - * decl.c (start_enum, build_enumerator): Remember default for next one - as a tree node (so the high-half isn't lost in a negative one). - - * stor-layout.c (layout_{record,union}): Pay attn to initial value - of TYPE_ALIGN in computing final alignment. - (layout_union): Round size up to multiple of the alignment. - - * decl.c (finish_struct): Don't alter size after type is laid out. - Instead, set TYPE_ALIGN before layout_type. - - * reload1.c (choose_reload_targets): Introduce reg_has_output_reload. - If there are two separate reloads (one in and one out) - for the same (hard or pseudo) reg, always set reg_last_reload_reg - based on the output reload. - -Wed Apr 13 21:26:16 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * reload.c (find_reloads_address_1): Always barf if a "constant" - register is autoincremented. - - * parse.y (structsp): suspend_momentary before start_enum; - else some nodes made by start_enum might be momentary. - - * stmt.c (expand_start_case): New arg is nominal type for comparison - (which is the promoted type of the index expression). - (pushcase): Always convert VALUE to that nominal type - before validating it. - * parse.y (case stmt): Promote each case-value before pushcase. - * typecheck.c (c_expand_start_case): Promote the index-expr - to determine the nominal type, before get_narrower. - -Wed Apr 13 12:43:08 1988 Chris Hanson (cph at kleph) - - * tm-hp9k320.h: Define ASM_FORMAT_PRIVATE_NAME. HPUX asm forbids - `.' in identifiers, so use `___' (there is some danger in this choice). - -Tue Apr 12 23:26:48 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * local-alloc.c (block_alloc): Make 1 extra slot in regs_live_at. - - * stmt.c (optimize_bit_field): Function moved from reload1.c. - When need to generate a SIGN_EXTEND or ZERO_EXTEND, make it a separate - insn and use gen_extend_insn to make it. - * optabs.c (gen_extend_insn): New fn, construct body of an insn - to extend Y and store in X. - -Mon Apr 11 19:20:57 1988 Richard Stallman (rms at rice-krispies.ai.mit.edu) - - * decl.c (finish_decl): Error if static var has variable size. - - * parse.y (yylex): Warn if int const is out of range. - - * parse.y: New keyword __alignof. - * typecheck.c (c_alignof): Given a type, return its alignment in bytes. - - * typecheck.c (c_sizeof{,_nowarn)): Don't return integer_one_node; - use build_int to make sure we get something with type `sizetype'. - - * Support variable-sized structures (containing var-sized arrays). - - * stmt.c (assign_parms): Handle parms whose size varies. - Use `memory_address' when constructing memrefs to args; - no need to set `invalid_stack_slot'. - Don't make a REG_EQUIV note for a scalar arg at variable offset. - * stor-layout.c (genop, build_int): No longer `static'. - - * stor-layout.c (convert_units): Optimize ceil (ceil(x,2)*2, 4) etc. - - * stmt.c (expand_decl): Don't abort if var-sized object has init. - Convert variable size from units of DECL_SIZE_UNIT to units of bytes. - - * expr.c (emit_push_insn): Arg ARGS_SO_FAR is now an rtx. - Pay attention to ARGS_ADDR even if machine has push insns. - (expand_call): Handle variable-sized arguments. - If have any such, push entire arg-block in advance. - Record each arg's offset during first loop and don't change args_size - during the actual pushing loop; this way the actual pushing loop - works regardless of arg-order if arg-block was pushed in advance. - (push_block): Copy SIZE to reg unless it's a reg or constant. - - * expmed.c (expand_divmod): If converting CEIL_DIV to FLOOR_DIV, - make new pseudo for incremented value, to help cse understand. - -Sun Apr 10 00:07:45 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * expr.c (emit_library_call): Two dumb bugs calling emit_call_1. - - * dbxout.c (dbxout_symbol): Handle case of (MEM (REG frameptr)). - - * cccp.c (skip_if_group): Ignore quote-chars if -traditional. - (rescan): If -traditional, don't output a space for a comment. - (handle_directive): If not -traditional, output a space for a comment. - -Sat Apr 9 21:26:51 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * decl.c (get_parm_types): `void' type is error, except as entire list. - * parse.y (parmlist_1): `void,...' is error. - - * typecheck.c (pointer_int_sum, pointer_diff): - Use an integer type with at least POINTER_SIZE bits. - * expr.c (expand_expr, ARRAY_REF): Likewise. - * tree.c (type_precision): Prec of a pointer is POINTER_SIZE. - (convert_to_pointer): Directly convert any int w/ width==POINTER_SIZE. - Other int types convert via an int of that width. - (convert_to_integer): Pointers convert via an int of that width. - - * decl.c (init_decl_processing): Use INT_TYPE_SIZE, if def, - to set width of `int' and `unsigned int'. - (make_index_type): Give new type the width of a long int. - - * tm-m68k.h: Add new -mshort which controls TARGET_SHORT. - * tm-m68k.h: Define INT_TYPE_SIZE depending on TARGET_SHORT. - -Fri Apr 8 05:02:59 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * typecheck.c (require_complete_type): Fix typo in detection of `void'. - (build_function_call): Fix backward test to allow `void' values. - - * dbxout.c (dbxout_tags): Output each tag once even if type is defined. - - * m68k.md (movstrictqi): Reject addr-reg always, for both operands. - - * tm-vax.h (STRUCTURE_SIZE_BOUNDARY): Make this always 8, for BSD. - * tm-ultrix.h: New file, overriding STRUCTURE_SIZE_BOUNDARY. - [This change has been taken out; tm-ultrix.h is now equivalent to - tm-vax.h. I must have been confused when testing PCC.] - - * integrate.c (expand_inline_function): Don't let inline_target - be nonzero in BLKmode. - - * decl.c (grokdeclarator): Const array parm becomes ptr-to-const. - -Thu Apr 7 05:02:41 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * genoutput.c (bcopy, bzero): Renamed to mybcopy, mybzero - so variation in C library and config.h won't affect the results. - * genrecog.c (bzero): likewise. - * genextract.c (bcopy): Fn deleted; used only in a string constant. - - * varasm.c (force_const_mem): Fix typo in arg decl. - - * toplev.c (compile_file): init_file with main_input_filename - so dbx output doesn't lack N_SOL symbols. - - * cccp.c (rescan) [CPLUSPLUS]: Put out // comments as // comments. - -Wed Apr 6 14:06:38 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * expr.c: Delete SLOW_ZERO_EXTEND conditionals added March 3. - Now that enums types can be unsigned, this isn't needed. - - * emit-rtl.c (emit_jump_insn): Handle SEQUENCEs. - - * genemit.c (gen_expand): Use emit_jump_insn, emit_label, emit_barrier - when the insn rtl requires it. - - * m68k.md (subsi3): Prefer to avoid reverse-subtraction alternative. - - * stmt.c (expand_end_case): Let CASE_DROPS_THROUGH control what to - emit after the table. - * tm-vax.h: Define CASE_DROPS_THROUGH. - -Tue Apr 5 15:47:10 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * genemit.c (gen_exp): Handle vectors within exprs. - - * stmt.c (expand_end_case): Pass 5th arg (default_label) to gen_casesi. - * m68k.md: Define casesi insn rather than tablejump insn. - - * cccp.c (skip_if_group): For validate_else, pass BP (end of cmd name). - Don't call validate_else if do_else or do_endif will detect error. - - * Bug: inline fcns can refer to the return reg with a strict_low_part - which confuses expand_inline_function. Fix is to change return reg - into inline_target *everywhere* except in or right after a call. - * integrate.c (copy_rtx_and_substitute): Delete special case for SET. - Replace return-value hard regs with INLINE_TARGET in all contexts. - (expand_inline_function): special handling for insn after a CALL_INSN - if it copies the function value out. - Allow notes and stack adjust insns to intervene - between the CALL_INSN and the value-copy. - - * expr.c (emit_call_1): New name for gen_call_1. - - * Bug: ({...}) insns were in wrong place for a subexpression - after a sequence point, as in x ? y : ({...}). - * tree.def: New tree-code RTL_EXPR holds a sequence. - * expr.c (expand_expr): Handle RTL_EXPR by emitting the sequence. - * stmt.c (expand_{start,end}_stmt_expr): Use emit_to_sequence - to make a sequence from everything within the ({...}). - (expand_{start,end,emit}_delayed_expr): Delete these functions. - * parse.y (`for'-statements): Don't call them; nothing special needed. - - * parse.y (yylex): Handle syntax L"..." and L'...' - (combine_strings): Handle wide strings being combined. - * typecheck.c (digest_init): Reject wide string as init for char array. - Allow it for an int array, but don't allow a narrow string. - * decl.c (init_decl_processing): New var int_array_type_node. - - * parse.y: Define keyword `noalias'. - * parse.h: Define RID_NOALIAS. - - * typecheck.c (compparms): Not all parmlists match an empty one; - call `compparms1' to filter them. - - * decl.c (groktypename): Remove special case for `void' as parameter. - (get_parm_types): Special case for list of one decl with type void. - - * decl.c (build_enumerator): Give enum constants the type `int'. - Variable `current_enum_type' eliminated. - (finish_enum): No need to repeat `fixup_unsigned_type' - since the precision has not changed. - * stor-layout.c (layout_type): Allow enum types to be unsigned. - - * emit-rtl.c (unshare_all_rtl): Unshare contents of all reg-notes. - - * parse.y (check_newline): filename is optional in #-lines. - -Mon Apr 4 14:36:54 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * typecheck.c (shorten_compare): When data type determines the value, - eval the nonconstant arg anyway if it has side effects. - (build_conditional_expr): When merging `foo *' with `void *', - also allow `const void *'. Result type has merged set of qualifiers. - (qualify_type): Merge qualifiers of two types. - - * decl.c (get_parm_types): Store any tags defined in parmlist - into `last_function_parm_types'. - (store_parm_decls): Add those tags into the current binding level. - - * parse.y (parmlist, parmlist_or_identifier): Pass 0 to pushlevel; - no binding levels in C should be transparent to tags. - - * 3b1 support: - * tm-3b1.h: New file. - - * m68k.md: Add HPUX_ASM conditionals for shift-by-24-and-compare. - In one of the dbra patterns, a HPUX_ASM conditional was backwards. - (movhi) [SGS_3B1]: Define the LI... label as in MIT syntax. - (addsi3) [SGS]: Syntax for base-displacement differs from MOTOROLA. - (subsi3) [SGS]: likewise. - (tablejump) [ASM_OUTPUT_CASE_LABEL]: Use 6, not 2, as displacement. - This assumes ASM_OUTPUT_CASE_LABEL on 68k is used for a `swbeg'. - - * final.c (final): Use ASM_OUTPUT_CASE_LABEL (if defined) to output - any CODE_LABEL followed by an ADDR_VEC or ADDR_DIFF_VEC. - It has 4 args; 4th is the insn which is the ADDR_VEC or ADDR_DIFF_VEC. - - * tm-*.h for 68000 (PRINT_OPERAND_ADDRESS): For unscaled indexing in - fetch from a branch table, use L and LI symbols as in the scaled case. - - * cccp.c: If SCCS_DIRECTIVE, define #sccs as no-op. - - * integrate.c (output_inline_function): Real start of function - is FIRST_PARM_INSN, not FIRST_FUNCTION_INSN. - - * tree.c (build_string): String contents must be saveable (for - inline fcn). - - * cse.c (cse_insn): Don't forget to set dest_hash_code when dest - is a stack slot (and so its address is not being optimized). - - * emit-rtl.c (restore_reg_data_1): reg_rtx_no must be 1+ largest REGNO. - - * m68k.md (non-SImode bit-field insns): Change constraint to "o,d" - so a nonoffsetable memref is handled by reloading its address - but a register can still be handled. - - * toplev.c (main): Execute OVERRIDE_OPTIONS, if it's defined. - -Sat Apr 2 00:55:21 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * expr.c (convert_move): Handle a SUBREG in direct truncation case. - - * cse.c (lookup_for_remove): Don't test machine mode of registers: - Storing in (REG:SI 0) invalidates (REG:DF 0). - - * decl.c (pushlevel): New arg, nonzero means this level is for - variables only, not for tags. All calls changed. - (lookup_tag): Even if THIS_LEVEL_ONLY, skip variables-only levels. - (pushtag): Define it in the first non-variables-only level. - - * dbxout.c (dbxout_type): Undo Mar 29 change, in the DBX_NO_XREFS case. - So now each struct or union will contain only nameless cross-refs - to any others it uses. The prior change is still in effect when - DBX_NO_XREFS is not defined. - - * Implement variable array bounds for parameters. - * decl.c (poplevel): Don't crash if DECL_NAME gives 0. - * typecheck.c (comptypes): A variable array bound matches anything. - * parse.y (parmlist): Call pushlevel, then pushdecl each parm as it - is parsed; then poplevel after using get_parm_types to extract the - results of the parmlist. - * decl.c (get_parm_types): New function; reverse the current decls, - put them in last_function_parms, and return a list of their types. - (grokparms): Arg is now an idlist or a typelist. Do nothing if latter. - (push_parm_decl): New function, like {start,finish}_decl combined - for a parm in a parmlist. - - * dbxout.c (dbxout_symbol): Ignore sym if its DECL_RTL is 0. - - * symout.c (symout_block_symbols): Ignore sym if type is error_mark. - -Fri Apr 1 11:41:21 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * expr.c (prepare_call_address): New function; given two rtx's - for function and context, copy the context to the right hard reg, - put the function address in the right place and return an rtx for it. - (gen_call_1): No longer do those things. Delete args CONTEXT, PROTECT. - (emit_library_call, expand_call): Call `prepare_call_address'. - In between that and `gen_call_1', USE the parm registers. - - * tm-hp9k320.h (ASM_OUTPUT_*): Flush uses of output_arith_constant. - - * varasm.c (assemble_variable): Use ASM_FORMAT_PRIVATE_NAME - to make the name for a local static variable. - * tm-m68k.h, tm-vax.h, tm-ns32k.h, tm-spur.h: - Define ASM_FORMAT_PRIVATE_NAME. Use `.', not `$', to separate. - - * tm-m68k.h, tm-ns32k.h (FIX_FRAME_POINTER_ADDRESS): - To refer to stack ptr, use stack_pointer_rtx, not a copy. - - * tree.c (build_real_from_string): Function deleted. - * parse.y (yylex): Use build_real and atof. - - * parse.y: Allow string concatenation in arg of asm. - - * parse.y (yylex): Always allow `$' in ident, but warn if pedantic. - * tm-vms.h: Delete DOLLARS_IN_IDENTIFIERS (no longer tested). - - * cccp.c (rescan, do_define, initialize_random_junk): - Always allow `$', but warn if pedantic. - (main): If -t, set `traditional'. - (collect_expansion): If `traditional', no special handling for quotes - and no whitespace added at end of macro definition. - - * expr.c (compare, compare1): Last arg to compare_constants - must be a size in bits. - -Thu Mar 31 00:31:52 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * expmed.c (expand_mult, expand_divmod, extract_fixed_bit_field): - Reject function return register as target if may need to read it. - (Reading the return register in an inline function doesn't work.) - - * decl.c (start_function): Delete extra arg to `error'. - - * emit-rtl.c (last_parm_insn): Delete this unused var. - - * make-cc1.com: New version from Kashtan. - - * integrate.c (expand_inline_function): Always set up an INLINE_TARGET - for a function that returns a nonvoid nonBLK value. - Since `pushlevel' and `poplevel' are called, must also call - `expand_{start,end}_bindings' to make a pair of NOTEs. - Let them handle USEs at end of scope of formal parameter copies. - - * integrate.c (expand_inline_function): In a new-style CALL_INSN, - don't change the result reg into INLINE_TARGET. Also, - generate a move insn after the call only if INLINE_TARGET is non-0. - - * integrate.c (copy_decl_tree): Don't crash if DECL_RTL is 0. - - * integrate.c (copy_for_inline): Don't treat `return' rtx's specially. - - * stmt.c (expand_{start,end,emit}_delayed_expr): - New fns to handle ({...})'s in expressions output not where parsed - (such as third expression in a `for' statement). - * parse.y: Call them to handle third expression in a `for'. - - * decl.c (duplicate_decls): Result is `inline' if either OLD or NEW is. - - * emit-rtl.c (emit_note): Return the note, or 0 if none. - * stmt.c (expand_start_bindings): Use emit_note's value. - -Wed Mar 30 12:48:22 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * obstack.c (_obstack_begin): If ALIGNMENT is 0, use default. - Compute default for the alignment of a `double'. - * obstack.h (obstack_{begin,init}): Pass 0 for the alignment. - - * flow.c (mark_used_regs): Discard multiple SUBREGs, STRICT_LOW_PARTs. - - ** Call insns that return values are now represented as - (set (reg ...) (call ...)), not just (call ...). - - * *.md: Define a "call_value" insn pattern. - - * tm-m68k.h, tm-vax.h, tm-ns32k.h: (NOTICE_UPDATE_CC): - These insns invalidate the CC. - - * local-alloc.c (combine_regs): #if 0 special treatment of - function value hard reg. - (wipe_dead_reg): If hard reg, call reg_is_born so that the death - will not be ignored. - (reg_is_set): For reg that dies in this insn, mark it dead from now on - and post_mark it live after this insn only. - - * combine.c (try_combine): Don't allow a call insn as I1 or I2. - - * loop.c (count_loop_regs_set): Move CALL_INSN into a separate - clause. When finding regs that are function addresses, handle - both old and new format call insns. - - * flow.c (insn_dead_p): A SET that contains a CALL can't be dead. - (volatile_refs_p): Any CALL constitutes a volatile ref. - (mark_used_regs): If setting a reg from a volatile ref, - treat it like setting a reg whose value will be used. - - * expr.c (gen_call_1): New arg VALREG if nonzero means generate - a call_value insn which stores in VALREG. - (expand_call): Use `hard_function_value' to make the VALREG arg - unless expression has type `void'. - - * expr.c (emit_library_call): New 2nd arg OUTMODE is mode of result. - (So can give gen_call_1 the proper value-register.) - All callers (here and optabs.c) pass this arg. - - * cse.c (canon_hash): Consider all CALL rtx's volatile. - - ** end of change in representation of call insns. - - * stmt.c (expand_asm_operands): Replace complex lvalues with - SAVE_EXPRs here - * typecheck.c (c_expand_asm_operands): rather than here. - - * typecheck.c (pointer_diff): Fix typo preventing use of FLOOR_DIV_EXPR - when dividing by power of 2. - (build_c_cast): Flush unused locals. - (store_init_value): likewise. - (process_init_constructor): Delete unused 4th arg `for_static'. - - * toplev.c (fatal_io_error): Arg to fprintf was missing. - - * tm-m68k.h (LEGITIMIZE_ADDRESS): Flush extra arg to `emit_move_insn'. - - * decl.c: Delete some unused local vars. - - * stor-layout.c (layout_decl): `packed_size' now unsigned. - -Tue Mar 29 14:47:07 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * Version 1.19 released. - - * loop.c (may_trap_p): Nonzero if X is a division that might trap. - (scan_loop): If insn might trap, move only if loop always executes it. - - * dbxout.c (dbxout_type): Never output a cross-ref for - a type whose definition is known. Sun dbx won't accept them. - -Mon Mar 28 12:34:46 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * tm-vms.h (TARGET_DEFAULT): Default is PCC alignment. - The VMS compile driver controls the real default. - - * typecheck.c (c_expand_return): Don't ignore return value - when its type is void. - - * final.c (final): Forget the condition codes after an `asm'. - - * typecheck.c (build_binary_op_nodefault): Warn about ptr < 0 - even if not pedantic, but not if traditional. - - * typecheck.c (convert_for_assignment): Don't warn about - pointers volatile * vs nonvolatile * if -fvolatile specified. - - * decl.c (store_parm_decls): Among the old-style parm decls - there can legitiately be other decls! For example, if a parm - is declared `enum {foo, bar} x;', there are decls for `foo' and `bar'. - Don't let anything but a PARM_DECL match a parm name; - pass all the other decls through into the lexical context. - - * jump.c (jump_optimize): When deleting stack adjusts before a - jump-to-return, don't be fooled by intervening NOTEs. - - * tm-sequent.h (PRINT_OPERAND): Output (MEM (MEM (REG))) properly. - * output-ns32k.c (print_operand_address): Output (MEM (REG)) - properly; output stack-pointer as `tos'. - - * flow.c (find_use_as_address): Reject uses within operand 0 - of a ZERO_EXTRACT or SIGN_EXTRACT reference. It's hard to reload - an autoincrement inside these because they can refer to multiple bytes. - - * reload.c (find_reloads): `o' in constraint means any memref - (except auto-increment) is acceptable with reloading. - Braino: Clear BADOP, not BAD. - - * reload.c (push_reloads): Use rtx_equal_p (via macro MATCHES) - when considering reuse of an old reload. Otherwise equal values - may get reloaded into different registers, and two MEMs that - originally matched may fail to match once reloaded. - - * m68k.md (sign_extract and zero_extract insns): - If operand 0 is QI or HImode, don't allow register--only `o' - (except in some bftst patterns where bitpos is < 8). - And change `m' to `o' in all these patterns. - -Sun Mar 27 15:32:54 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * expr.c (expand_expr, case CONSTRUCTOR): - Not all aggregates are BLKmode; use the type's mode. - - * gcc.c: Pass -y* to ld. - - * cse.c (struct hash): New member `equivalence_only'. - (insert): Initialize it. - (cse_insn): Set it to 1 when src_eqv is inserted. - When finding cheapest equivalent of something, - skip elts that are marked with `equivalence_only'. - - * decl.c (duplicate_decls): Don't call `layout_type' - if the type is `error_mark_node'. - - * decl.c (implicitly_declare): If decl will be file-scope, - make sure it's a permanent node, and its associated data too. - -Sat Mar 26 15:48:50 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * flow.c (insn_dead_p, mark_used_regs): Storing a reg via a - ZERO_EXTRACT or SIGN_EXTRACT is dead if the reg isn't needed afterward. - - * stmt.c (expand_start_function): Set current_function_name - to the name of this function. - * tm-vms.h (MAYBE_VMS_FUNCTION_PROLOGUE): Use current_function_name. - - * expr.c (expand_increment): A SUBREG in op0 can also a be a copy. - - * ns32k.md: Correct range of args for `adjspb' insn. - Use `adjspw' when appropriate. - New pattern for `lprd' insn. - Change some `const_int' predicates to GET_CODE tests. - - * expr.c (expand_call): Eval function before copying args to hard regs. - - * tree.c (make_node, copy_node): Don't get length of a REAL_CST - from tree_code_length. - - * expmed.c (extract_fixed_bit_field): In memory-word case, abort - if tm.h parms say word could fail to be well-aligned. - * tm-ns32k.h: Define STRUCTURE_SIZE_BOUNDARY so they will be aligned. - * tm-vax.h: Define STRUCTURE_SIZE_BOUNDARY since Unix CC seems to. - - * tm-vms.h (CPP_PREDEFINES): Predefine __GNU__ and __GNUC__. - -Fri Mar 25 13:23:27 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * gcc.c (main): Handle SIGHUP, SIGTERM. - - * expmed.c (expand_bit_and): Don't clobber OP1 when trying andcb. - -Thu Mar 24 21:59:09 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * stmt.c (assign_parms): Get size of BLKmode local from the type, - not the mode. - (expand_function_start): Init frame_offset before calling assign_parms. - -Wed Mar 23 23:50:37 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * expr.c (emit_push_insn): When making a move insn, - go via emit_move_insn; else fails to put constants into memory. - -Tue Mar 22 15:45:10 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * expr.c (expand_increment): Flush special case for register_operand; - actually call the predicate whatever it is. - - * genemit.c (gen_expand): Make `operands' a local variable, - not a global static one, in the `gen_...' function. - Avoids lossage when one `gen_...' fcn calls another indirectly. - - * genoutput.c (output_epilogue): Don't give printf a null string. - -Mon Mar 21 15:41:42 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * expmed.c (store_bit_field) [HAVE_insv]: - Force VALUE1, not VALUE, into a register. - - * expmed.c (store_fixed_bit_field): Width of mask for clearing - the bit-field depends on mode of OP0. - - * ns32k.md (branch and store-flag insns): - Test cc_prev_status, not cc_status. - - * expmed.c (extract_bit_field): Delete unused var `omode'. - - * dbxout.c (dbxout_type, dbxout_tag): Use the main variant - of the specified type. - - * reload.c (find_reloads): When an alternative succeeds without reload, - initialize goal_alternative_matches from this_alternative_matches. - -Sun Mar 20 17:58:00 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * tm-sun*.h: Don't predefine `m68k'; Sun's compiler does not. - -Fri Mar 18 13:48:29 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * reload.c (find_reloads): Set up goal_alternative_matches - *after* the label `finish'. - - * stmt.c (assign_parms): GET_MODE_SIZE needs a mode, not an rtx. - - * recog.c (constrain_operands): Set global var `which_alternative' - to indicate which of the alternatives this insn matches. - - * typecheck.c (commontype): long int vs unsigned int - gives long unsigned, if long and int are the same width. - -Thu Mar 17 15:39:45 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * emit-rtl.c, tree.c: include local version of varargs.h. - - * decl.c (start_function): Clear TREE_EXTERNAL and set TREE_STATIC - here rather than in finish_function. Affects the case of - `extern foo (); static foo (a) {...}' - - * gcc.c: Handle -fnostdinc and -fnostdlib switches in specs. - - * cccp.c (main): Handle -fnostdinc: don't put default dirs - on the chain to be searched. - - * cccp.c (error, warning, error_with_line): No longer print - charpos within file; lineno is enough. - -Wed Mar 16 16:56:36 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * expmed.c (expand_inc, expand_dec): Handy new subroutines - to generate x+=y or x-=y, given x and y as rtl. - * expmed.c (expand_divmod): Use them instead of gen_{add2,sub2}_insn. - - * expr.c (emit_move_insn): Return the move insn emitted. - Eliminate the code here to move a DImode or DFmode by pieces. - - * emit-rtl.c (emit_insn): Return-value was wrong if emit_to_sequence; - cannot use `last_insn' in that case. - - * regclass.c, stupid.c, local-alloc.c, global-alloc.c: - Some vars of type HARD_REG_SET should be `register' only - if HARD_REG_SET is a macro (ie a scalar). - - * expr.c (move_block_from_reg): New function, converse of - move_block_from_reg. - * stmt.c (assign_parms): If a BLKmode arrives in regs, - copy to a stack slot using move_block_from_reg. - -Tue Mar 15 17:33:22 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * regclass.c (regclass): Don't convert to two-operand insns - unless optimizing. - - * varasm.c (decode_rtx_const, const_hash_rtx): Fix typos. - - * stmt.c (fixup_var_1): Don't alter insn moving VAR to or from - a subreg of a register. - - * cse.c (fold_rtx): Don't fold if result is not LEGITIMATE_CONSTANT_P. - Construct all results in new local variable NEW; then test that - and decide whether to return it or the original rtx. - - * cse.c (cse_insn): When SRC_EQV is non-0 but set[0] has been - cleared, don't insert SRC_EQV in hash table. - - * All insns emitted by a define_expand become part of the SEQUENCE: - * SEQUENCE now contains a vector of insns, not of bodies. - * insn-emit.c (add_insn): If `emit_to_sequence' nonzero, add the - insn to a separate chain, `sequence_first_insn'. - (gen_sequence): Take everything on that chain and make a SEQUENCE. - (emit_insn): Handle SEQUENCE differently since elts are now insns. - (emit_insn_{before,after}): Handle SEQUENCE. - (classify_insn): #if 0. - * genemit.c (gen_expand): emit all the insns, then call gen_sequence - to make the return value. - Define two macros DONE and FAIL for use in a DEFINE_EXPAND: - Use DONE to inhibit emission of the pattern of the DEFINE_EXPAND. - Use FAIL to make the gen_... function return 0. - -Mon Mar 14 12:47:28 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * expr.c (expand_expr): Extend the don't-sign-extend-enums hack - to COMPONENT_REF. (See 3 March.) - - * tm-*.h (FUNCTION_ARG, etc.) New argument NAMED - is nonzero for a named arg, zero for an anonymous extra arg. - * expr.c (expand_call): Pass 1 for NAMED if appropriate. - * expr.c (emit_library_call): Pass 1 for NAMED. - * stmt.c (assign_parms): Pass 1 for NAMED. - - * cccp.c: Test __GNUC__, not __GNU__. - - * integrate.c (copy_and_substitute_rtx): - Replacing a MEM parm with the parm value, convert mode if mismatch. - Always use VOIDmode when generating SETs. - Take heed of FIRST_PARM_OFFSET and distinguish arg-pointer - from frame-pointer when they are different. - (expand_inline_function): Handle (RETURN) insns, by creating a - return_label which is output after the integrated code. - - * parse.y (yylex): Condition for ignoring `inline' was backwards. - - * flow.c (mark_used_regs): Ignore STRICT_LOW_PART, so that - an insn that sets STRICT_LOW_PART (and its source values) may be dead. - (propagate_block): Always pass 1 for strict_low_ok to insn_dead_p. - - * optabs.c (emit_unop_insn): Don't make a REG_RETVAL note. - Change above deletes dead STRICT_LOW_PART stores without one. - - * optabs.c (expand_binop, expand_unop): If the library address - is to be put in a pseudoreg, do it here, and make the REG_RETVAL - note point after that. - - * expr.c (emit_library_call): Never defer stack-pops. - Deletion of the library call by flow.c loses if they are deferred. - - * cse.c (cse_insn): Handling of 68k's zero-extend was broken: - it made the actual source and the REG_EQUAL source equivalent. - * If dest is a STRICT_LOW_PART, ignore the actual source and use - the REG_EQUAL source in its place. src_eqv's mode may be different - from src's, so use proper mode in lookups or inserts for src_eqv. - * Don't forget to set src_eqv_elt if src_eqv already has an elt. - * On use_related_value for src_eqv, use src_eqv_elt. - - * toplev.c (main_input_filename): Name of file mentioned in first - #-line in the input. - (compile_file): Pass it to dbxout_init as 2nd arg. - * dbxout.c (dbxout_init): Use 2nd arg to make the N_SO symbol. - * parse.y (check_newline): Store main_input_filename. - - * expr.c (move_block_to_reg): New function, copies a MEM:BLK - to consecutive registers. - (use_regs): New function to emit a USE for each reg in a series. - (expand_call): Use the two new functions when a precomputed BLKmode - arg is passed entirely in regs. - (emit_push_insn): Use move_block_to_reg when PARTIAL > 0. - Also, don't subtract USED from SIZE twice. - Use plus_constant to add ARGS_SO_FAR so can use indexing on stack ptr. - - * varasm.c (assemble_integer_zero): Use rtx 0, not tree 0, - to go with prev change in ASM_OUTPUT_INT. - -Sun Mar 13 01:16:17 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * varasm.c (const_hash, compare_constant_1, record_constant_1): - Handle NOP_EXPR and CONVERT_EXPR in constant expressions. - - * optabs.c (expand_binop, expand_unop): When widening operands, - those with VOIDmode (like CONST_INT) may be left alone. - -Sat Mar 12 01:09:24 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * varasm.c (assemble_variable): When making a .comm or .lcomm, - round size up to multiple of BIGGEST_ALIGNMENT. - - * obstack.c (_obstack_newchunk): Eliminate fencepost causing copying - to access the word past the end of the existing object. - - * tm-vax.h, tm-ns32k.h: Define {INIT_,}CUMULATIVE_ARGS - and upgrade FUNCTION_ARGS for new calling convention. - - * gcc.c: If -O, define __OPTIMIZE__. - (do_spec_1): %c now scans SIGNED_CHAR_SPEC: define __CHAR_UNSIGNED__ - when appropriate whether or not it is the default. - -Fri Mar 11 16:49:25 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * parse.y: Define YYDEBUG. - - * rtl.c (rtx_unstable_p): New function, same as old rtx_varies_p. - * explow.c (stabilize): Use rtx_unstable_p. - * rtl.c (rtx_varies_p): Ignore `unchanging' (undoing previous change - in this function) because `unchanging' doesn't enable cse to compare - the value with any particular constant value. - * rtl.c (insn_store_addr_varies_p): Delete, since not used. - - * hard-reg-set.h (COPY_HARD_REG_SET, etc.) non-scalar case: - Rename and rearrange temp variables to avoid name conflicts with args. - - * regclass.c (reg_class_record): Don't smash class to GENERAL_REGS - and don't exit prematurely, when `r' or `g' is seen. Must merge - GENERAL_REGS with previously determined desired class. - - * expr.c (expand_call) [no PUSH_ROUNDING]: When pushing the arg - block, try to reuse some of the pending_stack_adjust. - - * cse.c: qty_const can now hold values (PLUS frame_pointer integer). - Effect is that storing into a structure doesn't invalidate - mem refs to scalar stack variables via addresses in registers. - (insert): Load such values into qty_const, like true constants. - (fold_rtx): Ignore qty_const if it isn't really a constant. - - * expr.c (expand_expr) VAR_DECL: Copy DECL_RTL before calling - change_address, so it isn't permanently clobbered. - - * stmt.c (fixup_var_refs_1): Make sure the stack slot address - is valid by calling fixup_stack_1 each time it is substituted. - - * stmt.c (fixup_stack_1): Return the altered rtx. - If it's a MEM in the stack, return a copy of it. - - * stmt.c (fixup_stack_slots): #if 0. - * stmt.c (expand_finish_function): Don't call fixup_stack_slots - because fixup_stack_1 is called elsewhere when necessary. - - * reload.c (find_reloads_address): New arg is location of the MEM - whose address is being reloaded. So we copy the MEM if it - is one that can be shared. New arg 0 means no need to copy the MEM. - All callers pass the new arg. - - * stmt.c (assign_parms): Determine parm stack-size from - the DECL_ARG_TYPE, not from the TREE_TYPE. - Else loses when parm is declared `float' but passed as `double'. - - * emit-rtl.c (make_safe_from): Constants are already safe. - Use proper machine mode for temp reg when needed. - -Thu Mar 10 14:35:14 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * expr.c (emit_push_insn): Don't pass wrong type to plus_constant - (case where there is no PUSH_ROUNDING). - - * expr.c (expand_call): Round partial[i] down to multiple of - PARM_BOUNDARY before subtracting it from arg size on stack. - Compute these sizes just once and keep them in vector `arg_size'. - * expr.c (emit_push_insn): Handle `partial' uniformly, in accord - with this new convention for how it affects the stack size. - * stmt.c (assign_parms): Round NREGS down to PARM_BOUNDARY likewise. - - * obstack.h (obstack_free macro) [Not __GNUC__ but __STDC__]: - Don't cast result of (obstack_free) to (int); just ignore it. - - * reload.c (find_reloads): Initialize operand_reloadnum. - - * optabs.c (emit_unop_insn): New argument CODE, used to make - a REG_EQUAL note from operand OP0 if more than one insn results. - Also a REG_RETVAL note. - * expr.c (convert_move): Pass CODE arg to emit_unop_insn. - * flow.c (propagate_block): Use insn_dead_p to decide whether - to handle a REG_RETVAL note by skipping some insns. - Always pass 1 for STRICT_LOW_OK for an insn that has a REG_RETVAL note. - Handle case where REG_RETVAL points at an insn that's deleted. - * flow.c (insn_dead_p): New operand STRICT_LOW_OK says an insn - that sets STRICT_LOW_PART may be considered dead. - - * expr.c (expand_expr): Once again canonicalize X-C to X+(-C). - Change on March 1 made it stop doing this. - -Wed Mar 9 01:25:35 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * loop.c (move_movables): Don't always mark the moved reg - as equivalent to a constant value: not if it is being cleared - to zero-extend something or if it is used outside the loop. - - * expr.c (move_by_pieces_1): Finish last change. - - * stmt.c (assign_parms): Update stack_args_size properly. - Figure FIRST_PARM_OFFSET when making the stack mem refs. - - * cse.c (insert): Build the related_value lists in the opposite order - so that the oldest element in the chain is the one that follows - the most basic element. - - * expr.c (expand_expr): COMPONENT_REF case: criterion for - converting the the result is if MODE1 (its mode of arrival) isn't - a mode we want. - - * toplev.c (rest_of_compilation): Fix typo setting TREE_ASM_WRITTEN. - -Tue Mar 8 13:18:37 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * cse'ing of library calls. - - * expr.h: type `optab' is now a ptr to a struct. - The old contents are now the `handlers' element. - The `code' element gives the RTL code for the kind of expression - this optab makes (PLUS for add_optab, etc.) - Every var formerly declared `struct optab *' is now just `optab'. - - * optabs.c (init_optab, init_optabs): New function to init an optab - and set its `code'. Used in init_optabs. - - * optabs.c (expand_binop, expand_unop): Use the `code' field - to add a REG_EQUAL note to the insn that copies a libcall's - value into a pseudo. Also a REG_RETVAL note pointing at the - first insn for setting up args for the call. - - * cse.c (cse_insn): Process REG_EQUIV and REG_EQUAL datum almost like - another set-src; put the actual src into the equivalence class of that. - - * flow.c (propagate_block): If a dead insn has a REG_RETVAL reg-note, - either ignore or delete all the insns back to the insn the REG_ARG - note points to. - - * local-alloc.c (block_alloc): Don't refrain from allocating a - "constant" register if the constant value isn't ok for an immediate op. - - - * dbxout.c (CONTIN): If DBX_CONTIN_LENGTH is <= 0, do nothing. - - * cccp.c: Extra default include dirs for C++. - * cccp.c (main): For -M, strip dirs from object file name. - - * rtl.c (find_reg_note): New function. - - * expmed.c (store_fixed_bit_field): Don't AND with VALUE - if VALUE's original mode had no more bits than we want. - - * expr.c (emit_library_call): Use varargs. - - * integrate.c (copy_and_substitute_rtx): Recognize arg_pointer_rtx - and translate it just like frame_pointer_rtx. - -Mon Mar 7 00:48:33 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * expmed.c (extract_fixed_bit_field): - Shift counts were wrong for narrow MODE in signed case. - Do the sign-extending shifts in the narrowest mode possible. - Reduce big-endian case to little-endian case. - Delete SLOW_ZERO_EXTEND conditional. - - * Implement constants in memory for RISC machines - with limited abilities for immediate args and constant addresses. - - * genoutput.c (output_epilogue): Empty predicate-name - is output as 0 in insn_operand_predicate. - - * expr.c (expand_expr): Change 4th arg to an `enum expand_modifier' - Value EXPAND_SUM corresponds to old nonzero 4th arg. - Value EXPAND_CONST_ADDRESS means ok to return an invalid MEM - whose address is a constant. Changes for this case in ADDR_EXPR, - COMPONENT_REF and ..._DECL. - - * varasm.c (output_arith_constant): Function deleted. - * tm-*.h: (ASM_OUTPUT_{INT,SHORT,CHAR}): 2nd arg is now an RTX - and output it using `output_addr_const'. - * varasm.c (output_constant): Change uses of those macros. - - * varasm.c (init_const_rtx_hash_table): Initialize constant pool - for a new function. Called from `expand_function_start'. - * varasm.c (force_const_mem): Turn a constant rtx into a MEM rtx - which refers to the constant pool. Other new subroutines too. - (force_const_double_mem): Use force_const_mem to make the MEM. - (immed_real_const): No longer record the REAL_CST node in the rtx. - - * explow.c (force_reg): If arg is a constant and not legitimate, - put it in the constant pool with force_const_mem. - Mark the register as equivalent to the constant value. - * expr.c (emit_move_insn): Likewise. - * explow.c (break_out_mem_refs): Use force_reg to put into a reg. - * explow.c (memory_address): Likewise. - * expr.c (expand_expr): ADDR_EXPR case: likewise. - - * expr.c (expand_call): Do force_reg on each register-operand - so it will go through a pseudo and can be cse'd. - - * recog.c (immediate_operand, nonmemory_operand, general_operand): - For constant operands, use LEGITIMATE_CONSTANT_P to decide value. - * tm-*.h: Define LEGITIMATE_CONSTANT_P. - - * reload1.c (reload): Invalid constants can't go in reg_equiv_constant. - -Sun Mar 6 22:49:06 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * reload.c (push_reloads): If IN occurs within OUT, - don't reuse an existing input-only reload. Otherwise would lose on - (set (mem (plus R C)) (plus R C1)) if R is available in a spill reg. - - * reload1.c (choose_reload_targets): Don't choose an inherited - reload register that's in use for another reload. - Without this, above change doesn't have an effect. - - * Implement the `unchanging' flag in MEM and REG rtx's. - Also simplify code with a new subroutine `change_address'. - - * emit-rtl.c (change_address): Return new memory ref like an old - one but with specified mode and address. - * expmed.c (extract{,_split,_fixed}_bit_field): Use change_address. - (store{,_split,_fixed}_bit_field): Likewise. - * expr.c (store_expr, expand_expr): Likewise. - - * expr.c (move_by_pieces): Args now memrefs, not addresses. - Eliminate the FROM_VOL and TO_VOL args since the memrefs indicate. - Change the structure `struct move_by_pieces' similarly. - (move_by_pieces_1): Same changes; use change_address. - (emit_block_move, emit_push_insn): Calls to move_by_pieces changed. - - * integrate.c (copy_rtx_and_substitute): Use change_address; - handle ->unchanging field. - - * rtl.c (rtx_varies_p): Regs or memrefs with ->unchanging don't vary. - (copy_rtx): Perserve ->unchanging. - (print_rtx): Print ->unchanging as /u. - - * stmt.c (expand_decl): Set ->unchanging on `const' decls. - (fixup_memory_subreg): Use change_address. - (assign_parms): Record in the rtl which parms are volatile or const. - - * varasm.c (assemble_variable): Set ->unchanging on `const' decls. - (output_constant_def): Always set ->unchanging for constant refs. - - * cse.c (canon_hash): Don't treat a MEM as "in memory" - if its ->unchanging bit is set. - - * loop.c (invariant_p): A REG or MEM with ->unchanging is invariant - (for a MEM, the address must be invariant). - -Sat Mar 5 13:22:11 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * genconfig.c (walk_insn_part): DO consider MATCH_DUPs - when calculating MAX_RECOG_OPERANDS. - (gen_expand): define_expand is now different from define_insn. - Compute max # SETs or CLOBBERs for any one sub-insn in a define_expand, - instead of summing them all. And don't count the MATCH_DUPs at all. - - * genemit.c (max_operand_1): Record largest opno in a MATCH_DUP - separately from largest in a MATCH_OPERAND. - (gen_expand): An operand # with only MATCH_DUPs gets - a local variable in the gen_ function we output. - - * integrate.c (save_for_inline): Delete vestige of NOTE_INSN_IS_DECL. - - * cse.c (invalidate): Handle subregs. - (cse_ins, invalidate_from_clobbers): Do call `invalidate' for subregs. - (insert_regs): When assigning one subreg from a like one, - make the two regs equivalent. - (cse_insn): Do call insert_regs when dest is a subreg. - - * expr.c (expand_call): Precompute all args going via hard regs - since even arithmetic could require a library call. - -Fri Mar 4 15:48:17 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * stor-layout.c (layout_parms): Function deleted. - * stmt.c (expand_function_start): Don't call it. - - * stmt.c (assign_parms): - stack_args_size counts size of args so far passed on stack. - Use PARM_BOUNDARY when counting it; derive stack offsets from it. - Set current_function_args_size from it. - - When an arg is split between regs and stack, make stack space - for the rest of it, and count it. - In a varargs function, push the last arg onto the stack. - When an arg is passed in regs alone, don't remember a stack slot - for it, and if it needs one, use assign_stack_local. - - Set DECL_OFFSET to the stack offset, or -1 if parm came in regs. - - * expr.c (expand_call): Anonymous args of a varargs function - are always passed on the stack. - - * varasm.c (force_const_double_mem): Copy the MEM rtx - if it may need to be smashed by reloading. - - * genemit.c (gen_expand): define_expand must have nonempty pattern - even though, due to `return' statements in the code-to-run, - that pattern may not be used to generate code. - -Thu Mar 3 17:08:43 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * expr.c (expand_expr): If supposed to sign-extend an enum - which is never negative, zero-extend instead (unless SLOW_ZERO_EXTEND). - (store_expr): Likewise. - - * reload.c (find_reloads): 'm' for CONST_DOUBLE: clear BADOP, not BAD. - After force_const_double_mem, do find_reloads_toplev on the MEM. - (find_reloads_address): Handle constant addresses (on machines - that don't allow them). - - * final.c (set_current_gdbfile): New fn, get the gdbfile structure - for specified filename. - (output_source_line): Use set_current_gdbfile for the file. - * varasm.c (assemble_variable): Call set_current_gdbfile - for the declaration's source file, so GDB won't ignore the file. - - * varasm.c (force_const_double_mem): Build a new REAL_CST node - and get its data type from the machine mode of the CONST_DOUBLE. - (immed_real_const): Don't save the REAL_CST tree node. - * typecheck.c (get_floating_type): Return float type for given mode. - - * integrate.c (expand_inline_function): Ignore the (USE (REG...)) - (for the return-register) at the end of the inline function. - After a CALL_INSN, imagine the (SET (REG ...) (REG ...)) for - the return-register if the return-register isn't explicitly used. - -Wed Mar 2 22:08:49 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * typecheck.c (build_array_ref): Do default_conversion on INDEX. - -Tue Mar 1 15:49:34 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * expr.c (expand_call): Always get a SYMBOL_REF for a fixed function. - If may be alloca, set may_call_alloca. - (gen_call_1): Never put a SYMBOL_REF through `memory_address'; - but if function cse is wanted, just copy it to a register. - If NO_FUNCTION_CSE is defined, never do function cse. - - * expr.c (init_expr): New function, does init_queue and inits - other things. - - * stmt.c (expand_function_start): Call init_expr, not init_queue. - - * optabs.c (expand_binop): Don't clobber OP0 and OP1 - if may call delete_insns_since later. - - * expr.c (emit_library_call): PUSH_ARGS_REVERSE test was backwards. - - * cse.c (cse_insn): Do canon_reg on the size and position operands - in a ZERO_EXTEND or SIGN_EXTEND that is a destination. - - * tm-*.h: Define SLOW_BYTE_ACCESS. - * expmed.c ({store,extract}_fixed_bit_field): - If SLOW_BYTE_ACCESS, get/set all bit fields from full words. - - * combine.c (subst): Simplify - (zero_extend:SI (subreg:QI (zero_extract ...))). - * combine.c (simplify_and_const_int): Simplify - (and (zero_extract ...) (const_int ...)). - - * local-alloc.c (qty_compare{,_1}): Test of qty_phys_sugg was reversed. - (combine_regs): If one pseudo gets two suggested hard regs - (one at birth and one at death), prefer the one from birth - unless we see at death that it's no good. - - * expr.c (expand_expr): Ignore sum_ok unless mode is Pmode. - Don't use force_operand unless sum_ok is set. - -Mon Feb 29 19:23:50 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * expr.c (emit_move_insn): When a CONST_DOUBLE needs moving - by pieces, force it into memory, unless it is dconst0_rtx, - in which case each piece is const0_rtx. - (emit_push_insn): Likewise. Also, write code for pushing a - non-BLK mode which has no "mov" insn defined, but only - in the case where there is no PUSH_ROUNDING. - - * expr.c (do_tablejump): Put constant term in address last. - - * toplev.c (xrealloc): On error, call fatal instead of abort. - - * optabs.c (emit_cmp_insn): If genning from tst_optab, - make the operand fit its predicate. - - * optabs.c (expand_float): Don't adjust stack between cmp and jump. - - * optabs.c (expand_binop): Recursive calls can return 0; handle - that event by deleting any preparatory insns. Also don't smash - TARGET when this happens. - - * reload.c (push_reload): If IN != *INLOC, set reload_nocombine. - (combine_reloads): Don't combine an input reload with reload_nocombine. - - * jump.c (jump_optimize): Don't delete stack adjusts unless - EXIT_IGNORE_STACK is nonzero. - * expr.c (clear_pending_stack_adjust): Likewise. - * tm-*.h: When EXIT_IGNORE_STACK is defined, give it `1' as defn. - - * expr.c (expand_call): Initialize args_size. - Don't push a block if args_size is 0. - (emit_library_call): Don't include register-args (or reg-parts - of partial ones) in args_size. - Don't push a block if args_size is 0. - - * expr.c (expand_expr): For DECLs in memory, check the address - validity with memory_address_p, and preserve volatility info. - - * stmt.c (expand_function_end): fixup_gotos needs 2 args. - - * jump.c (mark_jump_label): If INSN is 0, don't set its JUMP_LABEL. - Inside an ADDR_VEC or ADDR_DIFF_VEC, recurse with 0 for INSN. - - * varasm.c (force_const_double_mem): Must zero TREE_CST_RTL - before output, or nothing will happen. - -Sun Feb 28 01:08:53 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * optabs.c (emit_unop_insn): Generate and emit an insn - given the insn-code and the two operands (one out, one in). - Can move the operands into registers when needed for various - reasons. - * expr.c (convert_move): Use emit_unop_insn for outputting the - conversion insns. - - * expr.c (emit_library_call): Use arg's nominal mode to choose - a reg to pass it in, not actual mode (which can be VOIDmode). - - * insn-emit.c (emit_insn): If arg is empty SEQUENCE, do nothing. - - * genemit.c (gen_expand): Scan the rtl-pattern for predicates - and machine modes of the operands. - - * m68k.d (dbra patterns): Add HPUX_ASM conditionals. - - * rtl.c (reg_mentioned_p): Use "equal", not "eq", when - REG isn't a register. - * reload.c (combine_reloads): Verify not reg_mentioned_p even if - the input reload's value isn't a register. - - * reload.c (operands_match_p): If successful and 2nd arg - has a pre-increment that matches a non-increment, return 2. - - * reload1.c (reload): At end, clobber a pseudoreg to a MEM - even if it's an out-of-range address. It doesn't affect the - assembler code in this case, but it makes the dbx output correct. - - * recog.c (constrain_operands): When operands_match_p returns 2, - in the constraint alternative that is ultimately successful, - copy the output operand from the input that it matched - so that the assembler insn that is output shows the pre-increment. - -Sat Feb 27 15:16:47 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * combine.c (subst): When optimizing - (set (zero_extract ...) (and (zero_extract ...) const)) - must arrange to have 1's, not 0's, shifted into low bits of const. - - * decl.c (grokdeclarator): When return-type defaults to int, - don't warn, just set warn_about_return_type. - (start_function): See that variable and warn, after starting function. - - * toplev.c (count_error): No longer print newline if not quiet. - (report_error_function): If not quiet, print a newline if - printing anything, and don't print the function name. - - * reload1.c (choose_reload_targets): - Fix the loop that checks for consecutive available spill regs. - Set `have_groups' nonzero if any reload wants a group. - In that case, for non-group reloads, prefer a reg that can't be in - group, or else one that has only one available neighbor. - - * reload1.c (reload): Find separately the max need for each class - for single registers, groups of registers, and single registers - not in any group. (The last one counts non-group reloads - in insns that have at least one group reload.) - Then make sure enough of each kind are found. - - * expmed.c: Now needs flags.h and recog.h (therefore insn-config.h). - - * expmed.c (store_bit_field): - Delete redundant protect_from_queue. - Force VALUE out of memory if -fforce-mem. - If insv's predicate for VALUE wants a register, put it there. - - * expmed.c (extract_bit_field): - Force TARGET out of memory if -fforce-mem. - If insv's predicate for TARGET wants a register, put it there. - -Fri Feb 26 00:12:48 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * reload1.c (eliminate_frame_pointer): Don't check for pushes - unless PUSH_ROUNDING is defined. - - * reload.c: Don't define REG_OK_FOR_{INDEX,BASE}_P - (since the tm file is supposed to do it). - - * expr.c (emit_push_insn, expand_call): - Don't use PUSH_ROUNDING if it's not defined. - - * expr.c (preexpand_calls): Do nothing for constants and decls. - - * expr.c (expand_call, emit_library_call): When PUSH_ROUNDING - is not defined, use ROUND_CALL_BLOCK_SIZE to round the size - of the block of arguments. - - * expr.c (expand_call): Don't count register-args in ARGS_SIZE. - - * rtl.h, emit-rtl.c: Create static_chain_incoming_rtx - and struct_value_incoming_rtx. - * stmt.c (expand_function_start): Use ..._incoming_rtx where needed. - - * expr.c (expand_call): Use new macros INIT_CUMULATIVE_ARGS, - CUMULATIVE_ARGS and FUNCTION_ARG_ADVANCE to update data - on args scanned so far. - (emit_library_call): Likewise. - * stmt.c (assign_parms): Likewise. - * tm-spur.h, tm-m68k.h: Define these macros. - - * rtl.h (NUM_MACHINE_MODES): NUM_MACHINE_MODE renamed. - * rtl.c, genrecog.c: Change places it is used. - - * cccp.c (output_line_command): line_cmd_buf should be chars, not ints. - -Thu Feb 25 13:33:29 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * genemit.c (gen_expand): Don't lose if pattern is empty-vector. - - * genconfig.c (gen_insn): Don't lose if pattern is empty-vector. - - * expr.c (expand_expr): For COMPONENT_REF, don't convert to tmode - unless the mode we get is unacceptable. - - * loop.c (scan_loop, move_movables): New field `partial' is 1 for - zero-extending clr insn; don't make the reg invariant when it's moved. - - * optabs.c (expand_unop, expand_binop, emit_cmp_insn): - mode-argument to predicates was missing. - - * optabs.c (expand_binop): If gen-function returns 0, this means - the insn wasn't available. - - * reload.c (find_reloads): Don't make optional reloads for operands - that match other operands. - - * reload.c (combine_reloads): Reject optional output reload. - - * reload.c (find_equiv_reg): Know that CALL_INSNs clobber memory. - - * typecheck.c (build_binary_op_nodefault): - If doing a short shift, leave the shift-count as a fullword. - -Tue Feb 23 14:43:46 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * combine.c (subst): Count, in n_occurrences, # times FROM is seen. - (try_combine): Refuse to combine x=*y++ into z = x*x. - - * loop.c (invariant_p): Frame pointer and arg pointer are invariant. - (move_movables): Don't forget to set ->done! - When moving the matching movables, don't forget to set n_times_set. - - * expmed.c (expand_shift): Reorder strategies for logical shift; - if widening, try all ashift strategies before extzv. - - * typecheck.c (build_binary_op_nodefault): - Always return error_mark if either operand is one. - - * recog.c (nonmemory_operand): New predicate. - - * optabs.c (expand_unop, expand_binop, emit_cmp_insn): - Don't treat `register_operand' as special. Apply the predicate - to the rtx; if the predicate fails, use a register instead. - -Mon Feb 22 22:37:32 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * expr.c (expand_calls): Preexpand all calls in arguments - that are passed in regs before copying any of them into the regs. - - * expr.c (emit_push_insn): Three more args. - EXTRA for extra space to leave. - ARGS_ADDR and ARGS_SO_FAR for using move-insns on machines - that lack true push insns. - - * expr.c (emit_library_call, expand_call): - Use the new arguments of `emit_push_insn'. - - * expr.c (PUSH_ARGS_REVERSED): defined if handle args last-to-firs. - -Sun Feb 21 12:17:59 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * toplev.c (rest_of_compilation): Set TREE_ASM_WRITTEN - when a function is really output as assembler code. - Don't do inlining of a function that is already made inline; - instead, output it as assembler code, because this must be - the second call for that function. - - * decl.c (finish_compilation): Delete it. - * toplev.c (compile_file): Output pending inline functions at the end - in the same way tentative-defined variables are output. - - * emit-rtl.c (restore_reg_data): New fn: given chain of insns, - restore emit-rtl's data on registers from the regs they use. - - * integrate.c (output_inline_function): Use restore_reg_data. - (fill_regno_reg_rtx_as_needed): Now restore_reg_data_1 in emit-rtl.c. - - * tree.c (build_decl): Function moved from decl.c. - No longer set attributes of function decls specially. - - * decl.c (implicitly_declare, builtin_function, grokdeclarator): - Don't expect build_decl to set attributes of FUNCTION_DECL. - - * tree.c (preserve_data): New fn, make all data now on - maybepermanent_obstack last permanently. - - * cse.c (cse_insn): Remove a STRICT_LOW_PART from the dest rtx - before putting it in the hash table. - - * symout.c (symout_block): Fix the args to `symout_block_symbols'. - -Sat Feb 20 00:07:52 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - Start of changes for inline functions. - Changes received from Tiemann, then slightly rearranged for simplicity. - - * integrate.c: New file (Tiemann's rtl2.c). - * integrate.c (function_cannot_integrate_p): - New fn, only checks whether current fn is safe and good to inline. - Returns an error message string if not. - - * expr.c (current_args_size): Var made static. - (store_expr): Fn no longer static. - (stack_pointer_rtx): Use this var for all refs to the stack pointer. - (struct_value_rtx, static_chain_rtx): Likewise - - * expr.c (expand_call): Detect calls to integrable functions - and integrate them. - **If fn is not named "alloca" then assume it is not `alloca'. ** - - * emit-rtl.c (max_label_num): New fn, returns number for next label. - (get_first_label_num): New fn, returns first label of current fn. - (init_emit): Save first label number of this fn. - - * emit-rtl.c (gen_inline_header_rtx): New fn, make an INLINE_HEADER. - - * emit-rtl.c (emit_declaration): New fn to emit new kind of NOTE. - - * emit-rtl.c (init_emit_once): New fn. - Move inits of unique rtl objects here, from init_emit. - - * decl.c (finish_compilation): New fn to compile separately - any nonglobal inline functions that need to be addressable. - - * decl.c (grokdeclarator): Handle `inline' kwd among the declspecs. - Set TREE_INLINE if it's safe. - - * decl.c (finish_function): If fn was inlined, don't clear - the DECL_ARGUMENTS or DECL_RESULT or DECL_INITIAL. - - * gen*.c: Provide rtl_obstack, not current_obstack. - - * rtl.c (rtl_obstack): Variable: ptr to obstack to use for making rtl. - * rtl.c (rtx_alloc, rtvec_alloc): Use that obstack. - * rtl.c (copy_rtx): Copy the `integrated' flag. - * rtl.c (print_rtx): Print that flag as `/i'. - - * rtl.def: New rtx code INLINE_HEADER. - - * rtl.h (struct rtx_def): Add `integrated' field. - * rtl.h: Define macros for fields in an inline_header rtx. - - * stmt.c (max_parm_reg_num, get_first_function_insn): - New fns, return info on parm regs and the insns that init them. - - * stmt.c (expand_decl): Simplify with new local `type'. - - * stmt.c (stack_pointer_rtx): Replace all refs to stack pointer - with this shared rtx. - * stmt.c (struct_value_rtx): Likewise. - - * stmt.c (expand_start_function): Call init_pending_stack_adjust - instead of clear_pending_stack_adjust. - If not using a return-label, set `return_label' to 0. - - * stmt.c (expand_null_return, expand_end_function): - Call clear_pending_stack_adjust unconditionally. - - * expr.c (clear_pending_stack_adjust): Move the conditionals here. - For now, this fn is a no-op, since it's not safe in an inline fn - and the stack adjusts are deleted by jump.c in if optimizing. - - * expr.c (init_pending_stack_adjust): New fn. - -Fri Feb 19 14:30:13 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * toplev.c (main): Decode -finline-functions, -fkeep-inline-functions. - - * toplev.c (rest_of_compilation): - At start, save the rtl if function should be inline. - For inline function, if we don't yet know whether it should be - compiled on its own, don't do so. - - * toplev.c (compile_file): Clear, and later print, `integration_time'. - Call `init_emit_rtl' when starting. - Call `finish_compilation' at the end. - - [Add an extra arg to the error and warning functions?] - - * tree.c ({push,pop,clear}_momentary): - Change momentary_stack from a char ** to a struct momentary_level *. - - * tree.c (build_pointer_type): Put temporary type in `saveable_obstack' - * tree.c (build_type_variant): Likewise. - * tree.c (make_node): Likewise. Also put decls and LET_STMTs there. - * tree.c (type_hash_canon): Free a temporary type in `saveable_obstack' - - * tree.c (perm_tree_cons): Like `tree_cons' but on perm. obstack. - - * tree.c (init_tree, {{end_,}temporary,permanent}_allocation): - Handle `maybepermanent_obstack' and `saveable_obstack' and - `rtl_obstack'. - - * tree.h (TREE_INLINE): New attribute macro. - * tree.h (DECL_SAVED_INSNS, DECL_FRAME_SIZE): - New components in a FUNCTION_DECL. - Delete the `unused` slot in a `struct tree_decl'. - - * typecheck.c (mark_addressable): Set TREE_ADDRESSABLE - even in FUNCTION_DECLs. - - * typecheck.c (build_function_call): - If function is a FUNCTION_DECL, avoid setting TREE_ADDRESSABLE - when taking its address. - - * parse.h: Define RID_INLINE. - * parse.y: Define keyword `inline'; set up ridpointers for it. - (yylex): Don't recognize `inline' of -fno-asm or -ftraditional. - - * flags.h: New vars flag_inline_functions - and flag_keep_inline_functions. - - End of changes for inline functions. - - * tree.c (convert): If EXPR's type is an error_mark, return error_mark. - - * Makefile (install): Don't strip the executables. - - * jump.c (delete_insn): Deleting a label's target - can delete either NEXT and PREV! So must search for a - following nondeleted insn to return. - - * typecheck.c (build_function_call): Typo in validating - data type of function. - - * genoutput.c (gen_expand): Must create a `struct data' even - for a define_expand, so we can output the proper insn_gen_function - and leave zeros in the other tables. - - * loop.c (scan_loop): Replace the code for handling zero-extends - with unconditional code that checks for a pair of insns. - - * m68k.md: Do zero-extend using define_expand to generate - a pair of insns, to set all to zero and then copy the low part. - -Thu Feb 18 15:54:00 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * emit-rtl.c (emit_insn): If arg is a SEQUENCE, emit several insns. - * emit-rtl.c (classify_insn): Given an RTX, return the rtx-code for - an insn containing it: CODE_LABEL, INSN, JUMP_INSN or CALL_INSN. - - * rtl.def: New RTX types DEFINE_EXPAND and SEQUENCE. - * gen*.c: Handle DEFINE_EXPAND. Only genemit.c does real work. - - * make.com, make-cc1.com, make-cccp.com: New, VMS command files. - - * tm-vms.h: New file, used as tm.h to generate VMS code. - - * tm-vax.h (FUNCTION_PROLOGUE): Turn off no bits in the mask; - let call_used_registers alone control this. - Call MAYBE_VMS_FUNCTION_PROLOGUE, and define that as no-op. - - * tm-vax.h (TARGET_VAXC_ALIGNMENT): New target-flag bit. - BIGGEST_ALIGNMENT, EMPTY_FIELD_BOUNDARY and POINTER_BOUNDARY use it. - - * varasm.c (assemble_function): Use ASM_DECLARE_FUNCTION_NAME - if it is defined. - - * varasm.c (assemble_variable): On an external, - use ASM_OUTPUT_EXTERNAL if defined. Default is do nothing, as before. - - * toplev.c: - Use FATAL_EXIT_CODE and SUCCESS_EXIT_CODE. - Don't include time.h and resource.h on VMS. - (main) Define __VERSION__ if not already defined. - Conditionalize setrlimit on RLIMIT_STACK. - Test __GNUC__, not __GNU__. - Don't do `ps v' on VMS. - (gettime): Conditional code for VMS. - - * gcc.c: Define __GNUC__ as well as __GNU__. - __GNU__ will be deleted in a future version. - - * symout.c (symout_finish) [VMS]: Don't refer to `getwd' on VMS. - * symout.c (symout_init) [VMS]: Fatal error; GDB syms not supported. - - * parse.y (yylex): Handle DOLLARS_IN_IDENTIFIERS. - - * genoutput.c (gen_insn): Workaround for VMS printf %s bug. - - * gen*.c: Include config.h. Whenever exiting, use - SUCCESS_EXIT_CODE or FATAL_EXIT_CODE. - - * config-*.h: Define SUCCESS_EXIT_CODE and FATAL_EXIT_CODE. - * config-vms.h: New file, mostly like config-vax.h. - -Wed Feb 17 13:35:34 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * cccp.c: VMS support from Kashtan. - Some #include files are conditional. - Use file_size_and_mode instead of fstat. - When reading file contents, the size we get from that - is just an upper bound; don't assume it must match. - Replacement definitions of read and write for VMS. - Different default include directories. - Conditionalize the setrlimit code on RLIMIT_STACK. - Use SUCCESS_EXIT_CODE when exiting if no errors; - both that and FATAL_EXIT_CODE are not #defined if already defined. - - Treat $ as an identifier-character if DOLLARS_IN_IDENTIFIERS. - Rename the `delete' function as `delete_macro' - to avoid VMS name conflict. - - * cexp.y: Treat $ as an identifier-character if DOLLARS_IN_IDENTIFIERS. - - * stmt.c (fixup_memory_offset): Do big-endian compensation - only within a word, not for DImode vs SImode. - - * stmt.c (fixup_var_refs): Don't fix up the insn to load the var - from its own stack slot; delete it instead. - - * tm-ns32k.h (MODES_TIEABLE_P): DImode is like DFmode. - - * tree.c (MAX_HASH_TABLE): 1009 (more prime) instead of 1008. - - * decl.c (duplicate_decls): If merged type is OLD's type, - keep OLD's DECL_SIZE and DECL_SIZE_UNIT. - - * gen*.c (xmalloc, xrealloc): Call `fatal' if memory is full. - - * reload1.c (choose_reload_targets): If a mode doesn't fit the - reload register, and the insn is an ASM_OPERANDS, ignore the reload. - Otherwise, final would crash. - - * expmed.c (expand_shift): Two new strategies for lshr on short/char: - widen and do ashr, or widen and do extzv. - - * vax.md (peepholes): Use dead_or_set_p to check for eliminable - intermediate result, rather than requiring a match with final result. - - * local-alloc.c (block_alloc): Testing frame_pointer_needed is - enough; no need to test FRAME_POINTER_REQUIRED, etc. - * global-alloc.c (find_reg): Likewise. - * reload1.c (reload): Likewise for flag_omit_frame_pointer - - * jump.c (delete_insn): If not `optimize', don't complain - about finding an already-deleted insn in the chain. - -Tue Feb 16 17:14:54 1988 Richard Stallman (rms at wheaties.ai.mit.edu) - - * final.c: Don't define N_SOL and N_SLINE if already defined. - - * final.c (output_source_line): - Typo calling ASM_OUTPUT_SOURCE_FILENAME. - - * flow.c (INSN_VOLATILE): fix a typo. - -Fri Feb 12 16:48:16 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * final.c (final): for `asm' without operands, output literally. - -Thu Feb 11 12:44:41 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * symout.c (symout_record_fields): Handle nameless fields. - * symout.c (symout_record_field_names): Likewise. - - * typecheck.c (require_complete_type): `void' is a complete type. - * typecheck.c (build_function_call): Don't complain if result is void. - - * tm-hp9k320.h: Change definition of ASM_SPEC to +X, not -X. - - * cccp.c (main): Expected object file name for foo.cc is foo.o. - -Wed Feb 10 16:04:58 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * reload1.c (reload): Initialize `regmask' to zero. - Class number is in I, not in CLASS, when setting its elements. - Don't let J+K be too large. - - * reload1.c (potential_reload_regs): Make it a `short' - since that can't be unsigned. - - * cccp.c (warning): New function, called like `error'. - * cccp.c (do_define): Make redefinition just a warning. - -Tue Feb 9 13:28:00 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * decl.c (grokdeclarator): Don't be fooled by ERROR_MARK as a declspec. - - * toplev.c (compile_file): Strip final .c or .co from .sym file name. - - * gcc.c: When running `as', specify the .sym file if -gg. - -Mon Feb 8 11:26:26 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * expmed.c (store_fixed_bit_field): Don't try gen_lowpart on VALUE - if it's a subreg since it might lose; use convert_to_mode instead. - - * tm-hp9k320.h: Define TARGET_MEM_FUNCTIONS. - * expr.c (emit_block_move, emit_push_insn, clear_storage): - If TARGET_MEM_FUNCTIONS, generate calls to memcpy and memset - instead of bcopy and bzero. - * optabs.c (emit_cmp_insn): Likewise for memcmp vs bcmp. - - * stmt.c (expand_goto): New temp var to avoid RT/PC compiler bug. - -Sun Feb 7 12:20:23 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * flow.c (mark_used_regs, mark_set_regs): - Handle hard regs in multiword modes: set the bits for each - distinct register-number that makes up the multiword mode. - Necessary because function arg registers can inevitably - live across basic blocks. - - * cse.c (canon_hash): Function arg and value registers no longer - considered volatile, because flow should now handle the code that - can result from cse'ing them. - - * cse.c (make_regs_eqv): Abort if OLD is invalid. - * cse.c (reg_invalidate): Abort if reg already invalid has eqvs. - -Sat Feb 6 16:25:32 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * gcc.c (main): Specific error msg if no input files. - -Fri Feb 5 17:56:00 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * stmt.c (expand_decl, put_var_into_stack, assign_parms): - Set in_struct on a MEM if the variable is an aggregate or union. - * varasm.c (assemble_variable): Set in_struct on aggregate vars. - -Thu Feb 4 11:52:30 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * m68k.md (movsf): Correct two fmove.x to fmove.s. - - * expmed.c (extract_fixed_bit_field): - Must always generate an `and' to mask the bitfield - unless its width is the same as the output machine mode. - - * version 1.18 released. - -Wed Feb 3 08:41:20 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * fold-const.c (fold): Convert EXPR's operands before returning them. - -Tue Feb 2 15:35:18 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * reload.c (find_reloads_address_1): - - * typecheck.c (default_conversion): Handle COMPOUND_EXPR arrays. - -Mon Feb 1 18:53:05 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * ns32k.md: operand 0 of all unsigned divide/modulus insns - is now register_operand. - - * stdarg.h: Make va_list be char *, not char *[1]. - Latest draft doesn't say it must be an array type. - -Sun Jan 31 11:14:07 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * flow.c (find_basic_blocks): Add temp var to avoid Sequent - compiler bug. - - * tm-ns32k.h (GO_IF_LEGITIMATE_ADDRESS): Don't allow pushes or pops - since there are special insn patterns for them. - Resubroutinize and add temp vars to make expressions smaller. - * ns32k.md: Add a few more special stack insns; now there are enough. - - * tm-sequent.h: Definitions of DBX_NO_XREFS and DBX_CONTIN_LENGTH. - - * reload1.c (choose_reload_targets): Handling of reload_strict_low - is needed for input reloads as well as output, since a strict_low_part - operand is normally a read-write operand. - - * reload1.c (reload): The mode a reload needs is the wider of - the input and output modes--just as it is in choose_reload_targets. - - * reload.c (find_dummy_reload): If IN and OUT have different widths - and one of them exceeds a word, don't find any dummy reload. - - * toplev.c (compile_file): Allocate enough space for .jump2 filename. - -Sat Jan 30 10:35:46 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * output-ns32k.c (print_operand_address): - Print addresses of the form C1+(N*REG+C2) which currently - are accepted as legitimate memory addresses. - - * tm-sequent.h: Simple bugs in PRINT_OPERAND, TARGET_DEFAULT - and SEQUENT_ADDRESS_BUG. - - * gen*.c: Must explicitly exit; returning from `main' fails - to indicate nonzero status due to bug in Unix. - - * parse.y (check_line_number): Ignore entire line of unrecognized - #-directive; no error if it is `pragma'. - -Fri Jan 29 06:46:01 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * genrecog.c, genextract.c, genoutput.c: Define bcopy and/or bzero. - - * cccp.c (do_define): Make defn->argnames long enough in no-args case. - - * reload1.c (reload): Make basic_block_needs 0 until after the - frame pointer reg is spilled, so that ALL pseudos in it are spilled. - - * typecheck.c (truthvalue_conversion): - Strip a NOP_EXPR only if it extends, not if it truncates. - (build_unary_op): For TRUTH_NOT_EXPR, call invert_truthvalue - to simplify. - - * Fixes for HPUX support from cph: - * tm-hp9k320.h: Correct names of floating-point registers. - Fix typos in ASM_OUTPUT_OPCODE; also convert `fmove' to `fmov'. - * Makefile (comments for HPUX): - cph says -Wd,-X isn't needed in CFLAGS, nor -lBSD in CLIB. - Also that -g can't be used in CFLAGS with HP's pcc. - * conf-hp9k320.h: New file, like config-m68k.h but with - #defines for the bstring functions. - * m68k.md: Add else-clauses to the HPUX_ASM conditionals on cmp insns. - Reinsert mistakenly-deleted MOTOROLA conditionals around - some OUTPUT_JUMPs. - -Thu Jan 28 09:51:41 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * jump.c (jump_back_p): If TARGET is unconditional, return 0. - -Wed Jan 27 04:18:29 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * combine.c (subst): Simplify (plus (plus x c1) c2). - - * expr.c (emit_push_insn): Don't use small-block push-insns for BLKmode - when one of them would be affected by PUSH_ROUNDING. - Instead, make all the space and then copy. - * expr.c (expand_call): Don't apply PUSH_ROUNDING if BLKmode. - - * Allow `asm' with operands to be marked volatile. - * cse.c (canon_hash): Don't record ASM_OPERANDS that has `volatil'. - * loop.c (invariant_p): ASM_OPERANDS with `volatil' can't be invariant. - * flow.c (volatile_refs_p): Note ASM_OPERANDS that are volatile. - * stmt.c (expand_asm_operands): New arg VOL; mark ASM_OPERANDS as vol. - * typecheck.c (c_expand_asm_operands): New arg VOL. - * parse.y: allow a TYPE_QUAL after ASM. - - * Make cse handle `asm' with operands: - * cse.c (canon_hash): Hash string operands by contents, not address. - * cse.c (exp_equiv_p): Compare string operands with strcmp. - * rtl.c (rtx_equal_p): Compare string operands with strcmp. - - * decl.c (init_decl_processing): Once sizetype is set, - correct the type of the sizes of types already made. - - * cccp.c (do_defines): Don't reject #define foo{a}. - -Tue Jan 26 04:53:16 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * reload.c (find_reloads): Now that `asm' is limited to - MAX_RECOG_OPERANDS, eliminate dynamic allocation of `constraints' - and `constraints1', and go back to `recog_operand' instead of - `operands'. - - * typecheck.c (c_expand_asm_operands): New fn to handle `asm' for C. - Calls expand_asm_operands, and handles output operands that - the other function cannot handle. - - * parse.y: Call that function. - - * stmt.c (expand_asm_operands): Error if too many operands. - #include insn-config.h to get MAX_RECOG_OPERANDS. - - * expr.c (expand_assignment): Use store_field to handle - structure fields and array elements. - - * output-m68k.c (output_move_double): PUSHOP and POPOP were swapped. - Handle insns that push an sp-relative address onto sp; - these can arise with -fomit-frame-pointer. - BUG? Do unoffsetable mem refs using sp and fp lose? - - * m68k.md (movdi,movdf): Allow unoffsetable mem refs - only if the other operand is a register. - - * m68k.md (zero_extendqisi2): SGS conditionals deleted. - Supposedly the MOTOROLA syntax works for those addresses. - - * typecheck.c (default_conversion): - If flag_traditional, preserve unsignedness when promoting ints, - and promote float to double. - - * typecheck.c (build_binary_op_nodefault): - Allow comparisons between pointers and ints. - If not -traditional, warn about them. - -Mon Jan 25 02:11:18 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * expmed.c ({extract,store}_split_bit_field): - Functions {extract,store}_split_reg_bit_field now work for memory - also, and therefore are renamed. - * ({extract,store}_fixed_bit_field): Call those fns when a field - is split across two words. - Also, preserve the `volatil' bit on memory refs. - - * output-m68k.c (output_move_double): Handle nonoffsetable mem refs. - * m68k.md: Relax constraints on movdi, movdf. - - * decl.c (init_decl_processing): Define `int' and `char' first. - Set `sizetype' explicitly. - - * stmt.c (fixup_var_refs_1): May not just return when a SET - doesn't have VAR as its src or dest. - - * varasm.c: Don't include c-tree.h. - - * decl.c (build_struct): Split this function into three: - `xref_tag', `start_struct' and `finish_struct'. - `xref_tag' subsumes `xref_enum'. - - * parse.y (structsp): When parsing `struct foo {...}', define the tag - as a cross-ref before parsing the components. Use the three new fns. - - * regclass.c (regclass): Recognize new-format ASM_OPERANDS insns - with `asm_noperands', and scan their operands as usual. - - * cse.c: In numerous functions such as canon_hash, rtx_cost, etc. - that do tree-walk on rtx, handle vectors of subexpressions. - - * loop.c (invariant_p): Likewise. - - * jump.c (delete_insn): Two bugs: - If insn already deleted, return the first following nondeleted. - Deleting a jump's label can delete NEXT. Make sure return value - is always the first insn following INSN and not yet deleted. - -Sun Jan 24 02:27:49 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * rtl.def (ASM_OPERANDS): Change the rtl expression of an - `asm' with operands so it looks like this for one output operand: - (set OUTPUT (asm_operands:OUTPUTMODE INSNSTRING OUTPUTCONSTRAINT - 0 INPUTS INPUTCONSTRAINTS)). - and like this for multiple outputs: - (PARALLEL [ - (set OUTPUT0 (asm_operands:OUTPUTMODE INSNSTRING OUTPUTCONSTRAINT - 0 INPUTS INPUTCONSTRAINTS)). - (set OUTPUT1 (asm_operands:OUTPUTMODE1 INSNSTRING OUTPUTCONSTRAINT1 - 1 INPUTS INPUTCONSTRAINTS))]) - - * parse.y: Change parsing of `asm' to distinguish input and output - operands. Separate them with colon; separate the string with colon. - - * stmt.c (expand_asm_operands): Receive inputs and outputs separately. - Generate the new rtl format. - - * recog.c (asm_noperands, decode_asm_operands): New fns - for extracting the operands and constraints from these insns. - - * final.c (final): Recognize and output the new rtl format - using those new functions. - - * reload.c (find_reloads): Recognize and get constraints - from the new rtl format using those new functions. - New variable `operand_modes' holds the machine modes of the - operands, obtained one way for ASM_OPERANDS insns and another - for other insns. - - * rtl.c (note_stores): Calling convention - is changed: the first arg FUNCTION now receives as its 2nd arg - 1 if clobbering, 0 if setting. Used to be the CLOBBER or SET rtx. - - * local-alloc.c (reg_is_set): This fn is called from note_stores; - change its arguments. - - * tm-m68k.h (FIXUP_FRAME_POINTER_ADDRESSES): - Use frame_pointer_rtx to recognize intended frame-pointer refs - and not recognize pseudo-regs that were allocated to the frame - pointer register. - - * emit-rtl.c: All refs to frame pointer use a single rtx, in - frame_pointer_rtx. Likewise arg_pointer_rtx for the arg pointer. - If they are the same register, these are the same rtx. - Initialize them in init_emit. - * rtl.h: Declare these vars. - - * stmt.c (assign_parms, assign_stack_local): Use those rtx's. - -Sat Jan 23 00:32:10 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) - - * reload.c (find_reloads): Don't combine_reloads if `&' constraint - was used. - - * parse.y: Parse `asm' with operands. - * stmt.c (expand_asm_params): New fn: generate an ASM_OPERANDS for - `asm' with operands. - * final.c (final): Output an ASM_OPERANDS insn-body. - * regclass.c (regclass): Ignore ASM_OPERANDS, like ASM_INPUT. - - * reload.c (find_reloads): Handle reloading of ASM_OPERANDS. - The number of operands can no longer be bounded. - For example we can't always put the operands in recog_operands. - - New locals OPERANDS and OPERAND_LOCS point to alloca'd vectors of - operands and their locations. New locals CONSTRAINTS and CONSTRAINTS1 - hold alloca'd vectors of constraints. - - Unfortunately this isn't enough; every vector with length - MAX_RECOG_OPERANDS needs to be dynamically allocated. - Would this be too slow? For now, a cheap "solution" is to delete - any insn that has too many operands. - - * rtl.def: Delete VOLATILE, UNCHANGING and UNDESCRIBED. - Add ASM_OPERANDS. - - * regclass.c (reg_class_record): Delete ref to UNCHANGING. - * loop.c (invariant_p): - * rtl.c (rtx_varies_p): - - * cccp.c: Define __VERSION__. - - * decl.c (shadow_tag): TYPE_NAME doesn't work to get the tag-name - of a struct, so use new function lookup_tag_reverse. - * decl.c (lookup_tag_reverse): Given a type, return its tag name. - - * symout.c (symout_source_file): Output one `struct source'. - * symout.c (symout_lines): Output all of them, and the sourcevector. - * gdbfiles.h: New file for communication between final.c and symout.c. - - * final.c (output_source_line): New arg WRITE_SYMBOLS says write - new GDB-format linenumber info. Assigns a filenum to each source - file name and keeps track of the correspondence. - - * cccp.c (do_include): Output the -M info after searching the dirs; - include the actual dir name. Don't generate "./" for current dir. - -Fri Jan 22 04:10:10 1988 Richard Stallman (rms at frosted-flakes) - - * tm-news800.h: Delete override of INDIRECTABLE_1_ADDRESS. - Output is faster if it doesn't use 32-bit displacements. - - * reload.c (combine_reloads): New function. - If possible, find an input reload - and an output reload that can be turned into one input-output reload. - The old output-reload is marked as inoperative: reload_out - and reload_in both zero. This is called from find_reloads. - - * reload1.c (reload, choose_reload_targets): Ignore inoperative - reloads. - - * Print warnings for variables that could be clobbered by `longjmp'. - * expr.c (expand_call): Generate a NOTE_INSN_SETJMP whenever - `setjmp' or `_setjmp' is called. - * flow.c (propagate_block): When NOTE_INSN_SETJMP is seen, - record the live regs in `regs_live_at_setjmp'. - * stmt.c (uninitialized_vars_warning): Warn about vars that have regs - that are set more than once and are marked in `regs_live_at_setjmp'. - Works through function `regno_clobbered_by_longjmp'. - * rtl.h: Define NOTE_INSN_SETJMP. - - * genrecog.c (try_merge_2): When enforce_modes, keep all the - alternatives segregated by modes and keep the modes in numerical order. - * genrecog.c (write_tree): Make conditions for switch-on-modes - know what difference enforce_mode makes. - -Thu Jan 21 00:12:35 1988 Richard Stallman (rms at frosted-flakes) - - * tm-ns32k.h: Use Stein's definitions of PRINT_OPERAND{,_ADDRESS}; - move the Sequent definitions info tm-sequent.h. - Handle %$ in both old and new PRINT_OPERAND. - Define CPP_PREDEFINES. - - * ns32k.md: Merge some features from Jan Stein's port: - strict_low_part insns, smart output of booleans with small - constant args, acbd insns generalized for other increments. - Use %$ wherever there is an explicit immediate. - Fix shortcomings of adjsp insns: use adjspd in general, - and use adjspb in all the cases that allow it. - Don't bother explicitly clearing CC_REVERSED. - For tstsf/tstdf, output the floating-zero constants - using {f,d}const0_rtx. - - A problem still remains, which is that the Sequent and the - other ns32k assembler syntax require different - - * typecheck.c (unary_complex_value): Use correct datatype for - compound-exprs. - - * gen*.c (main): Use obstack_init instead of obstack_begin. - - * vax.md: define_peephole for andl3 x,y,z; extzv z,....,z - - * m68k.md (tstsi): Use cmpw instead of cmpl to test addr reg. - - * tm-m68k.h: Bugs for 68000 when frame size is over 64k. - For FUNCTION_PROLOGUE, just subtract from sp instead of fp. - For FUNCTION_EPILOGUE, must put the size into a0 and then - all insns must be indexed by a0. And do this even on 68020. - - * tm-isi68.h: Similar changes. - * tm-news800.h, tm-hp9k320.h: Similar changes. - -Wed Jan 20 04:38:21 1988 Richard Stallman (rms at frosted-flakes) - - * cccp.c (error_with_line): New function. - Use it to report the "unterminated whatever" errors. - - * typecheck.c (build_unary_op): Recursive call had missing arg. - - * m68k.md (movhi): If MOTOROLA, the insn that fetches from a - case-dispatch table now defines the LI label as .+2. - * tm-news800.el, tm-hp9k320.h (PRINT_OPERAND_ADDRESS): - Don't subtract 2 when outputting the address in that insn. - -Tue Jan 19 00:02:33 1988 Richard Stallman (rms at frosted-flakes) - - * cse.c (cse_basic_block): Abort if more qtys were used than allocated. - -Mon Jan 18 04:44:28 1988 Richard Stallman (rms at frosted-flakes) - - * cccp.c (special_symbol): tm_mon is origin-0, not origin-1. - - * final.c (output_asm_insn): If %LETTER with no digits, - pass null pointer as the operand. - - * output-m68k.c (singlemove_string): Get rid of %e. - - * stmt.c (fixup_memory_subreg): Convert (SUBREG (MEM a)) to (MEM a'). - * stmt.c (fixup_var_ref_1): Use that fn for operands of - SIGN_EXTRACT and ZERO_EXTRACT, since (SUBREG:SI (REG:QI...)) - could have turned into (SUBREG:SI (MEM:QI...)), which is unsafe. - - * rtl.c (debug_rtx): Print an rtx on stderr, for debugging. - -Sun Jan 17 04:37:20 1988 Richard Stallman (rms at frosted-flakes) - - * gcc.c: options -M* treated like -M. - - * stmt.c (pushcase): Do nothing if the case index has error_mark type. - - * expr.c (expand_increment): Don't use queue for post-inc on memory - if the add insn requires register args. (Better code for RISCs.) - -Sat Jan 16 02:10:22 1988 Richard Stallman (rms at frosted-flakes) - - * ns32k.md: Change register_operand to general_operand. - * ns32k.md (udivmoddisi4): Use match_dup where required. - Comment it out because it can't accept two independent output args. - -Fri Jan 15 00:02:35 1988 Richard Stallman (rms at frosted-flakes) - - * toplev.c: Include sys/time.h only for BSD. For USG, use time.h. - This is correct for HPUX; don't know about others. - - * gcc.c (execute): Eliminate `union wait'. Make `status' an int. - * gcc.c (execute) [USG]: Use fork instead of vfork. - - * final.c (output_source_line): Use ASM_OUTPUT_SOURCE_{FILENAME,LINE} - if they are defined. - - * tm-hp9k320.h: New name for tm-hpux.h. - * tm-hp9k320.h (ASM_OUTPUT_LOCAL): Add 3rd arg to `lcomm' statements. - * tm-hp9k320.h (ASM_OUTPUT_{DOUBLE,FLOAT}): Use `double' and `float'. - * tm-hp9k320.h (CALL_USED_REGISTERS): Don't save any 68881 regs. - * tm-hp9k320.h (CPP_PREDEFINES): different names defined. - * tm-hp9k320.h (HPUX_ASM, NO_DBX_FORMAT, ASM_SPEC): define these. - * tm-hp9k320.h (ASM_OUTPUT_OPCODE): Convert `ftst' to `ftest'. - * tm-hp9k320.h: Define ASM_OUTPUT_SOURCE_{FILENAME,LINE}. - - * m68k.md: Rename `hpux' conditionals to `HPUX_ASM'. - * m68k.md: Reverse `fcmp' args if HPUX_ASM. - - * cccp.c (print_deps): 2 means give all files, 1 means only user files. - * cccp.c (do_include): Support that. - * cccp.c (main): -MM sets 1, -M alone sets 2. - * cccp.c (main): Give fatal error if I/O error in writing. - - * toplev.c (fatal_io_error): Report I/O error on given filename, - and exit. - - * toplev.c (compile_file): Detect error writing asm_out_file. - Always put asm file's name in asm_file_name for err msg. - * symout.c (symout_finish): Detect error writing symfile. - * symout.c (symout_init): Save filename in symfile_name for err msg. - - * gen*.c: Return 1 if ferror (stdout)--in case disk is full. - - * local-alloc.c (block_alloc): Don't crash if 1st rtx - in a PARALLEL is not a SET. - - * tm-m68k.h, tm-news800.h (PRINT_OPERAND). Eliminate code `%e'. - * m68k.md: Change `%e' to `e' everywhere. - * tm-hpux.h (ASM_OUTPUT_OPCODE): Output `move' as `mov'. - - * tm-m68k.h, tm-news800.h, tm-hpux.h (PRINT_OPERAND): - New code `%!' is output as the name for the cc register. - * m68k.md (insns that use andi to ccr): Use `%!' to avoid - conditionals. - - * cse.c: Record in qty_const_insn the insn that stored the - constant value of a qty. When making a REG_WAS_0 note, - store in it the insn that established the value 0. - - * vax.md (movsi): When checking a REG_WAS_0 note, - verify that the insn it points to hasn't been deleted or made a NOTE. - -Thu Jan 14 00:01:35 1988 Richard Stallman (rms at frosted-flakes) - - * toplev.c: Eliminate error_with_line and warning_with_line. - * parse.y, decl.c: Change remaining calls to those two. - - * tree.c (get_unwidened, get_narrower): To see if a COMPONENT_REF - is unsigned, look at the FIELD_DECL, not at the COMPONENT_REF. - - * rtl.c (print_rtx): Print /v for the `volatil' bit. - * expr.c (expand_assignment expand_expr): If handling a COMPONENT_REF, - note whether it is volatile. - - * fold-const.c (fold): a call to split_tree missed an argument. - - * flow.c (volatile_refs_p): Scan an rtx for volatile mem refs. - * flow.c (life_analysis): Record in INSN_VOLATILE which insns - have any volatile mem refs. - * flow.c (mark_used_regs): Always mark an insn with volatile mem refs. - Always pass INSN as an arg. New arg FINAL now says whether - this is the last time scanning. - * flow.c (propagate_block): Don't delete insns with volatile mem refs. - - * flow.c: Remove all refs to `obey_regdecls'. - Calling this with -noreg just doesn't help -W. - -Wed Jan 13 01:13:07 1988 Richard Stallman (rms at frosted-flakes) - - * decl.c (finish_decl): Error if auto var's size isn't known. - Change type to error_mark_node to avoid crash if the var - is used in an expression, since it has no DECL_RTL. - - * output-m68k.c (output_move_const_single): % -> %% for sprintf. - - * parse.y (yylex): Store token_buffer properly after ellipsis. - - * decl.c (duplicate_decls): Don't call layout_decl - for FUNCTION_DECL or TYPE_DECL. - - * toplev.c (warning_with_decl): New warning function with decl as arg. - * (error_with_decl): similar. - - * decl.c: Replace most `yylinerror' calls with `error_with_decl'. - - * decl.c (build_struct): Reform code to detect erroneous bit-fields. - All such errors are now detected here. - Promote bit-fields to int if appropriate. - If traditional, make all int bit-fields unsigned. - Set DECL_ALIGN for members that are not bit-fields. - - * decl.c (grokfield): Don't set DECL_ALIGN here. - - * stor-layout.c (layout_decl): Don't promote the type of a bit-field. - Use TREE_PACKED to distinguish a bit-field. - Don't check the width because build_struct did that. - - * m68k.md (cmpm): Reject if either operand (address) is a constant. - -Tue Jan 12 15:11:20 1988 Richard Stallman (rms at frosted-flakes) - - * cse.c (canon_reg): Never replace ANY hard reg from reg_rtx - because that could alter the machine mode. - - * tm-news800.h: Redefine INDIRECTABLE_1_ADDRESS only if MOTOROLA. - -Mon Jan 11 13:15:45 1988 Richard Stallman (rms at frosted-flakes) - - * jump.c (follow_jumps): If we find a cycle, make it a jump to self. - - * cse.c (predecide_loop_entry): Give up if chase more than 10 jumps. - -Sun Jan 10 14:52:42 1988 Richard Stallman (rms at frosted-flakes) - - * reload1.c (reload): basic_block_needs (new vector) gets 1 - for each basic block that needs a reload. - * reload1.c (spill_hard_reg): Don't spill pseudos that are - confined to a basic block which has no need for any reloads. - * reload1.c (reload): Each cycle that any element of basic_block_needs - changes from 0 to 1, must re-spill all previously spilled regs. - - * regclass.c (record_address_regs): - Skip the charging of ICOST if it is 0. - - * flags.h, toplev.c: New flag -fvolatile. - * typecheck.c (build_indirect_ref): If flag_volatile, - every INDIRECT_REF is marked with TREE_THIS_VOLATILE. - - * fold-const.c (fold): Test in TRUTH_NOT_EXPR case was backward. - Also result type is always `int'. - -Sat Jan 9 04:16:11 1988 Richard Stallman (rms at rice-krispies) - - * flags.h (flag_traditional): New flag. - * toplev.c: recognize -ftraditional and -traditional. - * parse.y (yylex): If flag_traditional, don't recognize - `signed', `const' or `volatile'. - - * decl.c (pushdecl): If flag_traditional, any extern decl - takes effect at top level. - - * tree.c (lvalue_or_else): New 2nd arg for use in error message. - * typecheck.c: All callers pass 2nd arg. - - * global-alloc.c: allocno_preferred_reg can specify a preferred - hard reg for each allocno. If so, try it first (new call to find_reg). - - * global-alloc.c (find_reg): New arg PREFREG specifies reg to try - first. - - * decl.c (build_struct): if :0 bit field at the end, round the - structure size to multiple of EMPTY_FIELD_BOUNDARY. - - * cse.c (make_regs_eqv): Was testing for reg_next_eqv[lastr] == 0 - and should be == -1. - - * reload1.c (reload_as_needed): Fix invalid optimization deleting - the previous store into a pseudo-reg that feeds an input-reload. - It is not safe because a later insn may look in the pseudo's stack - slot for the value. Delete the store only if we can eliminate the - pseudo entirely or if the current insn stores a new value there. - Also verify that reload_in[j] is a REG. - - * reload1.c (reload_as_needed): When doing an input reload from a - pseudo that was stored by the previous insn (not as a reload), - redirect the previous insn into the reload register, if this lets - us eliminate the pseudo entirely. - - * reload1.c (reload_as_needed): In both of the above cases, it's - impossible to prevent a stack slot since one was already assigned, - so don't alter reg_n_refs. Instead, set reg_renumber to record - that this pseudo did get a hard reg. - - * stmt.c: Set `volatil' in pseudo-regs for the user's variables. - - * jump.c (delete_insn): Do nothing if insn already deleted. - - * tm-sun{2,3}.h: #define STRUCTURE_SIZE_BOUNDARY 2 - for compatibility with Sun PCC. Note that 4.3 vax PCC - does not want this. - - * fold-const.c: Replace truncate_unsigned with force_fit_type - which truncates unsigned types and sign-extends signed types. - - * expr.c (do_jump): emit_queue before outputting the jump insns - that use the comparison. - - * stmt.c: Error message for any goto that jumps into a - binding contour that restores a stack level. - - TREE_PACKED (label) means label was defined inside - such a binding contour that is now exited. Using such a label - is an error. - - TREE_ADDRESSABLE (label) means label was used from a place - outside all such binding contours. If this is 1 when - TREE_PACKED is set to 1, it is an error. - - Any other invalid goto must have a fixup. fixup_gotos detects - such invalid gotos. fixup_gotos takes a second arg, which - is the first insn of the contour now being exited. - - * GNU C version 1.17. - -Local Variables: -mode: indented-text -left-margin: 8 -fill-column: 76 -version-control: never -End: diff --git a/gcc/ChangeLog.1 b/gcc/ChangeLog.1 deleted file mode 100644 index b0f29ab6c017..000000000000 --- a/gcc/ChangeLog.1 +++ /dev/null @@ -1,9207 +0,0 @@ -Thu May 10 22:48:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * rtl.def (DEFINE_DELAY): Change description to describe annulling. - - * genattr.c (main): Write out definitions for annulling, if present. - - * genattrab.c (expand_delays): Build internal attributes for - which insns can be annulled in a delay slot. - (gen_delay): Validate number of elements in DEFINE_DELAY list. - (write_eligible_delay): Write out routines for validating annulled - insns as well as those in normal delay slot. - (main): Call write_eligible_delays to output annulling information, - if it exists for this machine. - - * out-m68k.c (not_sp_operand): New function. - * m68k.md (andsi3): Don't allow sp as ourput to avoid reload - inefficiency. - - * calls.c (struct arg_data): Delete field STORED; add fields - PASS_ON_STACK and SAVE_AREA. - (prepare_call_address): Static chain value can't have QUEUED. - (expand_call): Rework to support additional calling sequence options. - - Major changes include: - Call FUNCTION_ARG_PASS_BY_REFERENCE to determine whether an - object should be passed by invisible reference. - Handle arguments passed both on stack and in a register; this can be - used to allow arguments that are hard to compute directly into - registers to be passed. - Support option (ACCUMULATE_OUTGOING_ARGS) where the largest amount - of stack for outgoing arguments is computer and pushed during the - function prologue. Stack space usage is tracked and any location - that would need to be reused will be saved and restored. - If preallocating arg block, compute address where each arg will be - placed and pass it as target to expand_expr. - - Other changes: - Use virtual regs to see if structure value address isn't stable. - If inlined, return TARGET if TARGET and TEMP are equivalent. - UNNAMED_ARGS_IN_REGISTERS is redundant with the NAMED parameter to - FUNCTION_ARG and has been deleted. - Use virtual_outgoing_stack_rtx instead of FIRST_PARM_CALLER_OFFSET. - Use locate_and_pad_parm to compute any needed padding for argument. - If REG_PARM_STACK_SPACE is defined, allocate backing stack locations - for args passed in registers; these are not included in the length - of stack space required unless OUTGOING_REG_PARM_STACK_SPACE is also - defined. - When precomputing register parameters, can stop computation when we - obtain any rtx, not necessarily a register. - No longer need code to protect data written below bottom of stack; - this is taken care of by preexpanding calls in argument. - target_for_arg no longer needed; its function is performed by - store_one_arg. - Always copy function return result to our target since they cannot - possibly be the same. - (target_for_arg): No longer used. - (store_one_arg): Save and restore in-use argument list location. - Support args passed both in register and on stack. - No need for explicit code for preallocated area; now pass location - as target to expand_expr; only copy if result in different place. - Put sequence point after expanding one value. - - * cse.c (struct write_data): Add bit to indicate stack pointer changed. - (canon_hash): Allow recording of stack pointer. - (cse_insn): Indicate stack pointer invalidated by subroutine calls. - Pass stack push and pop operations to note_mem_written. - Process stack pointer assignment as normal operation. - Finish change of April 7th that excludes ap and fp from being marked - as clobbered by calls. Also exclude sp; if it is clobbered by a - call, an explicit CLOBBER will be written. - (note_mem_written): Look for adjustment of stack pointer. - (invalidate_from_clobbers): Invalidate stack pointer, if required. - - * emit-rtl.c (gen_inline_header_rtx): Add field for outgoing args size. - (copy_rtx_if_shared): Check for any virtual register instead of frame - or argument pointer. - (init_emit): Start normal pseudos after virtual pseudos. - Copy the unique virtual regs into regno_reg_rtx. - (init_emit_once): Incoming and outgoing static chain can be the same; - inlining of nested functions won't need the distinction. - Create unique copies of virtual registers. - - * explow.c (memory_address): Don't worry about refs to fp or ap; - force_reg knows how to handle them correctly. - (fix_lexical_addr): Moved to function.c - (adjust_stack, anti_adjust_stack): Do nothing for adjustment of zero. - (allocate_dynamic_stack_space): New function copied from - expand_builtin. Handle STACK_POINTER_OFFSET via - virtual_stack_dynamic_rtx. When STACK_POINTER_OFFSET is defined, - perform alignment by always reserving a multiple of STACK_BOUNDARY - stack bits. This avoids concern about whether sp itself or the top of - stack needs to be aligned; if we start with an aligned stack, we keep - it aligned. - (round_push): Use ADD and AND rather than DIV and MULT. - - * expr.c (init_expr): Initialize some more vars. - (push_block): Use virtual_outgoing_args_rtx so don't need - STACK_POINTER_OFFSET here. - Merge extra and size more efficiently; no need to call force_operand - since memory_address is called. - (emit_push_insn): Pass type for FUNCTION_ARG_PADDING. - Use REG_PARM_STACK_SPACE instead of FIRST_PARM_CALLER_OFFSET. - To see if must copy address, check if it is a virtual register that - will be mapped to sp; only need check if not accumulating space - space for outgoing parms. - Ignore EXTRA if argument block has already been allocated. - (emit_library_call): Major rework to support calling sequences similar - to expand_call in calls.c, but only support a very small subset of - the conventions; abort if something outside our subset occurs. - Abort if incorrect mode is passed; we can't convert here since we don't - know the signedness. - (store_field): Check for virtual registers instead of hard registers - when seeing if stable. - (safe_from_p): Location in outgoing stack area is known to be safe. - (expand_builtin, BUILT_IN_ALLOCA): Use allocate_dynamic_stack_space. - - * expr.h: Define current_function_outgoing_args_size and - locate_and_pad_parm; delete definition of get_structure_value_addr. - (ARGS_SIZE_RTX): Always return a valid operand. - (ARGS_SIZE_TREE): New macro. - (FUNCTION_ARG_PADDING): Accept MODE and TYPE like other - FUNCTION_ARG_... macros. - (FUNCTION_ARG_BOUNDARY): Provide default for new macro. - (MUST_PASS_IN_STACK): New macro. - (allocate_dynamic_stack_space): New function. - * tm-3b1.h, tm-3b1g.h, tm-apollo68.h, tm-crds.h, tm-mot3300.h: - Change definition of FUNCTION_ARG_PADDING to use TYPE instead of SIZE. - - * function.c (current_function_outgoing_args_size): New var. - (arg_pointer_save_area, virtuals_instantiated): Likewise. - (invalid_stack_slot): No longer used. - (push_function_context, pop_function_context): Save and restore - outgoing args size and arg pointer save area. - No longer save or restore invalid_stack_slot. - (pop_function_context): Set up variables whose value is constant - throughout rtl generation. - (get_frame_size): No longer adjust by STARTING_FRAME_OFFSET. - (assign_stack_local): Use virtual_stack_vars_rtx instead of fp - until virtuals have been instantiated, then use fp. - Remove reference to obsolete invalid_stack_slot. - Can no longer be called with size == 0. - (assign_outer_stack_loc): Use virtual_stack_vars_rtx instead of fp. - Remove references to obsolete invalid_stack_slot. - Push to obstack of containing function when allocating rtx. - (put_var_into_stack): Only switch obstacks around making of - queue entry. - Replace call to parm_stack_loc with reference to info in proper - function. - (fixup_stack_1): Handle any virtual register instead of handling - just fp. - (instantiate_virtual_regs, instantiate_virtual_regs_1): New functions. - (use_variable, use_variable_after): Check for virtual register - instead of checking against ap and fp. - (parm_stack_loc): Function deleted. - (assign_parms): No longer need internal_arg_pointer. - Accept SECOND_TIME argument that suppresses rtl generation and - assignments to DECL_RTL. Used by integrate.c to recompute vars. - Don't use FIRST_PARM_OFFSET here; use virtual_incoming_args_rtx. - Replace test for nonstable incoming arg pointer. - If structure value address is treated as the first argument, add - it into the list of arguments; this means we can have a RESULT_DECL - in with the PARM_DECL's. - DECL_OFFSET is no longer needed by integrate.c. - Handle args passed by invisible reference. - Support new macro, SETUP_INCOMING_VARARGS, to save all registers used - for args including and beyond those for the current arg. Used for - non-ANSI varargs. - Pass locate_and_pad_parm data it needs to handle reg->stack boundary - if register parameters have assigned stack space. - If we received the function's incoming structure pointer as a - normal argument, update DECL_RTL of DECL_RESULT. - Round total argument size if required; similarly, always use at - least REG_PARM_STACK_SPACE bytes if defined. - (locate_and_pad_parm): Do not need PARM. - Major rework to do much of the job of aligning and padding stack - location. Now a void function wich is passed pointers to struct - args_size vars that are set to the argument position, size, and - initial offset. - Accept flag denoting if a parm was passed in a register and also - the current function declaration. - If register parameters are assigned stack locations and there is a - minimum required size for the area assigned to register parameters, - pad the stack position when a parameter not assigned to a register - is encountered. - Remove redundant code in MAX_PARM_BOUNDARY case. - (lookup_static_chain): Use virtual_stack_vars_rtx instead of fp. - (fix_lexical_addr): Move from explow.c. - If referencing variable that lives in the incoming argument area - of its parent and a separate ap is required, allocate a save area in - the parent for it and use it here. If no separate ap is require, - compute offset between ap and fp. - (trampoline_address): No need to push obstacks here. - (init_function_start): Initialize new vars; delete obsolete vars. - (expand_function_start): Don't need to handle case where incoming - structure return address is passed as hidden parameter here; now done - completely in assign_parms. - (expand_function_end): Save ap if a save area was made for it. - Set REG_FUNCTION_VALUE_P when copying address of returned - structure. - Be consistent in use of FUNCTION_... macros vs. hard_function_value. - - * function.h (outgoing_args_size, arg_pointer_save_area): New fields. - (invalid_stack_slot): Obsolete, deleted. - - * integrate.c: Major rework and simplification. - Split up vars into two classes. Those used for expand_inline_function - and children are now part of struct inline_remap. Most of the others - are for save_for_inline and its children. - (function_cannot_inline_p): The only type of arguments that will - cause us to reject inlining are variable-sized arguments; also - reject functions that return variable-sized objects. - For now, don't inline a nested function. We'll support this shortly. - Use current_function_returns_pcc_struct instead of duplicating test. - (save_for_inline): No need to set TREE_VOLATILE for parms. - Save outgoing args size in header. - Use unique copy of virtual reg rtx's. - Handle any required fixups for INSN_LIST forward-references. - Don't bother resetting dead static vars when we are done. - Need not save current_function_pretend_args_size. - (copy_for_inline): First copy all insns, then all REG_NOTES to avoid - problems with forward references. - (struct inline_remap): Move all previously-static vars used by - expand_inline_function and children into this structure. This avoids - potential problems due to recursive calls to expand_inline_function. - (expand_inline_function and children): Allocate a struct inline_remap - and pass to all children. - (expand_inline_function): Rework parameter handling by looking at - DECL_RTL and using it to determine what types of mappings need to be - done. Support objects passed by invisible reference. Put any - constant memory addresses into const_equiv_map. parm_map is no longer - used. - Likewise for the return value: consult DECL_RTL (DECL_RESULT)). - Don't allocate space for called function's frame until referenced. - No longer need special handling for insn following CALL. - Ignore USE whose argument has REG_FUNCTION_VALUE_P true. - Ignore setting function register if we don't have a mapping for it - (e.g., we are ignoring the result of the call). - Look at new SET_SRC for constant equivalences. Some new ones may - have resulted from constant folding. - Pass both new and old rtx to try_constants. - Discard NOTE_INSN_DELETED notes. - Copy insns first, then REG_NOTES, to avoid problems with forward refs. - (copy_parm_decls): Compute new address of parameter using the - constant equivalence map, which will contain the remapping of - the frame and argument pointer. - (copy_decl_tree): Likewise. - (copy_rtx_and_substitute): Handle references to frame and argument - pointers by allocating a space equal to the size of the frame and - incoming arguments, respectively, and setting a pseudo to point to - the start of each area. Set up an equivalence in CONST_EQUIV_MAP - between fp or ap and the actual address. Return the pseudo. - Don't need to deal with possibility of (SUBREG (CONST_INT)) since - we are only replacing register with other registers here. - No longer need to special-case PLUS and MEM; subst_constants will do - this work. - Update detection of sets of ap and fp. - (try_constants, subst_constants): Accept old and new rtx. They will - be isomorphic, with only register numbers changed. Use old rtx to - look up register in CONST_EQUIV_MAP and new rtx for substitution. - Correctly handle SUBREG of CONST_INT and CONST_DOUBLE. - Fix typos in handling of PLUS. - (access_parm_map, copy_address): Delete functions. - (try_fold_cc0): Handle both compare and test. - (fold_out_cnst_cc0): Rework to simplify and remove dubious cases. - (output_inline_function): Call assign_parms to perform any needed - setups. - Need not restore pretend arg size (will be computed by assign_parms). - Restore outgoing argument size. - - * output.h (current_function_outgoing_args_size): New var. - - * rtl.h (OUTGOING_ARGS_SIZE): New field in INLINE_HEADER. - (PRETEND_ARGS_SIZE): No longer needed. - (virtual_..., VIRTUAL_...): Define virtual register numbers and rtx. - - * rtlanal.c (rtx_equal_p): Update comment on use of - REG_FUNCTION_VALUE_P. - - * stmt.c (expand_goto): Just restore fp; non-local goto handler - will restore ap if needed. - (expand_return): Don't use STARTING_FRAME_OFFSET here. - (expand_end_bindings): Adjust fp in nonlocal-goto handler. If needed, - reload ap from its save area in the frame; allocate save area if none. - (expand_decl): Use new function allocate_dynamic_stack_space. - - * toplev.c (rest_of_compilation): Instantiate virtual registers. - Clear rtx_equal_function_value_matters immediately after possibly - saving current routine for inlining. - - * stupid.c (stupid_life_analysis): Don't try to allocate virtual - registers (which don't exist any more). - -Thu May 10 13:59:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * reload1.c (modes_equiv_for_class_p): Don't compare HARD_REGNO_NREGS. - - * combine.c (subst): Simplify - (sign_extend:M (subreg:N (ashiftrt:M (sign_extend:M (any:N ...))))). - - * fixincludes: Verify that a link leads back to /usr/include - by checking name of dir it arrives in. If so, use rest of dirname - as target for new link. - - * Makefile.in (tmpgnulib): Put dummy entry in loop with LIBFUNCS_EXTRA - so loop is never null. Then ignore that entry when it comes up. - - * gcc.c (default_compilers): Add explicit suffix to arg of -dumpbase. - -Tue May 8 13:54:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tm-ultrix.h: New file. - -Mon May 7 18:47:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * i386.md (test... recognizers): Output symbolic constant first. - -Sun May 6 22:51:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * function.c (fixup_memory_subreg): Make a sequence if -fforce-addr. - - * fixincludes: When going to directory of link name, don't lose - if name has no directory. - Move the code to fix netinet/ip.h; was in the middle of something. - - * Makefile.in (tmpgnulib): Test LIBFUNCS_EXTRA for nonempty. - -Sun May 6 08:29:27 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * Makefile.in (LIBFUNCS): Remove extraneous "\". - - * Makefile.in (stamp-gnulib2): Move "-" to proper line. - - * gnulib2.c (clear_cache): Ignore routine unless INSN_CACHE_SIZE - is defined (avoids cpp-detected divide-by-zero). - - * expr.c (safe_from_p): Don't blow up when passed a null tree. - - * varasm.c (get_pool_size): New function to return constant pool size. - -Fri May 4 16:11:54 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (safe_from_p): If EXP has some rtx, just check it. - Handle TREE_LIST, RTL_EXPR, and WITH_CLEANUP_EXPR. - Note that CALL clobbers memory and hard registers. - Look at enclosed object for SUBREG, but SUBREG of a hard reg is unsafe. - - * expr.c (store_constructor): Now that safe_from_p has been applied - to the target, need not avoid hard register targets. - Abort if called with neither ARRAY_TYPE or RECORD_TYPE. - - * reload.c (find_equiv_reg): Handle goal of (plus (sp) (const)). - - * Makefile.in (STAGESTUFF): Include hard-params. - -Fri May 4 15:33:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * gcc.c (add_prefix): New arg WARN. Record in prefix_list. - (main): Calls changed. Pass nonzero for -B prefixes. - Later, call unused_prefix_warning. - (unused_prefix_warning): Warn about prefixes never used. - -Thu May 3 16:56:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * print-tree.c (print_node): Align the `align' line with the others. - - * expmed.c (store_bit_field): Maximum size for loading mem struct - into reg comes from the mode of the value to be stored. - Alignment is no restriction if it matches BIGGEST_ALIGNMENT. - Always do the real work in SImode if couldn't use MEM. - (extract_bit_field): Likewise. - - * combine.c (subst): Handle (sign_extend:M (subreg (sign_extract:M))) - on big-endian machine like corresponding zero_extend case. - - * combine.c (try_combine): Use rtl_equal_p instead of == when - testing for sources and destinations that match. - - * pyr.md (bitw recognizer): Set CC_NO_OVERFLOW. - -Thu May 3 13:03:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (expand_expr, case COND_EXPR): Can always use original - target if specified. - In "X ? A + B : A" case, use safe_from_p to see if target conflicts - with B. - - * cse.c (cse_insn): Don't rewrite (set REG0 REG1) if REG1 is a hard - register even if is REG0 cheaper. - -Thu May 3 12:04:19 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * reload1.c (reload): Handle multiple size groups for one class. - - * stdarg.h: Typo in conditional. - -Wed May 2 16:34:25 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tm-sun3.h (CC1_SPEC): Ignore -target. - (WORD_SWITCH_TAKES_ARG): Define it. - * tm-sparc.h (CC1_SPEC): Ignore -target and -dalign. - (WORD_SWITCH_TAKES_ARG): Define it. - -Wed May 2 09:38:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (cse_insn): Always replace registers with oldest equivalent, - including the case when the destination is present in the source. - -Tue May 1 15:55:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * gnulib2.c (__adddi3, __subdi3): New, simpler algorithm. - -Tue May 1 14:48:03 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * Makefile.in: Insert "else true;" in *_ALLOCA macros. - - * stor-layout.c (mode_for_size): No longer static. - Accept LIMIT parameter to limit mode to MAX_FIXED_MODE_SIZE. - (layout_decl, layout_type): Pass appropriate limit parameter to - mode_for_size. - -Tue May 1 13:09:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stmt.c (assign_parms): Don't make entry_parm and stack_parm valid. - Leave them explicit stack slots. - * explow.c (validize_mem): Copy it, don't alter it. - - * out-m68k.c (standard_68881_constant_p): Handle HOST_WORDS_BIG_ENDIAN. - - * integrate.c (save_for_inline): Copy reg notes after all insns. - - * combine.c (subst): When checking reg_last_set, verify nonzero. - - * gcc.c (default_compilers): Use %b, not %i, after -dumpbase. - - * stor-layout.c (make_unsigned_type): Change like make_signed_type. - -Tue May 1 07:36:21 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * tm-m68k.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Allocate space - for local variables even if no frame pointer; adjust size to account - for place where old frame pointer would have been placed. - (INITAL_FRAME_POINTER_OFFSET): Add frame size instead of subtracting - it and perform adjustment described above. - - * expr.c (validate_subtarget): Deleted. - (expand_expr): Replace calls to validate_subtarget with safe_from_p. - -Mon Apr 30 01:39:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Makefile.in (install-headers): Simplify loop by cd'ing to srcdir. - - * stor-layout.c (layout_type): Get alignment of all scalar types - from the mode. - (make_signed_type): Get rid of ptr_size_node, function_size_node. - * tm-*.h (POINTER_BOUNDARY): Deleted. - - * c-typeck.c (build_unary_op): For ADDR_EXPR of COMPONENT_REF, - mark the PLUS_EXPR constant if appropriate. - (parser_build_binary_op): Record C_SET_EXP_ORIGINAL_CODE here. - (build_binary_op): Not here. - - * fold-const.c (size_int): Make arg unsigned. - - * varasm.c (output_addressed_constants): Fixed typo. - - * cccp.c (macarg1): `\' not special outside strings. - - * c-typeck.c (build_unary_op): In increment ops, - typo checking for ptr to void/function. - Check original type for this and for amount of increment. - -Sat Apr 28 16:43:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-typeck.c (build_indirect_ref): Error if target is incomplete type. - -Fri Apr 27 13:56:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * reload1.c (order_regs_for_reload): Count multi-word pseudos right. - -Thu Apr 26 17:52:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cccp.c (handle_directive): Don't pass directive through if no_output. - - * c-parse.y (yylex): Large hex constants are signed if -traditional. - -Tue Apr 24 13:57:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * i860.md, m88k.md: Add missing = in some output constraints. - - * tm-ns32k.h (POINTER_BOUNDARY): Now 32. - - * out-*.c (output_move_double): Use split_double. - * final.c (split_double): New function, handles byte-order differences. - - * stmt.c (expand_decl): Check size for integer, not "constant". - * stor-layout.c (layout_decl, layout_type): Likewise. - * c-decl.c (finish_decl): Likewise. - * c-typeck.c (digest_init): Likewise. - * varasm.c (assemble_variable, output_constructor): Likewise. - (decode_addr_const): Distinguish getting rtl by code alone. - (output_addressed_constants): No need to abort. - In ADDR_EXPR case, check TREE_CODE_CLASS. - - * c-tree.h (C_DECLARED_LABEL_FLAG): New flag. - * c-parse.y (label declarations): Set it. - * c-decl.c (pop_label_level, lookup_label): Use it. - - * expr.c (string_constant): Accept variable offsets. - (expand_expr): Check for explicit integers, not constants, in sizes. - (safe_from_p): No need to check TREE_CONSTANT. - - * Makefile.in (prefix): Now replaces /usr/local instead of adding on. - -Mon Apr 23 02:01:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cplus-tree.h (DECL_FRIENDLIST): Use DECL_INITIAL. - - * expr.c (expand_assignment): Use expr_size to compute size. - -Sun Apr 22 21:53:55 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expr.c (expand_assignment, expand_expr): Check for COMPONENT_REF - before testing DECL_BIT_FIELD. - - * stor-layout.c (convert_units): Deleted. All calls eliminated. - - * TREE_CONSTANT renamed from TREE_LITERAL. - * TYPE_READONLY split off from TREE_READONLY. - * TREE_SIDE_EFFECTS renamed from TREE_VOLATILE. - * TYPE_VOLATILE split off from TREE_VOLATILE/TREE_THIS_VOLATILE. - -Sun Apr 22 15:26:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * loop.c (strength_reduce): Avoid problems in biv elimination by not - being forced to use giv's that have complex new_reg values while the - underlying giv is marked maybe_dead; clear maybe_dead in this case. - - * loop.c: Make verification of loops take linear, not quadratic, time. - (verify_loop, can_jump_in_range_p): Deleted. - (prescan_loop): New function, contents are from old verify_loop. - (scan_loop): Call prescan_loop. - (find_and_verify_loops, mark_loop_jump): New functions. - (loop_optimize): Allocate new tables and call find_and_verify_loops - once instead of calling verify_loop for each loop. - Use data from find_and_verify_loops instead of scanning all insns. - - * expr.c (safe_from_p): New function. - (validate_subtarget): Use safe_from_p. - (expand_expr, case CONSTRUCTOR): Likewise. - - * expr.c (store_expr): Handle cases where EXP is a compound - or conditional expression specially to avoid unnecessary temporaries. - -Sun Apr 22 00:15:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tree.h (struct tree_type): Delete size_unit. - (struct tree_decl): Delete size_unit and voffset_unit. - Reduce lang_flags to save 1 word. - - * function.c (init_function_start): Don't use DECL_RESULT_TYPE. - * integrate.c (expand_inline_function): Likewise. - * c-decl.c (start_function, duplicate_decls): Likewise. - * tree.h (struct tree_decl): Delete voffset. - (DECL_RESULT_TYPE): Deleted. - - * objc-actions.c (encode_field_decl, objc_copy_list): - Switch to DECL_FRAME_SIZE. - * cplus-class.c (finish_struct): Likewise. - * cplus-decl2.c (grokbitfield): Switch to DECL_BIT_FIELD. - * c-parse.y, cplus-parse.y, objc-parse.y: Likewise. - - * tree.h (TYPE_NO_FORCE_BLK): New flag in types. - * stor-layout.c (layout_type): Use it. - * tree.h (DECL_TOO_LATE): New flag. - * stmt.c (expand_end_bindings, expand_goto_internal): Use it. - * tree.h (TREE_PACKED): Deleted. - - * cplus-typeck.c (unary_complex_lvalue): Confusing use of - DECL_SIZE_UNIT; not clear what to do. - * cplus-tree.c (layout_vbasetypes): Likewise. - * cplus-class.c (modify_vtable_entry): Likewise. - - * cplus-parse.y (YYDEBUG): Force it on. - (print_parse_statistics, init_parse): No-op if not YYDEBUG. - - * fold-const.c (fold): REAL_INFINITY affects reals, not ints. - - * protoize.c (edit_fn_declaration): Make arg volatile to stop warning. - -Sat Apr 21 03:04:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expmed.c (store_bit_fields): Adjust for elimination of BImode. - - * c-parse.y (simple_if, stmt): Store stmt_count in proper place, - which is slot 1 of the if. - (simple_if, lineno_stmt, stmt): Output the note at beginning of - stmt, not in lineno_stmt. Use emit_line_note. - (simple_if): Set if_stmt_*, then use lineno_stmt directly. - (lineno_stmt): Before most uses, call skip_white_space. - (finput): Move to top of file. - - * cplus-class.c (build_instantiated_decl): Fix typo. - - * cplus-tree.h (C_TYPE_FIELDS_READONLY): Use lang_flag_1. - (TYPE_HAS_CONSTRUCTOR, TYPE_HAS_DESTRUCTOR, TYPE_NEEDS_CONSTRUCTOR): - (TYPE_NEEDS_DESTRUCTOR): Advance each to next lang_flag. - * tree.h (TREE_LANG_FLAG_5, TREE_LANG_FLAG_6): Define them. - - * config.gcc: Delete ./Makefile.in iff not in the source dir. - - * Makefile.in (for-bootstrap): New target. - - * dbxout.c (dbxout_finish_symbol, dbxout_type, dbxout_prepare_symbol): - Add temporary conditionals on WINNING_GDB. - - * print-tree.c (print_node): Print the TYPE_SYMTAB_ADDRESS. - - * Makefile.in (protoize.o, unprotoize.o, SYSCALLS.c.X): - Include from or look in dir $(srcdir). - -Fri Apr 20 16:30:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * varasm.c (output_constructor): Backward test for bit-field. - - * Makefile.in (stamp-*): Delete .c or .h from these names. - -Fri Apr 20 15:56:21 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cplus-typeck.c (compparms, comp_target_parms, build_modify_expr_1): - (build_modify_expr): Clean parens in complicated if. - * cplus-decl.c (finish_decl, grokdeclarator): Likewise. - -Fri Apr 20 14:42:36 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tm-3b1.h (ASM_SPEC, PRINT_OPERAND_ADDRESS): Support 68020, 68881. - Useful even though this isn't one. - (ASM_OUTPUT_OPCODE): Convert fbne to fbneq. Don't change ftst. - (REGISTER_NAMES): Define it. Fpreg names not same as hp. - - * stor-layout.c (mode_for_size): Don't check MAX_FIXED_MODE_SIZE. - (layout_type): Check it here when appropriate. - - * loop.c (strength_reduce): Clean parens in complicated if. - - * fold-const.c (mul_double, const_binop): Add parens around shifts. - -Thu Apr 19 03:03:39 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * machmode.def: Delete unused modes. - - * stor-layout.c (mode_for_size): Accepts mode class as arg. - Calls changed. - (layout_type): Can now use mode_for_size for floating types. - - * stor-layout.c (layout_type): Get mode of function type from size. - * c-decl.c, cplus-decl.c (grokdeclarator): Don't worry about - mode of a function type. - * calls.c (prepare_call_address): No values contain static chains. - - * tree.h (struct tree_decl, struct tree_common): Rename the flag bits. - * cplus-tree.h: References here changed. - - * tree.h (DECL_BIT_FIELD): New macro, with new flag. - * print-tree.c: Print it. - * stor-layout.c (layout_decl): Use on input instead of TREE_PACKED. - Clear it if field happens to be aligned. - * expr.c, tree.c, varasm.c, symout.c, objc-actions.c, c-typeck.c: - Use this to distinguish bit-fields. - * c-decl.c, cplus-class.c (finish_struct): Set this for bit-fields. - - * c-typeck.c (build_binary_op): Make NON_LVALUE_EXPR, not NOP_EXPR. - - * out-sparc.c (find_addr_reg): Avoid using frame pointer. - - * config.gcc: Delete all formfeeds from Makefile. - - * stor-layout.c (layout_decl): Delete `bitsize'. - (layout_record): Test size for CONST_INT, not TREE_LITERAL. - (layout_type): Simplify array case. - - * fold-const.c (size_binop): Division not special case. - -Wed Apr 18 16:05:23 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-typeck.c (datatype): Function deleted. - (build_binary_op_nodefault, pointer_int_sum, pointer_diff): - Don't use it. - * cplus-typeck.c (build_binary_op_nodefault, pointer_int_sum): - (pointer_diff): Likewise. - (convert_for_assignment): Likewise. Took some work. - (datatype): Function deleted. - - * c-typeck.c (common_type): Renamed from commontype. - (function_types_compatible_p): New function. - (compparms): Deleted. - (self_promoting_args_p): Renamed from compparms1. - * cplus-typeck.c (common_type, self_promoting_args_p): Likewise. - * c-typeck.c (build_function_call): Eliminate local value_type. - - * c-typeck.c (parser_build_binary_op): Detect +/- within boolean. - - * c-typeck.c (convert_arguments): Renamed from actualparameterlist. - Push results on front, and reverse at end. - * cplus-typeck.c: Likewise. All calls changed. - - * tree.h (STMT_BIND_SIZE): Deleted. - (struct tree_bind_stmt): Deleted that slot. - * tree.c (build_let_stmt): Don't set it. - - * print-tree.c (print_node): Call print_lang_identifier. - * c-decl.c, cplus-ptree.c (print_lang_identifier): New function. - - * gnulib2.c (__clear_cache): New function. - -Tue Apr 17 16:57:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cplus-tree.c (build_member_type): Use TYPE_HASH, not TREE_UID. - (TYPE_HASH): Use the address. Delete the duplicate definition. - - * c-typeck.c (build_unary_op): Bug in pedantic warning about ++. - - * tree.h (TYPE_SEP, TYPE_SEP_UNIT): Deleted. - * stor-layout.c (layout_type): Don't set them. - (mode_for_size): New name for agg_mode; code cleaned up. - * c-tree.h (C_TYPE_FIELDS_READONLY): Use TREE_LANG_FLAG_1. - - * fold-const.c (size_int, size_binop): New names for build_int - and genop, moved here. All callers changed. - (const_binop): New name for combine, and now static. - * stmt.c (expand_end_case, group_case_nodes, node_has_low_bound): - (node_has_high_bound): Don't call `combine' directly. - - * tree.h (DECL_VOFFSET, DECL_VOFFSET_UNIT): Deleted. - * tree.c (staticp): Don't use DECL_VOFFSET. - * stor-layout.c (layout_*): Don't use it or set it. - (layout_record): Simplify: Keep all sizes in units of 1. - - * tree.c (debug_tree, print_node, print_node_brief, indent_to): - New functions to print a tree. - * c-decl.c (print_lang_decl, print_lang_type): Define as no-op. - * cplus-ptree.c (print_lang_type): Complete rewrite. - Most other functions deleted. - * tree.c (print_node): Call print_lang_* unconditionally. - - * tree.c (TYPE_HASH): Now use the address. - -Mon Apr 16 16:27:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * final.c: Check LEAF_REGISTERS, not LEAF_REGS. - - * real.h (*_FLOAT_FORMAT): Change enums to macros. - (REAL_INFINITY): Define it if IEEE format. - - * c-decl.c (c_decode_options): Handle -Wconversion here. - * toplev.c (main): Not here. - - * tm-*.h (INITIAL_FRAME_POINTER_OFFSET): Count get_frame_size. - -Mon Apr 16 15:05:49 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * loop.c (eliminate_biv): Build COMPARE with VOIDmode, not mode - of operands. - -Mon Apr 16 14:55:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * jump.c: Include real.h. - -Sun Apr 15 20:30:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * c-typeck.c (pedantic_lvalue_warning): New function. - (build_component_ref): Handle COMPOUND_VALUE and COND_EXPR by moving - reference inside it and calling pedantic_lvalue_warning. - (build_unary_op): Incrementing a cast-expression is warning, not - error; call new pedantic_lvalue_warning. - (unary_complex_lvalue): Use of compound or conditional expression as - lvalue is warning, not error. - (build_modify_expr): Likewise. - * cplus-typeck.c: Likewise. - -Sun Apr 15 12:27:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cse.c (fold_rtx, fold_cc0): Check TARGET_FLOAT_FORMAT, - not FLOAT_NOT_IEEE. - * jump.c (jump_back_p): Likewise. FLOAT_NOT_IEEE is now gone. - - * cccp.c (collect_expansion): Handle warn_stringify. - (main): Set it for -Wtraditional. - - * function.c (init_function_start): - Set current_function_returns_pointer here. - (expand_function_start): Not here. - - * expr.c (emit_library_call): Precompute reg and partial of all parms, - to do it in proper order. - - * final.c (final_scan_insn): Typo in deleting obvious no-ops. - - * expr.c (emit_push_insn): Change #if to ordinary if. - -Sat Apr 14 13:20:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expr.c (do_jump): In COMPONENT_REF, check TYPE is nonzero. - - * tm-i386.h (ASM_OUTPUT_ADDR_DIFF_ELT): Delete spurious `abort ()'. - - * emit-rtl.c (reverse_comparison): New function. - (get_last_insn_anywhere): New function. - * i386.md (ble, blt): New define_expands. - - * Makefile.in (LANGUAGES): New parameter chooses languages to build. - (native): Use that. - (c, c++, objc): Targets for use in LANGUAGES. - - * Makefile.in (install): Split up. - (install-cross, install-headers, install-gnulib, install-proto): - (install-man, $(libsubdir)): New targets. - - * Makefile.in (native): New target, split from start.encap. - (tmpgnulib): Split out from gnulib.portable. - (gnulib.convert): Makes tmpgnulib, then converts. - (LIBCONVERT): New parameter. - (GCC_FOR_TARGET): New parameter. - (hard-params.o, hard-params, stamp-gnulib2): Use that. - - * cse.c (fold_cc0): Compare equivalence classes of non-constants. - Waiting for papers from Steven McCanne. - -Fri Apr 13 14:12:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stor-layout.c (layout_type): If record is BLKmode because not - aligned, set TREE_PACKED. Don't force BLKmode due to field - with TREE_PACKED. - - * cse.c (fold_rtx): Use dconst1, not atof. - * varasm.c (output_constant): Likewise. - - * c-parse.y (yylex): Handle SIGFPE in atof. - - * tm-tti68k.h: New file. - - * toplev.c, flags.h (flag_pretend_float): New flag. - - * regclass.c (reg_class_record): Handle `E' constraint, for float - constants but only if can examine their bits. - * reload.c (find_reloads): Likewise. - * recog.c (constrain_operands): Likewise. - * out-m68k.c (output_move_double): Abort on float constant - if can't examine the bits. - (standard_68881_constant_p): Fail if can't examine the bits. - (standard_sun_fpa_constant_p): Likewise. - - * m68k.md (DFmode move recognizers): Use `E', not `F'. - * tm-m68k.h (PREFERRED_RELOAD_CLASS): Handle float constants. - - * tm-next.h (ASM_OUTPUT_FLOAT, ASM_OUTPUT_FLOAT_OPERAND): - (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_DOUBLE_OPERAND): Use REAL_VALUE_ISINF. - * tm-sun3.h, tm-sparc.h: Likewise. - - * xm-vax.h (HOST_FLOAT_FORMAT): Define it. - * tm-vax.h (TARGET_FLOAT_FORMAT): Define it. - - * real.h (enum float_format): Define codes for formats. - (HOST_FLOAT_FORMAT, TARGET_FLOAT_FORMAT): New macros, defaulted here. - (REAL_IS_NOT_DOUBLE, REAL_VALUE_TYPE): Override if formats differ. - (REAL_VALUE_ISINF): New macro. - * xm-vax.h (isinf): Define as macro. - - * Makefile.in (LIBFUNCS_EXTRA): New variable. - (gnulib.portable): Compile those files. - - * Makefile.in (AUX_OUTPUT2): New variable. - (OBJS): Use it. - (aux-output2.o): New target. - - * Makefile.in (RANLIB, RANLIB_TEST): New variables. - - * Makefile.in (AR_FLAGS, OLDAR_FLAGS): New variables. - (gnulib.portable, stamp-gnulib2): Use them. - - * i386.md: Add patterns for `bt' insns. - -Fri Apr 13 12:54:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * c-decl.c (builtin_function): Now returns decl that was made. - - * config.gcc: Support both -host= and +host=. - -Thu Apr 12 22:39:10 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Changes from Data General. - - * syms.h: New file. - * sdbout.c: Include that if not USG. - - * tree.h (enum built_in_function): Added BUILT_IN_STRCPY and - BUILT_IN_STRCMP. - * c-decl.c (init_decl_processing): Create additional pointer and - function types. Declare strcpy, strcmp, memcpy, memcmp built-in. - * expr.c (expand_builtin): Support strcpy, strcmp, memcpy, memcmp. - If special handler breaks out of switch, do library call. - By default, print error message and do library call. - (get_pointer_alignment, string_constant): New functions. - - * dbranch.c: Put entire contents in conditional on HAVE_DELAYED_BRANCH. - (init_flags, enote): Clear and set memr. - (enote): Don't move a store across a fetch. - (insn_eligible_p): Check enote before volatility and dependencies. - Check for volatility if memw or memr. - (loads_from_mem_p): New function. - - * Makefile.in (dbranch.o): New target. - (OBJS): Add dbranch.o. - -Thu Apr 12 22:39:10 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * calls.c (expand_call): Count args in order written, with argpos. - -Thu Apr 12 22:01:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expmed.c (synth_mult): Ensure OPS is always valid in returned alg. - - * local-alloc.c (block_alloc): If we have an operand that is an - address, look inside it for registers to combine with. - - * reload.c (combine_reloads): If the output reload is for an - earlyclobber operand, can't combine it. - Try to use a register that dies in an insn for a single output reload - if the insn has only one output. - -Thu Apr 12 21:27:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (duplicate_decls): Preserve DECL_INITIAL from old - function def to new one. - -Thu Apr 12 07:55:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (expand_assignment): Order of source and destination to - bcopy/memcpy was reversed. - -Wed Apr 11 17:29:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tm-i386.h (ABC_REGS): New register class. - (REG_CLASS_CONTENTS, REG_CLASS_NAMES, enum reg_class): Changed. - * i386.md (divsi3, etc.): Exclude register d from constraints. - - * c-parse.y (save_filename, save_lineno): New nonterminals - to record text location at start of statement. - (lineno_stmt): New nonterminal, outputs line note before statement. - (lineno_decl): Likewise for decl, to avoid conflicts. - (stmt): Don't emit line notes at start of statement. - (simple_if): Collect file and line using save_filename, save_lineno. - - * Changes from Data General. - - * cccp.c (main, do_include): Implement -H to print header names. - - * c-parse.y (component_decl_list): Parse even if final `;' missing. - -Wed Apr 11 16:49:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * gcc.c: Fix miscellaneous typos. - -Wed Apr 11 12:59:57 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * config.gcc: Typos in setting pass1done, testing it, - and calling sed for usage msg. - - * cccp.c (macroexpand): Count Newline Space as part of whitespace - sequence when stringifying. - - * expmed.c (expand_mult): Handle synth_mult returning no operations. - -Tue Apr 10 21:08:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cccp.c (do_line): No error if string follows number without space. - -Tue Apr 10 20:52:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * recog.c (apply_change_group): Return a zero if rejected changes. - - * loop.c (update_giv_derive): If a giv is only set conditionally, it - may only derive other givs in its own basic block. - -Tue Apr 10 13:09:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tm-ctix.h: New file. Waiting for papers from Ronald Cole. - csusac!unify!dbrus.rjc@ucdavis.ucdavis.edu. - - * cse.c (rtx_cost): Use new macro RTX_COSTS. - (COSTS_N_INSNS): New macro for use in RTX_COSTS. - - * config.gcc: Fix typos in conditionals and case. Also usage message. - Missing backslashes in `echo | tee'. - Unset various vars after pass 1. - - * c-typeck.c (build_c_cast): Complain if function type specified. - - * expmed.c (synth_mult): Accept max_cost as arg and cut off there. - Pass it along recursively, making it smaller. - Eliminate quadratic loop, thus postponing powers of 2. - Costs are now signed. Initialize best_alg->cost from max_cost - and change to -1 only before returning. - (expand_mult): Pass cost of multiply as max cost. - Use synth_mult only if optimizing. - In alg_compound case, sign was backward. - Use TEM as target for force_operand there, to get better output. - -Tue Apr 10 07:09:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (expand_expr, case COND_EXPR): Add missing argument to - operand_equal_p. - Check for (X ? unop A : A) in addition to (X ? A + B : A). - - * Makefile.in (protoize, unprotoize): Compile with GCC, not just link. - - * fold-const.c (fold): Fix typo in converting conditional to COND. - - * expr.c (expand_expr): Treat (A ? 1 : 0) as A when A is a comparison. - (do_jump): Special-case (A ? 1 : 0) and (A ? 0 : 1). - - * expr.c (store_expr): Fix typo in checking mode of target. - -Mon Apr 9 18:33:55 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * integrate.c (expand_inline_function): Clear out parm_copies. - -Mon Apr 9 18:00:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * tree.def: SAVE_EXPR now has three operands. - * tree.h: Add new field SAVE_EXPR_CONTEXT; SAVE_EXPR_RTL remains last. - * tree.c (save_expr): Set context to current function. - (decl_function_context): Context is in SAVE_EXPR_CONTEXT if SAVE_EXPR. - * calls.c (expand_call): Call make_tree to build an RTL_EXPR instead - of explicitly making SAVE_EXPR. - * cplus-typeck.c (c_expand_return): Use make_tree instead of SAVE_EXPR. - * c-parse.y, objc-parse.y: Don't call mark_addressable here. - * expr.c (expand_expr, ..._DECL cases): If non-local, make addressable. - (expand_expr, case SAVE_EXPR): If defined in containing function, put - put into stack. - * function.c (put_var_into_stack): Use SAVE_EXPR_RTL for SAVE_EXPR. - * print-tree.c (dump): SAVE_EXPR_RTL is now third operand. - * stmt.c (expand_asm_operands): Call save_expr instead of making - tree node directly. - -Mon Apr 9 00:08:15 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Makefile.in (install): Turn off x bit on SYSCALLS.c.X. - - * i860.md (cmpeqsf, etc.): Change opcode name to pfeq.ss, etc. - - * tm-m68k.h (PRINT_OPERAND_PRINT_FLOAT): Delete spurious backslash. - - * c-decl.c (store_parm_decls): Don't do storedecls in prototype case. - That was discarding the enumerators already pushdecl'd. - - * gcc.c (exec_prefix, startfile_prefix): Record prefix search paths. - (find_a_file): New function to search a path. - (find_exec_file): Deleted; find_a_file used instead. - (find_file): Just call find_a_file. - (add_prefix): Add name to a prefix path. - (process_command): Call that. - - * gcc.c (spec_list): Generalize asm_spec, etc., to arbitrary names. - (set_spec): New function. Set the old specific vars and spec list. - (do_spec_1): Handle `%(' and `%[' for general specs. - - * ns32k.md (ashlhi3): Use %0, not %1. - - * cplus-tree.h (TREE_ANON_UNION_ELEM, DECL_ANON_UNION_ELEM): - regdecl_attr is now in decl, not common. - (TREE_PARMLIST): Use external_attr. - (TREE_VIA_PUBLIC): Use static_attr. - -Sun Apr 8 23:43:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * fold-const (fold): Two conversions in a row are needed if from a - pointer type to an integer type of a different precision. - - * flow.c (mark_used_regs): When replacing addition with register - in auto-increment creation, mark that insn must be re-recognized. - -Sun Apr 8 13:56:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tm-m68k.h (ASM_OUTPUT_FLOAT): Defn depends on CROSS_COMPILER. - (PRINT_OPERAND): Depends on CROSS_COMPILER and HOST_WORDS_BIG_ENDIAN. - (PRINT_OPERAND_EXTRACT_FLOAT, PRINT_OPERAND_PRINT_FLOAT): - These new subroutines contain the code that depends. - - * xm-m68k.h, xm-mips.h, xm-pyr.h, xm-tahoe.h (HOST_WORDS_BIG_ENDIAN): - New macro, defined in these files. - - * config.gcc: Define macro CROSS_COMPILE if making cross-compiler. - * Makefile.in (INTERNAL_CFLAGS): Include CROSS. - - * config.gcc: Decode -host argument. Set $host and $target. - Rename vars for files to link to, to tm_file, xm_file, etc. - Let $host override xm_file value. - Mention $host in messages and config.status if diff from $target. - Check for errors in args at beginning of processing. - - * expmed.c (expand_shift): Make no insns if count is 0. - - * cse.c (rtx_cost): Increase default cost of mult and div. - - * expmed.c (synth_mult): New function. Finds best way to multiply - by given constant, and the cost. - (expand_mult): Use that. - (init_expmed): Init new vars add_cost, shift_cost, mult_cost, - and negate_cost. mult_is_cheap has been deleted. - - * expmed.c (store_bit_field): Don't use insv if unit for copying - mem to reg won't hold the entire field. - -Sun Apr 8 12:54:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (expand_expr, case COND_EXPR): Add OK_DEFER_POP to path with - only OK_DEFER_POP. - -Sun Apr 8 12:50:54 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * i386.md (insv): Use SImode for operand 0. - -Sat Apr 7 15:24:56 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * emit-rtl.c (gen_lowpart, gen_highpart): When checking mode class, - check for not MODE_FLOAT. - * cse.c (fold_rtx): Likewise when avoiding x-x -> 0 for IEEE float. - * jump.c (jump_back_p): Likewise. - * optabs.c (emit_cmp_insn): Likewise, comparing result of libcall. - * expr.c (move_block_to_reg, emit_push_insn): Likewise, - when putting floats in memory. - - * machmode.def (PSImode, PDImode): Class is now MODE_PARTIAL_INT. - * expr.c (convert_to_mode): Don't treat them as ints. - - * fixincludes: When making directory links, assume any relative path - is within /usr/include. - -Sat Apr 7 14:56:27 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * function.c (assign_stack_local, assign_outer_stack_local): - Don't use division for rounding to avoid problems with negative - dividends; use logical operations instead. - No need to ever align stricter than BIGGEST_ALIGNMENT. - -Sat Apr 7 14:38:36 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expr.c (expand_expr, case CONSTRUCTOR:): Finish Jan 12 change - in store_expr by calling store_constructor if target is a temp. - - * cse.c (cse_insn): For regs invalidated by calls, go back to - checking for fp and ap explicitly, not fixed_regs. - -Sat Apr 7 14:06:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * recog.h: Define num_validated_changes and cancel_changes. - * recog.c (validate_change, apply_change_group, cancel_changes): - Support changes both within an insn and within a MEM. - -Sat Apr 7 00:45:49 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * sparc.md (addcc and subcc patterns): Set CC_NO_OVERFLOW. - -Fri Apr 6 15:20:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cccp.c (lookup_import): Return -1 for not found to agree with - the open system call. Use -2 for duplicate. - (do_include): -2 now means duplicate; previously, -1 meant not found - from open and duplicate from lookup_import. - -Fri Apr 6 00:06:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (poplevel): Use DECL_INITIAL to detect undef label. - - * sparc.md (peephole for returning sum): Use more restrictive preds. - - * reload1.c (choose_reload_regs): When testing reload reg - for HARD_REGNO_MODE_OK, use SImode instead of VOIDmode. - -Thu Apr 5 14:00:41 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cccp.c (main, include_defaults): Use STANDARD_INCLUDE_DIR - instead of /usr/include. - * Makefile.in (cccp.o): Specify STANDARD_INCLUDE_DIR. - - * varasm.c (assemble_variable): No sdb output for initialized global. - * toplev.c (compile_file): Output it here, at end of run. - - * stdarg.h (va_start): Round initial pointer value down - to double boundary. This is to eliminate big-endian adjustment. - - * fixincludes: Delete netinet/ip.h and sundev/vuid_event.h - if no changes are needed. - - * c-typeck.c (build_c_cast): Reject array types for result. - * cplus-typeck.c (build_c_cast): Likewise. - - * tm-*.h (ASM_OUTPUT_SKIP): Print size as unsigned. - (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Likewise. - - * fold-const.c (fold): Simplify double truncation, double extension, - or extension followed by truncation. - - * fixincludes: Don't ignore errors when making dirs. - But check whether dir already exists. - - * cse.c (fold_rtx): Don't simplify real*0, because of nans. - - * real.h (dconst0, dconst1, dconstm1): Declare them. - * tree.c (real_zerop, real_onep): New functions. - * fold-const.c (fold): Check for trivial +, -, * with reals. - Also use dconst0 instead of computing with REAL_VALUE_ATOF. - -Tue Apr 3 22:52:26 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * m68k.md (32-bit bit fields): Special patterns added. - (push byte and adjust stack by 2): New peephole. - These from Bruce Robertson. - - * c-decl.c (grokdeclarator): Complain if fn defn has `typedef' etc. - -Tue Apr 3 21:39:54 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (preexpand_calls): Reinsert check to not expand calls - already preexpanded. - -Mon Apr 2 07:05:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * c-typeck.c (digest_init): Don't blow up on null list. - - * Makefile.in (cc1obj): Link OBJC_OBJS instead of C_OBJS. - * objc-actions.c: Correct compilation errors. - * objc-parse.y: Likewise. - -Mon Apr 2 03:33:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * objc-actions.h: Define the objc tree codes. - Declare doing_objc_thang. - -Fri Mar 30 17:28:30 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * sdbout.c (PUT_SDB_EPILOGUE_END): Write out assembler name for - function (i.e., usually include leading "_"). - - * sdbout.c (PUT_SDB_...): Use new macro SDB_DELIM; it defaults to ";". - -Fri Mar 30 15:25:20 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * jump.c (prev_active_insn, next_active_insn): New functions. - These skip USEs and CLOBBERs. - (jump_optimize): Use them instead of ..._real_insn - for the simple optimizations. - - * integrate.c (expand_inline_function): Always index const_equiv_map - with regno from current function. And set up the map only after - creating all the pseudos we will need for the parms. - This requires intermediate tables parm_equivs and parm_copies. - Make const_equiv_map big enough to handle all the pseudos we - expect to make. Record actual size, and don't look in it - for regnos too large. - (subst_constants, const_equiv): Don't access const_equiv_map - if regno is too large. - - * function.c (trampoline_address): Push and pop obstacks around - call to assign_outer_stack_local. - - * function.c (push_function_context, pop_function_context): - Save and restore max_parm_reg and parm_reg_stack_loc. - * function.h (struct function): Make slots. - - * c-decl.c (c_build_type_variant): New function. - (grokdeclarator): Call that, for ARRAY_TYPE only, in fields and vars. - * c-decl.c, c-typeck.c: All calls to build_type_variant use that now. - - * emit-rtl.c (reinstate_emit_status): Unused function deleted. - -Thu Mar 29 15:35:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tree.c (rtl_in_current_obstack): New function. - * toplev.c (rest_of_compilation): Call that. - This makes it true that rtl is allocated in current_obstack - during optimization. - - * reload1.c (eliminate_frame_pointer): Scan equivalent addresses - of pseudo-regs, and eliminate frame-pointer there too. - (reload): Don't do this here. - - * c-decl.c (build_enumerator): Return pair of decl and value. - (finish_enum): Go through the list replacing decls with names. - - * function.c (fixup_var_refs): Eliminate all but first arg. - Use current sequence_stack, insn chain and rtl_expr_chain. - (put_var_into_stack): Don't pass those args. - If var is nonlocal, don't do it now; put it on fixup_var_refs_queue. - (pop_function_context): Do fixup_var_refs on vars queued up. - - * tree.c (function_maybepermanent_obstack): Make a separate - saveable obstack for each nested function level. - (init_tree): Init this variable. - (save_tree_status, restore_tree_status): Save and restore it. - Create and free a new obstack for the purpose. - (temporary_allocation, resume_temporary_allocation): Use this var. - (preserve_data, preserve_initializer): Use this var. - (make_node): Use this var for PARM_DECL nodes. - - * tree.c (push_obstacks): New name for push_obstack. - Additional arg specifies saveable_obstack. All calls changed. - (pop_obstacks): New name for pop_obstack. All calls changed. - - * config.gcc: Add `3300'. - (genix): Fix typo in name of makevar file. - * tm-mot3300.h, xm-mot3300.h: New files. - * math-3300.h: New file. - - * output.h: Fix typo in SDB_DEBUGGING_INFO. - - * tm-sun386i.h (LINK_SPEC): Moved here, and -static handled. - * xm-sun386i.h: Moved from here. - * tm-alliant.h (LINK_SPEC): Moved here, from xm-alliant.h. - - * tm-convex.h, tm-i860.h, tm-spur.h, tm-vax.h, tm-tahoe.h, tm-pyr.h: - Delete FIX_FRAME_POINTER_ADDRESS. - - * tm-sparc.h, tm-m88k.h: Turn off FIX_FRAME_POINTER_ADDRESS. - INITIAL_FRAME_POINTER_OFFSET could be written later. - - * tm-m68k.h, tm-ns32k.h, tm-alliant.h, tm-i386.h, tm-mips.h: - Define INITIAL_FRAME_POINTER_OFFSET. - - * toplev.c (compile_file): Remove .m and .cc suffixes, like .c. - - * final.c (end_final): For basic block profiling, don't output - source file name. Instead, append ".d", and remove ".c". - * gnulib2.c (__bb_init_func): New name for __bb_init_function. - Conditionalize on mc68000, not m68k. - Fix other typos. - -Wed Mar 28 16:07:15 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c, cplus-decl.c (duplicate_decls): Preserve DECL_FRAME_SIZE - from definition past subsequent declarations. - - * c-decl.c (xref_tag): If global_binding_level, make nodes permanent. - - * expmed.c (init_expmed): Set up mult_is_very_cheap. - (expand_mult): Never use shifts if mult_is_very_cheap. - - * expr.c (store_expr): When copying through new temporary, - allocate temporary first and use as target. - - * tm-m68k.h (HARD_REGNO_MODE_OK): Abort on VOIDmode. - - * reload1.c (fix_frame_pointer_address): New function. - (alter_frame_pointer_addresses): New arg INSN. Calls changed. - Use that function instead of macro FIX_FRAME_POINTER_ADDRESS - which is now obsolete. - (eliminate_frame_pointer): Use macro INITIAL_FRAME_POINTER_OFFSET - to initialize depth. Abort if that macro is missing. - - * expmed.c (store_bit_field): If loading MEM into a reg, use the - mode of the MEM if that is not BLKmode. - (extract_bit_field): Likewise. - - * tm-mips.h (STRUCTURE_SIZE_BOUNDARY): Changed from 16 to 8. - - * calls.c (expand_call): Handle STACK_BOUNDARY when using push insns. - - * function.c (assign_parms): Note how PUSH_ROUNDING affects stack - parm size. - -Tue Mar 27 19:40:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (poplevel): Output inline nested functions if needed. - * cplus-decl.c: Likewise. - - * i386.md (insv): New pattern added for the moment. - -Tue Mar 27 17:47:35 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * function.c (lookup_outer_static_chain): Deleted, no longer used. - (trampoline_address): RTL for trampoline, rather than its address, is - stored in trampoline list. - Just add entry to list; don't fill in the trampoline here. - (expand_function_end): Fill in any required trampolines here. - (expand_function_start): Move tail recursion entry to after - creation of display list; size computations come next. - -Tue Mar 27 14:09:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * m68k.md (movsi, movhi, movstricthi, movqi, movstrictqi): - Avoid both clr and st on volatile mem, but only on 68000. - (SImode store 0 recognizer): Likewise. - - * stor-layout.c (agg_mode): Don't consider PSImode, etc. - -Mon Mar 26 21:12:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * local-alloc.c (combine_regs): Only set suggested bit for first - register if multi-word quantity. - (find_free_reg): Look at suggested regs for first in set, then use - all available for subsequent regs. - -Mon Mar 26 15:01:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (start_enum): Don't lay out the type. - (finish_enum): Always lay it out, and always set the precision. - Change the type of the enumerators if int is too narrow. - - * tm-m68k.h (NOTICE_UPDATE_CC): addq and subq do update cc's - even if destination is an address register. - - * c-parse.y, objc-parse.y (check_newline): Call HANDLE_PRAGMA if def. - * out-next.c: New file. - (handle_pragma): New function. - * tm-next.h (HANDLE_PRAGMA): Define it. - - * Makefile.in (GNULIB2): New variable. - (gnulib2): Use it. - (gnulib2.portable): New name for old rule. - (install-headers): Split out part of install rule. - (INSTALL_HEADERS): New variable. - - * make-next: New file. - - * function.c (assign_parms): Get type from proper place. - internal_arg_pointer is now an arg. Compute arg_pointer_copied - from that. Fix typos. - (expand_function_start): Compute internal_arg_pointer here. - Fix typos handling incoming struct value address. - - * cccp.c (do_include): Ignore null strings found in stackp. - - * cccp.c (discard_comments): Handle backslash-newline. - -Mon Mar 26 07:18:58 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * function.h (temp_slot, temp_slot_level): Now saved by function.c. - * function.c (struct temp_slot): Move from stmt.c. - (push_function_context, pop_function_context): Save/restore temp slots. - (assign_parms): Pass type to locate_and_pad_parms. - (locate_and_pad_parms): Accept TYPE. - Don't need STACK_OFFSET. - (expand_function_start): Pass type to locate_and_pad_parms. - (init_function_start): Initialize temp_slot info. - * stmt.c (temp_slot, init_stmt_for_function, save_stmt_status, - restore_stmt_status): Delete temp_slot stuff from here. - -Sun Mar 25 20:21:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expr.c (emit_move_insn): Turn memory address checking back on, - but allow push_operand for x. - - * ns32k.md (movstrsi): If UTEK_ASM, output $0 operand in movsd. - (movsi): Handle UTEK_ASM like GNX_V3. - * out-ns32k.c (print_operand_address): Add UTEK_ASM conditionals. - * tm-merlin.h: New file. - - * tm-ns32k.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): - Use save and restore insns if no frame pointer. - - * cccp.c (handle_directive): Discard backslash-newline within <...>. - -Sat Mar 24 13:23:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * gcc.c (default_compilers): Add entry for .m files, for Objective C. - Always pass some -lang... option to cpp. - - * cccp.c (do_include): Support #import as well as #include. - (lookup_import, add_import, import_hash): New functions. - (main): Handle options -lang-c++ and -lang-objc and -lang-c. - Set variables cplusplus and objc. - (enum node_type, directive_table): Add #import. - (handle_directive): Treat #import as undefined unless objc is nonzero. - (initialize_builtins): If objc, define __OBJC__. - - * Makefile.in (lang-objc, cc1obj): New targets. - (objc-parse.o, objc-parse.c, objc-actions.o): New targets. - (C_OBJS): Add c-lang.o. - - * objc.gperf: New file. - * objc-parse.y, objc-actions.c, objc-actions.h: New files. - - * c-lang.c: New file. - * c-decl.c (c_decode_option): New name for lang_decode_option. - Used from c-lang.c and objc-actions.c. - - * toplev.c (compile_file): Call lang_init and lang_finish. - * c-lang.c, objc-actions.c, cplus-decl.c: Define those functions. - - * c-typeck.c (comptypes): Call maybe_objc_comptypes for record types. - * c-lang.c, objc-actions.c (maybe_objc_comptypes): New functions. - - * c-decl.c (implicitly_declare, finish_decl, finish_struct): - Call maybe_objc_check_decl before rest_of_decl_compilation. - * c-lang.c, objc-actions.c (maybe_objc_check_decl): New functions. - - * function.c (assign_stack_local): Align each slot only as needed. - Normally don't round size up, just align first. - New argument ALIGN specifies alignment, or 0 for that of MODE. - All callers changed. - (assign_outer_stack_local): Likewise. - * final.c (final_start_function): Round frame size to STACK_BOUNDARY. - - * function.c (assign_stack_temp, preserve_temp_slots): - (free_temp_slots): Moved from stmt.c. - - * stmt.c (expand_decl): Use convert_units to avoid overflow. - -Fri Mar 23 00:52:34 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (grokdeclarator): Warn if array element is incomplete. - - * varasm.c (assemble_variable): Use convert_units to compute - size in bytes. - (output_constructor): Likewise, for non-bit fields. - - * c-typeck.c (check_format, my_strchr): New functions. - (build_function_call): Call check_format. - * c-decl.c (lang_decode_options): Handle -Wformat. - * c-tree.h (warn_format): New flag. - - * xm-hp9k320.h (USE_C_ALLOCA): Define if not compiling with GCC. - -Thu Mar 22 23:35:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (get_parm_info): Void parm is special only if no name. - - * loop.c (may_not_optimize): Static var replaces local `may_not_move'. - (strength_reduce): Don't accept those regs as givs. - -Thu Mar 22 06:45:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * integrate.c (expand_inline_function): Compute delta to frame - from the address at which it was allocated. - -Wed Mar 21 17:36:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * recog.c: Increase number of changes saved for validate_change. - (validate_change): If INSN == 0 and in group, add to group; if not, - always OK. - (apply_change_group): If INSN == 0, change is always OK. - - * cse.c (cse_basic_block): If extending block, don't call - cse_end_of_basic_block with null insn if we got to end of function. - -Wed Mar 21 14:08:35 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * calls.c (expand_call): Don't reuse pending_stack_adjust for argblock - if inhibit_defer_pop. - - * expr.c (push_block): New argument EXTRA. All callers changed. - (emit_push_insn): Use that for the padding when using push_block. - - * tm-sparc.h (FUNCTION_ARG, FUNCTION_INCOMING_ARG): - Only word-aligned BLKmodes can go in registers. - (FUNCTION_ARG_PARTIAL_NREGS): Likewise. - * tm-spur.h (FUNCTION_ARG, FUNCTION_INCOMING_ARG): Likewise. - * expr.c (expand_call): If encounter a stack parm before offset - gets up to zero, make it zero. - * function.c (assign_parms): Likewise. - - * ns32k.md (stack adjust insn): Don't use cmpd or cmpqd on Sequent. - * tm-sequent.h (SEQUENT_ADJUST_STACK): Define this. - - * make-hp9k320g (AR): Define it. - * Makefile.in (gnulib): Use OLDAR. - (OLDAR): New variable. - - * make-iris: New file. - - * xm-iris.h: Undef alloca before defining it. - - * Makefile.in (stage1, ...): Always copy gnulib, never link. - - * cccp.c (main): Use -d...M... as option for macro dump. - * gcc.c (default_compilers): Pass -d* to cpp. - -Tue Mar 20 01:41:49 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-parse.y (datadef): Error message fix. - * cplus-parse.y: Likewise. - -Mon Mar 19 15:26:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * integrate.c (expand_inline_function): Save static chain value. - (copy_rtx_and_substitute): Substitute it where called function - copies its static chain. - * emit-rtl.c (init_emit_once): Make static_chain_incoming_rtx - distinct. - - * function.c (current_function_contains_functions): New variable. - (init_function_start): Initialize it. - (pop_function_context): Set it to 1. - * integrate.c (function_cannot_inline_p): - Don't inline fn with nested fns. - - * integrate.c (copy_rtx_and_substitute): Don't replace fp - as destination of assignment. - - * assert.h (__assert) [not __GNUC__]: Rename arg to avoid stringify. - - * function.c (expand_function_start): If struct_value_incoming_rtx - is 0, get the address from first parm reg or first stack slot. - (assign_parms): In that case, skip the space it occupies. - - * calls.c (expand_call): If STRUCT_VALUE is 0, pass address as parm - even if that means using a register. - -Mon Mar 19 07:43:46 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * integrate.c (function_cannot_inline_p): Check for non-ANSI varargs - as well as ANSI varargs. - Allow inlining of functions with large frames now that we can share - them between inlined functions. - (expand_inline_function): Save static vars in case we were called - recursively. - Make sure we don't free temporary stack slot used for argument. - - * tree.def: Add new code types '<', '1', and '2' for comparison, - unary arith, and binary arith, resp. Change some 'e' types to those. - * expr.c (init_comparisons): Delete fn. - (expand_expr): Handle X ? A binop B : A with copy and conditional op. - In X ? A : B, if A and B both simply, do with only one jump. - Remove existing test for things like x = y | (a == b). - (preexpand_calls): Handle new code types for expressions. - * optabs.c (init_optabs): No longer call init_comparisons. - * fold-const.c (operand_equal_p): No longer static. - Ignore NON_LVALUE_EXPR. - Only require constants if new operand ONLY_CONST is non-zero. - (fold): Treat tree code types '<', '1', and '2' as 'e'. - Handle cases where an arithmetic operation is applied to a compound, - conditional, or comparison operation by distributing the arithmetic - operation inside the compound, conditional, or comparison operation. - Update calls to operand_equal_p. - Convert A ? B : B to (A, B). - * expmed.c (make_tree): No longer static. - * tree.h: Define new macro TREE_CODE_CLASS. - Define extern make_tree. - * print-tree.c (prtypeinfo): New new macro TREE_CODE_CLASS. - (dump): Use new macro and treat types '<', '1', and '2' as 'e'. - * cplus-lex.c (init_lex): Likewise. - * tree.c (make_node, copy_node): Ditto. - -Mon Mar 19 00:05:50 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * gcc.c (main): Trap SIGPIPE. - -Sat Mar 17 13:09:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * jump.c (jump_optimize): Also delete no-op insns to store bit fields. - - * sparc.md (patterns for addcc, subcc, andcc, andncc, orcc, orncc): - (and xorcc, xorncc): Use arith32_operand as predicate. - -Fri Mar 16 15:19:21 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tm-vms.h (NO_DOLLAR_IN_LABEL): Define this. - - * function.c (assign_parms): Use INIT_CUMULATIVE_INCOMING_ARGS - if that is defined. - - * c-decl.c (duplicate_decls): `static' always prevails, for functions. - * cplus-decl.c (duplicate_decls): Likewise. - - * sparc.md (patterns for andncc, orncc, xorncc): - Delete `%' from constraint. - (patterns for addcc, andcc, orcc, xorcc): Use symmetrical predicates. - (peephole for returning sum): Likewise. - -Thu Mar 15 22:02:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expmed.c (expand_mult_add): Handle either x or mult having VOIDmode. - Always pass both args to type_for_mode. - - * expmed.c (extract_bit_field, store_bit_field): - When changing mode of a reg to SImode, also do big-endian correction. - Consistently use BYTES_BIG_ENDIAN to decide how bits are numbered. - Fix stray ref to CODE_FOR_extzv in case for extv. - - * c-typeck.c (build_unary_op): Allow function type args to `!', - since they convert to pointers. - * cplus-typeck.c (build_unary_op): Likewise. - -Thu Mar 15 06:30:21 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (convert_to_mode): Don't copy constant to register. - Use GET_MODE_CLASS instead of integer_mode_p. - (integer_mode_p): Delete obsolete fn (only use above). - - * loop.c (product_cheap_p): Don't crash if no insns need to multiply; - that case is cheap. - -Thu Mar 15 02:11:34 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * regclass.c (init_reg_sets_1): Set n_non_fixed_regs. - * loop.c (scan_loop, strength_reduce): Set threshold from num of regs. - -Wed Mar 14 19:31:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * integrate.c (function_cannot_inline_p): Allow BLKmode parms. - Allow address of aggregate parm. - (expand_inline_function): Create and maintain const_equiv_map - and const_age_map. Increment const_age at basic blocks. - Don't substitute constant values for parm regs; - instead, call try_constants for each insn copied. - When structure_value_addr in't 0, check aggregate_value_p too. - Round size of parm_map up. - Don't init inline_fp_rtx unless it is used. - Don't use emit_move_insn when copying a SET insn. - (copy_rtx_and_substitute): Handle inline_target being used when 0. - Don't build a SUBREG of a CONST_INT. - For PLUS of constant, do plus_constant whether mem address or not. - Set up inline_fp_rtx if we need it. - Clear RTX_UNCHANGING_P in all MEMs. - (try_constants, subst_constants): New functions. - (access_parm_map): No big-endian offset for BLKmode parms. - Do change_address if mode doesn't match. - (const_equiv): New function. - (try_fold_cc0): Use that function. - In "small win" case, extract CODE_LABEL out of LABEL_REF for emit_jump. - (output_inline_function): Set return_label to 0. - - * recog.c (cancel_changes, num_validated_changes): New functions. - -Tue Mar 13 17:30:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * recog.c (constrain_operands): Define `V' constraint. - -Tue Mar 13 17:10:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cplus-lex.c (operator_name_string, init_lex): Cast enums to ints - to avoid errors from some C compilers. - - * cplus-init.c (expand_aggr_vbase_init): Make declarations consistent. - -Sun Mar 11 18:37:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * ns32k.md (movsi): Flush spurious arg to abort. - - * Makefile.in (gnulib.portable, stamp-gnulib2): Ignore error in ranlib. - -Sat Mar 10 19:38:36 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * function.h: Add new fields temp_slots and temp_slot_level. - * stmt.c (struct temp_slot): New structure. - (init_stmt_for_function): Initialize temp slot info. - (save_stmt_status, restore_stmt_status): Save and restore temp slots. - (expand_asm_operands): Remove redundant assignment to LAST_EXPR_TYPE. - Free any temporaries made. - (assign_stack_temp, preserve_temp_slots, free_temp_slots): New fns. - (expand_expr_stmt): If last expression had a value (i.e., in ({..}) - grouping), maybe preserve temporaries. - (expand_return, tail_recursion_args): Free any temporaries allocated. - (expand_start_bindings): Push temporary stack level. - (expand_end_bindings): Pop temporary stack level. - (expand_decl): Use kept temporary slots for automatic variables. - Free temporary slots after computing size. - (expand_decl_init, expand_cleanups, expand_end_case): Free any - allocated temporaries. - * calls.c (expand_call): Use assign_stack_temp instead of - get_structure_value_addr. - Make a new temporary level while expanding a call and free - temporaries as soon as we know they aren't going to be reused. - (store_one_arg): Free any temporary slots made for arg being stored. - * function.c (get_structure_value_addr): Delete fn. - (init_function_start): No longer initialize structure value addr. - * integrate.c (expand_inline_function): Use temporary slot for - inlined function's frame. - Free temporaries needed while evaluating arguments. - * expr.c (expand_assignment, do_jumps): Free temps no longer needed. - (store_expr): Don't check for structure value addr. - (save_noncopied_parts, expand_expr): Call assign_stack_temp - instead of assign_stack_local. - (preexpand_calls): No longer special-case fns returning structures. - * c-typeck.c (c_expand_asm_operands): Free any temporaries made. - * cplus-typeck.c (c_expand_asm_operands): Ditto. - * cplus-decl2.c (finish_file): Ditto. - * cplus-init.c (expand_aggr_init_1): Ditto. - * cplus-type2.c (make_merged_ref): Preserve result and free - other temporaries. - * cplus-parse.y (stmt): Free any temporaries in EXCEPT clause. - -Sat Mar 10 16:07:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * loop.c (other_reg_use_p): New name for only_reg_use_p. - Return 0 if IN == EXPR. - (check_eliminate_biv): Re-invert the test using other_reg_use_p. - -Fri Mar 9 18:34:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * optabs.c (init_optabs): Handle PSImode insns. - -Fri Mar 9 18:24:11 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * local-alloc.c (local_alloc): Clear qty_phys_sugg and _has_sugg - when doing loop, not just when doing bzero. - Add new vars qty_phys_copy_sugg and _has_copy_sugg. - (block_alloc): Rework detection of possible tied registers to use - extracted insn operands rather than trying to parse operands from - RTL description. - Don't tie registers if output has earlyclobber. - For REG_NO_CONFLICT, check commutativity of expression in REG_EQUAL, - rather than of operation of attached insn. - If insn is a simple copy, pass that info to combine_regs. - (combine_regs): For multi-word items, mark all registers actually - used as preferred. - If the insn is a simple copy, record hard reg suggestions in - qty_phys_copy_sugg instead of qty_phys_sugg. - (find_free_reg): Correctly check for all registers used. - If qty_phys_has_copy_sugg is non-zero, use that register set. If - none of them couldn't be allocated, try the other suggest set if - it exists. - -Thu Mar 8 02:17:50 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * jump.c (jump_optimize): Detect tablejumps that always go to - the same place, and change to unconditional jumps. - - * fold-const.c (fold): Simplify comparison of integer value with self. - - * rtl.h (FUNCTION_FLAGS...): Additional flag bits for saving - current_function_returns_pointer, and several others. - (FUNCTION_PRETEND_ARGS_SIZE): New component in inline header. - * integrate.c (save_for_inline): Record these flags. - (output_inline_function): Get them out again. - Also restore current_function_args_size and ..._pretend_... - - * ns32k.md (movsi, movdi): Handle floating point registers. - - * dbxout.c (dbxout_prepare_symbol): New function, output N_SOL stab. - (dbxout_symbol, dbxout_parms, dbxout_reg_parms): Call it. - * final.c (output_source_file): New function. - - * reload.c (find_reloads_toplev): Do BYTES_BIG_ENDIAN offset - only within a word. - - * stdarg.h: Use _VA_LIST_ as macro to indicate already loaded. - - * fixincludes: Supply missing semicolon in netinet/ip.h. - - * tm-alliant.h (FUNCTION_PROLOGUE): Use `linkl' on 68020. - - * regclass.c (init_reg_sets): For subunion, keep largest candidate. - -Wed Mar 7 00:37:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * emit-rtl.c (in_sequence_p): New function. - - * expr.c (expand_builtin): For BUILT_IN_SAVEREGS, insert after - the initial NOTE insn. - - * dbxout.c (dbxout_finish_symbol): New argument is a decl or 0. - Output line number in desc field. - All callers changed to pass the argument. - - * tree.h (TREE_PUBLIC): Move back to tree_common. - - * dbxout.c (dbxout_init): Output working dir in a N_SO symbol. - - * expr.c (emit_library_call): Handle PUSH_ROUNDING. - - * explow.c (break_out_memory_refs): Use same mode as the MEM has. - - * out-mips.c (output_load_immediate): Let the assembler do the work. - -Tue Mar 6 22:20:49 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cccp.c (macroexpand): Fix bug in scanning strings for stringify. - - * stmt.c (expand_goto_internal): Adjust stack after cleanups. - (expand_end_bindings, fixup_cleanups): Likewise. - - * tm-alliant.h (STATIC_CHAIN_REGNUM): Use 10. - -Tue Mar 6 15:23:11 1990 Jim Kingdon (kingdon at pogo.ai.mit.edu) - - * config.gcc: Accept srcdir & vint with either '-' or '+'. - - * c-parse.y (hash, is_reserved_word): Use __inline so it can - be compiled with `gcc -traditional'. - -Tue Mar 6 14:52:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * c-parse.y (compstmt): Don't return null tree for empty group. This - will cause the compiler to dump core on a ({}) construct. - * cplus-parse.y (compstmt): Ditto. - -Tue Mar 6 14:33:42 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tree.h (TREE_STATIC): Move back to common. - -Tue Mar 6 06:04:30 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * function.h (expr_stmts_for_value): New field. - * stmt.c (init_stmt_for_function): Initialize vars for expression - statements. - (save_stmt_status, restore_stmt_status): Save and restore value of - expr_stmts_for_value. - - * cse.c (record_jump_equiv): Ensure previous insn is an INSN before - testing it (it might be a NOTE). - -Tue Mar 6 00:26:20 1990 Richard Stallman (rms at geech) - - * tm-ns32k.h (NOTICE_UPDATE_CC): Use abort in case - that shouldn't happen. - -Mon Mar 5 23:11:57 1990 Richard Stallman (rms at geech) - - * Makefile.in (cplus-tab.h): Say expect 12 reduce/reduce conflicts. - - * genoutput.c (output_prologue): Include insn-attr.h. - - * pyr.md (addsi3, mulsi3, umulsi3, andsi3, iorsi3, xorsi3): - Make input arg predicates symmetrical. - (adddi3, anddi3, iordi3, xordi3): Likewise. - (addsi3): Use immediate subtract if suitable. - -Sat Mar 3 21:08:25 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (move_block_to_reg, emit_push_insn): Don't treat double 0.0 - as two words of zero. - Handle DImode constants as two integers. - Support CONST_INT (currently only called with const0_rtx). - - * expr.c (convert_move): Can only use slt if STORE_FLAG_VALUE == -1. - -Sat Mar 3 15:03:00 1990 Richard Stallman (rms at geech) - - * function.c (setjmp_protect_args, setjmp_args_warning): New functions. - * toplev.c (rest_of_compilation): Call setjmp_args_warning. - * c-decl.c (finish_function): Call setjmp_protect_args. - - * flow.c (regno_clobbered_at_setjmp): Argument registers - are in effect set at start of function. - - * tm-sparc.h (ASM_OUTPUT_DOUBLE): Replace missing line. - - * print-tree.c (prtypeinfo): Don't check DECL-only - flags for other nodes. - - * toplev.c: Eliminate `#ifdef 0'. - - * dbxout.c (print_int_cst_octal): New function. - (dbxout_type): Use that for long long types. - - * Makefile.in (start.encap, rest.encap): Split all.internal. - - * tahoe.md: Adjust formatting. - - * tahoe.md (ashlsi3, lshlsi3): Don't clobber a const_int. - Instead, use %s to convert shift count to multiplier. - * tm-tahoe.h (PRINT_OPERAND): Handle %s. - - * tm-tahoe.h (CONST_COSTS): Specify cost of MULT. - -Fri Mar 2 01:00:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cse.c (rtx_cost): By default, multiply and divide are expensive. - - * expmed.c (expand_mult_add): Use type_for_mode. - Allow ADD to have a different mode. - * c-typeck.c (type_for_mode): New function. - (get_floating_type): Function deleted. - * cplus-typeck.c: Likewise. - - * jump.c (jump_optimize): Simplify `if (x) goto foo; else goto foo;'. - -Thu Mar 1 17:41:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * out-mips.c (tree_code_name): Declaration deleted. - - * stmt.c (expand_expr_stmt): No "no side effects" warning for (void)0. - - * assert.h (__assert): Don't call abort; use 0 as value. - * gnulib2.c (__eprintf): Call abort here. - - * c-decl.c (pushdecl): Don't warn if shadowing error_mark_node. - - * optabs.c: Use GET_MODE_WIDER_MODE instead of INC_MODE. - - * machmode.def: Set up next-wider-mode for floating modes. - -Wed Feb 28 18:58:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * stmt.c (expand_goto_internal): Add missing stack adjust. - (expand_fixup): Don't do stack adjust if fixup isn't for current pos. - - * stmt.c (expand_start_stmt_expr, expand_end_stmt_expr): No need to - save result from start_sequence in RTL_EXPR. - - * stmt.c (expand_end_loop): Correctly see if NOTE_INSN_LOOP_CONT - was written. - - * stmt.c (expand_decl): Omit move to OLDADDR if it would be noop. - - * expr.c (expand_expr): Don't use variable TYPE in subblocks that - hides TYPE at function level. - - * expr.c (force_operand): Always generate PLUS for constant. - Use negate_rtx to negate constant. - - * expr.c (expand_expr): Ensure that type is not wider than - HOST_BITS_PER_INT when assuming that constant is entirely in - TREE_INT_CST_LOW. - Simplify EXPAND_SUM code for PLUS_EXPR and MINUS_EXPR. - Call preexpand_calls at binop instead of all places that branch to it. - - * expmed.c (expand_shift): Skip widening try for rotates; avoid - passing UNSIGNEDP == -1 to expand_binop. - - * expr.c (expand_builtin): Use a sequence instead of reorder_insns. - - * tree.c (save_expr): Ignore NON_LVALUE_EXPRs. - Mark as TREE_VOLATILE so won't be inadvertently deleted. - (build): Special-case LENGTH == 1 also. - -Wed Feb 28 12:57:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expr.c (convert_move): Handle conversions to and from PSImode. - - * stor-layout.c (layout_type): For integer types, don't consider - PSImode, etc. - - * expmed.c (init_expmed): Typo: test was backwards. - - * Makefile (install): When installing $${eachfile}, use basename. - -Tue Feb 27 14:48:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tree.h (struct tree_common): Delete certain attributes. - external, public, static, nonlocal, regdecl, inline. - (struct tree_decl): Insert them here. - - * combine.c (try_combine): Avoid generating nested SUBREGs for - operands when handling case where I2 or I1 is a SUBREG assignment. - Never combine with an insn that sets a register to itself if it has - a REG_EQUAL note. - (subst): Correct errors in changing (minus (x) (c)) to (plus (x) (-c)). - Recompute CODE before second switch. - Case NOT: in second switch failed to set undobuf.storage. - (gen_lowpart_for_combine): Don't allow multi-word modes; do allow - null conversions. - -Tue Feb 27 07:13:17 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (try_combine): Don't combine when doing so would - replace destination that is being modified, as opposed to replaced. - - * function.c (fixup_var_refs_1): Rework to correctly support - bit-field insns that don't allow memory operands. - Correctly detect insns that simply copy a variable to or from a - register. - (optimize_bit_field): Use a sequence rather than reorder_insns. - * Makefile.in (function.o): Update dependancies. - - * recog.h: Delete obsolete insn_machine_info. - - * function.c (assign_parms): Use move_block_from_regs to place - first part of parameter partially in registers into memory. - -Mon Feb 26 19:02:56 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * fixincludes: Find only .h files when looking for headers. - - * function.c (expand_function_start): Save arg ptr reg - if there are nonlocally-referenced parms. - -Fri Feb 23 13:21:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-parse.y (readescape): For x, avoid overflow when shifting in if. - -Thu Feb 22 19:14:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * fixincludes: Delete directories before creating them. - When making internal symbolic directory links, chase - chain of existing links to the end. - - * dbxout.c (dbxout_type): Always use main variant (until - there is code to report the distinctions usefully). - -Wed Feb 21 13:20:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * math-68881.h (hypot): New function. - - * optabs.c (expand_binop): Swap operands if that makes modes match. - - * expr.c (expand_expr): For ARRAY_EXPR, when converting to - multiplication and addition, use type of index for product. - - * gcc.c (LIB_SPEC): Link with -lg if -g specified. - * tm-isi68.h, tm-next.h, tm-sparc.h, tm-sun3.h, tm-sun386i.h: Likewise. - * tm-mips.h (LIB_SPEC): Override to avoid using -lg. - - * toplev.c (main): Warn for -g if not supported. - - * c-decl.c (grokdeclarator): Do pedantic checks for const functions - where function decls and variant function types are made. - -Mon Feb 19 20:06:48 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * optabs.c: Restore Feb 13 change. - - * varasm.c (readonly_data_section): New fn. - (assemble_variable, get_or_assign_label, output_constant_pool): - Use new fn instead of text_section. - * final.c (end_final): Write profiling table to read-only section. - (get_attr_length, shorten_branches): Address vectores take no space - if not in text section. - Vectors are in operand 0 for ADDR_VEC but 1 for ADDR_DIFF_VEC. - (final_scan_insn): Merge cases for ADDR_VEC and ADDR_DIFF_VEC. - Put vector tables in read-only section. - -Sun Feb 18 13:58:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * gnulib2.c (__shtab): New vector. - * Makefile.in (LIB2FUNCS): Add that member. - - * *tahoe*: New versions of these files. - - * optabs.c: File was deleted. Copied last backup. - Feb 13 change lost. - - * tm-sparc.h (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT): Handle nans. - Don't output more digits than the numbers have. - * tm-sun3.h (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT): Likewise. - (ASM_OUTPUT_DOUBLE_OPERAND): Don't output excess digits. - - * m68k.md (movqi): Don't use clrb or st if dest is volatile. - - * expmed.c (expand_mult): Don't use sum of shifts if mult is cheaper. - (init_expmed): Set mult_is_cheap based on rtx_cost. - * toplev.c (compile_file): Call init_expmed. - * cse.c (rtx_cost): Not static. - - * tm-mips.h (ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_INTERNAL_LABEL): - Start name with $. - - * tm-alliant.h, tm-convex.h, tm-hp9k3bsd.h, tm-news.h, tm-seq386.h: - * tm-sequent.h, tm-spur.h, tm-sun2.h, tm-tahoe.h, tm-vax.h: - (LIB_SPEC): Put in -lc with appropriate alternatives. - - * toplev.c (rest_of_compilation): - Clear rtx_equal_function_value_matters just before final. - - * cccp.c (rescan): If don't find paren after macro, back up over space. - -Sat Feb 17 20:58:21 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tm-hp9k320.h (CPP_SPEC): Remove _INCLUDE__STDC__. - -Wed Feb 14 09:06:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * loop.c (struct movable): Add SET_DEST and SET_EQUAL fields. - (single_set): New fn. - (scan_loop, force_movables, move_movables, consec_set_invariant_p): - Use new fn to look for insns that contain a single set. - Use new fields in struct movable. - (scan_loop, strength_reduce): Pass number of registers to - strength_reduce. - (libcall_benefit): New fn. - (scan_loop, strength_reduce, consec_sets_giv): Use it. - (skip_consec_insns): Correctly count insns to be skipped when - NOTEs are present. - (combine_movables): In some cases, combine regs that load CONST_INTs - even if the modes of the destination differ. This requires starting - the inner loop from the start of the movable list. - Use find_reg_note to search for notes. - Don't choose a use of an equivalence instead of the insn that sets - the register directly (hence setting up the equivalence). - Set DONE for the matched movable to ensure it isn't duplicated. - (replace_call_address): No longer used. - (move_movables): When moving a LIBCALL block where the address of - the fn is in a register, emit an insn to move the actual address - in case the original move was CSE'ed out of the block. - Emit AND insn via expand_binop instead of explicit RTL. - Search for matching from start of list, not from movable being matched. - If mode of combined movables differ, use SUBREG to replace narrower. - (replace_regs): Don't replace register if it is the destination. - (count_nonfixed_reads): Mem ref is fixed if addres is loop invariant. - (can_jump_into_range_p): Speed up common cases. - (count_loop_regs_set): Do same thing for parts of PARALLEL as when - they occur standalone. - (struct induction): Delete fields forces, forces2, and consec. - Store dest and src reg rtx instead of register number. - Add new fields always, cant_derive, combined_with, maybe_dead, and - derive_adjustment. - (struct iv_class): Add new fields initial_test, init_set, incremented. - (all strength reduction routines): Use single_set and use new - struct induction fields; forces is no longer used. - (record_biv): New fn. - (strength_reduce): Use it. - (record_initial, valid_initial_value_p): New fns. - (strength_reduce): Scan for bivs in loop order. - Refine handling of maybe_never. - A reg isn't a biv if it is never incremented. - Use note_stores and record_initial to correctly note all changes - to a biv's register prior to the start of the loop. - We may know biv's initial value if it was tested NE before the loop. - Use new valid_initial_value_p. - Ensure giv's insn is the last in a LIBCALL block or if consec. - Don't set maybe_never on jump back to top of loop. - Don't delete any insns setting givs; flow will eliminate them as - dead. Ditto for biv updates when biv can be eliminated. - If giv's last use is in a computation of another giv, mark that it - might be dead. - Make two passes over givs. In first pass, handle non-matched - givs. In second pass, handle the matched givs. - (only_reg_use_p): Now static. - (delete_insn_forces): Fn deleted; no longer used. - (update_giv_derive): New fn. - (strength_reduce): Call it for every insn and label. - (record_giv): If giv never used, ignore it. - (basic_induction_var): Always set *MULT_VAL to something. - A set of a biv from an invariant MEM is allowed. - (simplify_giv_expr, expr_cost): New fns. - (general_induction_var): Rewrite to use them. More types of - expressions are now recognized as givs. - Use results produced by update_giv_derive to ensure that giv derivation - works correctly when spanning biv update. - (consec_sets_giv): Can allocate temporary induction struct on stack. - Skip insns that set irrelevant items between two updates to giv. - (gen_iv_mult, emit_iv_init_code): Replace with emit_iv_add_mult. - (update_reg_last_use): New fn. - (emit_iv_add_mult): Call it for all operands. - (express_from, combine_givs_p, combine_givs): New fns. - (strength_reduce): Call them to combine givs. - (product_cheap_p): Rewrite to handle more cases. - Free any memory allocated. - (get_condition): New fn. - (strength_reduce, check_dbra_loop): Use it. - (check_dbra_loop): Use emit_move_insn instead of writing explicit SET. - Use emit_cmp_insn/emit_jump_insn to write out replacement test. - (check_eliminate_biv): Use single_set. - Refine test for insns that use biv only to calculate giv. - Return non-zero if can eliminate biv; don't set eliminable. - (can_eliminate_biv_p): Remove some duplicate code and allow - all constants in some cases where only CONST_INT was allowed. - Don't replace biv with giv that might be dead. - (eliminate_biv): Compute whether to put an invariant before insn - in which the biv is being eliminated or at the start of loop. - Allow more types of constants. - Don't replace biv with giv that might be dead. - Use validate_change when substituting into insn. - (strength_reduce): Change calls to check_eliminate_biv and - eliminate_biv. Call the former again after maybe_dead has possibly - been set on some givs. - -Tue Feb 13 19:58:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tree.c (function_obstack): New variable. - (init_allocation): Init it to temporary_obstack. - (save_tree_status): Save it, make new obstack for it. - (restore_tree_status): Free new obstack, restore old. - (temporary_allocation, resume_temporary_allocation): Use that one. - * function.h (struct function): Slot for saved function_obstack. - * tree.c (push_obstack, pop_obstack): New functions. - These implement a stack for obstack selection. - * function.c (put_var_into_stack): If var is nonlocal, - switch to obstacks of the function it is in. - -Tue Feb 13 17:52:15 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * optabs.c (emit_no_conflict_block): During reload, don't do - any encapsulation or add notes. - Allow single insn or no insns in sequence. - -Tue Feb 13 12:51:45 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stor-layout.c (build_int): Increase limits of cache size. - - * sdbout.c (sdbout_symbol): Force output of symbol's type. - -Tue Feb 13 08:28:37 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * toplev.c (rest_of_compilation): Don't skip compilation of function - if TREE_INLINE but no saved insns (e.g., if not -O). - - * rtlanal.c (replace_rtx): New function. - * rtl.h: Define it. - -Tue Feb 13 00:02:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (finish_struct): Lay out any existing array types - of newly completed struct. - (layout_array_type): New subroutine. - -Mon Feb 12 11:33:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * function.c (assign_parms): If not -O, keep all parms in memory. - - * expr.c (clear_pending_stack_adjust): Ignore TREE_INLINE if not -O. - - * out-i386.c (output_fix_trunc): New function. - (fp_pop_int): Re-enabled. Handle more modes, individually. - (print_operand): Handle %D. - * i386.md (fix_truncdfdi2, fixuns_truncdfdi2): New patterns. - These changes from James Van Artsdalen. - - * gnulib2.c (__builtin_vec_delete): Use __builtin_delete, not free. - - * sdbout.c (sdbout_field_types): Do look through pointer types. - -Sat Feb 10 19:31:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * sdbout.c (plain_type_1): Don't output tag until known. - (sdbout_one_type): Don't record tag in KNOWN_TYPE_TAG until end. - Reenable output of member types before original structure. - - * expr.c (expand_expr): Convert post-inc to pre-inc if result ignored. - -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. - -Fri Feb 9 18:26:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (cse_insn): Suppress infinite loop when associating - operations in cases where a reg, R, is equal to "R OP const1" and - we are looking at "R OP const2" for some associative operator OP. - -Thu Feb 8 14:19:41 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (build_enumerator): Pedantic warning if value not an int. - Access default value after checking for constant specified, - as it should no longer be possible to have NON_LVALUE_EXPR - in the default. - - * c-typeck.c (default_conversion): Don't truncate wide enums. - - * tm-hp9k320.h (CPP_SPEC): Define _INCLUDE__STDC__ if not traditional. - * tm-hp9k310.h (CPP_SPEC): Likewise. - -Wed Feb 7 12:59:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * emit-rtl.c (emit_insns_before): New fn. - (init_emit_once): Add uses of new macros to support static chain - passed in memory. - * calls.c (prepare_call_address): Rework to set static chain for - languages that have EPmode function addresses and for nested - functions in C. - Emit USE insn for static_chain_rtx into list of USE insns to be - placed later. - (emit_call_1): USE_INSNS is now a list of insns, not a SEQUENCE. - (expand_call): Remove gratuitous forcing of FUNEXP to Pmode (it - might have been EPmode). - Make USE_INSNS a list, rather than a SEQUENCE. - Use prepare_call_address to emit load into static chain. - * expr.c (emit_library_call): Update call to prepare_call_address. - * function.c (expand_function_start): Use incoming static chain rtx - instead of outgoing form (was correct in one place, wrong in one). - * stmt.c (expand_goto): Set static_chain rtx after stack pointer - in case it uses the stack pointer. - Only write one USE for stack_pointer_rtx. - -Tue Feb 6 17:26:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * jump.c (jump_optimize): Suppress optimization of `if (...) x = 1; - else {...} if (x) ...', when a label is present between the - assignment to X and the unconditional jump. - -Mon Feb 5 23:22:30 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (try_combine): If I2 or I1 is a PARALLEL, ignore only - CLOBBER parts when combining. Previously used to ignore USE parts - also but the latter can indicate that the insn needs some setup that - isn't shown in its rtl. - -Mon Feb 5 13:32:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * vax.md (addhi3, addqi3): Fix typo checking for dec insn. - - * cccp.c (struct file_buf): New field `nominal_fname' is name spec'd - in #line command; `fname' is name of actual input file. - Many functions now use or set this field as well or instead. - - * c-decl.c (grokdeclarator): Fix missing paren. - -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. - - * loop.c (move_movables): Skip USE insns when checking for - the insn that loads the address of a library function. - - * combine.c (combine_instructions): Compute total_distrib_*. - - * final.c (final): Do basic block profiling at end of function. - (final, final_scan_insn): Run CC_STATUS_INIT after block profiling. - (final_scan_insn): Detect cond jumps that use PARALLEL. - -Sun Feb 4 00:04:22 1990 Richard Kenner (rms at sugar-bombs.ai.mit.edu) - - * function.c (assign_stack_local): Use plus_constant to avoid - PLUS when offset is zero. - (assign_outer_stack_local): Ditto. - -Sun Feb 4 00:04:22 1990 Ron Guilmette (rms at sugar-bombs.ai.mit.edu) - - * explow.c (fix_lexical_addr): Fix typo. - - * tree.c (build_type_variant): Special handling for protoize. - - * protoize.c: New file. - - * toplev.c (flag_gen_aux_info): Define it. - (f_options): Recognize the flag. - (compile_file): Open and close the aux_info file. - - * flags.h (flag_gen_aux_info): Declare it. - - * c-typeck.c (comptypes): Handle equivalent variant types for protoize. - - * c-decl.c (implicitly_declare): Call gen_aux_info_record. - (start_decl, store_parm_decls): Likewise. - (pushdecl): For protoize, distinguish different names for same type. - (grokdeclarator): For protoize, don't always get main variant. - (finish_function): Take the main variant here. - - * c-aux-info.c, SYSCALLS.c: New files. - - * Makefile.in (proto, protoize, unprotoize): New targets. - (protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize): More new. - (c-aux-info.o): Also new. - (STAGESTUFF): Add protoize, unprotoize. - (install): Install protoize, unprotoize and SYSCALLS.c.X. - -Sat Feb 3 17:09:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-typeck.c (digest_init): Allow conversion of array exp to pointer. - Constructors with types are simply expressions, so don't treat as - initializers. - - * Makefile.in (uninstall): New target. - - * Makefile.in (include/README): Target deleted. - (include): Deleted. - (INSTALL): Create include dir here. - - * Makefile.in (all.internal): Enable compiling cc1plus. - (lang-cplus): New target. - (*.o): Add some missing dependencies. - (STAGESTUFF): Add cc1plus. - -Fri Feb 2 18:21:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * tree.c (decl_function_context): Don't abort when passed ERROR_MARK. - -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 19:32:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-parse.y (yylex, skip_white_space): CR is not whitespace. - -Thu Feb 1 17:18:33 1990 Richard Kenner (kenner at sugar-bombs.ai.mit.edu) - - * tm-m68k.h (PREFERRED_RELOAD_CLASS): Never return DATA_REGS for - ADDR_REGS, even for QImode. - - * cse.c (cse_insn): If source equivalent is not in table, but - source is, put equivalent in same class as source. But do not - do this if the destination has a STRICT_LOW_PART. - (cse_main): Call init_recog instead of init_recog_no_volatile. - -Thu Feb 1 17:18:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Makefile.in (cplus-tab.c, cplus-tab.h): Renamed from cplus-parse.*. - (TAGS, realclean): Renamed these files. - (cplus-decl2.o, cplus-type2.o, cplus-search.o): New targets. - (cplus-except.o, cplus-expr.o): New targets. - (new-method.o): Target deleted. - (CPLUS_OBJS): Add and delete object files. - (CPLUS_TREE_H): Change header names. - (INTERNAL_CFLAGS): Set the MERGED flag. - - * calls.c (expand_call): Flush junk in assign of CONTEXT. - - * expr.c (expand_expr): LOOP_STMT is just an infinite loop. - Handle EXIT_STMT. - * tree.def (EXIT_STMT): Change meaning: exit if expression is true. - * stmt.c (warn_if_unused_value): Do nothing for EXIT_STMT. - -Thu Feb 1 14:10:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * optabs.c (emit_no_conflict_block): Accept optional expression - to be placed in REG_EQUAL note on last insn emitted. - Just emit insns if TARGET is not a register. - (expand_binop, expand_unop): Change calls. - -Thu Feb 1 01:03:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tree.def (NON_LVALUE_EXPR): New tree code. - * fold-const.c (non_lvalue): No longer static. - Make NON_LVALUE_EXPR. Do nothing if arg certainly not lvalue. - * c-typeck.c (build_c_cast): Call non_lvalue. - (default_conversion, build_function_call, actualparameterlist): - (build_binary_op_nodefault, truthvalue_conversion, build_modify_expr): - (convert_for_assignment, digest_init): Strip NON_LVALUE_EXPR from args. - (build_unary_op, build_modify_expr): No longer need to check for - NOP_EXPR that indicates not an lvalue. - (build_compound_expr, build_c_cast): Don't strip NON_LVALUE_EXPR - * expr.c (expand_expr, do_jump): Handle NON_LVALUE_EXPR. - * c-decl.c (build_enumerator, grokdeclarator): Strip them. - * c-parse.y (case label): Strip them. - - * limits.h (INT_MIN): Define so it has type `int', not unsigned. - (CHAR_MIN, SCHAR_MIN, SHRT_MIN): Put arens around value. - - * reload1.c (inc_for_reload): Forget reg_last_reload_reg - for the reg being inc'd. - -Wed Jan 31 17:37:53 1990 Michael Tiemann (rms at sugar-bombs.ai.mit.edu) - - * cplus-*: New files. - - * tree.def (TARGET_EXPR): New name for NEW_EXPR. - * tree.c (simple_cst_equal): Change NEW_EXPR to TARGET_EXPR. - - * stmt.c (estimate_case_costs): Check all nodes against ASCII range. - - * stmt.c (warn_if_unused_value): Delete obsolete node types. - - * recog.c (validate_change): Fix one-off bug testing recog_memoized. - - * local-alloc.c (local_alloc): Initialize qty_phys_reg. - - * fold-const.c (non_lvalue): Propagate TREE_LITERAL, TREE_VOLATILE. - - * expr.c (expand_expr): Delete DELETE_EXPR. - Call lang_expand_expr for any unknown tree code. - Handle IF_STMT, LOOP_STMT, LET_STMT for real. - - * dbxout.c (dbxout_type): Output args for method type. - Treat OFFSET_TYPE as int if not using GDB extensions. - -Wed Jan 31 17:32:35 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * stmt.c (node_has_high_bound, node_has_low_bound): - Use integer_one_node, not new node. - - * expr.c (do_jump): In comparisons against zero, used unsigned, rather - than signed, extensions, as that is more likely to be the faster one. - -Wed Jan 31 14:09:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * toplev.c (rest_of_compilation): Ignore TREE_INLINE if not -O. - - * out-mips.c (mips_prologue): Handle big stack frames > 2**16. - - * tree.h (struct tree_type): Rename `max' field to `maxval'. - (TYPE_MAX_VALUE, TYPE_OFFSET_BASETYPE, TYPE_METHOD_BASETYPE): - Use new name. - - * reload1.c (reload): Reject fixed regs when spilling large groups. - - * c-decl.c (start_function): - Optionally warn if non-proto defn without previous prototype. - - * Makefile.in: New rule to make .../include subdir. - New rule to run fixincludes into it. - Rule `install' depends on them. - - * assert.h (assert) [no NDEBUG]: Split into versions with/out __STDC__ - (_assert) [__STDC__]: Pass expression and file separately to _eprintf. - (_assert) [not __STDC__]: Likewise, but implemented differently. - * gnulib2.c (__eprintf): Handle 3 args plus format string. - - * tm-i386.h (STACK_BOUNDARY): Define it. - -Tue Jan 30 16:24:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * Makefile.in (install): Fix typo in name of varargs file. - - * combine.c (try_combine): Don't allow combine to violate machine's - alignment restriction. - -Sun Jan 28 03:53:28 1990 Michael Tiemann (tiemann at rio) - - * stmt.c (warn_if_unused_value): Don't warn for LOOP_STMT, IF_STMT, - or LET_STMT. - - * toplev.c (compile_file): Code to mention symbol that was not - written to asm file is now #if 0'd out. What good is it telling the - debugger about a symbol it cannot see? - - * dbxout.c (dbxout_type): Change METHOD_TYPE print character from - '@' to '#'. Also, don't try to output CONST_DECLs. GDB doesn't - understand them, and they don't have DECL_OFFSETs. - - * sparc.md (floatsidf2): Changed constraint from "rfm" to "rm" for - second operand. - - * toplev.c (lang_expand_expr): New variable is pointer-to-function - which expands language-specific tree codes. Its default is - `fancy_abort'. - -Sat Jan 27 10:18:44 1990 Michael Tiemann (tiemann at rio) - - * gcc.c (main): Initialize COMPILERS before calling - `validate_all_switches'. - - * tree.c (decl_{type,function}_context): Handle LET_STMT. - - * stmt.c (expand_decl_cleanup): New function. - - * stmt.c (expand_decl): No longer takes CLEANUP parameter. - All callers changed. - - * tree.c (build_{loop,if,goto,compound}, etc): Turn these tree - constructors back on. - - * tree.def: Delete DELETE_EXPR, PUSH_EXPR, POP_EXPR. - - * c-typeck.c (max): New macro. - - * c-decl.c (maybe_build_cleanup): New function. - - * tree.c ({value,purpose}_member): New functions. Returns first - element of LIST that matches respective components with ELEM. - - * varasm.c (first_global_object_name): Variable defined. - -Sat Jan 27 23:31:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reload1.c (reload): Reject fixed regs when completing group of 2. - -Fri Jan 26 17:28:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (do_jump): Don't use CONST0_RTX when value to be tested is - CONST_INT. - -Fri Jan 26 13:39:01 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * gcc.c (main): Warn about bad switches at beginning, not at end. - -Thu Jan 25 22:03:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * loop.c (general_induction_var): Reject widening multiply. - - * cccp.c (grow_outbuf): Always return 0. - -Thu Jan 25 07:04:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (subst): Correctly reference length in - (zero_extract (zero_extend ... )) combinations. - - * c-decl.c: Define warn_traditional. - (build_enumerator): Remove NOP_EXPRs from default value also. - - * fold-const.c (fold): Strip NOP_EXPRs when looking for constants. - -Thu Jan 25 01:57:34 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Makefile.in (install): Clear execute bit for nonexecutable files. - - * i860.md (andsi3): Truncate xop2 constant to 16 bits. - -Wed Jan 24 22:32:47 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * genemit.c (main): Include output.h in insn-emit.c. - * genpeep.c (main): Similar. - * genrecog.c (main): Ditto. - * Makefile.in (insn-emit.h, insn-peep.h, insn-recog.h): Add dependancy. - -Wed Jan 24 20:13:08 1990 Richard Stallman (rms at albert.ai.mit.edu) - - * cccp.c (do_define): Report error for duplicate macro args. - -Mon Jan 22 07:52:28 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reload1.c (alter_reg): Rework change of January 7th to allow - for no previous insn and clear equivalence information of correct - pseudo. - -Mon Jan 22 01:22:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * fold-const.c (fold): Don't simplify non-lvalue to an lvalue. - (non_lvalue): New fn; makes a NOP_EXPR with readonly flag. - * c-typeck.c (build_unary_op, build_modify_expr): Reject such. - -Sun Jan 21 20:53:49 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-typeck.c (lvalue_p): Don't call language_lvalue_valid. - Don't bother with looking for NEW_EXPR or REFERENCE_TYPE. - (language_lvalue_valid): Deleted. - -Sat Jan 20 19:50:15 1990 Michael Tiemann (mtiemann at apple-gunkies.ai.mit.edu) - - * expr.c (expand_expr): Implemented language-independent expansion - for NEW_EXPR. - -Thu Jan 18 14:29:10 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. - -Thu Jan 18 12:50:09 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * emit-rtl.c (gen_lowpart): Verify CONST_DOUBLE is integer mode. - (gen_highpart): Add support for CONST_INT and CONST_DOUBLE. - - * recog.c (general_operand): Don't allow nested SUBREGs. - (nonmemory_operand, memory_operand, register_operand): Ditto. - - * emit-rtl.c (gen_reg_rtx): Don't allow creation of pseudos - during or after reload. - -Thu Jan 18 11:41:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-typeck.c (actualparameterlist): -Wconversion warns if - representation or width is changed. - -Thu Jan 18 01:09:47 1990 Michael Tiemann (mtiemann at apple-gunkies.ai.mit.edu) - - * dbxout.c (various places): Don't assume that DECL_NAME of a - PARM_DECL is non-zero. It might be empty for anonymous parms. - -Thu Jan 18 00:06:58 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * local-alloc.c (local_alloc): qty_phys_sugg is now an array of - HARD_REG_SETs. Initialize new variable qty_phys_has_sugg. - (block_alloc): Don't test for nonlocal gotos here. - Test qty_phys_has_sugg instead of qty_phys_sugg to see if - quantity needs early allocation. - (qty_compare, qty_compare_1): No longer consider whether a quantity - has a hard register suggestion as part of its priority. - (combine_regs): We now record multiple hard register suggestions - in qty_phys_sugg. - (find_free_reg): Test here for nonlocal gotos. - Support new meaning of qty_phys_sugg by restricting to those - registers if just_try_suggested. - Check for no registers available prior to looping over registers. - - * global-alloc.c (prune_preferences): New fn. - (global_alloc): No longer keep a single vector of which registers - someone prefers; instead keep this record one per allocation number. - Record registers not saved over calls as already used for register - allocation purposes, so we can feel free to allocate them with no - cost. - Call new fn to prune preferences and build list of registers - preferred by earlier allocnos. - find_reg no longer gets preference information as argument. - (find_reg): Don't take preferred registers as argument; get the - info from global variables. - (set_preference): Remove regs_someone_prefers. - (dump_conflicts): Print register preferences in dump file. - -Wed Jan 17 16:00:59 1990 Michael Tiemann (mtiemann at apple-gunkies.ai.mit.edu) - - * tree.c (decl_function_context): New function, returns the - innermost DECL_CONTEXT of FNDECL when that context is a - FUNCTION_DECL. - * tree.c (decl_type_context): New function, returns the - innermost DECL_CONTEXT of FNDECL when that context is a - TYPE_DECL. - * All callers changed to use `decl_function_context' when handling - nested functions. - * All C++ callers changed to use `decl_type_context' when handling - member functions. - - * expr.c (fixed_type_p): New function says whether the compiler - guarantees that it knows the true type of an object. - * expr.c (expand_expr): Call that function for INIT_EXPR and - MODIFY_EXPR. Also, for MODIFY_EXPR, check both RHS and LHS. - - * tree.h (DECL_ARG_TYPE): Use INITIAL, not ARGUMENTS slot in - `tree_decl. Now reserving ARGUMENTS slot for VAR_DECL and - PARM_DECL for language-specific features. - - * tree.c (build_decl): Don't set DECL_PRINT_NAME by default. - - * assert.h: Assume that undefined __GNUC__ implies `assert' must - rely on printf. - -Wed Jan 17 15:31:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cccp.c (rescan): If traditional, end preproc number after expt sign. - -Wed Jan 17 15:18:25 1990 Michael Tiemann (mtiemann at apple-gunkies.ai.mit.edu) - - * stmt.c: Extended struct nesting to hold exception handling - contours. New functions: - - expand_start_try, expand_end_try, in_try_block - expand_start_except, expand_end_except, in_except_block - expand_start_catch, expand_end_catch, expand_catch_default - expand_raise, expand_escape_except, in_exception_handler - -Wed Jan 17 13:48:01 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cccp.c (main): Typo, had `includes' for `include'. - Always increment p. - - * reload1.c (alter_reg): Delete spurious `break'. - - * local-alloc.c (block_alloc): Delete ref to undef var first_time. - -Wed Jan 17 13:35:47 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu) - - * toplev.c: Unmerge all changes of Bryan Boreham--no papers (yet). - -Wed Jan 17 12:33:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stor-layout.c (layout_type): Struct requires BLKmode if any field - crosses a word boundary. - -Wed Jan 17 12:04:18 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu) - - * stor-layout.c (layout_type): Unterminate comment terminated. - - * tree.c (lvalue_p,lvalue_or_else): Remove these functions from this - file. - * c-typeck.c (lvalue_p,lvalue_or_else): Put them in this file. - -Wed Jan 17 00:46:24 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (pushdecl): Delete garbage accidentally added before. - - * tree.c (set_identifier_size): SIZE is size in bytes. - * tree.c (get_identifier): If `set_identifier_size' has not been - called, abort. - * c-decl.c (init_decl_processing): Don't call `set_identifier_size' - from here. - * c-parse.y (init_lex): Call `set_identifier_size' from here. - - * varasm.c (force_const_mem): Save DESC's label on the - saveable_obstack. (Note, saveable is misspelled.) - - * listing: New file. - -Tue Jan 16 20:43:55 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-typeck.c (convert_sequence): Put in #if 0. - -Tue Jan 16 17:25:43 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu) - - * toplev.c: Merged Bryan Boreham's undumping code. - - * print-tree.c (dump): Handle TREE_VEC. - - * varasm.c (output_constant_pool): When done, set FIRST_POOL, - LAST_POOL to zero. - - * varasm.c (first_global_object_name): New variable. Records the - name of the first global declaration (variable or function) whichi - is written to the assembly file. - - * tree.h (tree_code_name): Add declaration. - -Tue Jan 16 17:06:29 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * local-alloc.c (block_alloc): Make an initial pass to try to - allocate registers that have suggested hard registers. - (find_free_reg): Add new argument to only try suggested hard register. - -Tue Jan 16 15:54:06 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu) - - * tree.h (tree_vec): Added. - - * tree.def (IDENTIFIER_NODE): Default length is 2. - * tree.def (TREE_VEC): Define it. - * tree.def ({NEW_,DELETE_,REFERENCE_}EXPR): fixed comments. - - * tree.c (preserve_initializer): New function. Like - `preserve_data', but saves nodes on momentary_obstack as well. - * tree.c (make_tree_vec): New function. Allocates a TREE_VEC node. - * tree.c (copy_node): Support added for TREE_VEC. - * tree.c (build_parse_node): New function. Builds tree node on - TEMP_DECL_OBSTACK. - -Tue Jan 16 15:23:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.h: Eliminate definitions of andcb_optab and expand_bit_and. - * expmed.c (expand_bit_and): Eliminate function. - (store_fixed_bit_field, extract_fixed_bit_field, expand_divmod): - Replace expand_bit_and with call to expand_binop. - * expr.c (expand_expr): Handle TRUTH_AND_EXPR and BIT_AND_EXPR - as normal binary operations. - (do_store_flag): Replace expand_bit_and with expand_binop. - * optabs.c (expand_binop, init_optabs): Eliminate andcb_optab. - - * expmed.c (expand_shift): Don't use extzv for rotate. - If all three tries at a shift operation failed, delete the - insns made during the last try. - Handle failure of extzv operation. - Call protect_from_queue before convert_to_mode for op1. - -Tue Jan 16 10:38:28 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu) - - * tree.c: Added temp_decl_obstack for building declarators without - needing to use permanent_obstack at top level. - * tree.c (init_tree): Init temp_decl_obstack. - * tree.c (permanent_allocation): Free nodes allocated on - temp_decl_obstack. - * tree.c (build_decl_list,decl_tree_cons): New functions. Like - `build_tree_list' and `tree_cons', but for building on - temp_decl_obstack. - * tree.c (build1): New function. Builds tree node for unary tree - node kinds; doesn't use varargs. - * tree.c (simple_cst_equal): Interface changed to return 1 if - arguments are equal, 0 if not, and -1 if arguments were not - understood by the function. - * tree.c (build_{method,offset}_type): TYPE_*_BASETYPE is the - TYPE_MAIN_VARIANT of BASETYPE. - -Mon Jan 15 01:50:51 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cexp.y (exp): Accept unary +. - - * Makefile.in (hard-params): Compile with GCC. - (hard-params.o): Likewise, and depend on the GCC executables. - - * tm-sparc.h (CONST_COSTS): Give 1, not 0, for immed consts. - -Sun Jan 14 14:38:10 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu) - - * stmt.c (estimate_case_costs): New function. Case code no longer - assumes that all case values are equally likely for all types. In - particular, when the type of argument for the switch statement does - not look like it is not ASCII text, we assume that it might be, and - assign a weight to its value based on frequency distribution of - characters in ASCII text. - * stmt.c (balanace_case_nodes): If case values look like ASCII text, - then use the cost table. Otherwise, do not. Using the cost table - means that the otherwise almost-balanced binary tree may be skewed - in hopes of picking up common values more quickly than just - log(n). This is done at the direct expense of the less common - values, which will be reached at more than log(n). - * stmt.c (emit_case_nodes): If using COST_TABLE and the most likely - case value is on one side of the tree or another, hand-pick boundary - tests so that condition codes can be reused (if possible). - * stmt.c (expand_end_cast): If optimizing, and the type of - ORIG_INDEX is not an enumeral type, then call `estimate_case_costs.' - -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 12:17:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * recog.c (next_insns_test_no_inequality): Return 1 at end of rtl. - - * expr.c (store_expr): No special handling for constructor - unless value is going in struct value block. - - * stor-layout.c (layout_type): Use common nodes for sizes of ptrs, fns. - (make_signed_type, make_unsigned_type): Create those nodes. - (layout_record): Just ignore VAR_DECL if not static. - -Thu Jan 11 14:09:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (lang_decode_option): Decode -Wtraditional. - * c-decl.c (implicitly_declare): Warn if extern decl previously seen. - * c-typeck.c (c_expand_start_case): Warn if switch exp is long. - - * c-typeck.c (actualparameterlist): Optionally warn on truncation. - * toplev.c (main): Handle -Wconversion. - - * cccp.c (skip_if_group): Skip strings even if -traditional. - (handle_directive): Likewise, when handling copy_command. - -Thu Jan 11 14:15:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (cse_insn): Only check for REG_EQUAL notes and make - REG_EQUAL notes instead of REG_EQUIV notes. - * explow.c (force_reg): Make REG_EQUAL note instead of REG_EQUIV - note. Check for and reuse old note if present. - * local-alloc.c (block_alloc): Convert REG_EQUAL to REG_EQUIV for - constant when register is only set once. - * loop.c (combine_movables, move_movables): Check for REG_EQUAL notes - instead of REG_EQUIV notes. - * optabs.c (expand_binop): Correct typo in writing REG_EQUAL note. - (emit_no_conflict_block): Suppress REG_NO_CONFLICT notes for - non-registers. - -Thu Jan 11 14:09:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * i860.md (movsf): Ensure F to f is reloaded via r. - - * expr.c (expand_increment): Don't call stabilize. - -Wed Jan 10 15:03:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (duplicate_decls): If old fn decl follows new ellipsis decl, - warn only if pedantic. - - * loop.c (loop_skip_over): Do nothing if don't find expected compare. - -Tue Jan 9 21:31:46 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * jump.c (jump_optimize): Don't delete USE and CLOBBER insns. - The later call to find_equiv_reg can malfunction if CLOBBERs are - deleted. - -Mon Jan 8 17:48:20 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * gcc.c (link_command_spec): Always check gnulib both first and last. - -Mon Jan 8 17:07:25 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * optabs.c (expand_unop): Perform multi-word logical negation one - word at a time. - (expand_binop, expand_unop): Insert REG_EQUAL note on last insn of - multi-insn sequence. - Use TARGET_PIECE instead of TARGET in multi-word logical operations. - (emit_no_conflict_block): New fn. - (expand_binop, expand_unop): Call it. - (gen_add2_insn, gen_sub2_insn): Abort if operands do not match those - of the predicates for the appropriate generators. - - * expr.h: Fix typo and define emit_no_conflict_block. - -Mon Jan 8 15:33:19 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * rtl.h (REG_UNSET): Fix the code. - * rtl.c (reg_note_name): Add REG_UNSET. - - * c-decl.c (struct binding_level): parm_flag now 2 for def, 1 for decl. - (declare_parm_level): New parm distinguishes them. All calls changed. - (pushdecl): Don't warn about shadowing with parm name in fn decl. - -Mon Jan 8 15:15:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (cse_basic_block): Allow NOTEs between LOOP_BEG and jump to - end test. - (predecide_loop_entry): Accept JUMP_INSN rather than LOOP_BEG NOTE. - - * reload1.c (gen_input_reload): When adding constant to register, - move the constant into the output, then add the register, rather than - the other way around. - -Mon Jan 8 12:20:26 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-parse.y (components): Don't allow to be empty. - (component_decl): Special cases if empty, to call shadow_tag. - Recognize the semicolon here. - (component_decl_list): No semicolon here. - - * c-decl.c (shadow_tag): Print warning if nameless structure defined. - -Sun Jan 7 19:09:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * varasm.c (output_constant): Use size of machine mode - to choose how to output the constant. - - * varasm.c (immed_real_const_1): Detect 1 as well as 0. - - * reload1.c (reload): When deleting reg_equiv_init insn, - also delete the prev insn if it is no longer needed. - - * real.h (REAL_VALUE_FROM_CONST_DOUBLE, CONST_DOUBLE_FROM_REAL_VALUE): - New macros. - - * reload.c (find_reloads_address_1): Preserve original X value - in case we replace it with new memory reference. - - * optabs.c (expand_binop): Handle case of no previous insns. - - * jump.c (jump_back_p): Check for floating point if not IEEE. - - * global-alloc.c (dump_global_regs): Break the line occasionally. - - * flow.c (mark_used_regs): Recognize post-decrement properly. - It looks like (plus REG -CONST), not (minus REG CONST). - Also, patch out old insn as a note in the usual way. - - * calls.c (emit_call_1): Arg to RETURN_POPS_ARGS is FUNTYPE itself. - - * expr.c (STACK_PUSH_CODE): New macro, which config.h can override. - (gen_push_operand): Use it. - (emit_push_insn): Reverse padding if pushing is post-increment. - (expand_expr): For MINUS, sign-extend negated value. - - * emit-rtl.c (init_emit_once): Initialize new variables - fconst1_rtx, dconst1_rtx, dconst0, dconst1, dconstm1. - - * cse.c (fold_rtx): For COMPARE and MINUS, test for floating zero arg. - Also handle equal floating args if FLOAT_NOT_IEEE. - For NEG, eliminate silly temp var. - For MULT and DIV, handle more cases with floating point. - Change division by floating constant into multiplication. - - * config.gcc: Add i386-mach. - * xm-i386.h: Use built-in alloca if compiling with GCC. - - * Makefile.in (c-parse.tab.o): Delete -o switch. - (cexp.o): Put in explicit command. - - * combine.c (record_dead_and_set_regs): Ignore stack pushes. - -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. - - * 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) - - * optabs.c, expr.h: All use of umul_optab deleted. - * gnulib.c (__umulsi3): Deleted. - - * gcc.c (link_command_spec): If LIBS_COMPILED_WITH_GCC, gnulib is last. - - * Makefile.in (INTERNAL_CFLAGS): New parameter. - (ALL_CFLAGS): New variable, replaces CFLAGS when compiling. - (HOST_CFLAGS): Define from ALL_CFLAGS. - - * Makefile.in (insn-*.o, cccp.o, others): Use CPPFLAGS. - - * Makefile.in (gnulib): Add null command. - -Fri Jan 5 08:11:20 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (subst): When applying De`Morgan's law, compute NOT - of constant. - - * integrate.c (save_constants, restore_constants): Clean up fns - by passing in a pointer to an rtx so that insns can be modified - in place. - (save_for_inline): Change call to save_constants. - Apply save_constants to REG_NOTES. - (expand_inline_function): Use emit_move_insn instead of generating - an explicit SET. - Apply copy_rtx_and_substitute to REG_NOTES. - (output_inline_function): Change call to restore_constants. - Apply restore_constants to REG_NOTES. - -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. - -Thu Jan 4 22:48:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (insert_regs, insert, use_related_value): Don't assume REG is - first in class. - (HASH): Handle register with HASHREG macro for speed. - (insert): No longer need equivalence_only. - Use COST macro. - (use_related_value): No longer need to check for valid address. - (find_best_addr): New function. - (fold_rtx): Remove copyflag argument and replace with insn. - Check for common cases before making recursive call. - Call validate_change to ensure change is valid, but always return - simplified expression. - Replace operand with folded operand, or constant operand, whichever - is cheaper and is valid. - Call find_best_addr for MEMs. - (fold_cc0): Add insn operand to pass to calls to fold_rtx. - (cse_insn): Rework to enumerate all possible equivalences and replace - source with cheapest valid. - Simplify associative operations with constants where an operand is - equivalent to the same operation with another constant. - Use validate_change for all changes. - -Thu Jan 4 17:58:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stmt.c (expand_end_loop): Put NOTE_INSN_LOOP_CONT at top by default. - - * c-typeck.c (actualparameterlist): - Convert parmnum to origin-1 to print. - - * Makefile.in (USER_H): Add float.h. - -Wed Jan 3 00:27:53 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * gnulib.c (__extendsfdf2): Delete unused var. - - * reload1.c (alter_reg): Undo big-endian conversion from - assign_stack_local. - - * calls.c (store_one_arg): Round size up for move_block_to_reg. - (expand_call): Round up when emitting USE insns. - * function.c (assign_parms): Round size up for move_block_from_reg. - - * Makefile (install): Use nested foreach-loop to expand va*.h. - -Tue Jan 2 16:01:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * mips.md (call_value): Ignore calls to __builtin_saveregs. - - * tm-mips.h (STARTING_FRAME_OFFSET): Change from -8 to 0. - (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Use new fns in out-mips.c. - * out-mips.c (prologue_looks, mips_prologue, mips_epilogue): New. - - * gnulib2.c: Everything except arithmetic support moved from gnulib.c. - * Makefile.in (LIB2FUNCS, LIBFUNCS): Likewise. - -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) - - * Makefile.in (includes): Set variable LIB. Run from `./'. - -Wed Dec 27 18:54:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * reload1.c (eliminate_frame_pointer): Special case for reg = reg2+fp. - - * loop.c (can_eliminate_biv_p, eliminate_biv): If add_val non zero, - it must be a constant or register. - -Wed Dec 27 18:11:23 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. - -Mon Dec 25 16:32:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * emit-rtl.c (emit_note_before): New function. - * stmt.c (expand_end_loop): Output NOTE_INSN_LOOP_CONT if none. - ** Above change turned off. - -Mon Dec 25 00:02:31 1989 Torbj|rn Granlund (tege at zevs.sics.se) - - * tm-pyr.h (CONST_COSTS): Define more optimal costs. - - * 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. - - * tm-pyr.h (CONST_DOUBLE_OK_FOR_LETTER_P): Don't accept any - special constraint chars, since we don't use any. - - * tm-pyr.h (CONSTANT_ALIGNMENT): Correct comment. - - * out-pyr.c (weird_memory_memory): Flush decl of unused variables. - - * 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 12:01:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (finish_struct): Ok to define nameless union in parms. - * c-typeck.c (compparms): Allow union vs its member's type, - but only if same size & union is nameless. - (comptypes): In that case, for a parm, prefer the member's type. - (actualparameterlist): Nameless union parm casts all its memb types. - - * integrate.c (copy_decl_tree, copy_parm_decls): Set TREE_INLINE. - * c-decl.c (pushdecl): No shadow-warning if TREE_INLINE is set. - - * dbxout.c (current_sym_code): Declare as enum; avoid warnings. - -Sat Dec 23 10:54:22 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * combine.c (subst): Under NOT, move it inside AND and IOR. - Under XOR, move NOT out. - - * toplev.c (set_target_switch): Handle multiple entries for one name. - - * ns32k.md (adjust stack): Distinguish processor subtype at run-time. - (extract byte from register): Likewise. - * tm-ns32k.h (TARGET_32532, TARGET_32332): New target options. - * tm-encore.h, tm-sequent.h (TARGET_DEFAULT): Default them. - -Fri Dec 22 20:33:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Makefile.in (all): Move above where make-MACHINE is inserted. - (all.internal): Definition of `all' indirects through this. - (GNULIB): Variable allows rule for gnulib to be redirected. - (gnulib.portable): Name for the standard rule for gnulib. - - * tm-mips.h (ASM_OUTPUT_SOURCE_FILENAME): New macro. - (REG_CLASS_SUBUNION, REG_CLASS_SUBCLASSES, REG_CLASS_SUPERCLASSES): - Obsolete macros deleted. - -Thu Dec 21 16:20:00 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * fold-const.c (fold): Bug taking assignments out of conversions: - Use language-independent method. - - * reload1.c (alter_reg): - Always do big-endian correction on slot address. - - * i386.md (float push recognizers): Don't pop fpreg if not dead. - -Wed Dec 20 10:54:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * assert.h: Cast value to void. - -Tue Dec 19 09:42:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * gcc.c (link_command_spec): Put %l first. - -Tue Dec 19 08:59:43 1989 Richard Kenner (rms at sugar-bombs.ai.mit.edu) - - * genattrtab.c (get_attr_value): Initialize has_asm_insn field when - making a new attr_value. - -Sun Dec 17 12:06:37 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-typeck.c (digest_init, process_init_constructor, store_init_value): - Give error for each invalid element seen in an initializer. - New arguments say whether context wants error messages. - * c-parse.y (cast_expr): Pass new args. - * Unfortunately, this doesn't do the job, since the whole initializer - is parsed before any is digested. - - * c-decl.c (duplicate_decls): Source loc of definition is - more important than that of declaration. - - * cccp.c (include_defaults): On unos, also search /include. - - * m68k.md (movsi, movhi, store-0 recognizer): Conditional for CRDS. - (mulhi3, mulhisi3, umulhi3, umulhisi3): Add % and CRDS conditional. - (zero-extend recognizers): Put % before period in clr insns. - (divide and modulus recognizers): Likewise for and, ext, swap and div. - (dbra recognizers): Likewise for sub and clr insns. - (tablejump recognizer): Conditional for CRDS. - * tm-crds.h, xm-crds.h: New files. - - * gcc.c (read_specs): Don't include trailing newline in data - read from specs file. - (skip_whitespace): Empty line is a delimiter in specs data. - - * cccp.c (grow_outbuf): Change value back to int. - - * cse.c (cse_end_of_basic_block): Fix unterminated comment. - - * cccp.c (main): Add `.C' as known suffix for deps output. - - * expr.c (do_jump): Cast vector length to int in case will subtract. - - * tm-att386.h (ASM_OUTPUT_LOCAL): Revert last change: put it data seg. - - * reload.c (decompose): Make a separate case for SUBREG. - - * Makefile.in (HOST_RTLANAL): Define like HOST_RTL. - (genattrtab): Use that to get at rtlanal.o. - ($(HOST_PREFIX_1)rtlanal.o): New rule for cross-compilation. - (STAGESTUFF): Typo in stamp-attrtab.c. - - * tm-hp9k320.h (CPP_PREDEFINES): Add __hp9000s300, _HPUX_SOURCE. - - * stupid.c (reg_order): Make it int, in case reg # is large. - (stupid_reg_compare, stupid_life_analysis): Implement this. - - * gnulib2.c (__floatdidf): Define WORD_SIZE. - - * flow.c (find_basic_blocks): Don't clobber stack if no basic - blocks. - -Sat Dec 16 12:38:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * loop.c (can_eliminate_biv_p, eliminate_biv): Check in case - neither side of a compare is the biv by itself. - (check_eliminate_biv): Test of only_reg_use_p was backwards. - (general_induction_var): If V is 0 and G is not, - combine additive terms with plus_constant, provided - either one of them is an integer. - Check both operands of a sum for being givs in their own right. - (strength_reduce): When eliminating a biv, don't mung insns that use - it via a giv that will be handled later. - (loop_skip_over): Duplicate an endtest that takes several insns. - - * 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. - - * m68k.md (all shift patterns): Require register_operand for ops 0, 1. - - * reload1.c (alter_reg): - Don't set spill_stack_slot_width if from_reg is -1. - - * cse.c (cse_main): Delete local redef of flag_cse_follow_jumps. - - * reload1.c (new_spill_reg): Fatal error if fixed reg is spilled. - (order_regs_for_reload): Make sure all the regs are in spill_regs. - - * mips.md (movsf): Fix wrong opcode moving genreg to fpreg. - - * toplev.c: Undef FFS after including param.h. - - * final.c (final_scan_insn): Delete label reinsert_compare. - - * expmed.c (store_bit_field): Move var value1 inside HAVE_insv. - (extract_bit_field): Similar for bitsize_rtx, bitpos_rtx. - - * c-typeck.c (pointer_diff): Delete unused var. - * expr.c (emit_push_insn): Likewise. - * gcc.c (execute): Likewise. - * genrecog.c (try_merge_2): - * loop.c (skip_consec_insns, scan_loop): - * recog.c (asm_noperands, memory_operand): - * function.c (expand_function_end): - * stmt.c (emit_jump_if_reachable): - * toplev.c (error_for_asm): - * varasm.c (assemble_string): - - * integrate.c (fp_addr_p): Var deleted. - - * regclass.c (regclass_init): Now returns void. - * emit-rtl.c (emit_insns): Likewise. - * stmt.c (emit_nop): Likewise. - * out-sparc.c (output_eager_then_insn): Likewise. - - * reload1.c (reload_reg_reaches_end_p, reload_reg_free_before_p): - (reload_reg_free_p): Abort if switch drops through. - - * cccp.c: Supply a return type for every function (usually void). - (grow_outbuf): Now returns void. - (line_for_error): Abort if the loop terminates. - * gcc.c: Supply a return type for every function (usually void). - - * jump.c (jump_optimize): Leave block-beg, block-end notes - in old context when swapping two ranges of insns. - (squeeze_block_notes): New function. - - * calls.c (expand_call): Compute valreg from pointer type - in case of pcc struct return. - - * gnulib2.c (__builtin_saveregs): Use __ names for machine types. - - * fold-const.c (fold): - Move constant out of assignment, within conversion. - -Fri Dec 15 00:42:31 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * varasm.c (assemble_variable): Use new macro DATA_ALIGNMENT if def. - (get_or_assign_label): Use this instead of CONSTANT_ALIGNMENT. - - * integrate.c (save_constant, restore_constant): Handle naked - constant-pool SYMBOL_REF. - (copy_for_inline, copy_rtx_and_substitute): Ditto. - - * integrate.c (expand_inline_function): - Put caller's line number after inline stuff. - Put callee's line number before parm manipulation. - - * tree.c (make_node): Have a DECL_SOURCE_FILE in every decl. - - * m68k.md (fpa float and float-trunc): Accept general_operand. - - * calls.c (expand_call): Do INIT_CUMULATIVE_ARGS just once. - - * calls.c (expand_call): If struct ret addr is passed as parm, - count it in structure_value_addr_parm. - - * 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. - - * 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. - -Thu Dec 14 23:40:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Makefile.in (install, libsubdir): Change $(machine) to $(target). - -Tue Dec 5 07:35:57 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * rtl.h: Declare emit_jump_insn_before and emit_jump_insn_after. - - * reload.c (reg_class_subset_p): Delete duplicate copy. - local-alloc.c (reg_class_subset_p): Move from here. - regclass.c (reg_class_subset_p): Move to here. - - * combine.c (try_combine): Fix placement and content of LAST_CALL_CUID - test to elminate memory faults. - - * final.c (asm_insn_count): New fn. - (get_length_attr, shorten_branches): Rework length - computation of insns with INSN_CODE == -1. Call above fn to more - accurately obtain length of ASM insn. - - * genattrtab.c (check_attr_value): Allow CONST_INT to specify - numeric values for attributes. Also, prevent memory faults - on errors when ATTR is null. - (make_canonical): Convert CONST_INT to appropriate CONST_STRING. - (write_attr_case): Correctly check for ASM insns. - (make_numeric_value): Generalize to all positive integers. - - * jump.c (jump_optimize): Set JUMP_LABEL on jump added - in "{ ... x = 1;} if (x)" optimization and add to jump_chain. - - * local-alloc.c (no_conflict_p): Tighten up code to prevent - memory faults. - - * reload.c (find_reloads): Fix typo in EXTRA_CONSTRAINT call. - -Tue Nov 28 11:20:47 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) - - * expr.c (save_noncopied_parts): Rename stack_loc as target. - Make the stack slot address correct. - -Mon Nov 27 15:39:40 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * math-convex.h: New file. - - * 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. - -Fri Nov 24 12:36:29 1989 Chris Smith (csmith at mozart) - - * tm-convex.h (OVERRIDE_OPTIONS): remove target=host default. - * out-convex.c (override_options): remove. - - * tm-convex.h (*_TYPE_SIZE): define type sizes as the usual values. - * convex.md (movstrictsi): new, for field insertion in DImode regs. - - * tm-convex.h (LEGITIMATE_CONSTANT_P): allow all CONST_DOUBLES. - (PREFERRED_RELOAD_CLASS): reload nonimmediates from memory (NO_REGS). - * convex.md (movdi, movdf): use 'G' to handle nonimmediates. - (anddi3, iordi3, xordi3): allow immediates if high word is identity. - - * convex.md (tstdi): Finally figure out how to allocate a temp reg - in a way that won't get optimized away; remove hardwired use of s1. - - * convex.md (cmpqi): don't sign extend to SImode because operands - might be unsigned. Must compare bytes in registers instead. - - * convex.md (movtf): new. - - * convex.md (ash*, lsh*): rewrite to use shift vs. shiftrt. - Better code because no need to sign or zero extend when going left. - (shift, mask & test peephole): test next_insn_tests_no_inequality. - (similar with lshiftrt): New peephole. - - * tm-convex.h: add g++ defines FASCIST_ASSEMBLER, VTABLE_USES_MASK. - -Sun Nov 26 11:39:13 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) - - * reload.c (decompose): Handle SUBREGs. - -Wed Nov 22 11:26:00 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. - - * make-pyr: Find the alloca which comes with the system. - - * 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. - - * stor-layout.c (build_int): Defend against negative arguments. - - * varasm.c (MAX_HASH_TABLE): Change to a prime. - -Tue Nov 21 10:58:28 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) - - * optabs.c (emit_cmp_insn): New arg, COMPARISON. - (emit_float_lib_cmp): New subroutine, handles soft-float comoare - of floating point values. Chooses ibrary fn from COMPARISON. - * expr.c, expmed.c, stmt.c, optabs.c: All calls changed. - * gnulib.c (__eqdf2, __nedf2, __gtdf2, etc.): New functions. - (__eqsf2, __nesf2, __gtsf2, etc.): New functions. - - * 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-sparc.c (output_block_move, output_mul_by_constant): - (output_eager_then_insn): Delete unused vars. - - * varasm.c (decode_rtx_const): Add a cast in SYMBOL_REF case. - - * tm-i386.h (TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE) - (INITIALIZE_TRAMPOLINE): New macros. - * i386.md (indirect_jump): New pattern. - - * 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) - - * sdbout.c (sdbout_end_function, sdbout_end_block, sdbout_begin_block): - Don't allow line numbers < 1. - - * integrate.c (copy_for_inline): `break' was missing for case 'u':. - - * sdbout.c (plain_type_1): Output .dim X,Y...; for multi-dim array. - (sdbout_array_dim): New recursive subroutine. - (PUT_SDB_DIM): Macro eliminated. - (PUT_SDB_START_DIM, PUT_SDB_NEXT_DIM, PUT_SDB_LAST_DIM): New macros. - * tm-3b1.h: Override PUT_SDB_START_DIM. - - * 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-m68k.h (WORDS_BIG_ENDIAN): Define it. - * out-m68k.c (output_move_double): Adapt CONST_DOUBLE case to that. - - * varasm.c (decode_rtx_const): For SYMBOL_REF, use addr of string. - - * tm-pyr.h (INIT_CUMULATIVE_ARGS): - If -fpcc-struct-return, always do the scalar thing. - - * tm-sun3.h (LINK_SPEC): Specify -L to control choice of -lm. - - * 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) - - * calls.c (prepare_call_address): If NO_RECURSIVE_FUNCTION_CSE, - don't do function cse on calls to same function. - (emit_call_1): Don't call memory_address for SYMBOL_REF. - - * tm-att386.h (ASM_OUTPUT_COMMON): Use ROUNDED, not SIZE. - (ASM_OUTPUT_LOCAL): Likewise. Also, generate .lcomm - rather than a .data area symbol. - * tm-sun386.h: Likewise. - - * tm-bsd386.h (ASM_OUTPUT_COMMON): Use ROUNDED, not SIZE. - (ASM_OUTPUT_LOCAL): Likewise. - - * cexp.y (parse_escape): Delete unused var `count' from case 'x'. - -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. - - * final.c (final_scan_insn): - Rearrange to avoid calling BLOCK_PROFILER for a jump table. - - * reload1.c (choose_reload_regs): Split up a hairy if. - -Wed Nov 8 00:48:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * calls.c (expand_call): Handle UNNAMED_ARGS_IN_REGISTERS. - - * toplev.c (main): Handle -gsdb to make sdb output when that and dbx - are both supported. - - * combine.c (subst): In (sign_extend:M (subreg:N (and:M .. ) 0)) - insist that constant be positive in mode N. - Also test mode N in similar zero_extend case. - - * c-typeck.c (build_modify_expr): When assigning to COND_EXPR - put cast to void around precomputed rhs. - - * calls.c (emit_call_1): Make funexp a valid address. - -Tue Nov 7 18:57:17 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expr.c (emit_move_insn): If args in memory, make addresses valid. - - * rtl.h: Undefine FFS in case it was defined by the system. - - * c-parse.y (combine_strings): Ignore warn_write_strings - if -traditional or -fwritable-strings. - - * Makefile.in (gnulib2): Fix syntax in shell conditionals. - - * stmt.c (expand_return): Handle COND_EXPR specially. - -Mon Nov 6 14:43:55 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * optabs.c (expand_float): Check sign of FROM; may be faster than TO. - - * fold-const.c (fold): If REAL_INFINITY, allow division by zero. - * tm-sun3.h (REAL_INFINITY): Define it. - - * 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. - - * calls.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. - - * tm-pyr.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 16:23:57 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * gnulib2.c (lshrdi2, and other shifts): Take second arg as long long. - - * combine.c (subst): - Simplify (zero_extract (subreg:SI (lshift:QI (mem:QI ...)) 0) ...) - - * expr.c (do_jump): Don't discard NOP_EXPR from around COMPONENT_REF. - Put one on, if that allows extracting the component in natural mode. - - * final.c (get_attr_length): Omit the body if no length attribute. - - * Makefile.in (genattrtab): Use host-rtlanal.c as dep and to link. - (insn-attrtab.o): Use $(INCLUDES). - - * cse.c: Include stdio.h. - - * c-decl.c (finish_enum): Local `value' was declared and set wrong. - - * Makefile.in (gen*.o): Find source files in $(srcdir). - (LIBDEPS, HOST_LIBDEPS): Don't use USE_ALLOCA. - -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. - For PLUS_EXPR, etc., don't record code twice. - (record_constant_1): Likewise. - - * expr.c (expand_assignment): Allow for overlap when storing into a - structure value area supplied by the caller. - - * cse.c (remove): Handle an elt in the wrong bucket. - - * function.c (fixup_stack_1): Avoid using move insn for address arith. - - * 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:12:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * config.gcc (pyramid): Set $machine to pyr. - - * calls.c (expand_call): Don't OK_DEFER_POP in is_const case. - -Mon Oct 30 17:00:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * final.c (shorten_branches, init_insn_lengths): - Define unconditionally; conditionalize the contents, perhaps. - -Mon Oct 30 03:23:52 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * final.c (shorten_branches): New function. - (init_insn_lengths, get_attr_length): New functions. - * function.c (init_function_start): Call init_insn_lengths. - * recog.c (constrain_operands): Call alter_subreg if nec. - * toplev.c (rest_of_compilation): Call shorten_branches. - (compile_file): Init and print shorten_branch_time. - -Mon Oct 30 03:23:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * reload1.c (spill_regs): Make it short, not char. - -Sun Oct 29 00:53:46 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * final.c (final_scan_insn): Delete no-op moves, even without -O. - - * c-parse.y (yylex): Prevent warning for numbers that underflow. - - * stmt.c (assign_parms): Convert stack addresses to valid addresses. - (validize_mem): New subroutine. - - * c-decl.c (finish_enum): If -fshort-enums, round size up to match - some ordinary C integer type. - Compute precision properly when some values are negative. - Make type double precision when necessary. - - * c-decl.c (lang_decode_option): Accept and ignore -fnotraditional. - - * gcc.c (default_compilers): Pass -ftraditional to cpp as -traditional. - - * DOLLARS_IN_IDENTIFIERS now has three values. 1 is now the default. - It means enable $ only with -traditional. 2 means enable unless -ansi. - * c-decl.c (lang_decode_option): Implement that. - * cccp.c (main): Likewise. - * tm-vms.h, tm-apollo68.h, tm-convex.h, tm-next.h: - Define DOLLARS_IN_IDENTIFIERS as 2. - * tm-pyr.h: Define it as 0. - * cexp.y (initialize_random_junk): Test DOLLARS_IN_IDENTIFIERS - for nonzeroness. - - * 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. - -Sun Oct 29 00:53:46 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * varasm.c (force_const_double_mem): Remove redundant code. - (record_constant_rtx): Use normal obstack since temporary data. - (force_const_mem): Don't output constant immediately. Instead, - save it for new fn to write. Also, make hash table mapping - internal label to desired constant. - (output_constant_pool): New fn to write constant pool. - (assemble_function): Call it. - (init_const_rtx_hash_table): Initialize new hash table and pool - chain and offset. - (find_pool_constant): New fn to map internal label SYMBOL_REF to - data about constant. - (get_pool_constant, get_pool_mode, get_pool_offset): New fns - using above fn to return data about constant pool labels. - * rtl.h: Define last three new fns. - - * integrate.c (save_constants): New fn to convert constant pool - references to recognizable representation of constant that was - being used. - (save_for_inline): Call it. - (copy_for_inline, output_inline_function): Undo this for copy to - be compiled. - (restore_constants): New fn used in output_inline_function. - (copy_rtx_and_substitute): Make new constant pool entries for - constants in pool when fn was inlined. - - * cse.c (cse_end_of_basic_block): Optionally make a "basic block" - that follows branches. Now takes previous block as argument and - computes which branch to follow/fall through next. - (cse_main, cse_basic_block): Make compatible with above. - - * toplev.c: Add new flag, -fcse-follow-jumps. - (rest_of_compilation): Pass dump file to cse_main. - - * flags.h: Add flag_cse_follow_jumps. - -Sat Oct 28 01:24:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * optabs.c (emit_cmp_insn): Default MODE before computing CLASS. - -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. - -Thu Oct 26 01:05:09 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * mips.md (compare/branch peepholes): Combine using match_operator. - * out-mips.c (relop, frelop, frelop_reversed): New functions. - * tm-mips.h (PRINT_OPERAND): New codes `C' and `N' for comparisons. - (ASM_OUTPUT_SOURCE_LINE): Output .loc--MIPS likes that. - (EXTENDED_COFF, NO_UNDERSCORES, USE_COLLECT): Define, for collect.c. - (COFF): Undefine, for collect.c. - - * getattrtab.c: Rename define_asm_insn to define_asm_attributes. - * rtl.def: Likewise. - -Wed Oct 25 00:52:12 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * rtl.def: Add new RTL codes for insn attributes. - Change last operand of DEFINE_INSN and DEFINE_PEEPHOLE. - - * rtlanal.c (rtx_equal_p): Add support for "V", "n", and "s" types. - - * genoutput.c (output_epilogue): No longer output machine_info - stuff. - (process_template): New function. - (gen_insn, gen_peephole): Call process_template. - (fatal): Add more args. - - * final.c: Allow called configuration macros to use attribute data. - -Wed Oct 25 00:52:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * rtlanal.c (rtx_equal_p): Handle operand types n, V, S. - - * optabs.c (floattab): Record unsigned-float insns. - (can_float_p): New arg UNSIGNEDP. - (expand_float): Use those insns if available. - -Tue Oct 24 19:23:11 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * genattr.c, genattrtab.c: New files. - * Makefile.in (insn-attr.h, insn-attrtab.c): - New files made by those two. - - * Makefile.in (insn-*.[ch]): Name the temp file `tmp-foo.c', etc., - not `tmp-insn-foo.c'. - - * combine.c (subst): Generalize simplification of - (zero_extend:M (subreg:N (zero_extract:M ...) 0)) and similar. - -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 20:35:55 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (try_combine): Call simplify_set_cc0_and for SIGN_EXTEND. - (subst): Start by putting constant last in commutative operations - and convert MINUS of a constant to PLUS. - Put CONST around any PLUS with 2 constants. - Simplify (minus (and (const_int -pow2))). - Handle (zero_extend (and ...)) when the and is nontrivial. - Convert (XOR (NOT x) (NOT y)) to (XOR x y). - Simplify (abs (neg )). - Simplify abs of something known positive. - Handle (zero_extend (truncate...)) using gen_lowpart. - Do it for sign_extend too. - Simplify (ZERO_EXTRACT (AND x) ...). - Simplify (ZERO_EXTRACT (ZERO_EXTEND z) ...), etc. - Extend "Extracting a single bit from result of shift" to SIGN_EXTRACT. - (ashiftrt (*shift ) ) can be (sign_extend ) - (lshiftrt (*shift ) ) can be (zero_extend (subreg )) - Do (lshift (sign_extend )) on non-regs using gen_lowpart. - Eliminate AND in (lshift (and ) ). - Use gen_lowpart in (lshift:m1 (zero_extend:m2 ) ). - Use gen_lowpart in (and x const) => (zero_extend (subreg x 0)). - (simplify_set_cc0_and): Ignore outermost SIGN_ or ZERO_EXTEND. - Handle constant bit number. - Try to get into SImode for bitfield jumps. - - * recog.c (apply_change_group, validate_change): New functions. - -Sat Oct 21 00:51:49 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (cse_end_of_basic_block): Optionally make a "basic block" - that follows branches. Now takes previous block as argument and - computes which branch to follow/fall through next. - (cse_main, cse_basic_block): Make compatible with above. - - * cse.c (new_basic_block): Don't assume sizeof (rtx) == sizeof (int). - - * cse.c (make_new_qty, canon_hash): Add sanity checks. - - * cse.c (lookup_as_function): Don't assume VOIDmode == 0. - - * cse.c (exp_equiv_p): For commutative operations, check both orders. - Detect unexpected operand-type letters. - Mode is significant for all codes. - - * cse.c (fold_rtx): CONST_DOUBLE can also appear in DImode. Verify - that floating-point is used before folding it. - Verify that the host's INT width is wide enough to do folding. - - * cse.c (cse_insn): Treat each component of PARALLEL exactly the same - way as if it were standing alone. - - * combine.c (combine_instructions): If an insn explicitly references - CC0, try to combine it with the previous insn. Also, enable - combining an insn with two different insns whose results it uses. - - * combine.c (try_combine): Ignore USE or CLOBBER parallel parts in - I2 and I1 as they are not functional. - -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. - -Sat Oct 21 00:28:48 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stor-layout.c (layout_decl): No more need to avoid >1 wd in one reg. - - * tree.c (build_index_type): Copy precision from sizetype. - - * reload.c (find_reloads_toplev): Don't truncate constant if bigger - than host word size. - - * gnulib2 (__floatdidf, __fixunsdfdi): Use WORD_SIZE, not BITS_PER... - (WORD_SIZE): # of bits in a `long' on the target. - - * genextract.c (gen_peephole): Use sizeof (rtx) copying operands. - - * fold-const.c (force_fit_type): Use POINTER_SIZE for pointers. - - * final.c (end_final, final_scan_insn): In sizes and aligns of - profiling vars and tbls, use INT_TYPE_SIZE for size of an int, - or give max alignment. - - * expr.c (do_jump): Comparing constant arg vs 0, take # sig bits - from mode of data type. - - * gcc.c: Add CC1PLUS_SPEC like CC1_SPEC. - (validate_all_switches, do_spec_1, process_command, read_specs): - Handle it. Use %2 to use it. - (default_compilers): Pass %2 to cc1plus. - - * out-sparc.c (output_fp_move_double): Use ldd only when safe, - on same conditions used for std. - - * Makefile.in (USE_ALLOCA): New var is $(ALLOCA) if compiling with - cc, null otherwise. Use this to refer to alloca. - - * Makefile.in (gnulib): Test vrbl HPUX_GAS to decide whether to run - hpxt instead of ranlib. - (stamp-gnulib2): Don't ranlib if HPUX_GAS. - * make-hp9kgas: New file, sets HPUX_GAS. - -Fri Oct 20 13:33:34 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expmed.c (store_bit_field, extract_bit_field): - Use mode whose size is UNITS_PER_WORD for struct in reg. - (store_fixed_bit_field, extract_fixed_bit_field): - Handle bigger constant masks. - (mask_rtx, lshift_value): New subroutines. - - * c-parse.y (combine_strings): Use correct width of `int'. - - * varasm.c (make_decl_rtl): Warn for volatile explicit register vars. - -Fri Oct 20 00:27:00 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reload1.c (reload_as_needed): Set new variable reload_in_progress - and clear it after reload complete. - - * reload1.c (choose_reload_regs): - Don't count deleted reloads vs number of spill regs. - - * reload1.c (choose_reload_regs): Arg of HARD_REGNO_MODE_OK - was the pseudo; should be the reload reg. - - * reload1.c (gen_input_reload): Don't generate a move with a PLUS - as an operand. - - * reload.c (find_reloads): Ignore unconstrained operands - when looking for conflict with an earlyclobber. - - * reload.c (subst_indexed_address): - Replace and canonicalize more thoroughly. - (form_sum): New subroutine. - - * out-i386.c (singlemove_string): Handle ordinary constants as input. - - * 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. - - * c-parse.y (unary_expr): Handle EXTENSION here, not in primary. - -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. - - * Allow elided braces with unions. - * c-typeck.c (digest_init): Treat unions more like records. - (process_init_constructor): Handle union types. - - * c-parse.y (program): Pedantic warning for empty file. - -Wed Oct 18 22:28:21 1989 Torbj|rn Granlund (tege at echnaton.sics.se) - - * out-pyr.c (extend_const, extend_and_branch): Make sure all const - are CONST_INT. - - * out-pyr.c (movdi_possible): Handle combination of two immediate - moves correctly. (Pyramid immediate move to a DImode operand - (movl) work by SIGN extension of the 32 bit immediate source.) - * Handle CONST tagged addresses. - - * out-pyr.c (already_sign_extended): Skip harmless JUMP_INSN when - scanning after extension insn. - * Check for right mode of extension. - * Delete redundant register number test. - - * pyr.md (anonymous SImode test pattern): Predicate need to accept - any operand that can be generated for corresponding compare. Used - to reject "foo(p) int *p {int a=0; return *p==a;}". - - * pyr.md (shift patterns): Condition bogus if no insn really output. - - * pyr.md: Flush obsolete comment about conversion. - - * tm-pyr.h (FUNCTION_PROLOGUE): Don't really set up a frame pointer - if it's never referenced. Also, don't round up frame size to a - multiple of 32, since input args and alloca nevertheless breaks - such alignment attempts. - * tm-pyr.h (FUNCTION_EPILOGUE): Goodbye. Use (define_insn "return" - ..) in md instead. - * pyr.md (return): Use "ret" or "retd" depending on the existense - of a freme pointer. - * tm-pyr.h (EXIT_IGNORE_STACK): Ensure the stack pointer is - preserved even when the frame pointer is not really set up. - - * pyr.md: Reinsert move-and-test peep-hole optimization. - - * pyr.md: Flush silly peep-hole optimizations for loops. They were - inverted optimizations. - - * tm-pyr.h (NOTICE_UPDATE_CC): Make it identify the most important - cases when set conditions codes can be used, without an explicit - test. - -Wed Oct 18 13:01:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * gcc.c (default_compilers): Support -E on .h file. - - * 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 (default_compilers): Define __GNUG__ for 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. - - * Makefile.in (gcc): Force-move when installing new gcc. - (realclean): Delete Makefile. - - * 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 14:27:48 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * i860.md (movhi, movqi): Support moves to/from fp regs. - - * stmt.c (expand_goto): USE both stack ptr and static_chain_rtx - just before jumping. - - * sparc.md (tablejump peepholes): Fix paren error that no-op'd them. - - * tm-sparc.h (*TRAMPOLINE*): Defined macros, but defns are wrong. - * sparc.md (indirect_jump): New pattern; plus peepholes. - - * sparc.md (cse'd multiply): New pattern for mult. by -1. - - * out-i860.c (load_opcode, store_opcode): Handle DImode and fp reg. - - * toplev.c (compile_file): Always test TREE_USED and TREE_ADDRESSABLE - in identifier as well as in decl. - * c-decl.c (poplevel): Preserve TREE_ADDRESSABLE from local externs. - * c-typeck.c (mark_addressable): Don't set bit in identifier here. - -Fri Oct 13 00:12:46 1989 Richard Kenner (rms at sugar-bombs.ai.mit.edu) - - * flow.c (life_analysis): No need to think abt CONSIDER on first pass. - - * flow.c (propagate_block): Remove duplicated code to update OLD. - - * flow.c (mark_set_1): Handle nested SUBREG, SIGN_EXTRACT, - STRICT_LOW_PART, etc. Also, always set subreg_p when setting - a bit field, even if modes are same. - - * expr.c (expand_expr): Check for |= or &= of two bitfields of size 1. - Convert to test followed by assignment. - - * rtl.def (INLINE_HEADER): Correct erroneous field types. - - * rtl.h: Add definitions for saving flags in INLINE_HEADER. - - * emit-rtl.c (gen_inline_header): Correct out-of-date arguments. - Add support for saving flags. - - * integrate.c (save_for_inline): Save function flags. - Update comments. - (expand_inline_function, output_inline_function): Let machine-dependant - code view (or possibly modify) inlined insn, if desired. - - * function.c (assign_stack_local): Don't set frame_pointer_needed or - invalid_stack_slot if assigning zero-sized area. - - * stmt.c (fixup_var_refs_1): If the machine's SIGN_EXTRACT or - ZERO_EXTRACT insns can't accept a memory operand, fix them up. - - * expr.c (do_jump): Look inside EQ_EXPR or NE_EXPR if one arg is 0. - Be smart about PLUS_EXPR, MINUS_EXPR, ABS_EXPR, REFERENCE_EXPR, - NEGATE_EXPR, rotation, CONVERT_EXPR. - - * jump.c (reverse_condition): Make non-static. - (swap_condition): New routine. - - * final.c (alter_cond): Use new swap_condition. - - * expr.c (expand_expr): In cases where a jump will be generated, use - original_target because the registers won't be able to be merged due - to the jump. - - * expr.c (expand_expr): Put constant last for PLUS. - -Fri Oct 13 00:12:46 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * recog.c (constrain_operands): Add case for `&'. - - * tm-vax.h (TRAMPOLINE_TEMPLATE): Add a .word 0 at beginning. - (TRAMPOLINE_SIZE): Increase by 2. - (INITIALIZE_TRAMPOLINE): Copy reg mask from pure code to trampoline. - Jump into the pure code after the reg mask. - - * expmed.c (expand_divmod): Use divmod insn for quotient if no div. - - * 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. - - * recog.c (init_recog): Set volatile_ok to 1. - (init_recog_no_volatile): Similar, but set volatile_ok to 0. - (recog_memoized): Don't set volatile_ok. - * reload1.c (reload): Call init_recog. - * combine.c (combine_instructions): Call init_recog_no_volatile. - * loop.c (loop_optimize): Likewise. - * cse.c (cse_main): Likewise. - * function.c (expand_function_start): Call init_recog_no_volatile - for the sake of predicates called from optabs.c. - - * toplev.c (compile_file): Warn if fun declared static and used - but never defined. - -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. - - * c-decl.c (grokdeclarator): Delete some junk about Pmode vs EPmode. - - * tm-sparc.h (SELECT_RTX_SECTION): Test was backwards. - - * reload.c (reg_class_subset_p): New function. - -Wed Oct 11 00:35:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * vax.md (indirect_jump): New pattern. - - * c-parse.y (primary): Turn off pedantic after `__extension__'. - (hash, is_reserved_word, etc.): Recognize `__extension__'. - - * 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. - - * tm-seq386.h (DBX_DEBUGGING_INFO): Override this. - (HARD_REGNO_MODE_OK): Override this. - - * c-typeck.c (build_conditional_expr): Supply missing layout_decl arg. - - * dbxout.c (dbxout_symbol): Handle nested functions. - -Wed Oct 11 00:35:25 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * jump.c: Update jump_chain when insns change. - (jump_optimize): Leave room in jump_chain for some extra labels. - Record length in max_jump_chain. Check this when updating. - When optimizing jump-to-return, delete from one chain and add to other. - When cross-jumping turns cond jump to simple one, add to new chain. - Zero jump_chain at end, so redirect_jump won't change it further. - (redirect_jump): Delete from one chain, add to another. - (do_cross_jump): Likewise. - (delete_from_jump_chain): New subroutine. - - * cse.c: If `if (x != y) goto l;' fails to jump, assume x==y. - (reg_invaliate): Add new argument for when value isn't - changing, just its class. - (invalidate): Update reg_invalidate call. - (record_jump_equiv): New function. - (cse_insn): Call it. - - * cse.c (cse_insn): Delete previous test based on - prev_insn_explicit_cc0 just as based on prev_insn_cc0. - -Tue Oct 10 00:14:35 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * reload.c (push_reload, combine_reloads): Let two reloads share - if one's regclass is a subset of the other. - - * Makefile.in: What depends in expr.h, depends on insn-codes.h also. - -Mon Oct 9 19:11:38 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cccp.c (finclude): Close descriptor as soon as text is read. - Eliminate `success'; return directly after successful processing. - (do_include): Don't close descriptor here. - - * tm-i386.h (REG_CLASS_FROM_LETTER): Don't define `S' letter. - It wasn't used; and now it means something else. - - * tm-ns32k.h (REG_CLASS_FROM_LETTER): Don't define `r' here. - `r' is standard. - -Mon Oct 9 01:09:25 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * flow.c (life_analysis): Ignore USEs and CLOBBERs when finding - redundant register copies. - * jump.c (jump_optimize): Do the same thing here. - - * jump.c (mark_jump_label): Loop NOTEs aren't relevant after loop - optimization. - - * integrate.c (copy_for_inline): Correctly handle RTL type "u". - * final.c (output_operand_lossage): Make non-static. - - * recog.c (constrain_operands): Treat N, O, P like I, J, K, L, M. - For Q...U, use EXTRA_CONSTRAINTS if defined. - * reload.c (find_reloads): Likewise. - - * rtl.c (copy_rtx, read_rtx, print_rtx): Handle operand type `V'. - - * rtlanal.c (note_stores): Use variable Y instead of equivalent - slower expression. - - * rtlanal.c (dead_or_set_p): Hard regs don't always have same RTX. - - * rtlanal.c (may_trap_p): Don't use const0_rtx here. - So we can use this file in programs that don't have const0. - -Mon Oct 9 01:09:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Support language-specific tree codes. - * tree.c (standard_tree_code_type, standard_tree_code_length): - Renamed tables. tree_code_type and tree_code_length are now pointers. - * tree.c (init_tree): Copy the tables to allocated memory. - * tree.c (tree_code_name): Move here from print-tree.c - and define like tree_code_type. - - * rtl.c (print_rtl): Handle 0 as operand. - - * emit-rtl.c (save_emit_status): Don't call init_emit here. - * function.c (push_function_context): Do it here. - - * emit-rtl.c (reinstate_emit_status): New function. - * function.c (trampoline_address): Use this around - INITIALIZE_TRAMPOLINE. - - * function.c (trampoline_address): Use fp->tail_recursion_reentry - when trampoline is in outer function. - - * Save and restore stack levels in nonlocal gotos. - * function.c: New variable nonlocal_goto_stack_level. - (init_function_start, push_function_context, pop_...): Init, push, pop. - (delete_handlers): Delete insns to set or use this slot. - * stmt.c (declare_nonlocal_label): Create this stack slot. - (expand_goto): Restore stack ptr from it. - (expand_end_bindings, expand_decl): When setting stack ptr, - store new value here. - * expr.c (expand_builtin): Likewise, for alloca. - * calls.c (expand_call): Likewise. - - * varasm.c (make_function_rtl): Rename nested functions for assembler. - * c-decl.c (start_function): Clear TREE_PUBLIC for nested function. - - * tm-i860.h (*TRAMPOLINE*): Define macros. - - * i860.md (movdi): accept F source in 2nd alternative. - Accept G source in 3rd. - (adddi3, subdi3): Typo in opcode of output. - - * i860.md (indirect_jump): Added pattern. - - * c-decl.c (lookup_label): Shadow label if it's wrongly inherited. - Set DECL_CONTEXT here, since nondeclared labels must be local. - -Sun Oct 8 01:38:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * function.c (expand_function_start): Copy static chain to pseudo - reg if chain is used. - - * tm-mips.h (ASM_SPEC): Pass -nocpp to as. - - * c-decl.c (grokdeclarator): Ignore variant differences - when preserving typedef types from being altered. - - * Allow inner label scopes for ({...}). - * c-decl.c (push_label_level, pop_label_level): New functions. - * c-parse.y (stmt exprs): Call them. - - * c-decl.c (lookup_label): Set DECL-SOURCE-LINE to locus of reference. - (poplevel): Use locus of reference in err msg for undef label. - (define_label): Use DECL_INITIAL as flag that label has been defined. - - * function.c (expand_end_function): Delete nonlocal goto handlers - if no nonlocal gotos are actually received. - (delete_handlers): New function. - - * flow.c (find_basic_blocks): Treat blocks as reachable - if headed by labels with LABEL_PRESERVE_P. - (insn_dead_p): Don't delete insns to set the frame pointer or arg ptr. - - * m68k.md (indirect_jump): New pattern. - -Sat Oct 7 00:46:18 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (lookup_label): If label is nonlocal and wasn't declared so, - report error and return 0. - (shadow_label): New function. - * c-parse.y (goto stmt): Handle 0 returned by lookup_label. - (label_decl, label_decls): Parse forward-declarations of labels. - (pushlevel): Allow label declarations at start of compound stmt. - - * rtl.h (LABEL_PRESERVE_P): New flag in CODE_LABEL. - * jump.c (jump_optimize): Increment LABEL_NUSES if that flag is set. - - * stmt.c (any_pending_stack_level): New function. - (expand_end_bindings): If block has stack level or cleanups, - and this function has any nonlocal labels, make a nonlocal goto handler - for the block, and put it in effect during the block. - Set LABEL_PRESERVE_P on the handler's label. - (expand_goto): For a nonlocal label, restore its stack frame - and jump to current handler. - - * function.c: New var nonlocal_labels lists labels ok for nonlocal. - Initted in init_function_start, pushed and popped with fcn context. - * stmt.c (declare_nonlocal_label): Put a LABEL_DECL on this list. - - * output.h: Declare current_function_has_nonlocal_label - and sdb_begin_function_line. - * final.c: Don't declare them. - - * function.c (current_function_has_nonlocal_label): New var. - (init_function_start): Init it. - (push_function_context, pop...): Save and restore it. - * flags.h: Declare current_function_has_nonlocal_label. - * stmt.c (expand_goto): Set it if nonlocal label. - * local-alloc.c (combine_regs): Don't tie call-crossing reg - to a non-call-crossing reg, if receive nonlocal gotos. - (block_alloc): Don't allocate pseudos that cross calls, - if receive nonlocal gotos. - * global-alloc.c (global_alloc): Don't even make an allocno for - a reg that crosses calls, if receive nonlocal gotos. - - * function.c (init_function_start): Init function_call_count. - (push_function_context, pop_...): Save and restore it. - * calls.c (expand_call): Increment function_call_count. - * stmt.c (expand_{start,end}_bindings): Use this var - to determine whether there are any function calls in a block. - No need for a nonlocal goto handler if block has no calls. - - * c-decl.c (define_label): Set DECL_CONTEXT. - Maybe push label on shadowed_labels. - (pop_c_function_context): Clear out labels in named_labels - and reinstall those in shadowed_labels. - Restore shadowed_labels. - (push_c_function_context): Push shadowed_labels. - (start_function): Clear shadowed_labels. - - * function.c: New file, split from stmt.c. - - * xm-mips.h: Use __builtin_alloca. - -Fri Oct 6 00:30:42 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * jump.c (jump_optimize): Optimization of - `if (...) x = 1; else {...} if (x) ...' got sense wrong sometimes. - - * Makefile.in (stamp-gnulib2): depend on gcc, cc1, cpp via - gnulib2-indirect. - - * tm-vax.h (TRAMPOLINE_SIZE,INITIALIZE_TRAMPOLINE,TRAMPOLINE_TEMPLATE): - Define macros. - - * m68k.md (addsi3): Change ! to ? in lea alternatives. - Put them before the add-to-register alternative. - - * reload.c (find_dummy_reload): Use PREFERRED_RELOAD_CLASS here - as in push_reload, so we make accurate predictions. - - * c-decl.c (pushdecl): Don't set DECL_CONTEXT for function declaration - that isn't a definition. - - * explow.c (fix_lexical_addr): Handle address that's just a base reg. - - * expr.c (expand_expr, case VAR_DECL): No need for static chain - if var is static. - - * reload.c (find_equiv_reg): Do let xregno be a pseudo reg, - but don't call HARD_REGNO_NREGS in that case. - - * local-alloc.c (combine_regs): Set reg_qty[sreg] even if it was <0. - - * c-decl.c (start_function): Clear named_labels. - -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. - - * Handle addresses of nested functions. - * New tm macros TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, - ALLOCATE_TRAMPOLINE, TRAMPOLINE_TEMPLATE. - * expr.c (expand_expr, case ADDR_EXPR): Handle addresses of nested fns. - * stmt.c (trampoline_address): New function. - * varasm.c (assemble_trampoline_template): New function. - - * 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 (layout_record): Support BIGGEST_FIELD_ALIGNMENT. - * tm-vax.h (BIGGEST_FIELD_ALIGNMENT): Define it. - (BIGGEST_ALIGNMENT): Now always 32. - - * 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. - - * integrate.c (function_cannot_inline_p): Don't inline if > 100 bytes - of stack space, unless declared inline. - -Tue Oct 3 00:16:08 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stmt.c (assign_outer_stack_local): New function. - (put_var_into_stack): Allocate stack slot in fn the variable is in. - - * stmt.c (put_var_into_stack): If variable-size object is nonlocal, - put the pseudo with its address into the stack. - - * calls.c: New file, split out from expr.c. - (expand_call): Pass static chain if fn wants it. - - * Make put_var_into_stack handle vars of containing function. - * stmt.c (put_var_into_stack): Find the rtl chains for the - function that the variable belongs to. - (fixup_var_refs): New args FIRST_INSN, STACK and RTL_EXPS. - - * Make DECL_CONTEXT the function a var is in, and set it right away. - * c-decl.c (store_parm_decls): Use DECL_RESULT, not DECL_CONTEXT, - as the flag for duplicate names or missing names. - * c-decl.c (start_function): Don't set current_function_decl - till after calling pushdecl. - * c-decl.c (pushdecl): Set DECL_CONTEXT to current_function_decl. - (poplevel): Used to set it here, to the LET_STMT. Don't. - * stmt.c (init_function_start): Test for a FUNCTION_DECL in - DECL_CONTEXT, not for a LET_STMT. - - * c-parse.y (primary <- identifier): Set TREE_NONLOCAL if appro. - Also call mark_addressable. - - * stmt.c (expand_function_start): Store static chain into stack frame. - Fetch static chains of containing functions into pseudos. - (lookup_static_chain): Moved here; and really does something. - * expr.c (expand_expr): Handle nonlocal variable. - * explow.c (fix_lexical_addr): New function. - - * out-i386.c (fp_pop_int): Use %L0 in fistp insn. - - * global-alloc (find_reg): Fix typo marking new hard reg conflicts. - - * stmt.c (pushcase, pushcase_range, expand_end_case): - When warning about insns at start of case, don't mind NOTEs. - - * local-alloc.c (combine_regs): - Transfer all pseudos from SREG's old qty to its new qty. - - * Support nested functions: - * stmt.c (push_function_context, pop_function_context): New functions. - * tree.c (save_tree_status, restore_tree_status): New functions. - * stor-layout.c (save_storage_status, restore_storage_status): Ditto. - * expr.c (save_expr_status, restore_expr_status): Ditto. - * emit-rtl.c (save_emit_status, restore_emit_status): Ditto. - * c-decl.c (push_c_function_context, pop_c_function_context): Ditto. - (start_function, finish_function): New arg NESTED. - * c-parse.y (nested_function, notype_nested_function): New nonterms. - (decl): New alternative to use them. - - * tree.h: Declare lineno. - * c-decl.c (finish_function): Don't expect lineno as arg. - * c-parse.y (fndecl, *nested_function): Don't pass it. - - * expr.c (init_expr, expand_call): Delete may_call_alloca. - * tm-m88k.h, tm-sparc.h, tm-spur.h: Use current_function_calls_alloca. - * tm-mips.h: It wasn't really used; delete its declaration. - -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. - - * mips.md (call_value): Change to a straightforward define_insn - with just one action--no PARALLEL. - - * i860.md (pfeq, pfgt and pfle patterns): Add f0 as 3rd arg. - - * integrate.c (save_for_inline): Don't delete NOTE_INSN_FUNCTION_END. - - * c-parse.y (simple_if): Return $$ as value of stmt_count. - (stmt (if statement)): Warn if $$ was not incremented in the body. - (stmt (else statement)): Likewise. - (stmt): All alternatives except null statement increment stmt_count. - -Fri Sep 29 08:56:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * regclass.c (reg_class_record): If move between CLASS and GENERAL_REGS - is costly, charge that cost to GENERAL_REGS and its subclasses. - * tm-alliant.h, tm-m68k.h (REGISTER_MOVE_COST): New macro. - - * regclass.c (regclass): When a reg is a parm equiv to a stack slot, - decrease its memcost, since the insn to load it would go away. - - * global-alloc.c (find_reg): Rewrite two-pass hard reg preference code. - Uses regs_used_so_far to avoid allocating a reg not used elsewhere - in the first pass. Also updates regs_used_so_far. - (global_alloc): Initialize regs_used_so_far. - - * tm-next.h (LINK_SPEC): Typo for -Z option. Don't pass -M option - to ld, since that is for cpp. - - * Support -MD and -MMD options. - * gcc.c (default_compilers): Pass them to cpp in special way. - Don't inhibit compilation for them, only for -M and -MM. - * cccp.c (main): Handle them like -M and -MM except take arg - which is file name to write deps in. - - * toplev.c: #if 0 around everything for GDB_DEBUG. - * symout.c: File removed from distribution. - * Makefile.in: Don't try to compile or link it. - - * tm-hp9k320.h (ASM_FILE_START): Output a `version' pseudo-op. - [! HPUX_ASM] (ASM_SPEC): Don't use the -V option. Recognize -mc68000. - (CALL_USED_REGISTERS): Redefinition deleted. HPUX 6.5 doesn't need it. - * tm-hp9k310.h, tm-hp9k310g.h: New files. - -Thu Sep 28 12:57:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stmt.c (pushcase, pushcase_range): Warn if code was emitted inside - case stmt before 1st label is seen. - (expand_start_case): New arg is string to use in that warning. - (struct nesting): New fields printname and seenlabel. - * c-typeck.c (c_expand_start_case): Pass new arg to expand_start_case. - - * gcc.c: Can now read compilation specs, and asm_spec (etc), from file. - (cpp_spec, asm_spec, etc.): New variables, initted to corresp. macros. - (do_spec_1, validate_all_switches): Use the variables, not the macros. - (link_command_spec): New name for old link_spec. - (compilers, n_compilers): Now a pointer, with size of vector ptd to. - (default_compilers): New name for old `compilers' vector. - (read_specs): Given file name, read specs and add to `compilers'. - Also set cpp_spec, asm_spec, etc. - (skip_whitespace): New subroutine. - (main): Initialize `compilers' from `default_compilers'. - Find a specs file and call read_specs. - Search thru `compilers' from back to front. - * Makefile.in (install): Use gcc -dumpspecs to write a specs file. - - * Support multiple installed compilers; find them by - target machine and version. - (STANDARD_EXEC_PREFIX): Change to `.../gcc/'. - (standard_exec_prefix_1): Change to `.../gcc/'. - (process_command): Options -b and -V set spec_machine, spec_version. - Option -dumpspecs writes specs file to define cpp_spec, asm_spec, etc. - Option -dumpversion writes version number. - (main): Set machine_suffix from spec_machine and spec_version. - * Makefile.in (libsubdir): New variable, made from libdir. - (gcc.o): Define DEFAULT_TARGET_MACHINE macro in compilation. - Change value of STANDARD_EXEC_PREFIX as above. - (cccp.o): Use libsubdir. - (install): Install files under $(libsubdir), after making that dir. - - * 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) - - * global-alloc.c: #if 0 handling of REG_NO_CONFLICT notes. - - * c-typeck.c (build_c_cast): Implement cast to union type. - - * Edit the makefile automatically when necessary. - * config.gcc: Produce Makefile by editing Makefile.in with sed. - * Makefile.in: New name for file `Makefile'. - Comments on editing the file deleted. - * config/make-*: Various files are inserted by sed into Makefile. - - * Provide a way for languages to control printing of function names. - * toplev.c (error, fatal, announce_function, etc.): - Use value of decl_printable_name to compute what name to print. - * stmt.c (init_function_start): Likewise. - * toplev.c (main): Init that variable. - (decl_name): New function, used by default. - - * explow.c (round_push): Fix typo: return fast if ALIGN is 1. - - * flow.c (dump_flow_info): Delete excess arg to fprintf. - * gcc.c (fatal): Delete excess arg to delete_temp_files. - - * expr.c (convert_move): Handle absence of integer truncate insns - by copying value to a reg (and then using subreg). - - * final.c (final_start_function): Do leaf-function register renumbering - if that is defined for this machine. - (leaf_renumber_regs, only_leaf_regs_used, leaf_function_p): New fns. - - * varasm.c (in_text_section): New function. - * tm-3b1.h (ASM_OUTPUT_SKIP): Use that. - - * stmt.c (case_index_expr_type): New function. - - * c-parse.y (maybe_attribute): Don't fail to return a value. - -Tue Sep 26 02:40:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Do auto-increments for hard regs. - * flow.c (mark_used_regs): Do set reg_next_use for hard regs. - When making an auto-increment for a hard reg, don't mess with - reg_n_refs or reg_n_sets. - (try_pre_increment_1): Likewise. - - * gcc.c (compilers): -undef inhibits predefined symbols. - - * combine.c (subst): In case EQ, prefer ZERO_EXTRACT, not SIGN_EXTRACT. - * vax.md (jbs, jbc patterns): Write with ZERO_EXTRACT. - * m88k.md: Likewise. - - * Merge C++ changes in stmt.c: - * Set up an obstack, stmt_obstack. - (ALLOC_NESTING): Allocate a `struct nesting' on that. Callers changed. - (POPSTACK): Use the obstack. - (init_stmt): New fn: init the obstack. - (any_pending_cleanup): New fn. - (expand_start_bindings): Leave outer_cleanups 0 if nothing in it. - (expand_end_bindings): Preserve some global vars around cleanups. - After cleanups, if no stack level to restore, do pending pops. - (fixup_cleanups): Do pending pops after the cleanups. - (expand_start_case): Don't output a NOTE if already have one. - (assign_parms): Speed up sizetree computations in common case. - (init_function_start): Use lang_printable_name for current_function_name. - (expand_function_end): Don't set REG_FUNCTION_VALUE_P - for a pseudo reg used to copy into the real return. - * toplev.c (compile_file): Call init_stmt. - - * c-typeck.c (commontype): If one arg is error_mark_node, return other. - -Mon Sep 25 12:13:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * optabs.c (expand_binop): Handle boolean ops on >SImode with - several one-word insns. Put out REG_EQUAL and REG_NO_CONFLICT notes. - * global-alloc.c (global_conflicts): For each insn, record - in no_conflict_pairs all the REG_NO_CONFLICT notes of the insn. - (record_one_conflict): Don't mark a conflict between such a pair. - * local-alloc.c (block_alloc): Do combine_regs on the sequences - made by expand_binop for multi-word boolean ops. - (combine_regs): New arg ALREADY_DEAD is 1 if UREG died prior to INSN. - (no_conflict_p): New subroutine. - * combine.c (try_combine): Move REG_NO_CONFLICT notes like REG_INC. - * flow.c (life_analysis): Don't delete no-op moves - if they carry REG_EQUAL notes. These insns are needed later. - * reload.c (find_dummy_reload): Use actual operands (which may be - subregs) for most purposes, including checking for overlap. - (hard_reg_set_here_p): Handle a range of regnos, not just one. - - * loop.c (move_movables): Use special techniques to move regs - used for zero-extension. Don't combine matching regs; instead, - just record them in pairs in regs_may_share. - * global-alloc.c (global_alloc): Digest regs_may_share into a - vector, reg_may_share. Then assign matching regs the same allocno. - (global_alloc): Initialize allocno_n_refs, allocno_live_length, - allocno_calls_crossed. - (allocno_compare): Use those new vectors; don't use allocno_reg. - (find_reg): Use those new vectors. - Assign hard reg to all the pseudos that share the allocno. - - * jump.c (jump_optimize): Two new cases simplify jumping to or - falling into a test-and-branch after setting the register being tested. - * jump.c (get_label_before, get_label_after): New functions. - (do_cross_jump): Use get_label_before. - -Sun Sep 24 00:21:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * gnulib2.c (__fixunsdfsi): Defined here, not in gnulib.c. - * Makefile (LIBFUNCS, LIB2FUNCS): Corresponding change. - - * tm-i860.h (SDB_DEBUGGING_INFO): Define this, not SDB_... - - * gcc.c (link_spec): Don't specify -lg. - * tm-alliant.h, tm-convex.h, tm-hp9k3bsd.h, tm-isi68.h, tm-news.h - * tm-pyr.h, tm-seq386.h, tm-sequent.h, tm-sparc.h, tm-spur.h - * tm-sun2.h, tm-sun3.h, tm-sun386i.h, tm-tahoe.h, tm-vax.h: - Make LIB_SPEC link with -lg. - * tm-harris.h, tm-vaxv.h, tm-vms.h: Turn off inherited LIB_SPEC. - - * recog.h (insn_*): Declare these tables `const'. - (const): Define this as nothing, if not __STDC__. - * expr.h (insn_gen_function): Declare `const'. - (const): Define this as nothing, if not __STDC__. - * genoutput.c (main): In insn-output.c, don't define `const' if - already defined. - - * recog.c (offsettable_nonstrict_memref_p): New function. - * stmt.c (fixup_var_refs_1): Use that, not offsettable_memref_p. - * reload.c (find_reloads): Likewise. - - * integrate.c (save_for_inline): Set in_nonparm_insns when arrive - at the first nonparm insn. - (copy_for_inline): Set TREE_READONLY only if in_nonparm_insns. - - * Makefile (float.h): Make hard-params an ordinary dependency. - - * 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. - - * c-parse.y (init_lex): Discard undesired reserved words from table. - (yylex): No need to check for them at lookup time. - - * tree.c (make_node): Always put PARM_DECL in saveable_obstack. - - * toplev.c (floor_log2, exact_log2): Rewritten for speed. - - * tree.c (listify): New function. - - * c-typeck.c (convert_for_assignment): New args for function being - called and argument number. Used in error messages. - (actualparameterlist): Pass those args usefully. - (wrn_for_assignment): New function. - - * loop.c (general_induction_var): Handle give copied from a biv. - - * i386.md (div*i3, udiv*i3): New patterns. - (divmodhi4, udivmodhi4): New patterns. - - * combine.c (subst): - Simplify (sign_extend:M (subreg:N (lshiftrt:M REG CONST) 0)) - when REG was assigned from (zero_extend:M (any:N ...)). - Make the similar (zero_extend:M ...) case share code. - - * expr.c (store_field): A frame-pointer-relative address is stable. - - * expr.c (expand_expr): Effectively pass on IGNORE for 2nd op of comma. - -Sun Sep 24 00:21:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * 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 , 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. - - * tm-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 ChangeLog.0. diff --git a/gcc/ChangeLog.10 b/gcc/ChangeLog.10 index ad1669210dfb..7fba875b3c67 100644 --- a/gcc/ChangeLog.10 +++ b/gcc/ChangeLog.10 @@ -4503,5683 +4503,3 @@ Sun Nov 26 14:47:42 1995 Richard Kenner * Version 2.7.2 released. - * function.c (fixup_var_refs_1): Make pseudo for DEST - in PROMOTED_MODE unless in a SUBREG. - - * cse.c (insert): Don't put a REG into qty_const. - - * msdos/top.sed: Change version to 2.7.2. - * winnt/config-nt.sed: Likewise. - -Sun Nov 26 14:41:49 1995 Douglas Rupp (drupp@cs.washington.edu) - - * Makefile.in (stamp-objlist): Change .o to $objext. - - * alpha/win-nt.h (CPP_PREDEFINES): Set __unaligned and __stdcall - to null. - (ASM_SPEC): Add a translation for -g to -Zi. - * winnt/ld.c (main): Don't pass -g to link. - * winnt/oldnames.c: Reformat and add some new functions for gnat1. - * winnt/win-nt.h (LINK_SPEC): Pass -g to ld.exe. - Increase default stack size. - * configure ({alpha-dec,i386-ibm}-winnt3.5): Add oldnames.o - to extra_objs. - * libgcc2.c (trampoline): Add getpagesize and mprotect for WINNT. - -Sun Nov 26 14:25:26 1995 Uwe Seimet (seimet@chemie.uni-kl.de) - - * atari.h (FUNCTION_VALUE): Deleted; incorrect. - -Sun Nov 26 14:23:03 1995 Philippe De Muyter (phdm@info.ucl.ac.be) - - * fixincludes (curses.h): Allow space or tab after bool keyword, - instead of tab or tab. - -Sun Nov 26 14:14:11 1995 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) - - * 1750a.md (pattern for HImode PSHM): Corrected. - (trunchiqi2, zero_extendqihi2, extendhftqf2): Corrected. - (pattern for movhi of CONST_INT to REG): Corrected. - (divmodqi pattern for DISN): Corrected. - (all shift patterns): Corrected. - - * 1750a.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Corrected. - (ASM_OUTPUT_[datatype]): Corrected datalbl[].size computation - for output of arrays. - -Sun Nov 26 14:08:57 1995 Dave Love - - * mips/iris5.h (NO_IMPLICIT_EXTERN_C): Define this again so - that unistd.h doesn't get badly `fixed' for C++. libg++ will now - build with this definition. - -Sun Nov 26 14:02:43 1995 Robert E. Brown (brown@grettir.bibliotech.com) - - * configure: Better workaround for Nextstep bug. - -Sun Nov 26 13:55:07 1995 Torbjorn Granlund - - * rs6000.md (load_multiple matcher): Fix typo in opcode. - -Sun Nov 26 13:51:08 1995 Lee Iverson - - * final.c (final_start_function): Move call to sdbout_begin_function - back to final_scan_insn on MIPS systems so parameter descriptions are - recognized. - -Sun Nov 26 13:43:06 1995 DJ Delorie (dj@delorie.com) - - * msdos/top.sed: Don't insert "go32". - -Sun Nov 26 12:08:23 1995 Jim Wilson - - * combine.c (nonzero_bits, case REG): Put POINTERS_EXTEND_UNSIGNED - code before stack pointer code. Return nonzero at end of stack - pointer code. - - * sparc.h (PRINT_OPERAND_ADDRESS): Handle CONST inside PLUS. - - * Makefile.in (cppalloc.o): Add a rule to build it. - - * alpha.c (alpha_emit_set_const): Don't output SImode sequences - that rely on invisible overflow. Sign extend new when SImode. - Don't recur if new == c. Don't allow shift outside mode. Make - logical right shift be unsigned. - -Sun Nov 26 11:37:50 1995 Arne H. Juul (arnej@idt.unit.no) - - * Makefile.in (compare*): Add "|| true" to avoid spurious - failure messages from some versions of make. - -Sun Nov 26 11:20:09 1995 Dmitry K. Butskoy (buc@stu.spb.su) - - * expr.c (truthvalue_conversion): Add declaration. - -Sun Nov 12 18:09:35 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * Version 2.7.1 released. - - * function.c (put_reg_into_stack): New arg volatile_p. - (put_var_into_stack): Call with new arg. - -Sat Nov 11 08:25:34 1995 Jim Wilson - - * reload.c (output.h): Include it. - * Makefile.in (reload.o): Add dependence on output.h. - -Thu Nov 9 11:24:20 1995 Jim Wilson - - * mips.h (HARD_REGNO_NREGS): If FP_REG_P, always use UNITS_PER_FPREG - to calculate number of words needed. - -Thu Nov 9 11:04:50 1995 Oliver Kellogg (Oliver.Kellogg@space.otn.dasa.de) - - * 1750a.md (cmphf): Addd Base Reg with Offset address mode (LB,STB,..) - (movqi,movhi,movhf,addqi3,addhf3,subqi3,subhf3,mulqihi3): Likewise. - (mulhf3,divhf3,andqi3,iorqi3): Likewise. - (define_peephole): Remove the Base mode peepholes. Replace the - special addqi define_insn for "LIM Ra,sym,Rb" by a define_peephole. - (ashlqi3): Took out futile 0th alternative. - (lshrqi3, lshrhi3, ashrqi3, ahsrhi3): Correct case of non-constant - shift count. - - * 1750a.h (REG_ALLOC_ORDER): Define. - (REGNO_OK_FOR_BASE_P): Include stack pointer in test against - reg_renumber[REGNO]. - (ASM_OUTPUT_DESTRUCTOR): Remove bogus assembler comment. - -Thu Nov 9 11:01:33 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * expr.c (expand_expr, case ARRAY_REF): Properly convert types - of index, size, and multiplication. - -Wed Nov 8 09:00:22 1995 Richard Earnshaw (rearnsha@armltd.co.uk) - - * arm.md (mov*cc_{,soft_}insn): Use match_operator to test the - comparison and check that the condition code register is used. - -Wed Nov 8 08:49:35 1995 Michael Meissner - - * rs6000/sysv4.h (ASM_OUTPUT_{CONSTRUCTOR,DESTRUCTOR}): Undef before - including svr4.h. - -Tue Nov 7 10:58:12 1995 Torbjorn Granlund - - * m68k.md (subxf3): Properly name pattern. - -Tue Nov 7 10:53:09 1995 Michael Meissner - - * libgcc2.c (__{C,D}TOR_LIST): For AIX, initialize these arrays to - 0,0, just like NeXT to avoid a warning message from the AIX 4.1 - linker. - -Tue Nov 7 09:58:34 1995 John F. Carr - - * cppexp.c (cpp_lex): Correctly parse character constants. - -Tue Nov 7 09:52:15 1995 Jason Merrill - - * rs6000.h (ASM_OUTPUT_{DES,CONS}TRUCTOR): Define. - -Mon Nov 6 10:27:15 1995 Doug Evans - - * combine.c (force_to_mode): Fix typo. - -Sun Nov 5 18:37:02 1995 Torbjorn Granlund - - * m68k.md (cmpxf): Don't call force_const_mem, it looses for PIC; - get predicates right instead. Get rid of separate DEFINE_EXPAND. - (addxf3, subxf3, mulxf3, divxf3): Likewise. - (All XFmode patterns): Delete `F' and `G' constraints. - (absxf2, negxf2): Delete spurious condition on TARGET_FPA. - -Sun Nov 5 11:05:44 1995 Philippe De Muyter (phdm@info.ucl.ac.be) - - * fixincludes (malloc.h): Fix return type of {m,re}alloc. - -Sun Nov 5 11:02:26 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) - - * cse.c (invalidate): For a pseudo register, do a loop to - invalidate all table entries, irrespective of mode. - -Sun Nov 5 10:57:43 1995 Richard Kenner - - * combine.c (force_to_mode): Put in last change properly. - -Sun Nov 5 10:53:49 1995 Jeffrey A Law (law@cygnus.com) - - * pa.h (CONDITIONAL_REGISTER_USAGE): Make sure FP regs - get disabled regardless of PA1.0 vs PA1.1 code generation - when TARGET_SOFT_FLOAT or TARGET_DISABLE_FPREGS is on. - -Sun Nov 5 10:49:43 1995 Doug Evans - - * i960.c (emit_move_sequence): Add a scratch register to - multi-reg stores. - (i960_output_move_{double,quad}): New functions. - (i960_print_operand): Handle new operand types E, F. - * i960.md (movdi matchers): Rewrite. - (store_unaligned_di_reg): New pattern. - (movti matchers): Rewrite. - (store_unaligned_ti_reg): New pattern. - -Sun Nov 5 10:45:24 1995 Ian Lance Taylor (ian@cygnus.com) - - * mips.h (MULTILIB_DEFAULTS): Define. - * mips/elf64.h, mips/iris6.h (MULTILIB_DEFAULTS): Define. - -Sun Nov 5 10:41:48 1995 Jim Wilson - - * reload.c (push_reload): Delete abort for RELOAD_OTHER case added - in last change. - * reload1.c (emit_reload_insns): For RELOAD_OTHER output reloads, - output the reload insns in descending order of reloads. - - * sh.md (mulsidi3-1, mulsidi3, umulsidi3-1, umulsidi3): Enable. - (smulsi3_highpart-1, smulsi3_highpart): New patterns. - (umulsi3_highpart-1, umulsi3_highpart): Likewise. - (movdi-1): Add r/x constraint. - * t-sh (MULTILIB_OPTIONS): Add m2. - (MULTILIB_DIRNAMES): Add m2. - (MULTILIB_MATCHES): Define. - - * sparc.h (RTX_COSTS, case MULT): Check for TARGET_SPARCLITE. - - * abi64.h, elf64.h (CPP_SPEC): Add -EB and -EL support. - -Sat Nov 4 10:36:26 1995 Jim Wilson - - * sh.md (casesi_worker): Change constraint from = to +. - - * svr4.h (ASM_IDENTIFY_GCC_AFTER_SOURCE): Delete. - (ASM_IDENTIFY_GCC): Output stab here. - -Sat Nov 4 10:32:37 1995 John Carr - - * cpplib.c (finclude): Set current input pointer when input - is not a regular file. - - * cppmain.c: Define progname, required by cpplib. - -Sun Oct 29 07:48:36 1995 Michael Meissner - - * xcoffout.h (DBX_FINISH_SYMBOL): Deal with names created via - the __asm__ construct that start with a leading '*'. - * xcoffout.c (xcoff_declare_function): Likewise. - -Sun Oct 29 07:45:41 1995 Jim Wilson - - * stupid.c (stupid_mark_refs): Handle SUBREG of pseudo-reg in a - SET_DEST same as we handle a pseudo-reg in a SET_DEST. - -Sun Oct 29 07:43:15 1995 Pat Rankin - - * libgcc2.c (L_eh: __unwind_function): Implement for VAX. - * vax.h (RETURN_ADDRESS_OFFSET, RETURN_ADDR_RTX): Define. - -Sun Oct 29 12:39:08 1995 Richard Kenner a - - * i386/sol2.h (CPP_PREDEFINES): Add -D__SVR4. - -Sun Oct 29 07:14:36 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) - - * reload.c (find_equiv_reg): Check for nonsaving setjmp. - -Fri Oct 27 15:15:56 1995 Jim Wilson - - * Makefile.in (out_object_file): Depend on TREE_H. - -Fri Oct 27 06:42:36 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * alpha.c (call_operand): Only allow reg 27 on NT too. - * alpha.md (call_value_nt, call_nt): Force non-SYMBOL_REF - into reg 27, just like for OSF. - - * rs6000.c (struct asm_option): Changed from struct option. - (expand_block_move_mem): Remove erroneously-added line. - - * expr.c (clear_storage): SIZE is now rtx, not int. - (store_constructor): Call clear_storage with rtx. - (get_inner_reference): Convert index to precision of - sizetype, not POINTER_SIZE. - (expand_expr, case ARRAY_REF): Likewise. - * expr.h (clear_storage): Second arg is rtx, not int. - -Fri Oct 27 05:45:58 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) - - * combine.c (force_to_mode, case ASHIFTRT): Properly handle - mask wider than HOST_WIDE_INT. - - * c-decl.c (pushdecl): Don't test TREE_PUBLIC when deciding whether - to register a duplicate decl in the current block. - -Thu Oct 26 21:55:39 1995 Jason Merrill - - * calls.c (expand_call): Don't trust the callee to copy a - TREE_ADDRESSABLE type. - * function.c (assign_parms): Likewise. - -Thu Oct 26 19:25:05 1995 Mike Stump - - * libgcc2.c (__unwind_function): Provide a default definition for - implementations that don't yet have a function unwinder. - -Thu Oct 26 18:08:19 1995 Paul Eggert - - * cccp.c (handle_directive): Don't treat newline as white - space when coalescing white space around a backslash-newline. - -Thu Oct 26 17:57:34 1995 Ian Lance Taylor - - * mips-tdump.c (enum st): Define st_Struct, st_Union, and st_Enum. - (st_to_string): Handle them. - (type_to_string): Add fdp argument; pass it to emit_aggregate. - (print_symbol): Add fdp argument; pass it to type_to_string. - Handle st_Struct, st_Union, and st_Enum. - (emit_aggregate): Add fdp argument. Handle opaque types. Map - through RFD entries. - (print_file_desc): Pass FDR to print_symbol. - (main): Pass null FDR to type_to_string. - -Thu Oct 26 08:07:10 1995 Michael Meissner - - * configure (powerpc-ibm-aix[456789]*): Use rs6000/t-newas, - not rs6000/t-rs6000. - (rs6000-ibm-aix3.2.[456789]*): Likewise. - (rs6000-ibm-aix[456789]*): Likewise. - - * rs6000/t-newas: Copy from t-rs6000. - * t-rs6000: Don't build -mcpu=common multilib variants of libgcc.a. - - * rs6000.md (load_multiple insn): If address register is among regs, - don't load it with a lwsi instruction, which is undefined on PowerPC. - -Thu Oct 26 08:01:32 1995 Jim Wilson - - * dwarfout.c (output_compile_unit_die): Handle language_string - of "GNU F77". - - * reload.c (find_reloads_address): When check for out of range constant - plus register, accept any hard register instead of just fp, ap, sp. - - * combine.c (distribute_notes): For Oct 19 change, add additional - check to verify that place has a valid INSN_CUID. - - * sparc/t-vxsparc (LIBGCC1_TEST): Define. - - * sh.md (negdi2): Use TARGET_LITTLE_ENDIAN. - - * combine.c (force_to_mode, case ASHIFTRT): Verify mode bitsize is - within HOST_BITS_PER_WIDE_INT before shifting by it. - - * final.c (final_scan_insn): When recur for instruction in delay slot, - add loop around recursive call in case the instruction gets split. - -Thu Oct 26 07:28:45 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) - - * genrecog.c (write_tree_1): Avoid emitting '-2147483648'. - - * jump.c (duplicate_loop_exit_test): Return 0 if found - a NOTE_INSN_LOOP_CONT. - -Tue Oct 24 15:30:14 1995 Jeffrey A Law - - * calls.c (expand_call): Make sure valreg is at least - a full word. - -Sun Oct 22 19:35:41 1995 Jim Wilson - - * sh.h (INIT_SECTION_ASM_OP): Delete. - (HAVE_ATEXIT): Define. - -Sun Oct 22 07:46:04 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * libgcc2.c (__fixuns[xds]fsi): #undef MIN and MAX before #include - of limits.h. - - * pa.c (pa_adjust_cost): Use pa_cpu, not pa_cpu_attr. - -Sun Oct 22 07:38:58 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) - - * alpha.h (CONST_OK_FOR_LETTER_P): Use 'U' for unsigned constants. - * alpha.c (alpha_emit_set_const): Likewise. - * mips.c (gen_int_relational): Likewise. - -Sun Oct 22 07:14:35 1995 Douglas Rupp (drupp@cs.washington.edu) - - * i386.c (i386_return_pops_args): Don't need a FUNDECL to - check for type attributes in FUNTYPE. - -Sat Oct 21 18:17:42 1995 Jim Wilson - - * sh.md (define_delay): Don't accept any instruction for an annulled - slot, only accept those for which in_delay_slot is yes. - * sh.c (find_barrier): When hi_const returns true, increment count_si - by two if found_si is true. - Always use get_attr_length to compute length of instructions. - If count_hi or count_si out of range at end, need two PREV_INSN calls - not one. - When create new label, set LABEL_NUSES to 1. - (reg_unused_after): Ifdef out code for handling labels. - (prepare_scc_operands): New local variable mode. Set it from - sh_compare_op0 or sh_compare_op1. Use it instead of SImode in - force_reg calls. - - * optabs.c (expand_float): Emit missing barrier after unconditional - jump. - -Sat Oct 21 14:16:46 1995 Torbjorn Granlund - - * alpha.md (cmpdf): Make conditional on TARGET_FP. - -Fri Oct 20 19:11:12 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) - - * combine.c (distribute_notes): Delete instructions without - side effect that set a subreg of an unused register. - - * m68k.h (PREFERRED_RELOAD_CLASS): Check for !G constants - for DATA_OR_FP_REGS also. - -Fri Oct 20 18:57:10 1995 Ian Lance Taylor - - * genmultilib: Output negations of unused alternatives, even if - one of the alternatives is selected. - -Fri Oct 20 18:48:50 1995 Jeff Law (law@hurl.cygnus.com) - - * integrate.c (output_inline_function): Turn on flag_no_inline - to avoid function integration once we begin writing deferred - output functions. - -Fri Oct 20 18:46:33 1995 Michael Meissner - - * rs6000.c (float_conv_temp): Delete global variable. - (stack_temps): New static array to hold stack temps. - (offsettable_mem_operand): Delete function. - (offsettable_addr_operand, rs6000_stack_temp): New functions. - (output_epilog): Zero stack_temps. - - * rs6000.h (offsettable_addr_operand): Declare instead of - offsettable_mem_operand. - (PREDICATE_CODES): Use offsettable_addr_operand. - (float_conv_temp): Delete variable. - - * rs6000.md (move_to_float insns): Change move_to_float so - that it doesn't have a clobber of the memory address, and instead - passes the stack temp's memory address as one of the unspec args. - (fix_truncdfsi2): Use rs6000_stack_temp to allocate the temp. - (multiply, shift insns): Fix all cases of multiply and shift insns so - that the right mnemonics are used for -mcpu=common with both - -m{old,new}-mnemonics. - -Fri Oct 20 17:58:19 1995 Jim Wilson - - * expr.c (safe_from_p, case RTL_EXPR): Return 0 if RTL_EXPR_SEQUENCE - exists. Delete code to return 0 if exp_rtl is zero. - - * function.c (init_function_start): Don't call init_insn_lengths here. - * toplev.c (rest_of_compilation): Call it here. - -Thu Oct 19 19:19:06 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * c-common.c (check_format_info): Make test for null pointer - more general. - -Thu Oct 19 18:56:16 1995 Satoshi Adachi (adachi@wisdom.aa.ap.titech.ac.jp) - - * fixincludes (stdlib.h): Be more general in edit to change - declaration of {c,m,re}alloc. - -Thu Oct 19 18:48:53 1995 Torbjorn Granlund - - * libgcc2.c (__udiv_w_sdiv): If we don't have sdiv_qrnnd, define - dummy variant of __udiv_w_sdiv. - -Thu Oct 19 18:45:21 1995 Jim Wilson - - * alpha.h (ASM_SPEC): If GNU as is the default, then pass -g to - the assembler if -malpha-as. If GNU as is not the default, then pass - -g to the assembler is not -mgas. - - * combine.c (distribute_notes): When search for new place to put - REG_DEAD note, call distribute_links if this new place is between - i2 and i3, and i2 uses the register. - -Thu Oct 19 18:41:36 1995 Michael Meissner - - * rs6000.md (float{,uns}sidf2): Rewrite to break the conversion - process into several general insns. - (move_to_float): New insns to move 2 integer regs into a float register - through memory, taking endianess into account. Make sure that the - floating temporary is a valid address. Use one temporary for all - floats converted. - (fix_truncdfsi2): Take endianess into account. - - * rs6000.c ({low_32_bit,offsettable_mem}_operand): The function - low_32_bit_operand is now unused, delete it. New function - offsettable_mem_operand to determine if a memory address is - offsettable. - * rs6000.h ({low_32_bit,offsettable_mem}_operand): Ditto. - (PREDICATE_CODES): Ditto. - - * rs6000.{c,h} (float_conv_temp): New global. - * rs6000.c (output_epilog): Zero out float_conv_temp. - - * Makefile.in (libgcc{1,2}.a): Allow LIB{1,2}FUNCS_EXTRA files to - end in .S as well as .c and .asm. - -Wed Oct 18 17:56:45 1995 Jose Alonso (sidinf@fpsp.fapesp.br) - - * c-typeck.c (parser_build_binary_op): Warn about x^y==z, etc. - -Mon Oct 9 12:38:06 1995 Michael Meissner - - * protoize.c (reverse_def_dec_list): Silence compiler warnings. - -Mon Oct 9 12:35:54 1995 Andrew Cagney - - * ginclude/va-ppc.h (va_arg): Deal with long longs that would be - passed in the 7th register, and are passed in the stack instead. - -Fri Oct 6 13:47:10 1995 Jim Wilson - - * alpha.h (ASM_SPEC): Add -g. - -Fri Oct 6 13:42:50 1995 Richard Kenner - - * alpha.h (alpha_{arg,auto}_offset): Make extern. - -Fri Oct 6 13:24:43 1995 Michael Meissner - - * rs6000.h (RETURN_ADDRESS_OFFSET): Correct previous change. - -Fri Oct 6 13:14:43 1995 Doug Evans - - * rtlanal.c (reg_set_last): Fix call to reg_set_between_p. - -Tue Oct 3 12:31:38 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * stor-layout.c (layout_type, case ARRAY_TYPE): Strip MAX_EXPR - from upper bound when computing length if it just protects against - negative length. - - * expr.c (emit_move_insn_1): When doing multi-word move, show - output is clobbered. - -Tue Oct 3 12:26:07 1995 Jim Wilson - - * cse.c (set_nonvarying_address_components, case AND): Add *pend to - end. Add constant to start instead of subtracting it. - -Tue Oct 3 12:23:28 1995 Torbjorn Granlund - - * combine.c (simplify_rtx): In code that attempts to simplify - conditional expressions, if the result is an NE around another - comparison, return the original expression. - - * longlong.h (mips umul_ppmm): Use `l' and `h' constraints; - remove mflo and mfhi instructions. - -Tue Oct 3 12:21:29 1995 Michael Meissner - - * ginclude/va-ppc.h (va_start, stdarg case): Call - __builtin_next_arg, and ignore the result, so that the compiler - can report the proper error, if the second argument is not the - last argument. - -Tue Oct 3 12:02:51 1995 Kohtala Marko - - * function.c (assign_stack_temp): Adjust full_size field of - temp_slot when splitting an unused slot. - -Tue Oct 3 11:51:59 1995 Mike Stump - - * expr.c (expand_builtin_return_addr): Break out functionality - from expand_builtin. - (expand_builtin): Call expand_builtin_return_addr. - * rs6000.h (RETURN_ADDR_RTX): Remove call to copy_to_reg. - Offset to return address is 4 when !TARGET_64BIT and v4_call_p, - 8 otherwise. - * sparc.h (RETURN_ADDR_RTX): Remove call to copy_to_reg. - * alpha.h (RETURN_ADDR_RTX): New definition. - -Sun Oct 1 21:23:30 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * tree.c (staticp, case INDIRECT_EXPR): Disable case. - - * expr.c (expand_expr, case COMPONENT_REF): If getting component - of union of variable size, propagate TARGET. - -Fri Sep 29 07:48:09 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * expr.c (store_expr): When storing promoted value, don't return - MEM if address contains target. - -Thu Sep 28 14:30:03 1995 Paul Eggert - - * cccp.c (rescan): Expand `#if foo && #bar' without a bogus - complaint about preprocessor directives within macro args. - Expand `foo' in `foo#bar' without requiring a space before `#'. - -Thu Sep 28 14:24:26 1995 Philippe De Muyter (phdm@info.ucl.ac.be) - - * m68k.md (anonymous DImode shift patterns setting cc0): Turned - off due to reload problems. - -Thu Sep 28 14:05:22 1995 Niklas Hallqvist (niklas@appli.se) - - * Makefile.in (USER_H): Move up so can override. - (INSTALL_ASSERT_H): New definition. - (install-headers): Use it. - (stmp-int-hdrs): Handle USER_H being empty. - * config/x-netbsd (INSTALL_ASSERT_H): Define as empty. - - * i386/netbsd.h (WCHAR_{TYPE,UNSIGNED,TYPE_SIZE}): Now int. - * m68k/netbsd.h, ns32k/netbsd.h, sparc/netbsd.h: Likewise. - * vax/netbsd.h: Likewise. - (SIZE_TYPE): Use unsigned int. - - * m68k.c (output_scc_di): Swap operands when needed. - * m68k.h (LEGITIMATE_PIC_OPERAND): Allow SYMBOL_REF_FLAG symref. - * m68k.md: Make both assembler syntaxes do the same for PIC calls. - -Tue Sep 26 16:51:44 1995 Michael Meissner - - * mips.c (override_options): Don't allow anything but integers to - go in the HI/LO registers. - -Tue Sep 26 16:36:18 1995 John F. Carr - - * c-common.c (check_format_info): Don't warn about format type - mismatch if the argument is an ERROR_MARK. - -Mon Sep 25 17:50:50 1995 Craig Burley (burley@gnu.ai.mit.edu) - - * stor-layout.c (put_pending_sizes): New function. - * tree.h (put_pending_sizes): Add declaration. - * tree.c (save_expr): Return original for ERROR_MARK. - -Fri Sep 22 19:20:01 1995 Jeff Law (law@hurl.cygnus.com) - - * expr.c (expand_builtin, case BUILT_IN_MEMCPY): Strip off - all NOP exprs from the source and destination nodes, then - set MEM_IN_STRUCT_P. - -Fri Sep 22 18:50:31 1995 Michael Meissner - - * rs6000/eabi.h (ASM_OUTPUT_INT): Test for whether the integer - being output is also a constant so &sym - &sym2 is not fixed up. - -Fri Sep 22 18:49:07 1995 Peter Flass (FLASS@LBDRSCS.BITNET) - - * i370.md (cmpsi): Add missing constraints to operand 1. - -Fri Sep 22 18:27:33 1995 Torbjorn Granlund - - * i386.h (CONST_OK_FOR_LETTER_P): Make `N' match range 0..255 - for `outb' instruction. - - * pyr.h (PRINT_OPERAND): Handle code `R' for REG. - * longlong.h (pyr umul_ppmm): Use it. - -Fri Sep 22 18:24:38 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * c-parse.in (enumlist): Propagate error_mark_node. - - * c-aux-info.c (gen_type): Handle ERROR_MARK. - - * alpha.md (movdi): Avoid memory sharing problem when in reload. - -Wed Sep 20 14:27:09 1995 Peter Flass - - * mvs.h (FUNCTION_PROLOGUE): Maintain savearea forward chain - per MVS standards. - -Wed Sep 20 14:20:52 1995 Torbjorn Granlund - - * pyr.md (cmphi recognizer): Make condition match constraints. - (cmpqi recognizer): Likewise. - -Wed Sep 20 12:42:59 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * integrate.c (expand_inline_function): Do copy something setting - the result register if it is setting it to itself and has a REG_NOTE. - - * integrate.c (set_decl_{origin_self,abstract_flags}): Treat - a DECL_INITIAL of error_mark_node the same as one of NULL_TREE. - -Tue Sep 19 19:30:18 1995 Dave Pitts (dpitts@nyx.cs.du.edu) - - * i370.md (cmphi, movhi, movstricthi, extendhisi2): Correct generation - of short integer (Halfword) - ({add,sub,mul,and,ior,xor}hi3): Likewise. - * i370/mvs.h (MACROPROLOGUE): New macro. - (FUNCTION_{PRO,EPI}LOGUE): Added ability to use IBM supplied function - prologue macros. - (FUNCTION_PROLOGUE): Corrected function "in-line" prologue alignment - problems. - (ASM_DECLARE_FUNCTION_NAME): Changed alignment to FullWord. - (ASM_OUTPUT_{SHORT,ASCII}): Reworked. - -Tue Sep 19 19:22:15 1995 Douglas Rupp (drupp@cs.washington.edu) - - * winnt/win-nt.h: Renamed from winnt/win-nt.h. - (LINK_SPEC): Add -noinhibit-exec. - * {alpha,i386}/win-nt.h: Renamed from {alpha,i386}/winnt.h. - Include winnt/win-nt.h, not winnt/winnt.h. - * winnt/oldnames.c: New file. - * winnt/headers.mak (fixinc-nt.obj): Fix typo. - * winnt/config-nt.bat: Change winnt.h to win-nt.h. - * i386/config-nt.sed: Likewise. - * configure ({alpha,i386}-*-winnt3*): Likewise. - -Mon Sep 18 14:00:45 1995 Oliver Kellogg (Oliver.Kellogg@space.otn.dasa.de) - - * 1750a.h (enum reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS): - Added R2 and R0_1. - (REG_CLASS_FROM_LETTER): New letters 't' and 'z'. - (EXTRA_CONSTRAINT): New letter 'Q'. - -Sun Sep 17 12:39:22 1995 Jeff Law (law@snake.cs.utah.edu) - - * pa.h (ASM_DECLARE_FUNCTION_NAME): If a parameter's type - has TYPE_NEEDS_CONSTRUCTING on, then it's passed by invisible - reference. - -Sat Sep 16 17:42:33 1995 Jim Wilson - - * loop.c (find_and_verify_loops): Fix error in last change. - -Sat Sep 16 08:38:22 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * alpha.h (GO_IF_LEGITIMATE_ADDRESS): Disallow SYMBOL_REF for - current function. - - * cse.c (recorded_label_ref): New variable. - (insert): Set instead of cse_jumps_altered. - (cse_main): Initialize it and return 1 if nonzero at end. - -Fri Sep 15 18:26:49 1995 Torbjorn Granlund (tege@matematik.su.se) - - * fold-const (div_and_round_double): Change `carry', `quo_est', - and `scale' from plain int to `unsigned HOST_WIDE_INT'. - -Fri Sep 15 18:24:24 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * cse.c (insert): Set cse_jumps_altered when inserting a LABEL_REF. - -Fri Sep 15 17:29:41 1995 Oliver Kellogg (Oliver.Kellogg@space.otn.dasa.de) - - * 1750a.c (b_mode_operand): New function. - (print_operand): Added code 'Q'. - -Fri Sep 15 17:27:23 1995 Jim Wilson - - * loop.c (find_and_verify_loops): When moving exit blocks out of - the loop, verify that the target of P is within the current loop. - - * reorg.c (fill_slots_from_thread): Update thread if it is split. - -Fri Sep 15 17:06:51 1995 Michael Meissner - - * rs6000.md (decrement_and_branchsi and related insns): Don't use - a "2" to select a register preference for operand 1 if operand 2 - hasn't been seen yet. - Add appropriate clobbers in decrement_and_branchsi. - Add patterns where the pc/label_ref are interchanged. - - * Makefile.in (gnucompare, stmp-multilib-sub): Remove extra . in - front of $(objext). - - * rs6000.c (output_toc): Align DF constants if STRICT_ALIGNMENT. - - * config/fp-bit.c (FLO_union_type): Add words field if double - precision to get at the separate words. - (FLO_union_type, pack_d, unpack_d): Use FLOAT_BIT_ORDER_MISMATCH - to determine when the bitfields need to be reversed, and - FLOAT_WORD_ORDER_MISMATCH when the words need to be reversed. - -Fri Sep 15 16:41:43 1995 Jeff Law (law@snake.cs.utah.edu) - - * reorg.c (fill_simple_delay_slots): When filling insn's delay slot - with JUMP_INSN, don't assume it immediately follows insn on - unfilled slots obstack. - - * Makefile.in (caller-save.o): Depend on insn-codes.h. - -Thu Sep 14 17:41:49 1995 Jim Meyering (meyering@comco.com) - - * protoize.c (do_cleaning): Don't blank out backslash-escaped - newlines in double quoted strings. - -Thu Sep 14 16:20:35 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * emit-rtl.c (gen_lowpart): If gen_lowpart_common fails - for a REG, load it into a pseudo and try again. - -Thu Sep 14 14:15:16 1995 Stan Cox (coxs@dg-rtp.dg.com) - - * m88k.h (VERSION_INFO1): Removed BCS reference. - * m88k/dgux.h (ASM_SPEC, *_LEGEND): - Added -mno-legend option. -mstandard no longer implies that legend - legend information not be produced. - (LINK_SPEC): Removed -z text - -Tue Sep 12 19:05:39 1995 Jim Wilson - - * cccp.c (is_system_include): Call skip_redundant_dir_prefix. - -Tue Sep 12 18:58:21 1995 John Carr - - * sparc.md: Change `*return "string"' to "string" in patterns. - -Tue Sep 12 18:48:47 1995 Craig Burley (burley@gnu.ai.mit.edu) - - * function.c (put_var_into_stack): For CONCAT case, order of - placement depends on FRAME_GROWS_DOWNWARD, not STACK_GROWS_DOWNWARD. - -Tue Sep 12 18:34:10 1995 Doug Evans - - * va-sparc.h (v9 varargs va_start): Handle __builtin_va_alist - being stack argument. - - * sparc.h (STATIC_CHAIN_REGNUM): Use %g5 for sparc64. - (TRAMPOLINE_TEMPLATE): Rewrite for sparc64. - (TRAMPOLINE_SIZE): Is 40 for sparc64. - * sparc.c (sparc64_initialize_trampoline): Rewrite. - -Tue Sep 12 18:30:22 1995 Douglas Rupp (drupp@cs.washington.edu) - - * cp/Make-lang.in (cc1plus) : Removed unnecessary $(exeext). - - * configure: Added code to handle gcc_extra_objs. - (alpha-winnt): Changed xmake_file to winnt/x-winnt. - Added extra_gcc_objs=spawnv.o; changed extra_programs to ld.exe. - (i386-winnt): Changed xmake_file to winnt/x-winnt. - Added extra_gcc_objs=spawnv.o; changed extra_programs to ld.exe. - * configure.bat: Changed to used common winnt/config-nt.bat. - * Makefile.in: Changed various .o's to .$(objext)'s - (specs): Removed unnecessary $(exeext). - (EXTRA_GCC_OBJS): New variable. - (clean): Removed $(LIB2FUNCS_EXTRA) - * objc/Makefile: Changed archive command for libobjc.a to use $? - for objects. - - * alpha/x-winnt, i386/x-winnt: Deleted. - * alpha/config-nt.bat, i386/config-nt.bat: Deleted. - * alpha/config-nt.sed, i386/config-nt.sed: Moved architecture - independent commands to config/winnt/config-nt.sed. - * alpha/winnt.h: Added -D_M_ALPHA to CPP_PREDEFINES. - Changed LIB_SPEC to be compatible with Gnu ld for NT. - * i386/winnt.h: Added -D_cdecl=__attribute__((__cdecl__)). - Change LIB_SPEC to be compatible with Gnu ld for NT. - * winnt/config-nt.bat, winnt/config-nt.sed: New files. - * winnt/dirent.{c,h}, winnt/fixinc-nt.c, winnt/headers.mak: New files. - * winnt/ld.c: Changed precedence of libraries to look for - libfoo.lib before libfoo.a - Changed to work like Gnu ld for NT. - * winnt/libgcc.mak, winnt/mklibgcc.c: New files. - * winnt/spawnv.c: Changed spawn function entry points to __spawn* - instead of spawn*. - * winnt/x-winnt: New file. - * fixinc-nt.sed: New file. - * fixinc.winnt: Rewritten to use fixinc-nt.sed. - - * gcc.c: Remove fix_argv kludge. - -Tue Sep 12 13:24:17 1995 Michael Meissner - - * rs6000.md (power subdi3 pattern): Fix pattern to have 5 - alternatives, and correct 4th alternative to match reality. - - * rs6000.md (adddi3, subdi3, negdi2): Add constraints so output reg - does not overlap one reg with one of the inputs. - -Tue Sep 12 13:09:48 1995 Philippe De Muyter (phdm@info.ucl.ac.be) - - * m68k.c (output_scc_di): Fixed for non-SGS_CMP_ORDER syntax. - - * collect2.c (scan_libraries): Cast lsyms' alloca to LDSYM*. - -Tue Sep 12 13:04:12 1995 Niklas Hallqvist (niklas@appli.se) - - * stmt.c (expand_start_stmt_expr): Do stack adjust in right place. - - * stdarg.h (__gnuc_va_list): Make char * for NetBSD. - -Tue Sep 12 12:44:46 1995 Jason Merrill - - * ginclude/va-ppc.h (va_arg): Reorganize to avoid BIND_EXPRs of - aggregate or array type. - -Tue Sep 12 12:42:27 1995 Ian Lance Taylor - - * fixincludes: Fix HP/UX for g++ -pedantic-errors. - - * fixincludes (curses.h): typedef bool need not take up entire line. - -Mon Sep 11 19:05:42 1995 Stan Cox (coxs@dg-rtp.dg.com) - - * c-typeck.c (digest_init): Don't recursively call digest_init - when in traditional mode if the type is invalid. - -Mon Sep 11 18:58:26 1995 Oliver Kellogg (Oliver.Kellogg@space.otn.dasa.de) - - * 1750a.md: Added DLB/DSTB peepholes for HFmode. - Corrected mnemonics for HImode DSTB peephole. - -Mon Sep 11 18:48:06 1995 Michael Meissner - - * config/fp-bit.c (FLO_union_type): Remove bitfields to set sign, - exponent, and mantissa, and add value_raw field, which is an - integer of the appropriate type. If _DEBUG_BITFLOAT is defined, - provide little and big endian bitfields. If the macro - FLOAT_BIT_ORDER_MISMATCH is defined, use explicit bitfields. - (pack_d, unpack_d): Switch to use value_raw and explicit shifts - and masks so that we don't have to worry about whether the target - is big or little endian unless FLOAT_BIT_ORDER_MISMATCH is - defined. If single precision floating point, rename to pack_f and - unpack_f, so there is no confusion in the debugger. - - * rs6000.h (rs6000_abi): New enumeration to describe which - ABI we're conforming to. - (rs6000_stack): Use abi enum, not AIX vs. V.4 boolean. - (ASM_OUTPUT_OPTIONS): New macro to print output options in .s file. - (ASM_FILE_START): Use it. - (output_options,rs6000_float_const): Declare new functions. - - * rs6000.c (output_option{,s}): New functions to write -f, -m, - and -W options to the asm file. - (rs6000_float_const): New function to generate floating point - constants portably used in signed,unsigned -> double conversions. - (rs6000_stack_info,debug_stack_info): Use ABI enumeration instead - of AIX vs. V.4 boolean. - - * rs6000.md (float{,uns}sidf2): Call rs6000_float_const to - portably build the proper floating point constant for conversions. - (movdi): Properly handle movdi of CONST_{INT,DOUBLE} on little - endian systems. - - * rs6000/sysv4.h (LIBGCC2_WORDS_BIG_ENDIAN): Define to be 0/1 - depending on the target endianess. - (ASM_FILE_START): Define, to call output_options in addition to - output_file_directive. - (TRAMPOLINE_SIZE): Correct size to match code. - - * rs6000/eabi{,le}sim.h (CPP_SPEC): Define the correct endian - macro for varargs/stdargs use. - -Mon Sep 11 18:41:58 1995 Jim Wilson - - * c-decl.c (redeclaration_error_message): For TYPE_DECLs, return 0 - if TYPE_MAIN_VARIANT of old type is same as new type. - -Mon Sep 11 17:39:35 1995 Rob Ryan (robr@cmu.edu) - - * xcoffout.c (xcoff_inlining): New variable, used in place of - xcoff_current_include_file when determining whether to use - absolute line numbers. - (xcoffout_source_file): Switched to using xcoff_inlining to - determine when to emit .bi/.ei directives. - -Mon Sep 11 16:55:06 1995 Torbjorn Granlund - - * m68k.md (cmpdi): Change patterns to allocate scratch register at - RTL generation time. - (tstdi): Likewise. - -Sun Sep 3 09:03:50 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * fold-const.c (size_binop): Don't pass 1 to NOTRUNC. - -Thu Aug 31 19:27:00 1995 Roland McGrath - - * libgcc2.c: Include longlong.h. - [L_udivdi3 || L_divdi3 || L_umoddi3 || L_moddi3] (__udivmoddi4): - Define this `static inline' when defining these, so they all - remain leaf functions. - -Thu Aug 31 18:38:21 1995 Paul Eggert - - * c-parse.in (ends_in_label): New %union member. - (stmts, stmt_or_label): Use new member to avoid lexical lookahead hack. - (lineno_stmt_or_labels): New rule. - (lineno_stmt_or_label, stmt_or_label): Yield nonzero if it ends - in a label. - -Thu Aug 31 08:31:40 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * cse.c (canon_hash, CONST_DOUBLE): Hash integer and real - differently. - * varasm.c (struct rtx_const): Add new field DI to union. - (decode_rtx_const, case CONST_DOUBLE): Use to hash CONST_DOUBLE - representing an integer. - - * va-alpha.h (__gnuc_va_list): Make __offset an int. - * alpha.c (alpha_builtin_saveregs): Properly compute address - of __offset both both OSF and WINNT. - - * xm-alpha.h (sbrk): Don't define here. - * gmon.c (sbrk): Define here for __alpha. - * toplev.c (sbrk): Likewise. - * mips-tfile.c (malloc, calloc, realloc): Don't define for anybody. - - * reload.c (push_reload): Add case for output reload of a SUBREG - of a hard reg when output mode is invalid for that mode. - In both that case and existing case for in, don't remove SUBREG. - * reload1.c (emit_reload_insns): Emit RELOAD_OTHER output reloads last. - -Tue Aug 29 19:16:06 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * c-common.c (decl_attribute, case A_PACKED): Check is_type first. - (decl_attribute, case A_T_UNION): Likewise. - Don't access TYPE_FIELDS if DECL is zero. - * c-decl.c (finish_struct): If transparent_union attribute - specified, validate it once we finish laying the union out. - -Mon Aug 28 05:58:03 1995 Paul Eggert - - * arm.c (arm_gen_movstrqi): Remove unused variable const_sxteen. - - * bi-lexer.c (buffer, inpoint): Remove unused variables. - - * i370/mvs.h, i370/mvs370.c (mvs_label_emitted): Renamed - from mvs_label_emited. - - * msdos/configur.bat: Fix misspelling of `maintainer-clean'. - -Sat Aug 26 06:57:17 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * reload.c (push_secondary_reload): If X is a paradoxical SUBREG, - get mode and thing to reload from inside. - * reload1.c (emit_reload_insns): Do nothing for SUBREG whose - operand is unused subsequently. - In secondary reload case, if paradoxical SUBREG for output, reload - thing inside SUBREG, just like gen_reload. - -Fri Aug 25 19:26:53 1995 Paul Eggert - - * c-typeck.c (set_init_label): Don't die if an entire - brace-pair level is superfluous in the containing level. - -Fri Aug 25 19:22:46 1995 Michael Meissner - - * configure (powerpc{,le}-eabisim): Add support for a new target - that works under the PSIM simulator. - * rs6000/eabisim.h, rs6000/eabilesim.h, rs6000/t-eabisim: New files. - - * rs6000/eabi.h (STRICT_ALIGNMENT): If little endian, always set - strict alignment to 1. - -Fri Aug 25 19:22:23 1995 David Edelsohn - - * rs6000.md ({add,sub,mulsi}di3): Support both endian possibilities. - (negdi2): Likewise. - -Fri Aug 25 19:10:41 1995 Oliver Kellogg (Oliver.Kellogg@space.otn.dasa.de) - - * 1750a.md: Added peephole definitions for Load/Store Base insns - and eliminating redundant load in an equivalent store/load sequence. - -Fri Aug 25 18:33:27 1995 Craig Burley (burley@gnu.ai.mit.edu) - - * toplev.c (report_error_function): Don't attempt to use input - file stack to identify nesting of #include's if file name oflocation - diagnosed is not same as input_filename. - -Fri Aug 25 07:31:47 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * integrate.c (output_inline_function): Switch to function obstack. - -Mon Aug 21 13:29:54 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) - - * i386.c (arithmetic_comparison_operator): New function. - (print_operand): Take into account that overflow flag is not - set the same as after a compare instruction. - * i386.md (decrement_and_branch_until_zero): Use - arithmetic_comparison_operator to decide if there is comparison - suitable to be expressed by condition code from an arithmetic op. - -Mon Aug 21 13:26:13 1995 Philippe De Muyter (phdm@info.ucl.ac.be) - - * m68k.md (adddi3, subdi3): "&" added to clobber's constraints. - -Mon Aug 21 12:11:14 1995 Jim Wilson - - * t-sparclite (MULTILIB_*, LIBGCC, INSTALL_LIBGCC): Define. - - * sh.md (movdi-1, movdf-1): Make conditional on reload_completed, - delete conditions checking for pseudo registers and Q addresses. - Add code to handle SUBREG. - - * local-alloc.c (wipe_dead_reg): Make a register mentioned in a - REG_INC note die after the instruction. - - * m68k.md: For all dbra pattern, change constraint from 'g' to 'd*g'. - - * Makefile.in: (underscore.c): Rename rule to stamp-under, and - touch stamp-under at the end. Add new rule for underscore.c that - depends on stamp-under. - - * sh.c (reg_unused_after): For a SEQUENCE, make sure all insns are - safe before returning 1. - - * sh.h (PROMOTE_FUNCTION_ARGS, PROMOTE_FUNCTION_RETURN): Define. - - * sh.c (output_stack_adjust): Add new argument reg. Use it instead - of stack_pointer_rtx. - (sh_expand_prologue, sh_expand_epilogue): Pass new argument to - output_stack_adjust. - -Sat Aug 19 17:34:15 1995 Jim Wilson - - * sparc/gmon-sol2.c (_mcount): Define. - * sparc/sol2.h (STARTFILE_SPEC, ENDFILE_SPEC): Delete superfluous - -pg tests. - (LINK_SPEC): Add libp directories to -Y when -pg. - - * unroll.c (calculate_giv_inc): Handle increment computed by ASHIFT. - -Sat Aug 19 17:28:56 1995 Philippe De Muyter (phdm@info.ucl.ac.be) - - * m68k.md (subdi3): Should not be commutative. - (one_cmpldi2): Fixed typo with register operand. - -Sat Aug 19 17:20:43 1995 Michael Meissner - - * rs6000.c (output_prolog): Fixup code to set stack pointer - if stack size > 32k. - * rs6000.md (sync_isync): Renamed from sync; added an isync insn - after the sync to properly deal with PowerPC's with split I/D caches. - * sysv4.h (INITIALIZE_TRAMPOLINE): Sync function now named sync_isync. - -Sat Aug 19 17:07:09 1995 Doug Evans - - * h8300.h (STATIC_CHAIN_REGNUM): Use r3. - (REGISTER_NAMES): Print r7 as sp. - (ADDITIONAL_REGISTER_NAMES): Recognize r7. - (ASM_OUTPUT_ALIGN): Alignment is power of 2. - * h8300.md (fancy_btst,fancy_btst1): Branch target must be - operand 0 for length attribute to work. - -Sat Aug 19 16:43:11 1995 Paul Franklin - - * assert.h: Declare __eprintf with attribute noreturn. - -Sat Aug 19 16:40:12 1995 Jason Merrill - - * stddef.h: Don't define wchar_t if __cplusplus is defined. - -Tue Aug 15 18:01:01 1995 Paul Eggert - - * cccp.c (warning_with_line): Fix typo in declaration when - !HAVE_VPRINTF and defined (__STDC__). - -Tue Aug 15 17:57:54 1995 Stephen L Moshier - - * real.c (ediv, emul): Set sign bit of IEEE -0.0 result. - -Tue Aug 15 17:49:47 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * expr.c (safe_from_p): Only safe if EXP is variable-size and X - is BLKmode. - - * stmt.c (fixup_gotos): When some fixups done, reset to point - to next instead of zeroing TREE_VALUE, which may be shared. - -Mon Aug 14 09:15:45 1995 Doug Evans - - * m68k/m68kemb.h (STARTFILE_SPEC): Define as empty. - -Mon Aug 14 09:08:57 1995 Pat Rankin - - * vax.c (vms_check_external): Update `pending_head' properly - when the first list element is removed. - -Mon Aug 14 09:01:32 1995 Jeffrey A. Law - - * pa.md (call expanders): Emit a blockage insn after restoring - %r19 when generating PIC. - -Sun Aug 13 21:58:49 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * toplev.c (main): Change text of unsupported -g option warning. - -Sun Aug 13 21:47:57 1995 Andrew McCallum - - * objc/selector.c (sel_get_any_typed_uid): New function. - * objc/objc-api.h (sel_get_any_typed_uid): Declare new function. - -Sun Aug 13 21:43:17 1995 John Carr - - * c-typeck.c (c_expand_asm_operands): Check for read-only output - operand where the variable is read-only but the type is not. - -Sun Aug 13 21:16:12 1995 David Edelsohn - - * rs6000.c (direct_return): Epilogue required if CR saved. - -Sun Aug 13 19:09:25 1995 Jeff Law (law@snake.cs.utah.edu) - - * configure (hppa1.?-hp-hpux10): Recognize and treat just like hpux9. - -Sun Aug 13 19:07:23 1995 Doug Evans - - * i960.md (movdi matchers): Fix src/dest order in unaligned - reg->reg case. - -Sun Aug 13 18:49:01 1995 DJ Delorie - - * i386/xm-dos.h (HAVE_STRERROR): New definition. - - * msdos/configur.bat: Add missing carriage return. - -Sun Aug 13 18:40:55 1995 Andrew Cagney - - * Makefile.in (USER_H): Add va-ppc.h. - -Sun Aug 13 18:36:17 1995 M. Warner Losh - - * stmt.c (expand_asm_operands): Type '0'..'4' operands may - allow regs, so move them to the default case. - -Sun Aug 13 18:32:35 1995 Paul Eggert - - * cccp.c (warning_with_line): New function. - (trigraph_pcp): Use it, to avoid reporting line number. - (vwarning_with_line): Don't report line number if zero. - -Sun Aug 13 18:23:08 1995 Jason Merrill - - * toplev.c (vmessage): Support four arguments. - -Sun Aug 13 18:19:51 1995 Michael Meissner - - * ginclude/stdarg.h: Add ppc svr4 calling sequence support. - * ginclude/varargs.h: Likewise. - * ginclude/va-ppc.h: New file. - -Sun Aug 13 18:05:20 1995 Michael Gschwind - - * configure (pdp-*-*): Add support for t-pdp11. - * t-pdp11: New file. - * Makefile.in (LIBGCC2_CFLAGS): Add TARGET_LIBGCC2_CFLAGS. - -Sun Aug 13 14:50:58 1995 Jim Wilson - - * final.c (final_start_function): Always call sdbout_begin_function - and xcoffout_begin_function, even if no line number info. - - * mips/abi64.h (SETUP_INCOMING_VARARGS): In if statement, only - subtract one for stdarg. Don't subtract PRETEND_SIZE from - argument pointer when calculating stack address. - * mips.h (INITIAL_ELIMINATION_OFFSET): For 64 bit ABI, subtract - current_function_pretend_args_size when converting from argument - pointer. - * va-mips.h (va_start): For stdarg, delete separate define for - 64 bit ABI. For varargs, don't subtract 64, and only add -8 when - all argument registers are used. - - * gcc.c (main): When concat gcc_exec_prefix and - standard_startfile_prefix, put machine_suffix in the middle. - - * iris6.h (INIT_SECTION_ASM_OP): Don't define. - (LD_INIT_SWITCH, LD_FINI_SWITCH, HAS_INIT_SECTION): Don't undef. - (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR): Ifdef out. - * configure (mips-sgi-irix6, mips-sgi-irix5cross64): Define - use_collect2 to yes. - - * combine.c (move_deaths): When have a multi-reg hard register, - if don't find a note, then recur for each individual hard register. - - * cse.c (set_nonvarying_address_components): Handle addresses - which are the sum of two constant pseudo regs. - (cse_rtx_addr_varies_p): Likewise. - - * Makefile.in (gfloat.h): Add a - before the rm command. - - * loop.c (find_and_verify_loops): Set dest_loop only if - JUMP_LABEL (insn) is non-zero. - -Mon Jul 31 14:31:53 1995 Ian Lance Taylor - - * fixincludes: Avoid clobbering VxWorks drv/netif/if_med.h file. - -Sat Jul 29 16:21:42 1995 Jason Merrill - - * collect2.c: (XCOFF_SCAN_LIBS): Define if OBJECT_FORMAT_COFF and - XCOFF_DEBUGGING_FORMAT. - (SCAN_LIBRARIES): Also define if XCOFF_SCAN_LIBS. - -Sat Jul 29 16:19:42 1995 Stuart D. Gathman - - * collect2.c (scan_libraries): Implement for AIX. - -Sat Jul 29 09:59:33 1995 Michael Gschwind - - * configure: (pdp11-*-bsd) New target. - * 2bsd.h: New file. - - * pdp11.c (output_move_double): Handle CONST_INT parameters properly. - * pdp11.h (RTX_COSTS): Fill in missing default values. - * pdp11.md (truncdfsf2, extendsfdf2, floatsidf2, fix_truncdfsi2): - Allow register parameters, required by gcc to generate correct code. - * xm-pdp11.h: Include tm.h. - -Sat Jul 29 09:55:17 1995 Andreas Schwab - - * configure (m68k-*-linux*aout*, m68k-*-linux*): New targets. - * m68k/linux-aout.h, m68k/linux.h, m68k/t-linux, m68k/xm-linux.h: New. - * m68k.md [USE_GAS]: Output `jbsr' instead of `jsr' for normal - function calls and `bsr.l' instead of `bsr' for pic function calls. - -Sat Jul 29 09:44:13 1995 Jim Wilson - - * sh.h (CAN_DEBUG_WITHOUT_FP): Comment out. - - * reload.c (find_reloads_address_1, case PLUS): When handle SUBREG, - add SUBREG_WORD offset to SUBREG_REG register number. - (find_reloads_address_1, case SUBREG): If a pseudo register inside - a SUBREG is larger than the class, then reload the entire SUBREG. - * sh.h (SUBREG_OK_FOR_INDEX_P): New macro. - (INDEX_REGISTER_RTX_P): Use it. - -Sat Jul 29 09:33:19 1995 Doug Evans - - * mips/netbsd.h (CPP_SPEC): Fix typo. - - * configure (a29k-*-vxworks*): Define extra_parts for crt{begin,end}.o. - * t-a29k, t-a29kbase, t-vx29k ({,CROSS_}LIBGCC1): Define as empty. - -Sat Jul 29 09:15:17 1995 Jeffrey A. Law - - * pa/lib2funcs.asm (gcc_plt_call): Rewrite to avoid the need - for being called by _sr4export. Inline expand $$dyncall to - avoid the need for long-call and PIC support. - -Sat Jul 29 07:30:04 1995 Oliver Kellogg (Oliver.Kellogg@space.otn.dasa.de) - - * ms1750.inc (ucim.m, ucr.m, uc.m): New. - * 1750a.md (cmpqi): Account for unsigned comparisons. - (rotrqi3, rotrhi3): Reworked. - * 1750a.c (notice_update_cc): INCM and DECM set condition codes. - (unsigned_comparison_operator, next_cc_user_is_unsigned): New fcns. - * 1750a.h (FUNCTION_EPILOGUE): Local variables freed from SP, not FP. - (ASM_OUTPUT_BYTE): Make distinct from ASM_OUTPUT_CHAR. - (ASM_OUTPUT_CONSTRUCTOR): Add FILE arg to assemble_name. - -Fri Jul 28 09:40:07 1995 Jeffrey A. Law - - * pa.h (DO_GLOBAL_DTORS_BODY): Use an asm statement to keep optimizer - from deleting an assignment it believes dead. - -Fri Jul 28 08:47:51 1995 Jim Wilson - - * unroll.c (unroll_loop): When preconditioning, output code to - execute loop once if initial value is greater than or equal to final - value. - - * configure (lang_specs_files, lang_options_files): Add $srcdir to - file names when adding them to these variables. - - * c-typeck.c (pointer_int_sum): Don't distribute if intop is unsigned - and not the same size as ptrop. - - * function.c (assign_stack_temp): When split a slot, set base_offset - and full_size in the newly created slot. - (combine_temp_slots): Update full_size when slots are combined. - - * sh.c (reg_unused_after): New function. - * sh.md (define_peephole): Add peepholes to use r0+rN addressing mode - for some address reloads. - - * final.c (final_start_function): If SDB_DEBUG, call - sdbout_begin_function. If XCOFF_DEBUG, call xcoffout_begin_function - instead of xcoffout_output_first_source_line. - (final_scan_insn): Don't call sdbout_begin_function or - xcoffout_begin_function. - * xcoffout.c (xcoffout_output_first_source_line): Delete. - (xcoffout_begin_function): Call dbxout_parms and - ASM_OUTPUT_SOURCE_LINE. - - * va-mips.h: Change every occurance of #if __mips>=3 to - #ifdef __mips64. - * mips/abi64.h (CPP_SPEC): Output -D__mips64 when -mips3, or -mips4, - or -mgp64. Output -U__mips64 when -mgp32. - * mips/dec-bsd.h, mips/elf64.h, mips/iris3.h: Likewise. - * mips/iris5.h, mips/mips.h, mips/netbsd.h, mips/osfrose.h: Likewise. - - * i960.c (i960_function_epilogue): Don't clear g14 for functions with - an argument block. - (i960_output_reg_insn): Likewise. - (i960_output_call_insn): Clear g14 for functions wtih an argument - block. - -Fri Jul 28 08:43:52 1995 Doug Evans - - * i960.c (i960_arg_size_and_align): Correct alignment of XFmode - values in library calls. - * i960.md (movdi matchers): Support odd numbered regs. - -Fri Jul 28 08:37:25 1995 Michael Gschwind - - * pdp11.md (divhi3, modhi3, divmodhi4): Rewrite. - -Wed Jul 26 10:15:52 1995 Hallvard B Furuseth (h.b.furuseth@usit.uio.no) - - * collect2.c (end_file): Fix typo in error message text. - -Wed Jul 26 09:22:22 1995 Jeff Law (law@snake.cs.utah.edu) - - * xm-pa.h (USE_C_ALLOCA): Always define. - * xm-pahpux.h (USE_C_ALLOCA): Likewise. - - * x-pa (CC): Remove useless definition. - * xm-pa.h (HAVE_STRERROR): Define. - (__BSD_NET2__): Define. - -Wed Jul 26 09:10:25 1995 Jason Merrill - - * expr.c (preexpand_calls): Don't look past a CLEANUP_POINT_EXPR. - -Wed Jul 26 08:43:42 1995 Jim Wilson - - * cse.c (cse_insn): When do special handling for (set REG0 REG1), - must delete REG_EQUAL note from insn if it mentions REG0. - - * loop.c (find_and_verify_loops): When moving blocks of code, verify - that the just destination is not in an inner nested loop. - (mark_loop_jump): Don't mark label as loop exit if it jumps to - an inner nested loop. - -Wed Jul 26 08:40:31 1995 Paul Eggert - - * cccp.c (do_include, read_name_map): Omit leading "./" and - trailing "/" when it makes sense. - (skip_redundant_dir_prefix): New function. - -Wed Jul 26 08:36:41 1995 Michael Meissner - - * stmt.c (emit_nop): Do not emit a nop if there is a single - insn before a label or at the start of a function. - -Wed Jul 26 08:21:21 1995 Doug Evans - - * Makefile.in (gfloat.h): Delete previous copy before updating. - -Wed Jul 26 08:18:29 1995 Roland McGrath - - * Makefile.in (STAGESTUFF): Add stamp-crtS. - (crtbeginS.o, crtendS.o, stamp-crtS): New rules; just like - crtbegin.o et al, but compiled using -fPIC. - * configure (*-*-gnu*): Add crtbeginS.o and crtendS.o to $extra_parts. - -Wed Jul 26 08:11:52 1995 Michael Gschwind - - * pdp11.md: Fixed typos ('bhos' -> 'bhis'). - -Wed Jul 26 08:05:41 1995 Jim Wilson - - * hp320.h, m68k.h, m68kv4.h (LEGITIMATE_PIC_OPERAND_P): Reject - CONST_DOUBLE with MEM with invalid pic address. - * reload1.c (real.h): Include it. - * Makefile.in (reload1.o): Depends on real.h. - -Wed Jul 26 07:58:22 1995 Ian Lance Taylor - - * gcc.c (MULTILIB_DIRS): Provide default if not defined. - (multilib_defaults): New static variable. - (default_arg): New static function. - (set_multilib_dir): Ignore default arguments. - (print_multilib_info): Ignore entries which use default arguments. - -Tue Jul 25 10:06:09 1995 Michael Meissner - - * rs6000.md (allocate_stack): Don't copy the LR register to - the new stack end. - * rs6000.c (rs6000_stack_info): Correctly store the LR in - the caller's frame, not the current frame, for V.4 calls. - * rs6000/eabi.asm (_save*, _rest*): Provide all mandated V.4 save - and restore functions, except for the save*_g functions which - return the GOT address. - -Fri Jul 21 14:24:25 1995 Michael Meissner - - * rs6000/eabi.h (__eabi): Load up r13 to be the small data - pointer, unless -mrelocatable. - - * rs6000/aix3newas.h (LINK_SPEC): Import machine independent - functions if -mcpu=common. - * rs6000/milli.exp: Import file referenced in aix3newas.h. - - * rs6000/eabi.asm (__eabi): Support for fixing up user initialized - pointers when -mrelocatable is used. - * rs6000/eabi.h (ASM_OUTPUT_INT): Record any pointers initialized - by the user if -mrelocatable, to be fixed up by __eabi. - (CONST_SECTION_ASM_OP): If -mrelocatable, put read-only stuff in .data, - not .rodata, to allow user initialized pointers to be updated by __eabi. - - * rs6000.h (TARGET_SWITCHES): Add -mdebug-{stack,arg}. - (TARGET_{ELF,NO_TOC,TOC}): Add defaults for non system V. - (rs6000_stack): New structure to describe stack layout. - (RS6000_{REG_SAVE,SAVE_AREA,VARARGS_*}): New macros used to - support both AIX and V.4 calling sequences. - (FP_ARG_*, GP_ARG_*): Ditto. - (FP_SAVE_INLINE): Ditto. - (STARTING_FRAME_OFFSET): Modify to support both AIX and V.4 - calling sequences. - (FIRST_PARM_OFFSET): Ditto. - (REG_PARM_STACK_SPACE): Ditto. - (STACK_POINTER_OFFSET): Ditto. - (FUNCTION_ARG_REGNO_P): Ditto. - ({,INIT_}CUMULATIVE_ARGS): Ditto. - (LEGITIMATE_LO_SUM_ADDRESS_P): Ditto. - (FUNCTION_ARG{,_ADVANCE,PARTIAL_NREGS,PASS_BY_REFERENCE}): Ditto. - (SETUP_INCOMING_VARARGS): Ditto. - (EXPAND_BUILTIN_SAVEREGS): Ditto. - (CAN_ELIMINATE): Ditto. - (INITIAL_ELIMINATION_OFFSET): Ditto. - (LEGITIMATE_CONSTANT_POOL_{BASE,ADDRESS}_P): Ditto. - (GO_IF_{LEGITIMATE_ADDRESS,MODE_DEPENDENT_ADDRESS}): Ditto. - (LEGITIMIZE_ADDRESS): Ditto. - (CONST_COSTS): Ditto. - (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Ditto. - (ASM_OUTPUT_REG_{PUSH,POP}): Use reg_names to print registers. - (function declarations): Add new rs6000.c function declarations, - and delete decls of deleted functions. - (SHIFT_COUNT_TRUNCATED): Parenthesize the expression. - - * rs6000.c (init_cumulative_args): New function to support AIX - and V.4 calling sequences. - (function_arg{,_advance,partial_nregs,pass_by_reference}): Ditto. - (setup_incoming_varargs): Ditto. - (expand_builtin_saveregs): Ditto. - (rs6000_stack_info): Ditto. - (debug_stack_info): Ditto. - (direct_return): Changes to support AIX and V.4 calling sequences. - (first_reg_to_save): Ditto. - (svr4_traceback): Ditto. - (output_{prolog,epilog}): Ditto. - (print_operand): Use reg_names to print registers. Add support - for V.4 HIGH/LO_SUM address modes. - (must_save_cr): Function deleted, in rewrite of AIX/V.4 calling - sequence support. - (rs6000_sa_size): Ditto. - (rs6000_pushes_stack): Ditto. - (output_toc): Add abort if no toc. - - * rs6000.md (call insns): Add a new argument to flag a V.4 - function needs to set bit 6 of the CR. - (elf_{low,high}): New V.4 functions to create addresses via HIGH - and LO_SUM patterns. - (movsi): Use elf_{low,high} if appropriate. - (mov{si,di}_update): Name these patterns for allocate_stack. - (allocate_stack): Support for V.4 stack layout. - (sync): New pattern for V.4 trampolines to issue the sync - instruction. - - * rs6000/sysv4.h (TARGET_SWTICHES): Add -mcall-{aix,sysv}, and - -mprototype. Remove separate flag bit for -mno-toc. - (SUBTARGET_OVERRIDE_OPTIONS): Don't test for -mno-toc. - (FP_ARG_*): Adjust for V.4 calling sequences. - (RS6000_*): Ditto. - (FP_SAVE_INLINE): Ditto. - (toc_section): Eliminate use of AIX style full TOC. - (TRAMPOLINE_{TEMPLATE,SIZE}): Redefine for V.4 support. - (INITIALIZE_TRAMPOLINE): Ditto. - - * rs6000/eabi.h (CPP_SPEC): Define _CALL_SYSV or _CALL_AIX, - depending on whether -mcall-sysv or -mcall-aix was used. - * rs6000/eabile.h (CPP_SPEC): Ditto. - * rs6000/sysv4le.h (CPP_SPEC): Ditto. - - * rs6000/t-eabigas (MULTILIB_{OPTIONS,DIRNAMES}): Delete no-toc - libraries, explicit big endian libraries. - * rs6000/t-ppcgas (MULTILIB_{OPTIONS,DIRNAMES}): Ditto. - - * rs6000/t-eabiaix: New file for eabi, using -mcall-aix as the - default. - * rs6000/eabiaix.h: Ditto. - - * rs6000/t-eabilegas: New file for eabi on little endian systems. - * rs6000/t-ppclegas: New file for V.4 on little endian systems. - - * rs6000/t-rs6000 (MULTILIB_{OPTIONS,DIRNAMES}): Build libgcc.a - for -mcpu=common. - - * configure (powerpc-*-eabiaix): New configuration for defaulting - to old-style AIX calling sequence. - (powerpcle*): Use new t-{eabi,ppc}legas files, to avoid building - explicit little endian multilib libraries. - -Fri Jul 21 13:23:06 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * toplev.c (main): Don't define sbrk #ifdef __alpha__. - -Tue Jul 18 19:23:44 1995 Paul Eggert - - * cccp.c (do_include): Prefix -H output lines with spaces, not dots. - (output_dots): Remove. - - * cccp.c (main): cplusplus_comments now defaults to 1. - But clear it if -traditional or the new option -lang-c89 is given. - * gcc.c (default_compilers, cpp): Specify -lang-c89 if -ansi is given. - This turns off C++ comment recognition. - -Tue Jul 18 19:16:38 1995 Jim Wilson - - * va-sparc.h (va_arg): Add support for 128 bit long double type. - -Tue Jul 18 19:11:18 1995 Jorn Rennecke (amylaar@meolyon.hanse.de) - - * c-common.c (decl_attributes, case A_ALIGNED): Handle is_type - case properly. - -Tue Jul 18 19:03:02 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * fold-const.c (fold, case CONVERT_EXPR): Don't merge conversions - if outer is to handle a type with differing precision. - -Mon Jul 17 14:37:35 1995 Pat Rankin (rankin@eql.caltech.edu) - - * vax/vms.h (HAVE_ATEXIT): Define. - (DO_GLOBAL_CTORS_BODY): Don't call atexit; let __do_global_ctors do it. - * vax/xm-vms.h (HAVE_VPRINTF): Define. - -Mon Jul 17 06:41:19 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * c-typeck.c ({unsigned,signed}_type): Handle intXX_type_node types. - - * xm-alpha.h (sbrk): Add declaration. - - * convert.c (convert_to_integer): If TYPE is a enumeral type or - if its precision is not the same as the size of its mode, - convert in two steps. - - * m68k.md (tstdi, cmpdi): Use match_scratch, not match_operand. - -Fri Jul 14 19:23:42 1995 Andreas Schwab - - * c-decl.c (field_decl_cmp): Rewritten to make sure that a null - name always sorts low against other names. - * c-typeck.c (lookup_field): Change name comparison to match what - field_decl_cmp does. - -Fri Jul 14 18:46:24 1995 Michael Meissner - - * rs6000.md (movsi): Convert a CONST_DOUBLE into a CONST_INT of - the low part. - -Fri Jul 14 18:30:52 1995 Doug Evans - - * toplev.c (main): Reword dwarf/c++/-g warning. - -Fri Jul 14 18:19:34 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * expr.h (NO_DEFER_POP): Remove last change. - * expr.c (stor_expr): Force stack adjust before NO_DEFER_POP. - (expand_expr, case COND_EXPR): Likewise. - * stmt.c (expand_start_stmt_expr): Likewise. - -Fri Jul 14 07:58:35 1995 Jim Wilson - - * function.c (struct temp_slot): New fields base_offset, full_size. - (assign_stack_temp): For !FRAME_GROWS_DOWNWARD, set p->size to size. - Set new fields base_offset and full_size. - (combine_temp_slots): Use new fields base_offset and full_size instead - of slot and size. - - * loop.c (loop_number_exit_count): New global variable. - (loop_optimize): Allocate space for it. - (find_and_verify_loops, mark_loop_jump): Set it. - (strength_reduce, check_dbra_loop): Use loop_number_exit_count - instead of loop_number_exit_labels. - * loop.h (loop_number_exit_count): Declare it. - * unroll.c (find_splittable_{regs,givs}, final_[bg]iv_value): Use - loop_number_exit_count instead of loop_number_exit_labels. - (reg_dead_after_loop): Check loop_number_exit_count, and fail - if the count doesn't match loop_number_exit_labels. - - * cse.c (cse_insn): Ifdef out code that pre-truncates src_folded. - - * sparc.md (sethi_di_sp64): Return null string at end. - - * function.h (struct function): Add stdarg field. - * function.c (current_function_stdarg): New global variable. - (push_function_context_to): Save it. - (pop_function_context_from): Restore it. - (assign_parms): Set it. - (init_function_start): Clear it. - * output.h (current_function_stdarg): Declare it. - * i960.md: Modify all patterns which handle stores to memory to also - check current_function_varargs and current_function_stdarg. - - * reorg.c (fill_simple_delay_slots): When trying to take instruction - from after the branch, don't continue past target label. Local - variables passed_label and target_uses are no longer necessary. - -Thu Jul 13 19:30:04 1995 Jeff Law (law@snake.cs.utah.edu) - - * pa.c (output_bb): Fix error in long backwards branch with - nullified delay slot. - -Thu Jul 13 19:26:13 1995 Jim Wilson - - * expmed.c (SHIFT_COUNT_TRUNCATED): Use #ifdef not #if. - -Mon Jul 10 20:16:44 1995 Paul Eggert - - * cccp.c (rescan): Don't address outside of array when - preprocessing C++ comments. - -Mon Jul 10 20:05:46 1995 Michael Meissner - - * rs6000.c (expand_block_move): Remove #if 0 conditionals - against using larger block moves. - - * t-rs6000 (EXTRA_PARTS): Copy milli.exp to release dir. - (milli.exp): Copy to build dir from machine dependend dir. - -Mon Jul 10 20:03:29 1995 Richard Earnshaw (rearnsha@armltd.co.uk) - - * arm.md (matcher for (shiftable_op (cond-exp) (reg))): If - shiftable_op is minus, then subtract from zero when cond fails. - -Mon Jul 10 19:58:26 1995 John F. Carr - - * sparc.h (SELECT_SECTION): Use TREE_CODE_CLASS instead of directly - referencing tree_code_type. - -Mon Jul 10 19:54:31 1995 Jim Wilson - - * protoize.c (reverse_def_dec_list): Delete const qualifiers from - local variables, and delete casts which were casting away const. - -Mon Jul 10 19:14:39 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * c-lang.c (finish_file): Add missing parm to start_function call. - - * jump.c (jump_optimize): Pass outer_code arg to rtx_cost. - - * varasm.c (assemble_name, bc_assemble_integer): Call - bc_emit_labelref with proper args. - - * function.c (setjmp_args_warning): Remove bogus arg. - -Mon Jul 10 18:20:54 1995 Fergus Henderson (fjh@cs.mu.oz.au) - - * gcc.c (p{fatal,error}_with_name, perror_exec): Quote filename. - -Mon Jul 10 18:12:51 1995 Gran Uddeborg (uddeborg@carmen.se) - - * i386/iscdbx.h (STARTFILE_SPEC): Handle -Xp. - -Wed Jul 5 02:42:17 1995 Per Bothner (bothner@spiff.gnu.ai.mit.edu) - - * cpphash.h (enum node_type): Remove unneeded and non-standard - forward declaration. - -Sat Jul 1 20:15:39 1995 Jim Wilson - - * mips/t-mips, mips/t-mips-gas (MULTILIB_*, LIBGCC, INSTALL_LIBGCC): - Delete. - - * sparc/sol2.h (LINK_SPEC): Revert March 16 change. Do not add -R - for each -L. - - * collect2.c (libcompare): Verify that file name extensions are valid. - Put files with invalid extensions last in the sort. - - * integrate.c (integrate_decl_tree): Set DECL_ABTRACT_ORIGIN before - pushdecl call for local variables. - -Sat Jul 1 08:13:38 1995 Richard Earnshaw (rearnsha@armltd.co.uk) - - * cpplib.c (output_line_command): If not emitting #line directives - delay returning until after adjust_position has been called. - - * arm.md (mov{si,sf,df}cc): Call gen_compare_reg to generate - the condition code register. - -Sat Jul 1 06:55:09 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * fold-const.c (decode_field_reference): New parm PAND_MASK. - (unextend): New parm MASK. - (fold_truthop): Pass new parms to decode_field_reference and unextend. - - * va-alpha.h (__va_tsize): Use __extension__ to avoid warning - on use of `long long'. - - * expr.h (NO_DEFER_POP): Do any pending stack adjusts. - - * recog.c (register_operand): Disallow subreg of reg not allowed to - change size. - -Thu Jun 29 05:51:57 1995 Jeff Law (law@snake.cs.utah.edu) - - * pa.md (reload addsi3): New pattern to avoid reload lossage - with register eliminations. - - * pa.c (output_cbranch): When checking for a jump to the given - insn's delay slot, handle the case where JUMP_LABEL for the - given insn does not point to the first label in a series of - labels. - (output_bb, output_dbra, output_movb): Likewise. - -Wed Jun 28 18:04:56 1995 Jeff Law (law@snake.cs.utah.edu) - - * pa.h (PIC_OFFEST_TABLE_REGNUM_SAVED): Define to %r4. - (CONDITIONAL_REGISTER_USAGE): Make it fixed when compiling - PIC code. - (INIT_EXPANDERS): Delete. - * pa.c (hppa_save_pic_table_rtx): Delete variable. - (hppa_expand_prologue): For PIC generation, copy the PIC - register into a fixed callee register at the end of the - prologue of non-leaf functions. - * pa.md (call expanders): Reload the PIC register from the - fixed callee saved register. Don't try to save the PIC - register before the call. - -Wed Jun 28 18:01:14 1995 Stan Cox (coxs@dg-rtp.dg.com) - - * m88k/dguxbcs.h (ASM_SPEC): Removed -h flag. - * m88k/dgux.h (ASM_SPEC): Likewise. - -Wed Jun 28 17:01:58 1995 David Edelsohn - - * rs6000.c (processor_target_table): Remove CPU name synonyms. - * rs6000.h (CPP_SPEC): Likewise. - * rs6000/sysv4.h (CPP_SPEC): Likewise. - (ASM_SPEC): Likewise. - * rs6000/sysv4le.h (CPP_SPEC): Likewise. - * rs6000/eabile.h (CPP_SPEC): Likewise. - * rs6000/powerpc.h (CPP_SPEC): Likewise. - (ASM_SPEC): Set assembler target according to compiler target. - * rs6000/aix3newas.h (CPP_SPEC): Likewise. - (ASM_SPEC): Likewise. - * rs6000/aix41.h (CPP_SPEC): Likewise. - (ASM_SPEC): Likewise. - -Wed Jun 28 16:25:53 1995 Gran Uddeborg (uddeborg@carmen.se) - - * i386/x-isc3 (INSTALL_HEADERS_DIR): Delete; done by configure. - -Wed Jun 28 16:10:47 1995 Philippe De Muyter (phdm@info.ucl.ac.be) - - * xm-rs6000.h (alloca): Extern decl added for non-GNU compiler. - -Wed Jun 28 11:31:30 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * cpplib.c (progname): Remove definition from here. - - * final.c (final_scan_insn): Fix error in last change. - - * rtlanal.c (reg_set_p_1): Now static; add extra parm. - - * stmt.c: Delete redundant forward decls. - (expand_anon_union_decl): Correctly call expand_decl. - - * toplev.c (strip_off_ending): Strip off any ending; don't - pretend we know what valid endings are. - - * svr4.h (ASM_OUTPUT_SECTION_NAME): Don't crash if DECL is null. - - * rs6000.md ({load,store}_multiple): Don't use indirect_operand - in define_insn; use explicit MEM of register_operand instead. - -Tue Jun 27 11:42:56 1995 Stephen L Moshier - - * i386/i386.c (print_operand, case `J'): Use jns for GE and js for - LT. - -Tue Jun 27 07:58:55 1995 Jason Merrill - - * expr.c (expand_expr, TARGET_EXPR): Only use original_target - if !ignore. - -Tue Jun 27 07:27:26 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * fold-const.c (fold_truthop): Commute unextend and convert on - l_const and r_const. - - * c-common.c (decl_attributes, case A_CONSTRUCTOR, A_DESTRUCTOR): - Set TREE_USED. - - * final.c (final_scan_insn): Don't call alter_cond unless - condition is on cc0. - - * stmt.c (expand_asm_operands): Handle input operands that may not - be in a register. - -Mon Jun 26 19:23:05 1995 Richard Earnshaw (rearnsha@armltd.co.uk) - - * arm/lib1funcs.asm (L_dvmd_tls): Renamed from L_divmodsi_tools. - * arm/t-semi (LIB1ASMFUNCS): Rename _dvmd_tls from _divmodsi_tools. - -Mon Jun 26 19:18:06 1995 Jim Wilson - - * unroll.c (find_splittable_regs): When completely unrolling loop, - check for non-invariant initial biv values. - -Mon Jun 26 19:13:54 1995 Gran Uddeborg - - * configure (i[345]86-*-isc*): Fix misspelled "rfile" to "ifile". - -Mon Jun 26 18:58:22 1995 Mike Stump - - * expr.c (expand_expr, case COND_EXPR): Protect the condition from - being evaluated more than once. - (do_jump, case TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR): Likewise. - -Mon Jun 26 18:52:36 1995 Philippe De Muyter (phdm@info.ucl.ac.be) - - * fixincludes (string.h): Fix return value for mem{ccpy,chr,cpy,set} - and str{len,spn,cspn} on sysV68. - -Mon Jun 26 06:54:50 1995 Michael Meissner (meissner@cygnus.com) - - * i386/osfrose.h (LONG_DOUBLE_TYPE_SIZE): Go back to making long - double == double. - -Thu Jun 22 19:14:41 1995 Pat Rankin (rankin@eql.caltech.edu) - - * make-cc1.com (if DO_LINK): Skip c-parse.* processing when - only relinking. - (gas_message): Update to reflect current version, and give - a different message if/when no version of gas is found.xo - -Thu Jun 22 18:52:37 1995 Richard Earnshaw (rearnsha@armltd.co.uk) - - * arm/lib1funcs.asm (___modsi3): Correctly set SIGN register for - modulo involving negative numbers. - -Thu Jun 22 18:32:27 1995 Uwe Seimet (seimet@chemie.uni-kl.de) - - * xm-atari.h (HZ): Now 100 and don't define if already defined. - -Thu Jun 22 18:26:12 1995 Jeffrey A Law (law@snake.cs.utah.edu) - - * calls.c (expand_call): Correctly handle returning BLKmode - structures in registers when the size of the structure is not - a multiple of word_size. - * stmt.c (expand_return): Likewise. - - * pa-gux7.h (LIB_SPEC): Undefine before redefining. - * pa-hpux.h (LIB_SPEC): Likewise. - * pa-hpux7.h (LIB_SPEC): Likewise. - - * genmultilib: Work around hpux8 /bin/sh case bug. - - * pa.h (LIB_SPEC): Define to avoid -lg. - -Thu Jun 22 18:19:09 1995 Jason Merrill - - * expr.c (expand_expr, TARGET_EXPR): Use original_target. - - * collect2.c (locatelib): Fix parsing of LD_LIBRARY_PATH. - -Thu Jun 22 18:15:54 1995 Paul Eggert - - * configure: Create an empty Makefile.sed first, to work - around a Nextstep 3.3 bug. - -Thu Jun 22 18:03:44 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * Makefile.in (STAGESTUFF): Add stamp-crt. - (crtbegin.o, crtend.o): Now depend on stamp-crt. - (stamp-crt): New rule, to actually build crt{begin,end}.o. - - * collect2.c (main): Unlink export_file before we return. - -Thu Jun 22 14:25:56 1995 Michael Meissner (meissner@cygnus.com) - - * rs6000.h (STRIP_NAME_ENCODING): Store NAME and strlen(NAME) into - local variables; cast result of alloca to avoid compiler warnings. - -Tue Jun 20 18:25:29 1995 Douglas Rupp (drupp@cs.washington.edu) - - * alpha/config-nt.sed, i386/config-nt.sed: Edit to add - a missing $(exeext) for CCCP. - -Tue Jun 20 18:18:00 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * protoize.c (default_include): Use name and two ints to be - compatible with definition of INCLUDE_DEFAULTS. - -Mon Jun 19 19:24:29 1995 Ted Lemon - - * mips/netbsd.h (ASM_DECLARE_FUNCTION_NAME): Don't emit function label. - -Mon Jun 19 18:34:55 1995 Jason Merrill - - * fixincludes: Don't define wchar_t under C++. - -Mon Jun 19 17:12:41 1995 Paul Eggert - - * cccp.c (collect_expansion): Work around enum bug in vax - ultrix 4.3 pcc. - * tree.c (simple_cst_equal): Likewise. - -Mon Jun 19 16:53:00 1995 Douglas Rupp (drupp@cs.washington.edu) - - * winnt/spawnv.c: New file. - -Mon Jun 19 16:30:29 1995 Glenn Brown - - * caller-save.c (save_call_clobbered_regs): If AUTO_INC_DEC, mark - register indicated by REG_INC notes as live so they will be saved. - -Mon Jun 19 16:21:12 1995 Jeffrey A Law (law@snake.cs.utah.edu) - - * pa.h (PRINT_OPERAND_ADDRESS, case LOW_SUM): Fix logic bug - in last change. - -Mon Jun 19 14:11:49 1995 Jim Wilson - - * integrate.c (integrate_decl_tree): Only set DECL_ABSTRACT_ORIGIN - if the decl returned by pushdecl is the one we started with. - - * mips.h (current_function_name): Delete declaration. - (ASM_DECLARE_FUNCTION_NAME): Don't set current_function_name. - * gnu.h (ASM_DECLARE_FUNCTION_NAME): Likewise. - * mips.c (current_function_decl): Delete declaration. - (function_prologue): New variable fnname. Use it instead of - current_function_name. - (function_epilogue): Likewise. - -Mon Jun 19 13:13:15 1995 Richard Kenner - - * alpha.h (ASM_OUTPUT_ASCII): Always reset line count when - starting new line. - - * scan-decls.c (scan_decls): Fix typo when resetting PREV_ID_START. - - * i386/config-nt.sed, alpha/config-nt.sed: Change version to 2.7.1. - -Mon Jun 19 13:06:14 1995 DJ Delorie (dj@delorie.com) - - * msdos/top.sed: Support new build variables. - * msdos/configur.bat: Make options.h and specs.h. - Change realclean to maintainer-clean. - -Fri Jun 16 06:54:03 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * Version 2.7.0 Released. - - * obstack.c: Always enable this code for now. - - * alpha.c (alpha_builtin_saveregs): Use ptr_mode and conversions - when need so works for both OSF and NT. - * va-alpha.h (__va_tsize): Round to long long not long. - -Thu Jun 15 17:54:52 1995 Bdale Garbee - - * configure (a29k-*-coff): Synonym for a29k-*-udi. - -Thu Jun 15 17:51:21 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * function.c (assign_parms): Do all conversions in CONVERSION_INSNS. - -Thu Jun 15 17:36:49 1995 Michael Meissner - - * reg-stack.c (record_reg_life): Call record_reg_life_pat with 0 - for douse argument so that USE's created to mark variables within - blocks don't get marked as set. - -Thu Jun 15 06:28:15 1995 Dennis Glatting (dennisg@CyberSAFE.COM) - - * configure: Change one sed command to work around m68k-next bug. - -Wed Jun 14 22:14:39 1995 Jason Merrill - - * collect2.c (main): Don't turn off auto_export because of -g. - (main): Ignore the argument to -o. - - * alpha.h (LINK_SPEC): Don't pass -init __main anymore. - * alpha/osf12.h (LINK_SPEC): Ditto. - * mips/iris5.h (LINK_SPEC): Ditto. - - * collect2.c (main): Place o_file after an initial .o (like crt0.o). - If we have LD_INIT_SWITCH, use init and fini functions for - executables, too. Specify the unique function names. - (write_c_file_stat): Fix the case of destructors but no constructors. - Don't include the generic-named functions for executables. - (write_c_file): If we have LD_INIT_SWITCH, always use - write_c_file_stat. - - * collect2.c (main): Also add _GLOBAL__D? to export list. - - * ginclude/iso646.h: Do nothing if compiled as C++. - -Wed Jun 14 17:39:10 1995 Roland McGrath (roland@gnu.ai.mit.edu) - - * c-common.c (format_char_info, case 'm'): Set type to void. - (check_format_info): If type is void, ignore operand. - -Wed Jun 14 17:04:10 1995 Paul F. Kunz (Paul_Kunz@SLAC.Stanford.EDU) - - * expr.c (expand_builtin_apply_args): Put back original - register save and restore order. - -Wed Jun 14 16:56:22 1995 Michael Meissner - - * rs6000/eabi.h (INVOKE__main): Define, so __eabi is called after - main's arguments are saved. - - * rs6000.c (output_prolog): Don't call __eabi here, let - compiler call it after the arguments to main are saved. - (output_{prolog,epilog}): Don't use functions under V.4 to save - and restore floating point registers. - -Wed Jun 14 16:52:12 1995 Philippe De Muyter (phdm@info.ucl.ac.be) - - * m68k/mot3300.h (PCC_BITFIELD_TYPE_MATTERS): Defined. - -Wed Jun 14 16:48:53 1995 Jerry Frain (jerry@tivoli.com) - - * Makefile.in (stage[1-4]): Correctly link `as', `ld', and `collect2'. - -Wed Jun 14 05:52:04 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * objc-act.c (hack_method_prototype): Set DECL_CONTEXT of parms. - - * expmed.c (emit_store_flag): Always set LAST. - - * c-decl.c (start_function): New parameter for attributes. - * c-tree.h (start_function): Likewise. - * c-lang.c (finish_file): Pass extra parm to start_function. - * objc-act.c (build_module_descriptor, really_start_method): Likewise. - * c-parse.in (fndef, nested_function, notype_nested_function): - Likewise. - - * function.c (assign_parms): Use convert_to_mode instead of - gen_lowpart when converting incoming parm. - -Tue Jun 13 19:10:32 1995 Richard Kenner - - * rs6000.md (decrement_and_branch): Finish last fix; update matching - constraint. - -Tue Jun 13 18:32:51 1995 Torbjorn Granlund - - * fold-const.c (fold): When converting a COND_EXPR to an ABS_EXPR, - get the types right for ABS_EXPR to work. - -Mon Jun 12 17:09:55 1995 Michael Tiemann (tiemann@axon.cygnus.com) - - * reorg.c (fill_simple_delay_slots): Set MAYBE_NEVER according to - code of TRIAL_DELAY, not TRIAL. - -Mon Jun 12 15:02:37 1995 Doug Evans - - * configure: Restore code to make ld symlink if ! use_collect2. - - * gcc.c (link_command_spec): Undo patch of May 11. - -nostdlib implies -nostartfiles again. - * dsp16xx.h (CROSS_LINK_SPEC): Likewise. - * i386/freebsd.h (LINK_SPEC): Undo patch of May 24. - Don't pass "-e start" if nostdlib. - * i386/sun.h (LINK_SPEC): Likewise. - * m68k/sun2o4.h (LINK_SPEC): Likewise. - * m68k/sun3.h (LINK_SPEC): Likewise. - * m68k/vxm68k.h (LINK_SPEC): Likewise. - * mips/netbsd.h (LINK_SPEC): Likewise. - * config/netbsd.h (LINK_SPEC): Likewise. - * rs6000/mach.h (LINK_SPEC): Likewise. - * sparc.h (LINK_SPEC): Likewise. - * sparc/vxsparc.h (LINK_SPEC): Likewise. - - * gcc.c (link_command_spec): New argument -nodefaultlibs. - -Sun Jun 11 20:47:53 1995 Stephen L Moshier (moshier@world.std.com) - - * Makefile.in (fix-header.o): Depends on xsys-protos.h. - -Sun Jun 11 15:07:58 1995 Tim Carver (timc@ibeam.intel.com) - - * reload1.c (emit_reload_insns): Don't call HARD_REGNO_NREGS - on psuedo when clearing reg_last_reload_reg. - -Sun Jun 11 14:07:05 1995 Philippe De Muyter (phdm@info.ucl.ac.be) - - * m68k.md ({add,sub}di{_mem,3}): Patterns merged. - -Sun Jun 11 13:43:26 1995 Torbjorn Granlund - - * m68k.md (cmpdi matcher): Set cc_status before returning. - - * config/xm-freebsd.h (DONT_DECLARE_SYS_SIGLIST): Define. - -Sun Jun 11 13:38:49 1995 Jason Merrill - - * fixincludes (math.h): Keep declaration of abs on HPUX. - -Sun Jun 11 12:31:42 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * stor-layout.c (variable_size): Do nothing if SIZE is constant. - - * stmt.c (expand_asm_operands): See if output operand permits - register. If not, mark output addressable, call expand_operand - on it, and give error if not MEM. - - * function.c (assign_parms): Handle promotions of both - passed and nominal modes separately and insert needed conversions. - (promoted_input_arg): Return 0 if nominal and passed modes differ. - - * stmt.c (all_cases_count, case INTEGER_TYPE): Fix typo in checking - for integer bounds. - -Sat Jun 10 08:55:25 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * libgcc2.c (_floatdidf): Correctly set float sizes. - - * c-decl.c (c_decode_option, case "-Wall"): Don't set extra_warnings. - - * Makefile.in (cpplib.o, fix-header.o): Update dependencies. - (cpperror.o, cppexp.o, cpphash.o): New rules, to show .h dependencies. - -Fri Jun 9 18:06:10 1995 Doug Evans - - * cse.c (cse_basic_block): Fix test for whether block ends with a - barrier. Return next insn, not 0, if block ends in a barrier. - -Fri Jun 9 17:58:29 1995 Paul Eggert - - * fold-const.c (lshift_double): Replace `&' with `%' to fix typo. - ([lr]shift_double): Truncate shift count only if SHIFT_COUNT_TRUNCATED. - Remove unnecessary `count >= prec' test. - - * cexp.y (left_shift): Ignore integer overflow. - - * cexp.y (skip_evaluation): New variable. - (&&, ||, ?:): Increment it in unevaluated subexpressions. - (/, %, integer_overflow): Suppress diagnostics if skip_evaluation != 0. - (yyerror): Clear skip_evaluation. - -Fri Jun 9 17:49:05 1995 Torbjorn Granlund - - * m68k.md (tstdi): Rewrite. - -Fri Jun 9 17:28:55 1995 Per Bothner - - * scan-decls.c (scan_decls): Handle declarations with - multiple comma-separated declarators. - -Thu Jun 8 19:16:12 1995 Richard Earnshaw (rearnsha@armltd.co.uk) - - * arm.md (mov[sd]f expands): Don't allow fp constants in pseudos - when TARGET_SOFT_FLOAT. - -Thu Jun 8 19:11:43 1995 Jim Wilson - - * expmed.c (store_split_bit_field): When adjust arg in - BYTES_BIT_ENDIAN case, use number of bits in arg for MEM operands - and BITS_PER_WORD for other operands. - (extract_fixed_bit_field): Undo last change. - - * unroll.c (verify_addresses): New function. - (find_splittable_givs): Use it instead of memory_address_p. - -Thu Jun 8 18:58:18 1995 Torbjorn Granlund - - * expmed.c (expand_divmod): Always check result of emit_store_flag. - -Thu Jun 8 12:02:34 1995 David D Zuhn (zoo@armadillo.com) - - * cpplib.c (cpp_push_buffer): Include filename in error message. - -Thu Jun 8 11:53:45 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * function.c (assign_parms): Don't call promote_mode on arg - unless PROMOTE_FUNCTION_ARGS defined. - - * rs6000.md (decrement_and_branch): Ensure label is operand 0. - - * rs6000.md (aux_truncdfsf2): New pattern. - (movsf): Use it instead of invalid SUBREG and truncdfsf2. - - * varasm.c (assemble_name): Disable warn_id_clash around - get_identifier call. - -Wed Jun 7 17:22:25 1995 Philippe De Muyter (phdm@info.ucl.ac.be) - - * configure (gdb_needs_out_file_path): New variable. - (m68k-motorola-sysv): Set gdb_needs_out_file_path if not using gas. - (.gdbinit): If gdb_needs_out_file_path is set, add a 'dir' command - for $(out_file). - -Wed Jun 7 17:17:19 1995 Torbjorn Granlund - - * fold-const.c (fold): When folding `<' type nodes, make true_value - and false_value have correct types. - -Wed Jun 7 05:06:42 1995 Jason Merrill - - * collect2.c (COFF scan_prog_file): Use the AIX duplicate entry. - -Tue Jun 6 18:43:09 1995 Jeffrey A Law (law@snake.cs.utah.edu) - - * pa.h (FUNCTION_ARG_CALLEE_COPIES): Define. - -Tue Jun 6 18:21:18 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * expr.c (expand_expr, case PLACEHOLDER_EXPR): Consider two types - identical if their TYPE_MAIN_VARIANTs are the same. - - * c-decl.c (start_decl): Set DECL_COMMON before calling - decl_attributes. - - * a29k.c (print_operands): Cast args to bcopy to char *. - - * c-decl.c (duplicate_decls): Don't clear DECL_CONTEXT of - new decl if it is a function. - -Tue Jun 6 17:57:44 1995 Eberhard Mattes (mattes@azu.informatik.uni-stuttgart.de) - - * gcc.c (do_spec_1, case 'g'): Handle %O as suffix if MKTEMP_EACH_FILE. - -Tue Jun 6 17:53:05 1995 Michael Meissner - - * rs6000.c (expand_block_move): Update source and destination pointers - inside the loop moving the bytes, not outside. - -Tue Jun 6 14:58:37 1995 Andreas Schwab - - * m68k.h (CONDITIONAL_REGISTER_USAGE): Don't mark pic reg as fixed. - * m68k.c (finalize_pic): Emit USE insn at start and end of function. - -Tue Jun 6 13:46:57 1995 Jim Wilson - - * sh.c (print_operand): Check for annulled branches. - (output_movedouble): Handle SUBREG addresses. - (output_branch): Handle annulled branches. - (sh_expand_prologue): Correct number of saved registers for - varargs functions. - * sh.h: Add some comments. - * sh.md: Add some comments. Cleanup formatting. - (type attribute): Add pstore and call. - (return define_delay): Reorganize to make clearer. - (call/sfunc define_delay): Define. - (cbranch define_delay): Define to have annul-true delay slot. - (subsi3): Use arith_reg_operand for operand 2. - (shift patterns): Use const_int_operand instead of immediate_operand - for shift counts. - (push): Add pstore constraint case. - (movsi_i): Move t/z constraint pair to the front of the list. - (calli, call_valuei): Add "call" attribute. - -Mon Jun 5 19:23:13 1995 Jim Wilson - - * sched.c (attach_deaths): In last change, use find_reg_note instead - of find_regno_note. - -Mon Jun 5 19:17:31 1995 Tom Quiggle (quiggle@lovelace.engr.sgi.com) - - * mips/iris5.h (MACHINE_TYPE): Say "IRIX 5.x", not "5.0". - (NO_DOLLAR_IN_LABEL): Undefine. - * mips.h (sdb_begin_function_line): New declaration. - (PUT_SDB_FUNCTION_END): New definition. - -Mon Jun 5 18:56:10 1995 Michael Meissner - - * rs6000.c (expand_block_move): Don't do block moves where we clobber - fixed numbers of regs, instead move just 1-8 bytes at a time. - - * Makefile.in (STAGESTUFF): Copy files produced by -da and - -save-temps to the stage subdirectories. - -Mon Jun 5 08:18:46 1995 Torbjorn Granlund - - * combine.c (reg_dead_at_p): When scanning backwards, stop at BARRIER. - - * m68k.c (print_operand): Handle 'R' for registers. - * m68k.md (cmpdi): Rewrite to avoid bogus matching constraints. - - * optabs.c (expand_binop): In last change, don't defererence TARGET - if it is 0. - - * pa.md (movsicc): Use MATCH_DUP for operand 4 and 5. - -Mon Jun 5 08:14:56 1995 Jeffrey A Law (law@cs.utah.edu) - - * pa.c (hppa_encode_label): Allocate stuff on permanent_obstack - rather than via malloc. - - * c-common.c (decl_attributes): Fix typo in size passed to alloca. - -Mon Jun 5 08:10:55 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * alpha.md: Use "some_operand" for patterns valid only during - reload and meant to handle adding more PLUS operators during - register elimination. - -Mon Jun 5 07:31:53 1995 Stephen L Moshier (moshier@world.std.com) - - * cse.c (simplify_unary_operation, case FLOAT, UNSIGNED_FLOAT): - Truncate to requested mode. - -Sat Jun 3 22:08:51 1995 Jim Wilson - - * sched.c (attach_deaths): Don't add a REG_DEAD note if a REG_UNUSED - note is already present. - -Sat Jun 3 18:36:57 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * pa.h (hppa_builtin_saveregs): Add declaration. - -Sat Jun 3 18:11:26 1995 Jason Merrill - - * Makefile.in (scan-decls.o): Depends on cpplib.h. - -Fri Jun 2 19:23:47 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * optabs.c (expand_binop): Don't use non-REG TARGET in 2-word case. - -Thu Jun 1 19:30:30 1995 Tor Egge (tegge@flipper.pvv.unit.no) - - * m88k.h (RETURN_POPS_ARGS): New argument. - * m88k/dolphin.ld: Added start of comment. - -Thu Jun 1 19:12:28 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * configure (a29k-*-bsd*): Fix typo in last change. - -Thu Jun 1 18:51:53 1995 Jim Wilson - - * expmed.c (extract_fixed_bit_field): For REG case, compute total_bits - from mode instead of assuming BITS_PER_WORD. - -Thu Jun 1 18:34:31 1995 Michael Meissner - - * rs6000.h (FIXED_R13): Default to 0. - ({FIXED,CALL_USED}_REGISTERS): Use FIXED_R13 for register 13. - * sysv4.h (FIXED_R13): Define to be 1. - -Wed May 31 20:57:26 1995 Torbjorn Granlund - - * m68k.md ([su]mulsi3_highpart): Pass correct number of arguments to - const_uint32_operand. - * m68k.c (const_uint32_operand): Reject negative numbers. - - * expmed.c (expand_mult_highpart): Use wide_op1 for all multiplies. - (expand_divmod): Undo Nov 12 change. Instead, add special case - for division by MIN_INT in signed TRUNC_DIV_EXPR case. - -Wed May 31 20:44:21 1995 Philippe De Muyter (phdm@info.ucl.ac.be) - - * m68k.md (one_cmpldi2): New pattern. - ({a,l}shrdi{3,_const}): Allow 63 as shift count. - -Wed May 31 14:56:31 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * varasm.c (assemble_start_function, assemble_variable): - Make sure first_global_object_name is in permanent obstack. - - * reload1.c (alter_reg): Clean up setting of RTX_UNCHANGING_P - when making a MEM. - - * reorg.c (struct resources): New field unch_memory. - (CLEAR_RESOURCES, mark_target_live_regs, dbr_schedule): Clear it. - (mark_{referenced,set}_resources, redundant_insn): Set it. - (fill_simple_delay_slots): Likewise. - (resource_conflicts_p): Test it. - - * unroll.c (copy_loop_body): Fix typo in call to sets_cc0_p. - - * integrate.c (output_inline_function): Don't call expand_function_end. - - * calls.c (prepare_call_address): Only call use_reg on - static_chain_rtx if it is a REG. - - * configure (a29k-*-bsd*): Use t-a29k. - * t-a29k: New file. - * a29k/t-a29kbare (LIBGCC1_TEST): New null definition. - * a29k/t-vx29k (LIBGCC1_TEST): Likewise. - -Wed May 31 14:17:42 1995 Jeffrey A Law (law@snake.cs.utah.edu) - - * configure (hppa*-*-bsd*): Do not run fixincludes. - (hppa*-*-osf*): Likewise. - (hppa*-*-lites*): Likewise. - - * pa.h (PRINT_OPERAND_ADDRESS): Use "RR'" rather than "R'" for - symbolic addresses. - * pa.md (symbolic HIGH patterns): Likewise. - (symbolic LO_SUM pattern): Likewise. - -Wed May 31 14:11:53 1995 Michael Meissner - - * rs6000.md (all movstri recognizers): Eliminate updating the pointers. - * rs6000.c (expand_block_move): Don't pass argument of # bytes to - increment pointers by to movstrsi expanders. - - * rs6000.c (rs6000_override_options): Fix typo with -mstring handling. - - * rs6000.h (TARGET_SWITCHES): Set MASK_STRING_SET explicitly - if -mno-string, so that it can override the processor default. - -Wed May 31 07:31:53 1995 Jason Merrill - - * c-common.c (truthvalue_conversion, BIT_AND_EXPR): Make sure that - the result has boolean_type_node. - -Tue May 30 19:03:21 1995 J.T. Conklin - - * stddef.h: Undefine _BSD_XXX_T_ if _GCC_XXX_T is defined on BSD - Net/2 derived systems. - -Tue May 30 08:17:37 1995 Philippe De Muyter (phdm@info.ucl.ac.be) - - * m68k.md (decrement_and_branch_until_zero): Operand 0 constraint - changed from "+g" to "+d*am". - (similar anonymous HImode pattern): Likewise. - - * m68k.md (tstdi): Use tst/subx #0 instead of neg/negx. - Allow "a" and ">" for operand 0. - -Mon May 29 19:24:43 1995 Niklas Hallqvist (niklas@appli.se) - - * m68k.md (addsi_lshrsi_31): Use match_dup, not constraint "1", - for matching inputs. - -Mon May 29 12:39:58 1995 Allen Briggs - - * i386/isc.h ({STARTFILE,LIB,CPP}_SPEC): Handle -Xp like -posix. - * i386/x-isc3 (X_CFLAGS): Add -Xp. - -Mon May 29 12:28:41 1995 J.T. Conklin (jtc@cygnus.com) - - * configure (sparc-*-netbsd): Add missing asterisk at end. - -Mon May 29 08:55:48 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * combine.c (recog_for_combine): New parm PADDED_SCRATCHES; set it. - (try_combine): Accumulate number of scratches and update max_scratch. - (simplify_set): Add extra parm to recog_for_combine. - - * romp.md (call): Put USE for r0 in CALL_INSN; call call_internal - to emit insn. - (call_internal): New name for anonymous call. - (call_value, call_value_internal): Likewise. - - * winnt/xm-winnt.h: Protect most definitions with #ifndef. - * alpha/xm-winnt.h: Include alpha/xm-alpha.h, then winnt/xm-winnt.h. - (POSIX): Undefine. - * xm-alpha.h: Don't include alloca.h for winnt. - -Sun May 28 18:34:01 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * configure: Make sed commands more uniform. - - * Makefile.in: Properly use $(srcdir) for files that have it - in their reference as a target of a rule. - (libgcc1.a): Add missing RANLIB_TEST use. - - * stmt.c (expand_computed_goto): Call do_pending_stack_adjust. - -Sun May 28 18:08:41 1995 Torbjorn Granlund - - * m68k.md (divmodhi4, udivmodhi4): Use "dmsK" for operand 2. - -Fri May 26 17:01:22 1995 Paul Eggert - - * fixincludes: Fix bogus recursive in NEWS-OS 4.0C. - -Fri May 26 08:02:14 1995 Michael Meissner (meissner@cygnus.com) - - * c-typeck.c (initializer_constant_valid_p): For the CONSTRUCTOR - case, if the type is a record, recurse, just like for unions. - -Thu May 25 07:56:14 1995 Paul Eggert - - * fixincludes: Add `sel', `tahoe', `r3000', `r4000' to the - list of pre-ANSI symbols that need to be surrounded with __ __. - Allow white space between `#' and `if' when looking for lines to patch. - - * objc/sarray.h (PRECOMPUTE_SELECTORS, struct soffset): - Use #ifdef __sparc__, not sparc. - - * m68k.md (addsi_lshrsi_31, ashldi_const, ashrdi_const, lshrdi_const): - Replace `mov' with `move'. - -Thu May 25 07:35:37 1995 Allen Briggs - - * libgcc2.c (L_eh, i386): Remove in-line comments in assembly - code--the '#' character is not valid for the SYSV as. - -Thu May 25 07:28:54 1995 Pat Rankin (rankin@eql.caltech.edu) - - * Makefile.in (BC_ALL): Restore it from May 22 change; vms uses it. - (STAGESTUFF): Use it. - -Thu May 25 07:11:56 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * alpha.c (alpha_emit_set_const): Don't call expand_binop for - other than add if SImode and can't create pseudos. - -Wed May 24 21:38:24 1995 Jim Wilson - - * sched.c (reemit_notes): New function. - (schedule_block): Call reemit_notes twice. Reorganize code for - handling SCHED_GROUP_P insns, so that reemit_notes works. - - * sh/sh.c (shiftcosts, genshifty_op): Add SH3 support. - * sh/sh.md (ashlsi3, lshrsi3): Add SH3 support. - (ashlsi3_d, ashrsi3_d, lshrsi3_d): New patterns for SH3. - (ashrsi2_31): Remove r/!r constraint. - -Wed May 24 17:00:47 1995 Jason Merrill - - * tree.c (type_list_equal): Call simple_cst_equal before checking - types. - -Wed May 24 16:49:49 1995 Douglas Rupp (drupp@cs.washington.edu) - - * Makefile.in (libgcc2.a): Handle case of separate srcdir. - -Wed May 24 16:22:01 1995 Paul Eggert - - * configure: Define $(MAKE) if `make' doesn't. - -Wed May 24 15:50:51 1995 Doug Evans - - * dsp16xx.h (CROSS_LINK_SPEC): ENDFILE_SPEC moved to -nostartfiles. - * i386/freebsd.h (LINK_SPEC): Don't pass "-e start" if nostartfiles - rather than nostdlib. - * i386/sun.h (LINK_SPEC): Likewise. - * m68k/sun2o4.h (LINK_SPEC): Likewise. - * m68k/sun3.h (LINK_SPEC): Likewise. - * m68k/vxm68k.h (LINK_SPEC): Likewise. - * mips/netbsd.h (LINK_SPEC): Likewise. - * config/netbsd.h (LINK_SPEC): Likewise. - * rs6000/mach.h (LINK_SPEC): Likewise. - * sparc.h (LINK_SPEC): Likewise. - * sparc/vxsparc.h (LINK_SPEC): Likewise. - - * m88k/m88k.h (FUNCTION_ARG_BOUNDARY): Use GET_MODE_BITSIZE. - -Wed May 24 15:44:04 1995 Jason Merrill - - * fold-const.c (fold): Make sure that a folded TRUTH_NOT_EXPR - retains the same type. - - * c-common.c (truthvalue_conversion): Also accept TRUTH_NOT_EXPR. - -Wed May 24 15:41:51 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * cplus-dem.c (strstr, strncmp, strlen): Remove declarations. - - * tree.c (type_list_equal, simple_cst_list_equal, index_type_equal): - Check for simple_cst_equal return value of -1. - -Wed May 24 10:05:24 1995 Michael Meissner - - * libgcc1-test.c (start, _start): Provide declarations, so that - the GNU linker doesn't give a warning message about defaulting the - start address. - - * rs6000/sysv4.h (STRIP_NAME_ENCODING): Redefine back to the - original defination, rather than the defination used in rs6000.h. - (ASM_OUTPUT_SOURCE_LINE): Use STRIP_NAME_ENCODING. - * rs6000.h (STRIP_NAME_ENCODING): Skip leading '*'. - - * rs6000.h (MASK_STRING_SET, TARGET_STRING_SET): Add target - flags bit for whether -mstring was actually used. - (TARGET_SWITCHES): Add MASK_STRING to all power targets. Set - MASK_STRING_SET for -mstring and -mno-string. - (TARGET_DEFAULT): Add MASK_STRING. - - * rs6000.c (rs6000_override_options): Add MASK_STRING to - all power targets. Make an explicit -mstring/-mno-string override - the -mcpu=processor default. - - * rs6000/eabile.h (CPP_SPEC): Copy from sysvle.h to provide the - appropriate little endian defaults. - - * rs6000/sysv4.h (ASM_OUTPUT_SOURCE_LINE): Use assemble_name to - output the canonical name. - -Wed May 24 01:21:15 1995 Jason Merrill - - * rs6000.h (STRIP_NAME_ENCODING): Define. - (RS6000_OUTPUT_BASENAME): Use it. - -Tue May 23 19:54:21 1995 Doug Evans - - * gcc.c (link_command_spec): Move ENDFILE_SPEC from -nostdlib - to -nostartfiles. - -Tue May 23 17:01:50 1995 Jim Wilson - - * alpha.md (negsi2-2): Change output pattern to #. - - * mips.c (embedded_pic_offset): Output RTL to initialize - embedded_pic_fnaddr_rtx. - (mips_finalize_pic): Delete. - * mips.h (mips_finalize_pic): Delete declaration. - (FINALIZE_PIC): Delete. - (INIT_EXPANDERS): Clear embedded_pic_fnaddr_rtx. - * mips.md (get_fnaddr): Add = to output contraint. - - * sh.c (shift_amounts): Correct entry for shifts by 29. - * sh.md (sett): New pattern. - (movsi_i): Change source constraint for move to T reg to be 'z'. - - * mips/ecoff.h (STARTFILE_SPEC): Define to null string. - * mips/elfl.h, mips/elfl64.h: Correct typo in comment. - - * mips/elflorion.h, mips/elforion.h (MIPS_CPU_DEFAULT): Delete. - * mips.c (override_options): Delete #ifdef MIPS_CPU_DEFAULT code. - Add #ifdef MIPS_CPU_DEFAULT_STRING code before the first - mips_cpu_string test. - -Tue May 23 07:22:36 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * romp.c (hash_rtx): Avoid warning on int-to-pointer conversion. - (output_fpops): Cast args to bcopy to char *. - - * cpplib.c (initialize_builtins): Add missing parm to timestamp call. - - * Makefile.in (install-libobjc): Don't depend on libobjc.a. - - * c-parse.in: Objc shift/reduce conflicts now 48. - (parm): Use setspecs/restore here. - (parmlist_or_identifiers): Not here. - -Mon May 22 19:30:30 1995 Doug Evans - - * h8300.md (movsf_h8300h): Add missing post-inc case to constraints. - -Mon May 22 14:38:36 1995 Michael Meissner - - * rs6000.c (rs6000_override_options): Do SUBTARGET_OVERRIDE_OPTIONS - here. - * rs6000.h (OVERRIDE_OPTIONS): Not here. - - * rs6000.c (expand_block_move): Handle moves without string - instructions by generating a series of loads and stores. - (output_prolog): Support -mno-toc on V.4 and eabi systems. - - * rs6000/sysv4.h (TARGET_SWITCHES): Add -mtoc and -mno-toc. - (SUBTARGET_OVERRIDE_OPTIONS): Add some warnings for incompatible - switches. - (TOC_SECTION_FUNCTION): Make -mno-toc like -mrelocatable in that - we don't put the minimal toc pointer in the global toc section. - (LINK_SPEC): Use -oformat to set link output format, not -m. - - * rs6000/t-eabigas (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Build - libgcc.a variants with -mno-toc support. - * rs6000/t-ppcgas (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Ditto. - -Mon May 22 07:10:52 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * cplus-dem.c (mystrstr): Replacement for strstr. - - * configure: Split up long sed command. - * Makefile.in (SYMLINK): Deleted; unused. - (oldobjext): Deleted; no longer used. - (FLAGS_TO_PASS): Include objext and exeext. - (STAGESTUFF, protoize.o, unprotoize.o): Use $(objext), not .o. - (test_protoize_simple, compare{,3}, gnucompare{,3}): Likewise. - (STAGESTUFF, specs, gcc-cross, collect2): Add missing $(exeext). - (libgcc1.null, libgcc[12].a, stage[1-4]): Likewise. - (xgcc, cc1, cc1obj, enquire): Use $@ instead of filename for -o value. - (collect2, mips-tfile, mips-tdump, gen*): Likewise. - (bi-arity, bi-opcode, bi-opname, cccp, cppmain): Likewise. - (protoize, unprotoize, gen-protos, fix-header): Likewise. - (crtbegin.o, crtend.o): Don't use -o; move output to proper - filename (using objext) instead. - (BI_ALL, BC_ALL, bytecode): Deleted; unused. - (bi-*.o, cexp.o, stamp-{proto,fixinc}): Remove unneeded $(srcdir). - (getopt{,1}.o, SYSCALLS.c.X): Likewise. - (install-driver): New target. - (install-normal): Depend on it. - (install-common): Don't depend on xgcc. - (maketest): Deleted; no longer used. - (stage[1-4]): Use name collect-ld, not real-ld. - (risky-stage[1-4]): Use stage[1-4] as dependencies; don't copy. - * alpha/config-nt.bat, i386/config-nt.bat: Make {,h,t}config.h - and tm.h by writing a single #include line. - Update way specs.h and options.h are written. - * alpha/config-nt.sed, i386/config-nt.sed: Set new variables - into Makefile. - Build winnt.obj. - Edit CCCP definition. - * alpha/x-winnt, i386/x-winnt (oldobjext): Deleted. - Add rules for .c.obj, .adb.obj, and .ads.obj. - (LIB2FUNCS_EXTRA, spawnv.o): New rules. - * i386/x-winnt (objext): Now .obj, not .o. - - * gcc.c (HAVE_OBJECT_SUFFIX): New macro. - (process_command): Convert x.o to x.foo for OBJECT_SUFFIX of ".foo". - (do_spec_1): Avoid shadow variable "i" and always use for loop var. - - * c-decl.c (finish_decl_top_level): Removed; no longer used. - * objc-act.c: Numerous formatting changes. - (NULLT): Deleted; all uses changed to NULL_TREE. - (get_{static,object}_reference, objc_add_static_instance): - Use push_obstacks instead of saving obstacks manually. - (build_{selector,class}_reference_decl): Likewise. - (build_objc_string_decl, build_protocol_reference): Likewise. - (comp_{method,proto}_with_proto): Likewise. - (create_builtin_decl, synth_module_prologue): Set DECL_ARTIFICIAL - for internal objects. - (build_{selector,class}_reference_decl, add_objc_decls): Likewise. - (generate_objc_symtab_decl, build_module_descriptor): Likewise. - (build_protocol_reference): Likewise. - (build_objc_string_decl, synch_forward_declarations): Likewise. - Delete call to end_temporary_allocation. - (generate_static_references, generate_strings): Likewise. - (build_selector_translation_table, generate_category): Likewise. - (generate_{ivars,protocol}_list, build_protocol_reference): Likewise. - (build_objc_string_object): If next_runtime, put everything in - permanent obstack. - (objc_add_static_instance): Use build_decl instead of start_decl - and finish_decl_top_level. - (build_{class_reference,objc_string}_decl): Clear DECL_CONTEXT. - (start_class): Exit with FATAL_EXIT_CODE, not 1. - (add_objc_decls): Don't set DECL_IN_SYSTEM_HEADER. - - * tree.c (valid_machine_attribute): Handle attribute on - pointer-to-function types. - -Sun May 21 17:16:37 1995 J. T. Conklin - - * mips/netbsd.h (HAVE_STRERROR): Remove. - * mips/xm-netbsd.h: New file. - * mips/t-mips-netbsd: Deleted. - * configure (mips-dec-netbsd): Use xm-netbsd.h and t-libc-ok. - -Sun May 21 17:16:37 1995 Arne H. Juul (arnej@pvv.unit.no) - - * mips/netbsd.h: Use __start as entry point. Ifdef some - paths on CROSS_COMPILE. - -Sun May 21 08:39:26 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * c-parse.in (datadef, fndef, ivar_decl, mydecls): - Restore declspec_stack since setspecs is used. - (parmlist_or_identifiers): Use setspecs before parsing parms - and restore after parsing parms. - -Sun May 21 01:04:52 1995 Jeffrey A. Law - - * pa.c (hppa_encode_label): New variable "permanent" to - where/how memory is allocated for the new label. All - callers changed. - -Sat May 20 16:53:30 1995 Mike Meissner - - * rs6000.md (insv, extz): Fail if the structure is QI or HI reg to - avoid paradoxical subreg's being created in RTL phase, which uses - SImode to load from memory if structure is later moved to stack. - -Sat May 20 06:44:59 1995 Philippe De Muyter (phdm@info.ucl.ac.be) - - * m68k.md (udivmodhi4): Output "divu" instead of "divs". - -Sat May 20 06:11:32 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * reload.c (push_reload): Don't reload inside a SUBREG - when SUBREG_WORD is nonzero. - - * c-decl.c (shadow_tag_warned): Don't warn about useless keyword - if in system header file. - - * tree.c (simple_cst_equal): Don't look at language-specific - nodes since we don't know what's in them. - - * cpperror.c: #include config.h before any other .h file. - * collect2.c: Likewise. - - * i386/config-nt.bat: Add missing ^M on two lines. - Add case for Fortran; fix typo in Ada case. - * alpha/config-nt.bat: Add case for Fortran; fix typo in Ada case. - - * m68k/t-next (LIBGCC1, CROSS_LIBGCC1): Make not, not "libgcc1.null". - (OTHER_FIXINCLUDES_DIRS, LIMITS_H_TEST): Delete from here. - * m68k/x-next (OTHER_FIXINCLUDES_DIR, LIMITS_H_TEST): Move to here. - -Fri May 19 19:30:20 1995 Stan Cox (gcc@dg-rtp.dg.com) - - * crtstuff.c: Added reference to INIT_SECTION_PREAMBLE for systems that - do something which must be undone prior to __do_global_ctors. - -Fri May 19 19:27:08 1995 Alan Modra - - * i386/linux-aout.h (CPP_SPEC): Add defines for -fPIC. - * i386/linux-oldld.h (CPP_SPEC): Likewise. - -Fri May 19 17:46:28 1995 Philippe De Muyter (phdm@info.ucl.ac.be) - - * collect2.c (strstr): Deleted. - * cplus-dem.c (strstr): Define ifndef POSIX. - -Fri May 19 11:16:51 1995 Per Bothner - - * cpplib.c (collect_expansion): Don't escape '@' inside string. - -Fri May 19 06:59:21 1995 Pat Rankin (rankin@eql.caltech.edu) - - * vmsconfig.com (process_objc_lib, configure_makefile): New routines. - (bc_all.list, ./vax.md, objc-objs.opt, objc-hdrs.list): New files - created at config time. - (bc_all.opt, ./md.): No longer created. - * make-cc1.com: Handle revised filenames from vmsconfig.com; - (DO_OBJCLIB): New variable, plus code to compile objc/*.{c,m}. - -Wed May 17 16:15:31 1995 Torbjorn Granlund - - * i960.c (i960_output_ldconst): New code for XFmode. - Also, move SFmode code to immediately after DFmode code. - (S_MODES, D_MODES): Handle XFmode. - (XF_MODES): Was TF_MODES, handle XFmode instead of TFmode. - (hard_regno_mode_ok): Replace TFmode with XFmode. - (i960_output_long_double): New function. - - * i960.h (DATA_ALIGNMENT): Define. - (ROUND_TYPE_ALIGN): Align XFmode scalars at 128 bit boundaries. - (ROUND_TYPE_SIZE): Round up the size of XFmode objects to 128 bits. - (CONST_DOUBLE_OK_FOR_LETTER_P): Use CONST0_RTX and CONST1_RTX - so that all FP modes are recognized. - (ASM_OUTPUT_LONG_DOUBLE): Define. - - * i960.md: Change all TFmode patterns to have XFmode. - (movxf recognizer, frame version): Use movt, ldt, and stt. - (movxf recognizer, non-frame version): Delete. - (extenddfxf2): Delete * before f constraint. - (extendsfxf2): Likewise. - -Wed May 17 17:53:35 1995 Jim Wilson - - * unroll.c (unroll_loop): Increment copy_start_luid if copy_start - is loop_start. - -Wed May 17 17:44:57 1995 Lee Iverson - - * fold-const.c (invert_truthvalue, case CLEANUP_POINT_EXPR): New case. - -Tue May 16 18:51:16 1995 Michael Meissner - - * rs6000/rs6000.h (TARGET_SWITCHES): Add -mstring to enable string - instructions, and -mno-string to disable them. - (MOVE_MAX): Don't test TARGET_MULTIPLE anymore. - (MAX_MOVE_MAX): Set to 8, not 16. - (expand_block_move): Add declaration. - - * rs6000/rs6000.c (expand_block_move): New function to expand - block moves when -mstring is used. - - * rs6000/rs6000.md (movti): Use TARGET_STRING, not TARGET_MULTIPLE. - (load_multiple, store_multiple): Ditto. - (string insns): Add 8, 6, 4, 2, and 1 register variants for using - the native string instructions if -mstring. - - * rs6000/sysv4.h (CPP_SPEC): If little endian, define - _LITTLE_ENDIAN and set littleendian assertion. If big endian, - define _BIG_ENDIAN and set bigendian assertion. - * rs6000/sysv4le.h (CPP_SPEC): Copy from sysv4.h, and change - default to little endian. - - * rs6000/rs6000.c (override_options): Check for -mmultiple and - -mstring on little endian systems here. - * rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Don't do the check - here. - -Tue May 16 18:36:41 1995 Douglas Rupp (drupp@cs.washington.edu) - - * alpha.c: Changed WINNT to _WIN32. - * alpha/config-nt.bat, i386/config-nt.bat: Added commands to - generate specs.h and options.h. - * i386/config-nt.sed: Changed link32 to link. - * winnt/ld.c (main): Removed call to free. - * configure.bat: Added line to echo usage on invalid input. - * gcc.c (fix_argv): Removed call to free. - * gcc.c, getpwd.c, protoize.c, sdbout.c: Changed WINNT to _WIN32. - * toplev.c: Likewise. - -Tue May 16 18:04:47 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * toplev.c (pfatal_with_name, fatal_io_error, vfatal): - Use FATAL_EXIT_CODE instead of magic number. - * cccp.c, cpplib.c, cpplib.h: Use FATAL_EXIT_CODE instead - of FAILURE_EXIT_CODE. - * fix-header.c, gen-protos.c: Likewise. - * cpperror.c, cppmain.c: Likewise. - Include config.h #ifndef EMACS. - * xm-alpha.h, xm-rs6000.h, xm-vms.h (FAILURE_EXIT_CODE): Remove. - -Tue May 16 17:46:57 1995 Adam Fedor - - * objc/archive.c (__objc_write_class): Write class version. - (__objc_write_selector, objc_{write,read}_selector): Handle null - selector. - - * objc/sarray.h (struct sarray): Make capacity size_t. - * objc/sarray.c (sarray_realloc): Make array index variables size_t. - -Tue May 16 06:59:08 1995 Paul Eggert - - * dsp16xx.c (print_operand_address): Fix misspellings in messages. - * i370/mvs.h (FUNCTION_PROFILER): Likewise. - * mips-tdump.c (type_to_string): Likewise. - * print-tree.c (print_node): Likewise. - - * protoize.c (edit_fn_definition): Fix mispelled local `have_flotsam'. - - * objc/sendmsg.c (__objc_init_install_dtable): Fix misspelling - in name of local label `already_initialized'. - - * winnt/winnt.h (STDC_VALUE): Was misspelled. - - * m68k/ccur-GAS.h (FUNCTION_BOUNDARY): Was misspelled. - - * 1750a.h (DEFAULT_PCC_STRUCT_RETURN): Was misspelled. - -Mon May 15 23:41:25 1995 Jeffrey A. Law - - * pa.h (ASM_OUTPUT_EXTERNAL_LIBCALL): Make sure to encode section - info for all libcalls. - -Mon May 15 20:58:00 1995 Jason Merrill - - * collect2.c (strstr): Define ifndef POSIX. - - * defaults.h (SUPPORTS_WEAK): Provide default. - * aoutos.h, sparc/sunos4.h: Don't support weak symbols. - * netbsd.h, svr4.h, i386/freebsd.h, i386/osfrose.h, - m88k/m88k.h: Define ASM_WEAKEN_LABEL instead of WEAK_ASM_OP. - * c-pragma.h: Check ASM_WEAKEN_LABEL instead of WEAK_ASM_OP. - HANDLE_PRAGMA_WEAK is never defined in a tm.h file. - * c-decl.c (duplicate_decls): Propagate DECL_WEAK. - * tree.h (DECL_WEAK): New macro. - (tree_decl): Add weak_flag. - * varasm.c (assemble_start_function): Declare the symbol weak if - appropriate. - (assemble_variable): Ditto. - (assemble_alias): Ditto. Mark the decl as written. - (declare_weak): Check for weak declaration after definition. - Set DECL_WEAK. - (weak_finish): Use ASM_WEAKEN_LABEL. - * libgcc2.c: The C++ free-store management functions are weak - aliases on targets that always support them. - -Mon May 15 19:01:43 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * configure (out_object_file): New variable; put value in Makefile. - * Makefile.in (out_object_file): Use in place of aux-output.o. - - * fold-const.c (const_binop): Don't pass OVERFLOW to force_fit_type - if type is unsigned. - -Mon May 15 18:48:26 1995 Paul Eggert - - * install.sh (transformbasename): Fix misspelling. - - * tahoe.h (CHECK_FLOAT_VALUE): Fix misspelling of OVERFLOW parameter. - - * i386.h (VALID_MACHINE_{DECL,TYPE_ATTRIBUTE): Fix typo. - - * fx80.h (CHECK_FLOAT_VALUE): Fix misspelled use of parameter. - - * a29k.c (spec_reg_operand): Fix misspelling of `default:'. - -Mon May 15 18:36:41 1995 Philippe De Muyter (phdm@info.ucl.ac.be) - - * m68k.md (b{eq,ne,ge,lt}0_di): Fixed for non-MOTOROLA syntax. - * m68k/xm-mot3300.h (alloca): Extern decl added for non-GNU compiler. - -Mon May 15 13:14:29 1995 Per Bothner - - * cppexp.c (cpp_reader): Test for '#' (start of assertion) *after* - skipping hspace, not before. - -Mon May 15 08:13:54 1995 Pat Rankin (rankin@eql.caltech.edu) - - * vmsconfig.com: Construct options.h and specs.h to #include - all "*/lang-{options|specs}.h" files found. - -Sun May 14 21:32:49 1995 Doug Evans - - * alpha/alpha.md (movsicc, case NE): Don't generate unrecognizable - insn. - (movdicc, case NE): Likewise. - -Sun May 14 15:44:54 1995 Jim Wilson - - * unroll.c (unroll_loop): Make local_regno have size - max_reg_before_loop. Don't do local register optimization if - copy_end has no INSN_LUID. - -Sun May 14 10:38:23 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * objc-act.c (start_method_def): Mark _self as possibly unused. - - * configure: Create specs.h and options.h from */lang-specs.h - and */lang-options.h. - Set lang_specs_files and lang_options_file variables in Makefile. - * Makefile.in (lang_{specs,options}_files): New variables. - (gcc.o): Depends on $(lang_specs_files). - (toplev.o): Depends on $(lang_options_file); merge two dep lists. - (distclean): Remove spes.h and options. - * gcc.c (default_compilers): Remove entries for Ada, C++, Chill, - and Fortran; #include specs.h instead. - * toplev.c (lang_options): Remove entries for Ada, C++, and Fortran; - include options.h instead. - -Sat May 13 23:11:21 1995 DJ Delorie - - * configure (i[345]86-go32-msdos, i[345]86-*-go32): New targets. - -Sat May 13 10:58:38 1995 Jim Wilson - - * loop.c (record_giv): When computing replaceable, use - back_branch_in_range_p instead of looking for branches to named - labels. - * loop.h (back_branch_in_range_p): Declare. - * unroll.c (back_branch_in_range_p): No longer static. - -Sat May 13 06:47:11 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * combine.c (simplify_shift_count, case LSHIFTRT): Don't merge - shifts of different modes if first is any right shift. - -Sat May 13 05:39:09 1995 Richard Earnshaw (rearnsha@armltd.co.uk) - - * configure (arm-semi-aout): New configuration. - * config.sub: Add support for semi-hosted ARM. - * arm/t-semi, arm/semi.h: New files. - -Fri May 12 21:51:22 1995 Doug Evans - - * flow.c (find_basic_blocks): Only perform n_basic_blocks sanity - check on first pass, and on second pass ensure it has the correct - value. - -Fri May 12 19:23:11 1995 Jim Wilson - - * c-typeck.c (build_binary_op): Warn when ~unsigned is compared - against unsigned, and type promotions result in an unexpected - answer. - -Fri May 12 19:10:21 1995 Roland McGrath - - * configure (*-*-gnu*): Always use ELF; set tm_file=${cpu_type}/gnu.h. - * config/i386/gnu.h: Contents replaced with old i386/gnuelf.h. - * config/i386/gnuelf.h: File removed. - -Fri May 12 17:29:57 1995 Ken Raeburn (raeburn@cygnus.com) - - * m68k/lb1sf68.asm (__IMMEDIATE_PREFIX__): Default to #. - (IMM): New macro. - (all code): Use IMM macro instead of hardcoding # for immediate - operands. - -Fri May 12 16:52:10 1995 Philippe De Muyter (phdm@info.ucl.ac.be) - - * m68k.c (output_scc_di): New function. - (extend_operator) : Allow DImode target. - * m68k.h (HARD_REGNO_MODE_OK): Don't allow d7/a0 as DImode reg pair. - * m68k.md (tstdi, cmpdi, addsi_lshrsi_31, ashldi_extsi): New patterns. - (extendqidi2, extendhidi2, extendsidi2): Allow "general_operand" - instead of "register_operand" 0. - (adddid_sexthishl32, subdid_sexthishl32, subdi_dishl32): Likewise. - (adddi_dilshr32): Operand 0 constraint changed from "ro" to "do"; - Code generation fixed. - (adddi_mem, subdi_mem): Fixed for "<" and ">" operand 0. - (adddi3, subdi3): Operand 2 constraint changed from "ao" to "*ao" - (ashldi_sexthi, ashrdi_const32): Allow only "register_operand" - instead of "general_operand" 0. - (ash[lr]di_const, ash[lr]di3): Allow also 8 and 16 as shift count. - (subreg1ashrdi_const32): Pattern deleted. - (subreghi1ashrdi_const32, subregsi1ashrdi_const32): New pattern. - (lshrsi_31): New implementation. - (scc0_di, scc_di, beq0_di, bne0_di, bge0_di, blt0_di): New patterns. - -Fri May 12 16:50:49 1995 Jeffrey A. Law - - * pa.md (bb patterns): Fix bugs in length computation exposed by - recent branch shortening and genattrtab changes. - -Fri May 12 16:22:27 1995 Ken Raeburn - - * cccp.c (enum node_type): Add T_IMMEDIATE_PREFIX_TYPE. - (special_symbol): Handle it; emit value of IMMEDIATE_PREFIX. - (IMMEDIATE_PREFIX): Default to empty string. - (initialize_builtins): Install __IMMEDIATE_PREFIX__ builtin, - parallel to __REGISTER_PREFIX__. - -Fri May 12 14:40:03 1995 Pat Rankin (rankin@eql.caltech.edu) - - * cccp.c: #if VMS, don't define `stat' macro to be VMS_stat. - Compare enums explicitly to 0 to work around VAX C bug. - (do_include): Cast alloca's value. - - * make-cc1.com (bc_loop): Process comma-separated list rather - than space-separated one; restore .h suffix stripped by vmsconfig; - (loop1): More robust handling of directory prefix on file names. - * vmsconfig.com (TPU makefile.in): Reorganize and reformat code. - Make generated .opt files have more consistent format (all comma - separated, excess whitespace eliminated); - (additional_compiler): New routine. - (process_makefile): Use it to handle cc1plus via cp/Make-lang.in. - -Fri May 12 13:35:07 1995 Doug Evans - - * arm.h: Replace ARM_REG_PREFIX with REGISTER_PREFIX. - Replace ARM_COMMENT_CHAR with ASM_COMMENT_START. - (REGISTER_PREFIX): Define. - (USER_LABEL_PREFIX, LOCAL_LABEL_PREFIX): Define. - (SECONDARY_OUTPUT_RELOAD_CLASS): Handle DFmodes only if - TARGET_HARD_FLOAT. - (PREDICATE_CODES): Add soft_df_operand. - * arm.c: Replace ARM_REG_PREFIX with REGISTER_PREFIX. - Replace ARM_COMMENT_CHAR with ASM_COMMENT_START. - (arm_asm_output_label): Use USER_LABEL_PREFIX. - (soft_df_operand): New function. - * arm.md (movsicc): New pattern. - (movsfcc, movdfcc, *movsicc_insn, *movsfcc_hard_insn): Likewise. - (*movsfcc_soft_insn, *movdfcc_insn): Likewise. - (*movdf_soft_insn): Rewrite. - (movsi matcher): Fix typo in type attribute. - -Fri May 12 10:25:40 1995 Michael Meissner (meissner@cygnus.com) - - * i386.h (TARGET_RTD): Use MASK_RTD, not MASK_REGPARM. - (TARGET_SWITCHES): Add -m{,no-}align-double switch. - (TARGET_OPTIONS): Add -mregparm= switch to set number of registers - to use for passing arguments. Add -malign-loops= switch to set - the alignment for loops. Add -malign-jumps= switch to set the - alignment for code that is jumped to. Add -malign-functions= - switch to set the initial alignment of functions. - (TARGET_REGPARM): Delete, in favor of -mregparm= - (TARGET_SWITCHES): Delete -mregparm, add -mdebug-arg switches. - (RETURN_POPS_ARGS): Call i386_return_pops_args to do the real work. - (VALID_MACHINE_DECL_ATTRIBUTE): Define as function call. - (VALID_MACHINE_TYPE_ATTRIBUTE): Define as function call. - (COMP_TYPE_ATTRIBUTES): Define as function call. - (REGPARM_MAX): Maximum number of regs to use for passing arguments. - (CUMULATIVE_ARGS): Make this a structure, not an int. - (INIT_CUMULATIVE_ARGS, FUNCTION_ARG{,_ADVANCE}): Call function. - (FUNCTION_ARG_PARTIAL_NREGS): Likewise. - (MAX_CODE_ALIGN): Maximum value to align loops/jumps to. - (BIGGEST_ALIGNMENT): Return 64 if -malign-double, 32 otherwise. - (ASM_OUTPUT_ALIGN_CODE): Use value of -malign-jumps= switch. - (ASM_OUTPUT_LOOP_ALIGN): Use value of -malign-loops= switch. - (toplevel): Declare all new functions and external variables added - in i386.c. - - * i386.c (i386_regparm_string, i386_regparm): New variables - for -mregparm= switch to set the number of registers to use for - passing arguments. - (i386_align_loops_string, i386_align_loops): New variables for - -malign-loops= switch to set alignment to use for loops. - (i386_align_jumps_string, i386_align_jumps): New variables for - -malign-jumps= switch to set alignment to use for labels that are - jumped to. - (override_options): Support new switches. - (i386_valid_decl_attribute_p): New function to validate decl - specific attributes. Presently returns 0. - (i386_valid_type_attribute_p): New function to validate type - specific attributes. Recognize "stdcall", which says function - with fixed numbers of arguments is responsible for popping stack, - "cdecl", which says to use the normal C calling sequence, even if - -mrtd is used, and "regparm", which specifies the number of - registers to use for passing arguments. - (i386_comp_type_attributes): New function, to validate whether - attributes are compatible. - (i386_return_pops_args): New function, to return whether or not - the function pops its argument list or not, taking into account - -mrtd, and the stdcall/cdecl attributes. - (init_cumulative_args): Rewrite as a function, taking variable - argument functions, and regparm support into account. - (function_arg{,_advance,_partial_nreg}): Likewise. - (print_operand): Support %J, to print appropriate jump insn. - - * i386.md (decrement_and_branch_until_zero): Define pattern, - so that loops that count down to zero, don't have an unneeded - compare after the decrement. Add a general insn recognizer for - add to a value and compare against zero. - - * i386/go32.h, i386/winnt.h (VALID_MACHINE_DECL_ATTRIBUTE): - Delete, code folded into the mainline. - (RETURN_POPS_ARGS): Likewise. - - * i386/winnt.h (ENCODE_SECTION_INFO): The stdcall attribute is now - stored on the type field, rather than the decl. - - * i386/gas.h (ASM_OUTPUT_ALIGN_CODE, ASM_OUTPUT_LOOP_ALIGN): Use - i386_align_{loops,jumps} variables to do alignment. - * i386/osfrose.h, i386/svr3dbx.h: Likewise. - -Fri May 12 12:48:19 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * stor-layout.c (layout_type, case ARRAY_TYPE): Compute length using - MAX of length and zero if sizetype signed and neither bound constant. - - * i386/gnuelf.h, i386/linux-oldld.h, i386/lynx-ng.h, i386/v3gas.h: - Use <...> in #include instead of "...". - * m68k/lynx-ng.h, sparc/lynx-ng.h: Likewise. - - * c-parse.in (myparm): Handle attributes. - * objc-act.c (unused_list): New variable. - (build_tmp_function_decl): Call push_parm_decl with new format. - (start_class): Initialize unused_list. - (start_method_def): Call push_parm_decl with new format and - mark _cmp as possibly unused. - - * combine.c (simplify_shift_const): Don't change SHIFT_MODE - for LSHIFTRT either. - - * unroll.c (unroll_loop): Don't move reg if used in copy_end and - that is a JUMP_INSN. - -Fri May 12 12:31:37 1995 Doug Evans - - * arm/lib1funcs.asm: New file. - -Fri May 12 11:52:03 1995 Kung Hsu - - * configure (a29k-*-vxworks*): New target. - * config.sub (vxworks29k): New alias. - * a29k/t-vx29k: New file. - * a29k/vx29k.h: New file. - -Fri May 12 11:17:28 1995 Jim Wilson - - * loop.c (check_dbra_loop): When reversing loop when - no_use_except_counting is false, there must be only one biv. - -Fri May 12 07:10:00 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * unroll.c (unroll_loop): Only use local_regno for pseudos. - - * genattrtab.c (write_test_expr, case MATCH_DUP): Use operands[N] - instead of JUMP_LABEL (which may not be set). - (walk_attr_value, case MATCH_DUP): Set must_extract. - - * c-parse.in: Adjust number of shift/reduce conflicts. - (parm): Support attributes. - * c-decl.c (push_parm_decl): Pass any attributes to decl_attributes. - -Fri May 12 00:36:26 1995 Per Bothner - - * cpplib.c (skip_quoted_string): Removed - no longer needed. - (skip_if_group): Use cpp_get_token instead of skip_quoted_string. - - * cpplib.h (struct cpp_reader): Remove start_line field. - Add multiline_string_line field. - - * cpplib.c (cpp_error_with_line, cpp_warning_with_line, - cpp_pedwarn_with_line): Take extra column number parameter. - (macroexpand, cpp_get_token): Fix reporting of unterminated strings. - (line_for_error): Removed - no longer needed. - -Fri May 12 02:21:34 1995 Jim Wilson - - * mips/svr4-t.h (MD_STARTFILE_PREFIX, MD_EXEC_PREFIX, - STARTFILE_SPEC, LINK_SPEC): Define. - * configure (mips-tandem-sysv4): Use t-mips not t-svr4. - -Thu May 11 19:18:54 1995 Per Bothner - - * cpplib.c (line_for_error): Make it work; add extra parameter. - (skip_quoted_string, cpp_get_token): Update calls to line_for_error. - (macroexpand): Remember initial line so we can report it if the - call is unterminated. Also, simplify error logic slightly. - (do_include): Cast alloca return value, to avoid pcc warning. - - * cppexp.c (parse_number): Cleanup some Cygnus crud for MPW. - -Thu May 11 21:35:23 1995 Torbjorn Granlund - - From Moshier: - * i960.c (i960_output_ldconst): Let split_double handle DImode. - (i960_print_operand): Use REAL_VALUE_TO_DECIMAL for decimal strings. - (i960_output_double, i960_output_float): Likewise; also change arg - VALUE from `double' to `REAL_VALUE_TYPE'. - -Thu May 11 21:09:25 1995 Per Bothner (bothner@wombat.gnu.ai.mit.edu) - - * cpperror.c (cpp_print_containing_files): Remove some - Cygnus-local stuff. - -Thu May 11 21:06:47 1995 Doug Evans - - * gcc.c (link_command_spec): Make -nostdlib no longer imply - -nostartfiles. - -Thu May 11 18:48:57 1995 Paul Eggert - - * c-common.c (convert_and_check): Don't diagnose overflow in constant - expression merely because conversion overflowed. - -Thu May 11 18:43:59 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * c-decl.c (grokdeclarator): Use PARM_FLAG to see if should - make PARM_DECL. - * c-parse.in (nested_function, notype_nested_function): - Allow old-style arg definitions (use xdecls). - - * c-decl.c (finish_struct): Properly update DECL_PACKED. - -Thu May 11 15:24:15 1995 Jason Merrill - - * fold-const.c (fold): Also fold CLEANUP_POINT_EXPRs into - TRUTH_*_EXPRs and into the first operand. - (operand_equal_for_comparison_p): Also make sure the second operand - is integral. - -Thu May 11 14:22:03 1995 Ted Lemon - - * config/mips/netbsd.h: New file. - * config/mips/t-mips-netbsd: New file. - * config/mips/x-netbsd: New file. - - * configure (mips-dec-netbsd*): Add entry. - - * mips.h (LOCAL_LABEL_PREFIX, USER_LABEL_PREFIX): Define. - (PUT_SDB_BLOCK_START, PUT_SDB_BLOCK_END, ASM_OUTPUT_LABEL_REF, - ASM_OUTPUT_INTERNAL_LABEL, ASM_GENERATE_INTERNAL_LABEL, - ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Use them. - - * mips.c (mips_output_lineno): Use LOCAL_LABEL_PREFIX. - -Thu May 11 14:22:03 1995 Stan Cox (gcc@dg-rtp.dg.com) - - * dwarfout.c (output_decl): Don't output DIE for struct or union type - with no name or with ERROR_MARK for the fields. - -Thu May 11 06:36:34 1995 Michael Meissner (meissner@cygnus.com) - - * flow.c (mark_used_regs): If a SUBREG does not have a REG in the - SUBREG_REG position, recursively call mark_used_regs, instead of - segfaulting. - -Thu May 11 06:44:34 1995 Pat Rankin (rankin@eql.caltech.edu) - - * expr.c (do_jump, case EQ_EXPR, NE_EXPR): Fix typo for complex. - -Wed May 10 12:34:46 1995 Michael Meissner - - * configure: Add support for the little endian variant of the - PowerPC System V.4 and Eabi targets. If the GNU assembler was not - specified, don't build libgcc.a variants on the PowerPC systems - that use -mrelocatable, -mlittle, and -mbig. - - * genmultilib: For MULTILIB_MATCHES arguments, map question marks - into equal signs after spliting the left and right side of - equivalent options, to all support for options like: -mcpu=403. - - * rs6000/rs6000.md (rs6000_immed_double_const): New function that - is like immed_double_const, except that it reverses the two words - in the constant if the target is little endian. - - * rs6000/rs6000.md (floatsidf2): Use rs6000_immed_double_const, - not immed_double_const. - (floatunssidf2): Ditto. - - * rs6000/rs6000.h: Add declarations for all functions in rs6000.c. - - * rs6000/sysv4.h (TARGET_SWITCHES): Add -mlittle, -mlittle-endian, - -mbig, and -mbig-endian for bi-endian support. - (ASM_SPEC): Pass -mlittle/-mbig to the assembler if it was passed - to us. - (LINK_SPEC): If explicit little or big endian support was - requested, tell the GNU linker to use the appropriate target - format. - - * rs6000/t-eabi (MULTILIB_*): Build libgcc.a variants for software - floating point. Remove mrelocatable libgcc.a variant. - - * rs6000/t-eabigas: New file, cloned from t-eabi. Build - mrelocatable libgcc.a variant in addition to the other variants. - - * rs6000/t-ppc: New file, for PowerPC System V.4 support without - the GNU assembler. - - * rs6000/t-ppcgas: New file, for PowerPC System V.4 support with - the GNU assembler. - - * rs6000/eabile.h: New file, little endian eabi config file. - * rs6000/sysv4le.h: New file, little endian V.4 config file. - -Wed May 10 14:22:28 1995 Doug Evans - - * libgcc1-test.c (main_without__main): Renamed from `main'. - * Makefile.in (libgcc1-test): Tell the user to ignore warnings. - - * configure: Support --enable-foo, --disable-foo. - -Wed May 10 10:34:00 1995 Lee Iverson - - * unroll.c: Add declarations of static functions. - (unroll_loop): Renumber regs local to loop for each unrolled iteration. - -Wed May 10 08:27:03 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * alpha.c (alpha_set_emit_const): Cleanups to work properly - when run on 32-bit host. - - * configure: Instead of symlinking tm.h and {h,t,}config.h, - make them files that #include the proper file; pass to Makefile. - Pass out_file and md_file to Makefile instead of making symlinks. - * Makefile.in (out_file, md_file, tm_file, {build,host}_xm_file): - New symbols, to be overridden by configure. - (insn-*): Use $(md_file), not md. - (aux-output.o): Use $(out_file), not aux-output.c. - ($(MD_FILE)): Rework to use new conventions. - (gen*.o, bi-*.o): Depend on $(build_xm_file), not hconfig.h. - (scan.o, fix-header.o, scan-decls.o): Likewise. - (distclean): Adjust files removed for new convention. - -Tue May 9 19:26:42 1995 Jason Merrill - - * rs6000/rs6000.h (LIBGCC_SPEC): Do link with libgcc when -shared. - - * Makefile.in (STAGESTUFF): Add underscore.c. - (underscore.c): Rename temporary files to begin with 'tmp-' so that - they will be removed by 'make mostlyclean'. - -Tue May 9 19:19:55 1995 Mike Stump - - * toplev.c (lang_options): Add new flag -ffor-scope. - -Tue May 9 19:11:47 1995 Lee Iverson (leei@ai.sri.com) - - * objc/init.c (objc_init_statics): Fix missing part of last change. - -Tue May 9 18:25:34 1995 Richard Kenner - - * i386/gnu.h, i386/linux.h, i386/linux-aout.h, i386/lynx.h: - Use <...> in #include instead of "..." to avoid recursion. - * i386/netbsd.h, i386/xm-gnu.h, i386/xm-linux.h: Likewise. - * i386/xm-lynx.h, i386/xm-freebsd.h, i386/xm-netbsd.h: Likewise. - * m68k/lynx.h, m68k/netbsd.h, m68k/xm-lynx.h: Likewise. - * m68k/xm-netbsd.h, mips/gnu.h, ns32k/netbsd.h: Likewise. - * ns32k/xm-netbsd.h, rs6000/lynx.h, rs6000/xm-lynx.h: Likewise. - * sparc/lynx.h, sparc/netbsd.h, sparc/xm-lynx.h: Likewise. - * sparc/xm-netbsd.h, vax/netbsd.h, vax/xm-netbsd.h: Likewise. - -Tue May 9 15:52:05 1995 Michael Meissner - - * config.sub: Recognize powerpcle as the little endian varient of - the PowerPC. Recgonize ppc as a PowerPC variant, and ppcle as a - powerpcle variant. Convert pentium into i586, not i486. Add p5 - alias for i586. Map new x86 variants p6, k5, nexgen into i586 - temporarily. - -Tue May 9 15:43:27 1995 Jason Merrill - - * rs6000/rs6000.h (LINK_SPEC, LIB_SPEC): Don't mess with libg - if -shared. - * rs6000/aix41ppc.h (LINK_SPEC): Ditto. - - * rs6000/powerpc.h: Don't emit .extern directives. - -Tue May 9 14:08:09 1995 Jim Wilson - - * sh/lib1funcs.asm (__ashrsi3, __ashlsi3, __lshrsi3): Use .byte - instead of .word offsets in switch table. - -Tue May 9 11:44:47 1995 Jeremy Bettis - - * objc/sendmsg.c (__objc_send_initialize): Call superclass if object - does not implement +initialize. - -Tue May 9 02:44:16 1995 Jason Merrill - - * rs6000/xm-rs6000.h (COLLECT_EXPORT_LIST): Define if not - cross-compiling. - * rs6000/xm-mach.h: #undef COLLECT_EXPORT_LIST. - * rs6000/rs6000.h (COLLECT_SCAN_OBJECTS): Lose. - - * collect2.c (collect_exit): Unlink export_file. - (prefix_from_string): Broken out from prefix_from_env. - (prefix_from_env): Call it. - (main): Under AIX, recognize -bE: and -bexport:, and don't - automatically export everything if we see one. Otherwise, scan the - objects individually and add all their symbols to an export file to be - passed to the linker. - (write_export_file): New function. - (scan_prog_file): Ignore symbols starting with '.' - - * c-common.c (declare_hidden_char_array): Mark decl artificial. - -Mon May 8 18:13:57 1995 Adam Fedor - - * objc/init.c (_objc_load_callback): Add declaration. - (__objc_exec_class): Call _objc_load_callback after every Class - or Category is added. - * objc/objc-api.h (_objc_load_callback): Add declaration. - -Mon May 8 17:56:28 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * expr.c (expand_expr, case INDIRECT_REF): Set RTX_UNCHANGING_P - if both TREE_READONLY and TREE_STATIC set. - - * c-typeck.c (convert_for_assignment): Don't give errors about - adding const or volatile unless both sides point to functions. - -Mon May 8 11:48:23 1995 Michael Meissner - - * configure: If ../ld/Makefile, symlink ../ld/ld.new to collect-ld, - not real-ld. Don't test for $use_collect2 any more. - -Sun May 7 17:52:23 1995 Jason Merrill - - * calls.c (expand_call): Improve -Winline warnings. - -Sun May 7 17:28:27 1995 DJ Delorie (dj@delorie.com) - - * configure.bat: Use "go32" instead of "msdos" for future expansion. - - * i386/go32.h: Add support for win32's stdcall functions. - - * configure.bat: Add ^M to end of each line. - * i386/config-nt.bat, alpha/config-nt.bat: Likewise. - -Sun May 7 02:12:26 1995 Jason Merrill - - * tree.h (DECL_ARTIFICIAL): New macro. - - * function.c (expand_function_end): Don't warn about unused - anonymous or artificial parms. - -Fri May 5 18:41:22 1995 Jim Meyering (meyering@comco.com) - - * configure: Fix typo in name of "maintainer-clean". - -Fri May 5 14:58:01 1995 Jeffrey A. Law - - * pa.c (emit_move_sequence): Force problematical constants - into memory during the reload pass when generating PIC. - -Fri May 5 13:30:33 1995 Doug Evans - - * objc/NXConstStr.m: NXConstantString.h renamed to NXConststr.h. - -Fri May 5 07:10:15 1995 Stephen L Moshier (moshier@world.std.com) - - * real.c (emdnorm, toe64, etoe64): Significand of Intel long double - denormals is shifted down one bit. - -Fri May 5 07:04:12 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * c-typeck.c (process_init_element): Don't clear_momentary if - constructor_stack is not empty. - - * objc/Makefile (SHELL): Now /bin/sh. - - * c-typeck.c (build_binary_op): Also warn about ordered - comparison of pointer with zero if -Wall. - - * expr.c (do_jump, case EQ_EXPR, NE_EXPR): Properly compare complex. - -Thu May 4 18:01:25 1995 Philippe De Muyter (phdm@info.ucl.ac.be) - - * objc/Makefile: NXConstantString renamed to NXConstStr. - * objc/NXConstStr.m: Renamed from objc/NXConstantString.m. - * objc/NXConstStr.h: Renamed from objc/NXConstantString.h. - -Thu May 4 17:38:21 1995 J.T. Conklin - - * configure (vax-*-netbsd*): New configuration. - * vax/netbsd.h, vax/xm-netbsd.h: New files. - -Thu May 4 16:39:05 1995 Jason Merrill - - * collect2.c (main): Add check for 'collect-ld', just like - 'real-ld', except that old versions won't be looking for it in the - path. Don't look for 'real-ld' in the path anymore. Sigh. - - * collect2.c: #include demangle.h and obstack.h. - (obstack_chunk_alloc): Define. - (obstack_chunk_free): Define. - (generic): Don't define. Don't use. - (main): Initialize obstacks and demangling. - - * collect2.c (dump_file): Adjust space padding in output to - maintain tabulation with Solaris ld. Don't demangle if the - environment variable COLLECT_NO_DEMANGLE is set. - - * collect2.c (main): Redirect the output of the first link and - demangle it. Don't collect static c/dtors unless USE_COLLECT2 is - defined. Null-terminate the list of objects. - (dump_file): New function. - (file_exists): New function. - (collect_exit): Renamed from my_exit. Dump and remove the temporary - ld output file. - (collect_execute): Break out from fork_execute. Support redirection. - (fork_execute): Call it. - (fatal_perror, fatal, error): Make non-static. - (xcalloc, xmalloc): Don't use generic. - (xrealloc): Define. - (collect_wait): Break out for do_wait. Just return the exit status. - (do_wait): Call it. - - * collect2.c: Check SUNOS4_SHARED_LIBRARIES using #if, not #ifdef. - - * Makefile.in (collect2): Now uses cplus-dem.o and underscore.o. - (collect2.o): Pass MAYBE_USE_COLLECT2 to compile. - (underscore.c): Rules for creation. - - * cplus-dem.c, demangle.h: Copy from libiberty. - -Thu May 4 14:12:35 1995 Jim Wilson - - * sdbout.c (plain_type): Pass additional argument to plain_type_1. - (plain_type_1): New parameter level. Increment it when making - recursive calls. Force the type to void_type_mode before starting - a 7th level of recursion. - - * sh.c (general_movsrc_operand, general_movdst_operand): Delete - references to POST_DEC and PRE_INC. - * sh.h: Clean up whitespace, comments, etc. - (TARGET_SH, RTL_BIT, DT_BIT, C_BIT, R_BIT, TARGET_DUMP_RTL, - TARGET_DUMP_R, TARGET_CDUMP): Delete. - (TARGET_SWITCHES): Delete -mR, -mc, -mr options. - (CONST_DOUBLE_OK_FOR_LETTER_P): Delete 'G' contraint. - (FUNCTION_VALUE): Simplify. - (REG_OK_FOR_PRE_POST_P, IS_INDEX): Delete. - (BASE_REGISTER_RTX_P, INDEX_REGISTER_RTX_P): Rewrite to allow - SUBREGs. - (GO_IF_LEGITIMATE_INDEX): Delete unused REGNO argument. - (GO_IF_LEGITIMATE_ADDRESS): Use BASE_REGISTER_RTX_P instead of - REG_OK_FOR_PRE_POST_P. Don't accept PRE_INC or POST_DEC addresses. - (PREDICATE_CODES, PROMOTE_MODE): Define. - -Wed May 3 09:57:55 1995 Michael Meissner - - * rs6000/rs6000.md (non power abs insns): If not powerpc, use - sf/subfc instructions, not subf. - -Wed May 3 08:49:06 1995 Alan Modra - - * protoize.c (gen_aux_info_file): Use strerror #ifdef HAVE_STRERROR. - -Wed May 3 01:06:01 1995 Jeffrey A. Law - - * pa.c (output_call): Fix typo/thinko in last change. - (output_function_epilogue): Align the data section before - emitting deferred plabels. - - From Torbjorn: - * pa.c (before functions): Declare deferred_plabels and - n_deferred_plabels. - (output_call): When generating pic, don't use LP and RP. Use 32 bit - plabel instead. - (output_function_epilogue): Output plabels accumulated in output_call. - -Tue May 2 17:15:08 1995 Jeffrey A. Law - - * pa.c (hppa_expand_epilogue): Fix thinko in last change. - -Tue May 2 16:54:35 1995 Doug Evans - - * jump.c (jump_optimize, can_reach_end determination): A barrier can - follow the return insn. - -Tue May 2 12:39:55 1995 Mike Stump - - * fold-const.c (fold): Ensure that we don't alter the expression's - type when folding CLEANUP_POINT_EXPRs. - -Tue May 2 13:36:08 1995 Michael Meissner - - * expmed.c (emit_store_flag): When creating store flag - instructions from simpler parts, such as XOR, ABS, etc. do not - reuse pseudo registers if expensive optimizations, instead create new - pseudos for each insn result. - -Tue May 2 01:25:29 1995 Jeffrey A. Law - - * pa.c (hppa_expand_epilogue): Correctly handle restore of %rp - for functions with a stack size of exactly 8kbytes and no frame - pointer. - -Mon May 1 19:27:08 1995 Jim Wilson - - * sdbout.c (sdbout_one_type): Don't switch to text section if - in function with section attribute. - - * combine.c (combine_instrutions): Set subst_prev_insn to zero. - (try_combine, undo_all): Likewise. - (get_last_value): Return zero if subst_prev_insn set. - - * sparc.h (INIT_TARGET_OPTABS): Move INIT_SUBTARGET_OPTABS to end. - - * Makefile.in (install-dir): chmod a+rx all newly created directories. - - * expr.c (expand_expr, case SAVE_EXPR): Handle the case where - mode is VOIDmode. - -Fri Apr 28 15:39:38 1995 Per Bothner - - * cpplib.h (cpp_buffer): Note new escape combination "@ ". - * cpplib.c (macroexpand): Delete "@ " if stringifying. - (cpp_skip_hspace): Also skip "@ " if input buffer has_escapes. - (collect_expansion): Cleanup white-space handling. - (create_definition): Remove all leading spaces, not just first one. - (cpp_expand_to_buffer): Set has_escapes on resulting input buffer. - (macroexpand): Set output_escapes during whole function (and - specifically during calls of macarg). - (macroexpand): Set "@ " before and after expansion result. - (push_macro_expansion): Remove unneeded initial "@ ", not " ". - (cpp_get_token): Remove unneeded "@ " (not " ") at end of expansion. - (cpp_get_token): Handle "@ ". - - * cpplib.c (read_name_map): Add cpp_reader parameter. Access - map_list from former (instead of having it be static). - (open_include_file): Extra parameter (because of above changes). - (do_include, lookup_import): Update calls of open_include_file. - - * cpplib.c (do_include): Fix memory leak. - - * cpplib.c (delete_assertion): Also delete tokenlist. - (do_unassert): Don't delete tokenlist (handled by delete_assertion). - (cpp_cleanup): New function. Frees resources used by a cpp_reader. - * cpphash.c (cpp_hash_cleanup): New function. - (delete_macro): Enable commented-out code. - (file_cleanup): Free actual buffer. - - * cpplib.c (cpp_options): Add map_list. - - * cpplib.h (PARSE_GETC): Removed. Bogus and unused. - * cppmain.c (main): Remove commented-out code that used PARSE_GETC. - - * cpplib.c: Don't #include . Causes clashes - on Nextstep (when index/rindex are macros). - (cpp_grow_buffer, int_parse_file): Cast to U_CHAR*, rather than char*. - -Sun Apr 30 08:11:23 1995 Alan Modra (alan@spri.levels.unisa.edu.au) - - * stdarg.h, varargs.h (va_arg): Don't assume __va_rounded_size (char) - has the value of 4. - -Sun Apr 30 07:13:43 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * vax.h (NOTICE_UPDATE_CC): Correctly handle aob insns. - - * expr.c (expand_expr, case CONSTRUCTOR): Don't set target to - zero if more then one word. - Pass size and alignment to move_by_pieces_ninsns in bytes, not bits. - - * cse.c (cse_insn): Properly set IN_MEMORY for SET_DEST. - - * tree.c (substitute_in_expr): Preserve TREE_READONLY. - - * c-common.c (enum attrs): Add A_UNUSED. - (init_attributes): Initialize it. - (decl_attributes, case A_UNUSED): New case. - -Sat Apr 29 15:42:03 1995 Paul Eggert - - * cccp.c (do_include): Re-fix minor memory leak by using - alloca instead of xmalloc and free. - - * cccp.c (macarg): Except for reporting error, treat unterminated - macro call as if it were terminated, since `macroexpand' relies - on *argptr being filled in. - -Sat Apr 29 06:09:35 1995 Torbjorn Granlund - - * pa.c (output_mul_insn): Simplify, it is never called with - UNSIGNEDP set. - - * pa.md (divsi3, udivsi3, modsi3, umodsi3): Simplify. - (ashlsi3): Clean up indentation and commentary. - -Fri Apr 28 12:48:01 1995 Jason Merrill - - * integrate.c (expand_inline_function): Don't emit any notes until - after we've expanded the actual parameters. - -Fri Apr 28 11:51:06 1995 Stan Cox (gcc@dg-rtp.dg.com) - - * m88k/dgux.h: (ENDFILE_SPEC, LIB_SPEC) Fix crtbegin and crtend - (SELECT_RTX_SECTION) Put relocatable pic constants in data section - - * m88k/dguxbcs.h: (LIB_SPEC) Likewise - - * m88k/m88k.c: (symbolic_operand) Put relocatable pic constants in data - - * m88k/m88k.h: (FRAME_POINTER_REQUIRED) Add -momit-leaf-frame-pointer - - * m88k/m88k.md: (umulsidi3) Doesn't work for 88110 with mod/div changes - - * m88k/x-dgux: (GCC_FOR_TARGET) tdesc gets mixed up for crtbegin/crtend - -Fri Apr 28 06:36:47 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * c-typeck.c (pop_init_level, output_init_element): Pass - require_constant_* to digest_init. - - * alpha.c (alpha_emit_set_const): Now returns rtx and take MODE arg. - Rework to use a new pseudo for intermediate values if high opt level. - Also use expand_{bin,un}op. - * alpha.h (alpha_emit_set_const): Add declaration. - * alpha.md (mov[sd]i and splits): Change call to alpha_emit_set_const. - - * reg-stack.c (stack_result): Fix bug in last change. - -Fri Apr 28 01:08:43 1995 Doug Evans - - * objc-act.c: Update calls to start_decl, finish_struct, - pass NULLs for attributes. - -Thu Apr 27 21:13:14 1995 Doug Evans - - * sparc.md (tablejump): Only if ! TARGET_MEDANY. - (casesi): New pattern for TARGET_MEDANY case. - - * c-common.c (decl_attributes): Always continue if attribute not found. - * c-typeck.c (common_type): Call lookup_attribute instead of - value_member. - * tree.c (attribute_hash_list): New function. - (build_type_attribute_variant): Call it. - (valid_machine_attribute): Handle attributes with arguments. - (is_attribute_p): New function. - (lookup_attribute): New function. - (attribute_in_list): Deleted. - (attribute_list_contained): Check TREE_PURPOSE and TREE_VALUE. - * tree.h (valid_machine_attribute): Add prototype. - (is_attribute_p, lookup_attribute): Likewise. - * i386/winnt.h (RETURN_POPS_ARGS): Call lookup_attribute. - (ENCODE_SECTION_INFO): Likewise. - (CPP_PREDEFINES): Use __stdcall__, __cdecl__. - (VALID_MACHINE_DECL_ATTRIBUTE): Call is_attribute_p. - `args' must be NULL. - -Thu Apr 27 21:10:41 1995 David Edelsohn - - * rs6000.md (insv): New anonymous patterns to combine insert with - arbitrary ashift, ashiftrt, lshiftrt, or zero_extract. (Based on - patch from John Brooks .) - (ashlsi3): Remove extraneous operand processing. - -Thu Apr 27 18:47:24 1995 Jim Wilson - - * sh/ashlsi3.c, sh/ashrsi3.c, sh/lshrsi3.c: Delete. - * sh/lib1funcs.asm (ashiftrt_r4_*): Rewrite for efficiency. - (ashrsi3, lshrsi3, lshrsi3): Add. - * t-sh (LIB1ASMFUNCS): Add new functions. - (LIBGCC2_CFLAGS): Delete. - (LIB2FUNCS_EXTRA): Remove deleted files. - (ashlsi3.c, ashrsi3.c, lshrsi3.c): Remove rules for deleted files. - - * stmt.c (expand_return): When returning BLKmode structure, use - operand_subword instead of doing arithmetic on the register number. - Also, for structures smaller than word_mode, copy it into a word_mode - temporary and then subreg it. - - * sparc.md: Delete two define_peepholes which print `bad peephole'. - -Thu Apr 27 16:17:01 1995 Torbjorn Granlund - - * toplev.c (rest_of_compilation): Call shorten_branches even when - !optimize. - * final.c (shorten_branches): For non-optimizing compiles, break - after first pass. - -Thu Apr 27 14:22:50 1995 Michael Meissner - - * i386/linux-oldld.h: New file, that is cloned from linux-aout.h, - except that it does not pass -m i386linux to the linker. This is - to support the original Linux ld that is on most distributions. - - * configure (i[345]86-*-linux*oldld*): Use i386/linux-oldld.h as - the target file. - -Thu Apr 27 08:56:50 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * tree.c (valid_machine_attribute): Update last change. - -Thu Apr 27 08:06:33 1995 Philippe De Muyter (phdm@info.ucl.ac.be) - - * fix-header.c, cpplib.c: Don't include twice. - * cpplib.c (cpp_grow_buffer, init_parse_file): Cast {xmalloc,xrealloc} - for token_buffer to U_CHAR* instead of char*. - - * m68k/x-mot3300: New file. - * configure (m68k-motorola-sysv*): Use x-mot3300 instead of x-alloca. - -Thu Apr 27 07:04:09 1995 Paul Eggert - - * cccp.c (do_include): Fix minor memory leak. - - * cccp.c (struct argdata): Remove unused `comments' member. - (macarg): Don't set `comments' member. - - * cccp.c (collect_expansion): Assume leading white space - already removed. - Don't allocate unnecessary space for expansion. - - * cccp.c (deps_output): Don't generate overly long output lines. - Do not invoke self recursively with spacer == 0; this simplifies - the code a bit. - -Wed Apr 26 19:20:02 1995 Andrew McCallum - - * objc/Object.h: Changed Class * to Class in order to match NEXTSTEP - and OpenStep runtime. - * objc/Object.m, objc/Object.h, objc/archive.c, objc/class.c: Likewise. - * objc/encoding.c, objc/init.c, objc/objc-api.h, objc/objc.h: Likewise. - * objc/objects.c, objc/runtime.h, objc/selector.c: Likewise. - * objc/sendmsg.c, objc/typedstream.h: Likewise. - -Wed Apr 26 19:18:52 1995 Pieter Schoenmakers - - * objc/objc-api.h (objc_static_instances): New struct to record - static instances of a certain class. - (objc_module): New tag STATICS to point to the table of - objc_statics_instances. - - * objc/init.c (OBJC_VERSION): Version 7. - (objc_init_statics): New function. - (__objc_exec_class): Invoke objc_init_statics if needed. - - * objc/NXConstantString.m, objc/NXConstantString.h: New files. - * objc/Makefile (OBJC_O): Added bare-bones implementation of - NXConstantString. - - * objc-act.c (OBJC_VERSION): Version 7. - (build_objc_string_object): Build a full declaration if not using - the next runtime. - (objc_add_static_instance): New function. - (init_module_descriptor): Add reference to static instances table. - (build_module_descriptor): Add field for static instances table. - (get_objc_string_decl): New function. - (generate_static_references): New function. - (finish_objc): Call generate_static_references if needed. - - * c-tree.h (finish_decl_top_level): New declaration. - * c-decl.c (finish_decl_top_level): New function. - -Wed Apr 26 18:04:32 1995 Dirk Steinberg (Dirk.Steinberg@gmd.de) - - * stddef.h: Treat _MACHINE_ANSI_H_ like _ANSI_H_. - -Wed Apr 26 14:09:59 1995 Jim Wilson - - * sparc.h (NEGTF2_LIBCALL): Define. - (INIT_TARGET_OPTABS): Add support for all TFmode *_LIBCALL macros. - * optabs.c (init_optabs): Delete all uses of undocumented TImode and - TFmode *_LIBCALL macros. - - * combine.c (simplify_rtx, case TRUNCATE): Add. Use force_to_mode. - (force_to_mode, case AND): Allow some simplifications when GET_MODE (x) - has more bits than HOST_BITS_PER_WIDE_INT. - * mips/mips.md (truncdiqi2+[456]): Add patterns to simplify ZERO_EXTEND - of a TRUNCATE. - -Wed Apr 26 13:01:22 1995 Doug Evans - - * sparc.md (memop define_splits): Rewrite to not use memop. - Preserve MEM_IN_STRUCT_P, MEM_VOLATILE_P, RTX_UNCHANGING_P bits. - * sparc.c (memop): Deleted. - (splittable_symbolic_memory_operand): New function. - (splittable_immediate_memory_operand): New function. - -Wed Apr 26 12:54:26 1995 Jeffrey A. Law - - * configure: Add hppa1.1-hp-lites support. - -Wed Apr 26 08:04:46 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * sh.md (ashrsi2_31): Don't use dead_or_set_p after reload. - * pyr.md: Remove bad peepholes that improperly use dead_or_set_p. - - * function.c (expand_function_end): Warn about unused parms - if both -Wunused and -W. - - * tree.h (TYPE_PARSE_INFO): Delete unused field. - (TYPE_PACKED): Add new macro. - (struct tree_type): Delete unused field `parse_info'. - Add new field `packed_flag'. - * c-tree.h (finish_enum, finish_struct): Add ATTRIBUTES argument. - * c-common.c (init_attributes): Don't require decl for A_PACKED. - (decl_attributes, case A_PACKED): Set TYPE_PACKED for type. - * c-parse.in: Update number of shift/reduce conflicts. - (structsp): Pass attribute arg to finish_struct. - Support attributes on enums and pass to finish_enum. - * c-decl.c (finish_struct): Add ATTRIBUTES argument, call - decl_attributes and set DECL_PACKED from TYPE_PACKED. - (finish_enum): Add ATTRIBUTES argument, call decl_attributes, - and make enum narrow if TYPE_PACKED. - * print-tree.c (print_node): Print TYPE_PACKED. - - * c-decl.c (init_decl_processing): Don't give builtin__constant_p an - argument type. - * expr.c (expand_builtin, case BUILT_IN_CONSTANT_P): A pointer to a - string constant is a constant. - - * c-typeck.c (output_init_element): Constructor is not simple if - a bitfield is being assigned a non-integer. - - * c-typeck.c (push_init_level): Update constructor_depth when we - push spelling level. - -Tue Apr 25 19:50:06 1995 Jeffrey A. Law - - * pa.c (emit_move_sequence): Handle function label arithmetic for - PIC code generation too. - -Tue Apr 25 18:52:43 1995 Stephen R. van den Berg (berg@pool.informatik.rwth-aachen.de) - - * reg-stack.c (current_function_returns_real): Deleted (unused). - (FP_mode_reg): Trimmed to a smaller size, less overhead. - (FP_MODE_REG): New macro over which FP_mode_reg will be accessed. - (mark_regs_pat, straighten_stack): New functions. - (reg_to_stack): Amend initialisation of FP_mode_reg. - Mark FP registers mentioned in USE insns before NOTE_INSN_FUNCTION_BEG. - (get_true_reg): Eliminate FP subreg accesses in favour of the - actual FP register in use. - (record_reg_life_pat): Make it work on SUBREGs as well. Make use of - the new mark_regs_pat function. Handle USE insns if called unnested. - (record_reg_life): Don't check for QImode again, we know that it - is there. Process CALL_INSNs like all other insns, they might `use' - some FP argument registers if register passing. - (stack_result_p): Changed in stack_result and returning an rtx. - (stack_reg_life_analysis): Take a new stackentry state argument. - Use stack_result and the rtx to mark using mark_regs_pat. This ensures - that types that need multiple FP registers are handled correctly. - Delete the no_live_regs shortcut to save space. - Use stackentry state to determine filled registers. - (replace_reg): Accept COMPLEX_FLOAT as well. - (move_for_stack_reg): Optimise away some pointer dereferencing. - (subst_stack_regs): Make sure the stack is in the right order - and of the right size for register passing. - (goto_block_pat): Make sure the stack is in the right order - to return possible multi-register values from the function. - (convert_regs): Fix comment about CALL_INSN, it's no longer valid. - Make sure the stack is of the right size and in the right order - to return possible multi-register values from the function. - - * function.c (assign_parms): If STACK_REGS is defined, generate USE - insns before the function body, thus showing which registers are filled - with parameters. - * expr.c (expand_builtin_apply_args): Likewise. - Reverse order of saving registers, more compact code for i387. - (expand_builtin_apply): Likewise. - * emit-rtl.c (gen_highpart): Add comment about broken implementation. - * i386.md (untyped_call): Make it return a complex double. - - * c-parse.in (attrib): Permit null-length argument list to attributes. - - * tree.c (valid_machine_attribute): Use new function attribute_in_list, - makes sure type_attribute_variants are reused even when attributes have - parameters. - Assign any new type to TREE_TYPE (decl). - (attribute_in_list): New function. - (attribute_list_contained): Use it. - * tree.h (attribute_in_list): New declaration. - -Tue Apr 25 18:25:53 1995 Jim Wilson - - * expr.c (struct move_by_pieces): Add to_struct and from_struct fields. - (move_by_pieces): Set to_struct and from_struct fields. - (move_by_pieces_1): Set MEM_IN_STRUCT_P of to1 and from1. - (expand_builtin, case BUILT_IN_MEMCPY): New variable type. - Set MEM_IN_STRUCT_P of src_mem and dest_mem. - - * Makefile.in (clean): Delete libgcc1-asm.a. - - * m68k/vxm68k.h (CPP_SPEC): Define. - - * c-decl.c (pushdecl): Don't test DECL_EXTERNAL when deciding whether - to register a duplicate decl in the current block. - - * cross64.h (INIT_ENVIRONMENT): Define as string not putenv call. - * gcc.c (main): Pass INIT_ENVIRONMENT to putenv. - - * stmt.c (expand_return): When returning BLKmode structure in - registers, copy it to a psuedo-reg instead of to hard registers. - -Tue Apr 25 15:14:58 1995 Michael Meissner - - * rs6000.h (LEGITIMIZE_ADDRESS): Don't create a DF address using two - regs if -msoft-float or -mcpu=403. - -Tue Apr 25 15:45:44 1995 Richard Henderson (richard@atheist.tamu.edu) - - * m68k.md (divhi3, udivhi3, modhi3, umodhi3): Deleted - these insns plus some surrounding trash. - (divmodhi4, udivmodhi4): Added these insns. - -Tue Apr 25 10:12:40 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * alpha.c (alpha_builtin_saveregs): Refine last change to work - for both stdarg and varargs. - - * tree.c (chain_member_purpose): Make similar to chain_member_value. - - * Makefile.in, configure: Change "realclean" to "maintainer-clean". - - * protoize.c: Removed __NetBSD__ from conditional. - Declare strerror if HAVE_STRERROR is defined; otherwise - declare sys_errlist and sys_nerr. - (my_strerror): New function. - (errno): Don't define if already defined as a macro. - - * alpha.c (current_file_function_operand): Return false if profiling. - - * expr.c (convert_move): Don't access a hard reg in an invalid - mode when doing a truncation. - - * alpha.c (add_operand): Test for exactly the constants allowed by - the constraints. - * alpha.h (CONST_OK_FOR_LETTER_P, case 'L'): Reject 0x80000000. - - * c-parse.in (initdcl, notype_initdcl): Pass attributes to - start_decl; delete call to decl_attributes. - * c-tree.h (start_decl): Two new tree parameters. - * c-decl.c (start_decl): New args for attributes; call decl_attributes. - - * c-decl.c (duplicate_decls): Don't look at TYPE_ACTUAL_ARG_TYPES - if it is not set. - - * xm-1750a.h: New file. - - * alpha.c (alpha_builtin_saveregs): Add to incoming args addr - if less than 6 named args, not less than or equal to. - -Mon Apr 24 15:25:19 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * mips-tfile.c (fatal, error): Make first arg const to avoid warning. - - * stmt.c (expand_end_bindings): Write a BARRIER after call - to abort in nonlocal handler. - - * stmt.c (expand_decl_init): Call preserve_temp_slots to keep - around any temp whose address was taken. - -Fri Apr 21 16:26:15 1995 Torbjorn Granlund - - * pa.md (call_internal_reg): Fix typos in length calculation. - (call_value_internal_reg): Likewise. - -Fri Apr 21 13:17:15 1995 Roland McGrath - - * config/gnu.h (STANDARD_INCLUDE_DIR): New macro. - * config/mips/gnu.h (STANDARD_INCLUDE_DIR): Macro moved there. - -Fri Apr 21 08:23:58 1995 Tom Quiggle (quiggle@lovelace.engr.sgi.com) - - * toplev.c (lang_options): Add -I for GNAT. - * gcc.c (default_compilers): Pass -I to gnat1. - -Fri Apr 21 07:58:06 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * tree.c (integer_all_onesp): Test to size of mode, not TYPE_PRECISION. - - * toplev.c (main): Turn on -fforce-mem for -O2. - - * fold-const.c ([lr]rotate_double): Replace; old versions were bogus. - (fold, shift and rotate): Don't call tree_int_cst_sgn on non-integer. - (fold, case LROTATE_EXPR): If constant count, convert to RROTATE_EXPR. - (fold, case RROTATE_EXPR): Sometimes commute logical op with rotate. - Delete pair of counteracting shifts. - - * combine.c (simplify_logical, case AND): If still an AND, get - new values for op0 and op1. - -Thu Apr 20 17:52:10 1995 Jim Wilson - - * sh.c: Completely rewritten. - * sh.h (FAST_BIT, CONSTLEN_2_BIT, CONSTLEN_3_BIT, CONSTLEN_0_BIT, - TARGET_FASTCODE, TARGET_CLEN3, TARGET_CLEN0, TARGET_OPTIONS): Delete. - (TARGET_SWITCHES): Delete -mclen3 and -mclen0 options. - (TARGET_DEFAULT): Is zero. - (OVERRIDE_OPTIONS): Delete code to set max_count_si and max_count_hi. - (SPECIAL_REG): New macro. - (HARD_REGNO_MODE_OK): Allow any mode in any general register. - (GO_IF_LEGITIMATE_ADDRESS): Delete constant + reg address case. - (MOVE_RATIO): Define to 2 when TARGET_SMALLCODE. - (max_si, max_hi, max_count_si, max_count_hi): Delete. - * sh.md: Delete spurious constraints from all define_expands. - (rotlsi3_1): Set T reg instead of clobbering it. - (ashrsi3): Use expand_ashiftrt instead of gen_shifty_op. - (movsi_i, movhi_i, movsf_i): Add conditions to reject patterns - needing a reload. - (movdi-2, movdf_k): Correct conditions to reject patterns needing - a reload. - ([inverse_]branch_{true,false}): Pass operands to output_branch. - (jump): Delete unnecessary braces. - (call, call_value): Don't use expand_acall. Force operand0 into - a register. - -Thu Apr 20 12:57:16 1995 Jason Merrill - - * function.c (assign_parms): Use TREE_ADDRESSABLE rather than - TYPE_NEEDS_CONSTRUCTING to decide whether a parameter needs to be - passed by invisible reference. - - * calls.c (expand_call): Ditto. Abort if we try to pre-evaluate a - parameter of TREE_ADDRESSABLE type. - -Wed Apr 19 17:50:24 1995 Torbjorn Granlund - - * pa.h (TARGET_SWITCHES): Fix typo. - -Tue Apr 18 18:06:03 1995 Per Bothner - - * expr.c (store_constructor): Use BYTES_BIG_ENDIAN rather - than BITS_BIG_ENDIAN to layout bits within bitstring. - * tree.c (get_set_constructor_bytes): Likewise. - -Tue Apr 18 17:22:46 1995 Per Bothner (bothner@wombat.gnu.ai.mit.edu) - - * config/m68k/{x-hp320,x-hp320g} (FIXPROTO_DEFINES): - Define _HPUX_SOURCE so putenv and other functions get seen. - -Tue Apr 18 03:57:35 1995 Michael Meissner (meissner@cygnus.com) - - * varasm.c (weak_decls): Make this a unique structure, instead of - a tree structure. - (handle_pragma_weak): Don't redeclare asm_out_file. Use new weak - structure to copy name and value to. Protect name and value by - copying them to the permanent obstack. - (declare_weak): Call handle_pragma_weak, instead of duplicating - the code. - (finish_weak): Rewrite to use new weak symbols list structure. - - * c-pragma.h: New file to define the c-pragma.c interfaces. - * c-pragma.c: Include it. - * varasm.c: Include it. - * c-lex.c: Include it. - * cp/lex.c: Include it. - - * varasm.c (handle_pragma_weak): No longer pass output file - stream, since weak pragmas are delayed until the end of the - compilation. - * c-pragma.c (handle_pragma_token): Call handle_pragma_weak - without file stream argument. - - * Makefile.in (varasm.o, c-lex.o, c-pragma.o): Add dependencies on - c-pragma.h. - - * config/rs6000.md (movdf): If -msoft-float, do not generate - memory to memory references, like is already done for the - -mhard-float case. Remove an extra test for -mhard-float inside - of -mhard-float code. - -Tue Apr 18 06:19:50 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * fold-const.c (size_int): Arg is unsigned HOST_WIDE_INT. - * tree.h (size_int): Likewise. - -Mon Apr 17 23:36:57 1995 Jason Merrill - - * rs6000/aix41.h: Restore March 11th changes, plus - (ASM_OUTPUT_EXTERNAL): Do add [DS] or [RW], just don't emit - anything. - * rs6000/aix3newas.h (ASM_OUTPUT_EXTERNAL): Ditto. - -Mon Apr 17 15:58:52 1995 Per Bothner - - * config/mips/x-iris (FIXPROTO_DEFINES): Add -D_LANGUAGE_C_PLUS_PLUS. - * config/mips/x-iris6: Likewise. - - * cpplib.c: Rename make_definition to cpp_define. - * cpplib.h (cpp_define): New declaration. - - * cpplib.c (special_symbol): For T_SPECLINE, calculate __LINE__ - in enclosing file buffer, not current buffer (if macro expanding). - (cpp_get_token): Fix thinko (in code for chopping unneeded space). - -Mon Apr 17 11:36:07 1995 Jim Wilson - - * abi64.h (CPP_SPECS): Define and use _ABI64 instead of - _MIPS_SIM_ABI64. - (SETUP_INCOMING_VARARGS): Set MEM_IN_STRUCT_P if big endian target. - * iris6.h (ASM_IDENTIFY_GCC, ASM_IDENTIFY_LANGUAGE): Define. - - * combine.c (get_last_value): Ignore BARRIER when scanning backwards. - (move_deaths): New variables before_dead and after_dead. Set them - to instructions that have valid INSN_CUID values and use in test. - - * combine.c (subst_prev_insn): New variable. - (try_combine): Set it. - (get_last_value): Use it. - - * reload.c (find_reloads): Recompute reg_equiv_address from - reg_equiv_memory_loc before using it. - (find_reloads_toplev, make_memloc): Likewise. - - * expr.c (expand_builtin, case BUILT_IN_MEMCPY): Call force_operand - on dest_rtx before returning it. - - * function.c (instantiate_decls): Use temporary allocation if - DECL_DEFER_OUTPUT is set. - -Sat Apr 15 23:19:03 1995 Jason Merrill - - * aoutos.h (ASM_OUTPUT_DEF): Define instead of SET_ASM_OP. - * sparc/sunos4.h (ASM_OUTPUT_DEF): Ditto. - - * varasm.c (weak_finish): Don't handle aliases. - (declare_weak): Ditto. - (assemble_alias): Handle aliases. - - * c-common.c (enum attrs): Add A_ALIAS. - (init_attributes): Ditto. - (decl_attributes): Ditto. - -Sat Apr 15 13:26:34 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * calls.c (expand_call): Call preserve_temp_slots on temps - made for BLKmode args returned in registers. - - * pa.c (override_options): Fix typo. - -Sat Apr 15 12:11:46 1995 Brendan Kehoe - - * alpha/alpha.c (output_epilog): Initialize fp_offset to 0, and - make sure it's non-zero before we try to use it to restore the - frame pointer. - -Fri Apr 14 19:45:05 1995 Jason Merrill - - * ginclude/va-{clipper,pa,pyr,sparc,spur}.h (va_arg): Reorganize - to avoid BIND_EXPRs and COND_EXPRs of aggregate type. - -Fri Apr 14 19:31:14 1995 Roland McGrath - - * config/svr4.h (ASM_OUTPUT_SECTION_NAME): Make the section - read-only executable "ax" if DECL is a FUNCTION_DECL; read-only - "a" (previously the case always) if DECL is TREE_READONLY; - otherwise writable "aw". - -Fri Apr 14 18:49:11 1995 Linus Torvalds - - * alpha.md (probe_stack): Probe with write, not read. - (allocate_stack): Update and correct stack probe code. - * alpha.c (output_prolog): Changed stack probe at function entry. - -Fri Apr 14 18:42:34 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * jump.c (delete_insn): When deleting after label, delete - a BARRIER as well. - -Fri Apr 14 14:40:48 1995 Jason Merrill - - * toplev.c (compile_file): Call weak_finish. - - * c-common.c (enum attrs): Add A_WEAK. - (init_attributes): Ditto. - (decl_attributes): Support __attribute__ ((weak)) by - calling declare_weak. - - * sparc/sunos4.h (HANDLE_PRAGMA_WEAK, WEAK_ASM_OP, SET_ASM_OP): - Define to support weak symbols with -fgnu-linker. - * aoutos.h: Ditto. - - * varasm.c (handle_pragma_weak): Add declared weak symbols to - weak_decls rather than emitting them immediately. - (declare_weak): Add the indicated declaration to weak_decls. - (weak_finish): Emit .weak directives for any weak symbols. - - * libgcc2.c: The C++ free-store management functions are weak. - -Fri Apr 14 13:00:29 1995 Michael Meissner (meissner@cygnus.com) - - * rs6000/rs6000.c (output_prolog): For eabi systems, emit main's - call to __eabi before setting up the minimal TOC used with the - -mrelocatable support. - - * rs6000/eabi.h (INVOKE__main): Don't define any more, - output_prolog will emit the call. - -Fri Apr 14 09:09:03 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * alpha.c (call_operand): Any reg is valid for NT. - (output_prologue): Never need GP for Windows/NT. - Set SYMBOL_REF_FLAG in current function decl. - -Thu Apr 13 20:19:30 1995 Jason Merrill - - * alpha/xm-alpha.h (HAVE_VPRINTF): Define. - (HAVE_PUTENV): Define. - (POSIX): Define. - -Thu Apr 13 19:57:44 1995 Doug Evans - - * emit-rtl.c (gen_sequence): If the insn has a non-null - CALL_INSN_FUNCTION_USAGE field, output it as a sequence so the - latter isn't discarded. - - * c-parse.in: Update expected conflict count. - -Thu Apr 13 08:10:20 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * configure.bat: Arg 2 is which machine (i386 or alpha). - * configure (alpha-*-winnt3*): New configuration. - * alpha.c: Don't #include stamp.h for WINNT. - (input_operand, case CONST): Allow ptr_mode and DImode. - * alpha.h (WINDOWS_NT): Provide default definition. - (ASM_OUTPUT_INT): Use output_addr_const. - (ASM_OUTPUT_ADDR_DIFF_ELT): Use .long for NT. - * alpha.md (calll, tablejump, movsi): New variants for NT. - * alpha/winnt.h, alpha/xm-winnt.h, alpha/x-winnt: New files. - * alpha/config-nt.bat, alpha/config-nt.sed: New files. - * i386/config-nt.bat: Add Ada fragments to Makefile. - * i386/config-nt.sed: Adjust for deletion of config.run in Makefile.in - Change version to 2.6.3. - Add some missing tabs. - * winnt/winnt.h (TARGET_MEM_FUNCTIONS): Define. - (LINK_SPEC): Delete "align:0x1000". - * winnt/xm-winnt.h (OBJECT_SUFFIX): Define. - * ginclude/stdarg.h, ginclude/varargs.h: Clean up code that - defines *DEFINED* symbols. - - * configure (a29k-*-sym1*): Same as a29k-*-bsd*. - * a29k.h (ASM_OUTPUT_SECTION_NAME): New macro. - -Wed Apr 12 14:36:03 1995 Jim Wilson - - * dbxout.c (dbxout_type_fields): Correct arguments to CHARS macro - in flag_minimal_debug case. - (dbxout_symbol_name): Use DECL_ASSEMBLER_NAME unconditionally. - * sdbout.c (sdbout_record_type_name): Correct indentation. - (sdbout_symbol): Use DECL_ASSEMBLER_NAME unconditionally. - (sdbout_one_type): Likewise. - -Tue Apr 11 13:24:13 1995 Per Bothner - - * fix-header.c (main): Fix loop over required_functions_list. - (fatal): Also print inc_filename. - - * cpplib.c (cpp_push_buffer): Added missing initializatuon of buf. - (cpp_file_buffer): Compare against CPP_NULL_BUFFER, not NULL. - (finclude): No longer call cpp_push_buffer - let callers do it. - (do_include): Add call to cpp_push_buffer. - (push_parse_file): Call cpp_push_buffer early, so initial - defines can use file and line from a valid cpp_buffer. - (nreverse_pending): New function. - (push_parse_file): Use nreverse_pending. - (push_parse_file): For -include files, just push them in reverse - order - we don't need to scan them now. - (cpp_error_from_errno, cpp_perror_with_name): Don't emit extra '\n'. - -Tue Apr 11 13:36:44 1995 Jim Wilson - - * configure (mips-dec-mach3): Add. - - * sh.c (shiftby_operand): Delete. - * sh.h (TARGET_SWITCHES): -m3 and -m3l also set SH2_BIT. - (OVERRIDE_OPTIONS): Don't add CPU_SH2 to CPU_SH3 when TARGET_SH3. - * sh.md (ashlsi3): Use nonmemory_operand as a predicate instead of - shiftby_operand. Don't use shiftby_operand in the output statement. - (lshrsi3): Likewise. - - * c-decl.c (poplevel): Do output inline function if - DECL_ABSTRACT_ORIGIN points to itself. - - * varasm.c (output_constant): Cast assemble_string argument to char *. - -Mon Apr 10 14:29:28 1995 Torbjorn Granlund - - * recog.c (constrain_operands, case 'E'): Make this work like - constraint character `F' when REAL_ARITHMETIC is defined. - * regclass.c (record_reg_classes, case 'E'): Likewise. - * reload.c (find_reloads, case 'E'): Likewise. - -Mon Apr 10 14:30:31 1995 Michael Meissner - - * rs6000/aix3newas.h, rs6000/aix41.h: Eliminate March 11th changes - to undefine ASM_OUTPUT_EXTERNAL{,_LIBCALL}, since this causes the - compiler not to bootstrap. - -Mon Apr 10 07:17:39 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * cppalloc.c: #include config.h. - * cppexp.c: Add declarations of xmalloc and xrealloc. - (cpp_parse_expr): Cast args to bcopy to char *. - * cpphash.c: Add declaration of xmalloc. - * cpplib.c (init_parse_options, cpp_reader): Cast args to bcopy, - bcmp, and bzero to char *. - (add_import, push_parse_file, init_parse_file): Likewise. - - * c-common.c (enum attrs): New attribute, A_NOCOMMON. - (init_attribute): Initialize it. - (decl_attributes): Implement it. - * varasm.c (make_decl_rtl): Allow section attribute if -fno-common - or variable is not to be placed in common for some other reason. - - * combine.c (simplify_set): Don't move a SUBREG to dest if it - is changing the size of a hard reg in CLASS_CANNOT_CHANGE_SIZE. - - * reload.c (find_equiv_reg): If goal is a pseudo that got memory, - a store into memory makes it invalid. - * reload1.c (reload_as_needed): Call forget_old_reloads_1 on - pattern before reg elimination. - -Mon Apr 10 00:26:14 1995 Jeffrey A. Law - - * pa.c (pa_reorg): Bump label use count for each entry in an - exploded ADDR_VEC. - -Sun Apr 9 09:22:51 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * i386.md (adddi3, subdi3): Need scratch reg whenever operand 0 in - mem and operands 1 not '0'. - (subdi3): Don't treat two non-equal MEMs as non-aliasing. - -Sat Apr 8 22:53:38 1995 Jeffrey A. Law - - * pa.c (pa_reorg): Fix typo. - -Sat Apr 8 19:36:36 1995 Michael Meissner - - * rs6000/rs6000.h (SELECT_SECTION): TREE_CODE_CLASS must be called - with a tree code, not a tree value. - -Sat Apr 8 12:41:01 1995 Mike Stump - - * cpphash.c: Don't use const on compilers that don't support it. - -Sat Apr 8 16:32:22 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * expr.c (expand_increment): Handle case where INCREMENTED - has a non-trivial conversion. - -Fri Apr 7 19:33:21 1995 Phil Nelson (phil@cs.wwu.edu) - - * ns32k.h (TRAMPOLINE_TEMPLATE, TRANSFER_FROM_TRAMPOLINE): - Fix assembler syntax errors. - -Fri Apr 7 19:27:23 1995 Pat Rankin (rankin@eql.caltech.edu) - - * cccp.c (VMS_fstat, VMS_stat): New functions. - -Fri Apr 7 19:25:21 1995 Paul Eggert - - * cccp.c (collect_expansion): If traditional, set stringify - member to SHARP_TOKEN regardless of the value of - stringify_sharp_token_type. - -Fri Apr 7 07:48:35 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * cse.c (simplify_unary_operation): #ifdef POINTERS_EXTEND_UNSIGNED, - handle sign- or zero-extending addresses. - - * optabs.c (init{,_integral,_floating,_complex}_libfuncs): - Change SUFFIX to "char" to avoid confusion with prototype. - - * explow.c (convert_memory_address): No longer static. - New arg, TO_MODE. - Do something special for SYMBOL_REF, LABEL_REF, and CONST. - (memory_address): Add extra arg to call to convert_memory_address. - * rtl.h (convert_memory_address): Add extra arg. - * expr.c (expand_expr, case ADDR_EXPR): Always call - convert_memory_address when converting; add extra arg. - * stmt.c (expand_computed_goto): Convert from ptr_mode to Pmode. - - * gcc.c (OBJECT_SUFFIX): Default now ".o", not "o". - (all specs): Remove "." before %O; use %O in a few missing cases. - * i386/os2.h (OBJECT_SUFFIX): Delete from here. - * i386/xm-os2.h (OBJECT_SUFFIX): Move to here; now has period. - - * Makefile.in (STAGESTUFF): Use $(exeext) for executables. - -Fri Apr 7 03:32:29 1995 Richard Stallman - - * config.sub: Accept -lites* as op sys. - -Thu Apr 6 23:08:50 1995 Per Bothner - - * cpplib.c (bcopy, bzero, bcmp): Remove #undefs. - * cppalloc.c (xcalloc): Re-implement using calloc, - rather than malloc+bzero. - * cpplib.c (SELF_DIR_DUMMY): New macro. - (do_include): Don't pass searchptr to finclude if it is dsp, - since that is on the stack, and would cause a dangling pointer. - If handling #include_next, recognize SELF_DIR_DUMMY. - -Fri Apr 7 00:54:24 1995 Jeffrey A. Law - - * pa.h (MACHINE_DEPENDENT_REORG): Define. - * pa.md (switch_jump): New pattern for jumps which implement - a switch table. - * pa.c (pa_reorg): New function to explode jump tables. - (pa_adjust_insn_length): Account for jumps in switch tables with - unfilled delay slots. - -Thu Apr 6 14:31:10 1995 Jason Merrill - - * c-typeck.c (build_binary_op): Don't call common_type for - uncommon pointer types. - -Wed Apr 5 13:53:17 1995 Per Bothner - - Re-write fixproto/fix-header/etc to use cpplib: - * fix-header.c: Comment out support for adding missing extern "C" - using #ifdef ADD_MISSING_EXTERN_C instead of #if 0. - * fixproto: Removed case of required functions. Instead use ... - * fix-header.c (std_include_table): ... new required-functions table. - (cpp_file_line_for_message, cpp_print_containing_files, cpp_message): - New stub functions, to intercept cpplib error message. - * fixproto: Don't call $CPP, since fix-header now incorporates cpplib. - * gen-protos.c (fatal, hashf): New functions. - (main): Use hashf, instead of hash. - * scan-decls.c (scan_decls, skip_to_closing_brace): Re-write to - take a cpp_reader* as argument, not a FILE*. - * scan.h (hash): Make parameter const. - * scan.c (hash): Removed. - * scan.c (memory_full, xmalloc, xrealloc): Removed. - Use functions from cppalloc.c instead. - * Makefile.in (gen-prtos, fix-header, stmp-fixproto): Update. - -Wed Apr 5 13:24:14 1995 Per Bothner - - * cpplib.c (cpp_get_token): If traditional, return after comment, - instead of reading more, so end-of-line can be peeked at. - * cpperror.c (cpp_file_line_for_message, cpp_message): New - functions, that do the actual printing of error messages. - (cpp_print_file_and_line, cpp_error, cpp_warning, cpp_pedwarn, - cpp_error_with_line, cpp_warning_with_line, cpp_pedwarn_with_line, - cpp_pedwarn_with_file_and_line, cpp_error_from_errno, my_strerror, - cpp_perror_with_name): Re-write to use cpp_file_line_for_message - and cpp_message, and move to cpplib.c. - -Tue Apr 4 23:35:49 1995 Roland McGrath - - * config/gnu.h (GNU_CPP_PREDEFINES): Remove -D__HURD__. - -Tue Apr 4 17:15:54 1995 Jeffrey A. Law - - * pa.h (DO_GLOBAL_DTORS_BODY): Fix pointer -> integer assignment - problem. - - * reorg.c (fill_simple_delay_slots): Don't use a JUMP_INSN - a the target of another JUMP_INSN to fill a delay slot. - -Mon Apr 3 19:03:48 1995 Torbjorn Granlund - - * cse.c (simplify_unary_operation): Sign-extend constants when - they have the most significant bit set for the target. - - * m68k.md (umulsi3_highpart): Test for CONST_INT and CONST_DOUBLE, - not CONSTANT_P. - (smulsi3_highpart): Likewise. - * m68k.c (const_uint32_operand): New function. - (const_sint32_operand): New function. - * m68k.md (const_umulsi3_highpart): Use const_uint32_operand instead - of immediate_operand for op3. Delete mode. - (const_smulsi3_highpart): Analogous change. - -Mon Apr 3 19:03:48 1995 Jim Wilson - - * cse.c (simplify_binary_operation): Sign-extend constants when - they have the most significant bit set for the target. - - * combine.c (force_to_mode, case PLUS): Sign extend masks that are - negative in OP_MODE. - (simplify_and_const_int): Sign-extend constants when they have the - most significant bit set for the target. - (merge_outer_ops): Likewise. - (simplify_shift_const): Likewise. - -Mon Apr 3 18:23:48 1995 Jason Merrill - - * toplev.c (lang_options): Add -f{no-,}repo. - -Mon Apr 3 18:13:15 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * combine.c (nonzero_bits, case REG): Check POINTERS_EXTEND_UNSIGNED. - (num_sign_bit_copies, case REG): Likewise. - * explow.c (convert_memory_address): New function. - (memory_address): Call if it needed. - (promote_mode, case POINTER_TYPE): Use Pmode and pointer extension. - (allocate_dynamic_stack_space): Convert size from ptr_mode. - * expr.c (clear_storage, expand_assignment, store_{expr,constructor}): - Use ptr_mode instead of Pmode in some places. - (expand_expr, expand_builtin): Likewise. - (push_block, store_expr): Convert size to Pmode. - (expand_expr, case ADDR_EXPR): Convert from Pmode to ptr_mode. - -Mon Apr 3 18:00:52 1995 Jim Wilson - - * explow.c (allocate_dynamic_stack_space): Correct typo in last - change. - - * sh.c (gen_shifty_op, case ASHIFTRT): Return 0 if shift count is not - a constant. - -Mon Apr 3 12:17:10 1995 Michael Meissner (meissner@cygnus.com) - - * expmed.c (extract_bit_field): When converting a SUBREG into a - REG, if the system is big endian, adjust the bit offset - appropriately. - -Mon Apr 3 00:08:45 1995 Roland McGrath - - * config/i386/linux.h: Include "config/linux.h" instead of - "linux.h", to avoid recursion. - -Sun Apr 2 23:50:27 1995 Roland McGrath - - * config/i386/gnuelf.h: Include i386/linux.h instead of - i386/linuxelf.h. - -Sun Apr 2 17:35:10 1995 Jim Wilson - - * cse.c (simplify_relational_operation): Don't simplify A-B for - compare of A and B when the compare is unsigned. - -Sun Apr 2 08:23:38 1995 Paul Eggert - - * fixincludes (stdio.h): BSDI 2.0 changed the spelling of _VA_LIST_ - to _BSD_VA_LIST_. - -Sun Apr 2 07:57:28 1995 Richard Kenner - - * i386/xm-bsd386.h: New file. - * configure (i[345]86-*-bsd*): Add xm_file. - - * gcc.c (default_compilers): Pass -W and -w to gnat1. - - * winnt/winnt.h (STDC_VALUE): Add #undef. - * i386/winnt.h (LIB_SPEC): Likewise. - -Sun Apr 2 07:55:25 1995 Douglas Rupp (drupp@cs.washington.edu) - - * i386/winnt.h (RETURN_POPS_ARGS, ENCODE_SECTION_INFO): Call - chain_member_purpose, not chain_member_value. - (ASM_FILE_START, LIB_SPEC): Move to here. - * winnt/winnt.h (ASM_FILE_START, LIB_SPEC): Delete from here. - * tree.c (chain_member_purpose): New function. - -Sat Apr 1 12:19:14 1995 Jason Merrill - - * c-typeck.c (build_binary_op): New variable build_type controls - type given to expression when created. Set to integer_type_node for - comparison ops instead of result_type so result_type still holds type - in which comparison is done. When checking for comparison between - signed and unsigned, use result_type rather than (possibly shortened) - type of op0. Don't warn about equality comparison of signed operand - to unsigned constant that fits in signed type. - -Sat Apr 1 09:47:02 1995 Douglas Rupp (drupp@cs.washington.edu) - - * i386/winnt.h (CPP_PREDEFINES): Add definitions for __stdcall - and __cdecl. - * winnt/winnt.h (LIB_SPEC): Add OLDNAMES.LIB. - * winnt/xm-winnt.h: Remove unneeded #define's for non-ANSI functions. - * fixinc.winnt: Remove unneeded fixes relating to __stdcall. - - * objc/Makefile (SHELL): New definition. - -Sat Apr 1 08:25:26 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * cse.c (cse_insn): When emitting a BARRIER, don't put it after - a deleted insn. - - * reload.c (push_reload): Initialize secondary_{in,out}_icode. - - * gcc.c (print_multilib_info): Don't use LAST_PATH if not set. - -Sat Apr 1 08:15:59 1995 Pat Rankin (rankin@eql.caltech.edu) - - * vax.md (extv, extzv): Don't use immediate value for operand 1. - -Sat Apr 1 07:48:29 1995 Yury Shevchuk (sizif@botik.yaroslavl.su) - - * stmt.c (expand_asm_operands): Properly ignore invalid reg in clobber. - -Sat Apr 1 07:02:24 1995 Paul Eggert - - * cccp.c: General code cleanup. - Add prototypes for static functions. - Remove unnecessary casts to (char *); add casts to (U_CHAR *). - Add parentheses suggested by `gcc -Wparentheses'. - Rename local variables as suggested by `gcc -Wshadow'. - , , , : New includes. - , : Include only if defined(RLIMIT_STACK). - : Include, unless already does. - (HAVE_FCNTL_H, HAVE_STDLIB_H, HAVE_SYS_TIME_H): New symbols. - (HAVE_UNISTD_H, STDC_HEADERS, TIME_WITH_SYS_TIME): Likewise. - (__attribute__, PROTO, VA_START, PRINTF_ALIST, PRINTF_DCL): New macros. - (PRINTF_PROTO{,_1,_2,_3}, DO_PROTO): Likewise. - (bcopy, bzero, bcmp): If #defined by configuration file, use that. - If STDC_HEADERS is defined, use standard C functions. - If BSTRING is defined, or USG and VMS are not defined, use - the C library. Otherwise, use my_bcopy, my_bzero, my_bcmp. - (localtime): Remove no-longer-necessary explicit declaration. - (getenv, index, rindex): Don't declare explicitly if the - appropriate system header should declare it. - (fdopen): Remove no-longer-used declaration. - (vprintf): Define a subsitute macro if !defined(HAVE_VPRINTF). - (main): Replace `fdopen (dup (fileno (stdout)), "w"))' - with `stdout'. - (get_lintcmd, rescan, create_definition): Use bcmp instead of strncmp - when both operands are known to be free of null bytes. - (check_macro_name, compare_defs, collect_expansion): Likewise. - (do_assert, compare_token_lists, assertion_lookup, do_line): Likewise. - (skip_if_group, lookup): Likewise. - (rescan): Remove unused label `startagain'. - Abort instead of printing nonsense if the stack is corrupted - when there was an unterminated successful conditional. - (pcfinclude): Include explicit double-cast through GENERICPTR - to identify particularly egregious type puns. - (create_definition, do_define, check_macro_name): Use %.*s - printf format to avoid painful copying-and-casting. - (do_once): Return void, not (unused) int. - (do_ident, do_pragma, do_sccs): Accept extra arguments so that - all directive-handler's types match. - (do_sccs): Define only if SCCS_DIRECTIVE is defined. - (skip_if_group, dump_single_macro): Add `default: break;' to - keep -Wswitch happy. - (error, warning, error_with_line, vwarning_with_line, pedwarn): Use - stdarg/vararg/vfprintf instead of passing bogus char * args around. - (pedwarn_with_line, pedwarn_with_file_and_line, fatal): Likewise. - (verror, vwarning, verror_with_line, vwarning_with_line): New fcns. - (dump_single_macro): Abort if ap points to garbage. - (make_definition, make_undef, make_assertion): Parameter now char *. - (xmalloc, xrealloc, xcalloc, savestring, index0): Make sizes size_t - instead of unsigned; make pointer parameters GENERICPTR, not char *. - (xcalloc): Use bzero to clear memory instead of using own loop. - -Fri Mar 31 08:33:07 1995 Ken Raeburn (raeburn@wombat.gnu.ai.mit.edu) - - * longlong.h (umul_ppmm mc68000): Use %# instead of #. - -Fri Mar 31 06:37:54 1995 Michael Meissner (meissner@cygnus.com) - - * stor-layout.c (layout_decl): Implment -fpack-struct. - (layout_record): Ditto. - - * flags.h (flag_pack_struct): New flag variable. - - * toplev.c (flag_pack_struct): New flag variable. - (f_options): Add -fpack-struct support. - - * Makefile.in (stor-layout.o): Add flags.h dependency. - -Fri Mar 31 08:40:16 1995 Douglas Rupp (drupp@cs.washington.edu) - - * configure (i[345]86-*-winnt3*): Add tmake_file. - * i386/x-winnt (winnt.o): Deleted. - * i386/t-winnt: New file. - -Fri Mar 31 07:26:37 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * m68k/netbsd.h, m68k/hp3bsd44.h: Remove #include of machine/ansi.h. - - * configure (a29k-*-bsd): Set tmake_file to t-libc-ok. - - * stmt.c (expand_asm_operands): Properly handle output that can't - be directly written into. - - * c-parse.in (structsp): Correct error in last change. - * c-common.c (init_attributes): A_FORMAT is only for decls. - -Thu Mar 30 18:27:34 1995 Jason Merrill - - * libgcc2.c: Remove explicit 0-initializations of static variables. - -Thu Mar 30 18:22:39 1995 Fergus Henderson - - * c-typeck.c (internal_build_compound_expr): Warn if LHS of comma - expression has no side effects, or computes value which is not used. - * stmt.c (make warn_if_unused_value): No longer static. - * tree.h (warn_if_unused_value): Add declaration. - -Thu Mar 30 18:15:11 1995 Jim Wilson - - * combine.c (get_last_value): Revert back to use prev_nonnote_insn - instead of prev_real_insn. Modify test that ignores USE insns. - - * rs6000.h (SELECT_SECTION): Apply constant DECL_INITIAL test - only to DECLs. - - * explow.c (allocate_dynamic_stack_space): Test STACK_BOUNDARY against - BIGGEST_ALIGNMENT at run time instead of at compile time. - Give MUST_ALIGN macro a value, and test this value in if statements. - -Thu Mar 30 08:59:56 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * c-parse.in: Now have 27 shift/reduce conflicts. - (attribute_list): Just make chain of all attributes. - (attrib): Consistently put name as PURPOSE, args, if any, as VALUE. - (structsp): Allow attributes on any struct or union. - * c-common.c (enum attrs): New enum class. - (attrtab, attrtab_idx): New variables. - (add_attribute, init_attributes): New functions. - (decl_attributes): Major rewrite. - * tree.c (valid_machine_attribute): Now receive name and args. - -Thu Mar 30 07:20:14 1995 Paul Eggert - - * protoize.c: Use the phrase `preprocessing directive' consistently. - * cccp.c (handle_directive, do_line, skip_if_group): Likewise. - (output_line_directive): Renamed from output_line_command. - (no_line_directives): Renamed from no_line_commands. - - * cccp.c (rescan): Don't recognize preprocessing directives - within macro args. Warn if one is found. - -Thu Mar 30 06:20:36 1995 H.J. Lu (hjl@nynexst.com) - - * configure (i[345]86-*-linux*): Set xmake_file=x-linux, - tm_file=i386/linux.h, and don't set extra_parts. - (i[345]86-*-linux*aout*): New configuration. - (i[345]86-*-linuxelf): Deleted. - * config/linux{,-aout}.h, config/x-linux, config/xm-linux.h: New files. - * config/i386/linux-aout.h: New file. - * config/i386/linux.h: Extensive modifications to use ELF format - as default. - (LIB_SPEC): Don't use libc_p.a for -p. don't use libg.a - unless for -ggdb. - (LINUX_DEFAULT_ELF): Defined. - * config/i386/linuxelf.h,config/i386/x-linux: Files deleted. - * config/i386/xm-linux.h: Just include xm-i386.h and xm-linux.h. - -Wed Mar 29 19:09:36 1995 Mike Stump - - * libgcc2.c (__throw_type_match): Update to use new calling convention. - -Wed Mar 29 14:53:23 1995 Jim Wilson - - * gcc.c (process_command): Delete code modifying gcc_exec_prefix. - (main): Put it here after last use of gcc_exec_prefix. For cross - compiler, set startfile_prefixes if gcc_exec_prefix is set and - standard_startfile_prefix is a relative path. - - * combine.c (make_compound_operation, AND case): Undo July 7, 1994 - change. - - * mips/mips.md (call_internal1, call_value_internal1): Move %* from - start of assembler output to immediately before the jal. - - * mips/mips.c (function_prologue): Put SDB_DEBUGGING_INFO ifdef around - code for SDB_DEBUG support. - (mips_select_rtx_section, mips_select_section): Change rdata_section - to READONLY_DATA_SECTION and sdata_section to SMALL_DATA_SECTION. - * mips/mips.h (SMALL_DATA_SECTION): Define. - - * reorg.c (mark_referenced_resources): Make setjmp use all registers. - - * flow.c (mark_used_regs, case SUBREG): Only fall through to REG case - if operand is a REG. - - * i960/i960.h (TARGET_SWITCHES): Make -mold-align set - TARGET_FLAG_STRICT_ALIGN. - (STRICT_ALIGNMENT): Test TARGET_STRICT_ALIGN. - - * sh/sh.c (andcosts): Modify costs to match the hardware, and add - explanatory comments. - - * sparc/sol2.h (CPP_PREDEFINES): Add -D__SVR4. - -Wed Mar 29 14:30:30 1995 Michael Meissner - - * rs6000/rs6000.md (movsf): When moving to/from integer registers, - don't move floating point to memory if it is being simulated with - -msoft-float. - -Wed Mar 29 06:47:36 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * c-parse.in (initdcl): Only call decl_attributes once. - * c-common.c (decl_attributes): Clean up test for __mode__. - -Tue Mar 28 08:34:37 1995 John Hassey (hassey@dg-rtp.dg.com) - - * i386.md (adddi3): Don't treat two non-equal MEMs as non-aliasing. - -Tue Mar 28 08:20:49 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * a29k.h (CONSTANT_ADDRESS_P): Provide consistent definition. - -Tue Mar 28 07:26:41 1995 Paul Eggert - - * cccp.c (do_xifdef, do_endif): Remove unnecessary pointer comparisons. - -Mon Mar 27 20:45:15 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * calls.c (expand_call, store_one_arg): Don't set KEEP in calls - to assign_stack_temp. - * function.c (preserve_temp_slots): Clear ADDR_TAKEN on item - that we are preserving. - -Mon Mar 27 14:39:35 1995 Ian Lance Taylor - - * mips/mips.h (FIRST_PSEUDO_REGISTER): Increment. - (FIXED_REGISTERS, CALL_USED_REGISTERS): Add new register. - (MD_REG_LAST): Increment. - (ST_REG_FIRST, ST_REG_LAST): Increment. - (HILO_REGNUM): Define. - (enum reg_class): Add HILO_REG. - (REG_CLASS_NAMES): Add "HILO_REG". - (REG_CLASS_CONTENTS): Add HILO_REG initializer, and adjust ST_REGS - and ALL_REGS initializers. - (SECONDARY_RELOAD_CLASS): Remove. - (SECONDARY_INPUT_RELOAD_CLASS): Define. - (SECONDARY_OUTPUT_RELOAD_CLASS): Define. - (REGISTER_MOVE_COST): Treat HILO_REG as MD_REGS. - (REGISTER_NAMES): Add initialization line. - (DEBUG_REGISTER_NAMES): Add "accum". - * mips/mips.md: For each instruction which sets HI or LO, clobber - HILO_REGNUM with (clobber (match_scratch:MODE N "=a")). Change - each explicit reference to register 66 to register 67. - (mulsidi3): Change to define_expand. - (mulsidi3_internal): New name of old mulsidi3. - (mulsidi3_64bit): New insn. - (umulsidi3): Change to define_expand. - (umulsidi3_internal): New name of old umulsidi3. - (umulsidi3_64bit): New insn. - (madddi_64bit, umaddi_64bit): New insns. - (movdi_internal2): Add case for setting HILO_REG to zero. - (reload_indi, reload_outdi): New define_expands. - (movsi_internal1, movsi_internal2): Add cases for setting MD_REGS - to zero, and for setting a general reg to HILO_REG. - (reload_outsi): New define_expand. - * mips/mips.c (mips_reg_names): Add "accum". - (mips_sw_reg_names): Likewise. - (mips_regno_to_class): Map HILO_REGNUM to HILO_REG. - (mips_move_1word): Handle moving HILO_REGNUM to a general - register. Make sure that the normal MD_REG cases aren't used for - HILO_REGNUM. Handle moving zero to a MD_REG. - (mips_move_2words): Make sure that the normal MD_REG cases aren't - used for HILO_REGNUM. Handle moving zero to a MD_REG. - (override_options): Set mips_char_to_class for 'a' and 'b'. - (mips_secondary_reload_class): Add in_p argument. Handle - HILO_REGNUM. - -Mon Mar 27 07:16:05 1995 Warner Losh - - * gcc.c: Removed __NetBSD__ from conditional. - Declare strerror if HAVE_STRERROR is defined; otherwise - declare sys_errlist and sys_nerr. - (my_strerror): New function. - -Fri Mar 24 18:08:14 1995 Jason Merrill - - * i386/linux.h (LIB_SPEC): Don't try to link with libraries we - know only exist in archive form unless -static. - -Fri Mar 24 16:12:16 1995 Doug Evans - - * Makefile.in (multilib.h): Depend on Makefile, not config.status. - -Fri Mar 24 15:01:17 1995 Michael Meissner - - * rs6000/rs6000.h (TARGET_MULTIPLE_SET): New target_flags bit that - indicates -mmultiple or -mno-multiple was explicitly passed by the - user, and not set as part of the cpu defaults. - (TARGET_SWITCHES): Set TARGET_MULTIPLE_SET bit for both -mmultiple - and -mno-multiple. - - * rs6000/rs6000.c (rs6000_override_options): If -mmultiple or - -mno-multiple was explicitly used, don't override the setting with - the processor default. - -Wed Mar 22 21:42:13 1995 Doug Evans - - * i960/i960.c (i960_function_arg_advance): Ensure all regs marked - as used if stack is also used (for va_start). - (i960_setup_incoming_varargs): Rewrite to be similar to Intel's - version, but don't allocate reg block unless necessary. - * ginclude/va-i960.h (varargs va_start): Save g14 explicitly. - Account for arguments preceding va_alist. - -Wed Mar 22 13:24:55 1995 Torbjorn Granlund - - * pa.c (singlemove_string): Handle SFmode constants again. Simplify. - (zdepi_cint_p): Make some variables HOST_WIDE_INT. - (lhs_lshift_cint_operand): Likewise. - (output_and): Likewise. - (output_ior): Likewise. - -Wed Mar 22 12:40:09 1995 Jim Wilson - - * sh.md (udivsi3): Don't clobber register 6. - (udivsi3, divsi3, mulsi3_call): Use a pseudo-reg with regclass 'z' - for output rather than hard register 0. - (block_move_real): Don't clobber registers 4 and 5. - - * mips.c (mips_select_section): Apply constant DEC_INITIAL tests - only to VAR_DECLs. - -Wed Mar 22 03:53:17 1995 Richard Stallman - - * config.sub (rm400, rm600): New machine names. - (sinix5.*, sinix): New os aliases. - (mips-siemens): Default os to sysv4. - -Mon Mar 20 21:56:47 1995 Per Bothner - - Merged Paul Eggert's patch to cccp.c of Wed Mar 8 18:21:51 1995: - * cpplib.c (do_include): Fix type typo: pcfbuflimit is char *, not int. - - Merged Doug Evans' patch to cccp.c of Mon Feb 27 17:06:47 1995: - * cpplib.c (do_include): Check for redundant file before opening in - relative path case. Don't call fstat unnecessarily. - - Merged J.T. Conklin's patch to cccp.c of Wed Feb 22 20:29:31 1995: - * cpperror.c: Removed __NetBSD__ from conditional. - - Merged Kenner's patch to cccp.c & cexp.y of Tue Sep 20 17:49:47 1994: - * cppexp.c (struct operation): Make value by HOST_WIDE_INT. - (cpp_parse_expr): Change return type to HOST_WIDE_INT. - * cpplib (eval_if_expr): Likewise. - (do_if, do_elif): Update appropriately. - * cpplib.h (cpp_parse_expr): Removed, to avoid defining HOST_WIDE_INT. - - Merged Paul Eggert's patch to cccp.c of Mon Aug 8 19:42:09 1994: - * cpplib.c (create_definition): Warn about `#define a@', since a - diagnostic is now required (see ISO TC1's addition to subclause 6.8). - Also warn about `#define is-empty(x) (!x)'. - -Tue Mar 21 00:10:50 1995 Jeffrey A. Law - - * x-pa (CC): Add "-Dbsd4_4". - -Mon Mar 20 18:40:31 1995 Per Bothner - - * toplev.c (print_error_function): New function hook. - (default_print_error_function): New function. Default value - of print_error_function. Code moved here from report_error_function. - (report_error_function): Use print_error_function hook. - -Mon Mar 20 20:27:43 1995 Doug Evans - - * cccp.c (do_xifdef): Handle c++ comments. - (do_endif): Likewise. - -Mon Mar 20 15:31:45 1995 Jason Merrill - - * configure (i386 configurations): Prepend i386/ to t-crt*. - -Mon Mar 20 07:58:04 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * stmt.c (fixup_gotos): Add missing call from last change. - - * objc/misc.c: Put Alpha-specific decls before #include of runtime.h. - - * alpha.h (EXTRA_SECTIONS): Write zeros first time in .rdata. - -Sat Mar 18 16:37:24 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * flow.c (mark_used_regs, case SUBREG): Set reg_changes_size even - for integer modes. - (mark_used_regs): Set reg_changes_size for RHS, if necessary. - * combine.c (gen_lowpart_for_combine): Set reg_changes_size, if needed. - * reload.c (push_reload): Reload a SUBREG if paradoxical and - class is CLASS_CANNOT_CHANGE_SIZE. - * reload1.c (gen_reload): Handle paradoxical SUBREGs. - * alpha.h (SECONDARY_{INPUT,OUTPUT}_RELOAD_CLASS): Need GENERAL_REGS - for paradoxical SUBREG and FLOAT_REGS. - (SECONDARY_NEEDED_MODE): Use actual mode for 4 bytes or wider. - * alpha.md (movsi): Allow FP regs and add case for store of FP reg. - Remove cvtlq from MEM to FP reg case. - - * rtl.h (emit_insns_after): Add declaration. - * stmt.c (fixup_gotos): Do a cleanup for a block when it is exited - even if label if not defined yet. - - * function.c (pop_function_context): Fix error in last change; - reference old value of current_function_decl before we modify it. - -Fri Mar 17 21:57:44 1995 Jason Merrill - - * toplev.c (rest_of_compilation): Handle -Wreturn-type properly - for inlines we aren't compiling yet. - -Fri Mar 17 21:26:48 1995 Mike Stump - - * libgcc2.c (__register_exceptions): Handle empty tables. - -Fri Mar 17 11:48:31 1995 Douglas Rupp (drupp@cs.washington.edu) - - * i386/winnt.c (winnt_function_prologue): Deleted. - (gen_stdcall_suffix): New function. - -Thu Mar 16 17:36:52 1995 Jason Merrill - - * svr4.h (LINK_SPEC): If the user did not specify -h name, use the - output file name, if any. - * sparc/sol2.h (LINK_SPEC): Ditto. Also, if the user did not - specify -R path, add an -R for each -L. - - Move SunOS 4-specific assembler switches into the appropriate place. - * m68k/sun[23].h (ASM_SPEC): Add %{R} %{j} %{J} %{h} %{d2} - %{keep-local-as-symbols:-L}. - * i386/sun.h (ASM_SPEC): Add %{R} %{keep-local-as-symbols:-L}. - * sparc/sparc.h (ASM_SPEC): Ditto. - * gcc.c (default_compilers): Remove %{R} %{j} %{J} %{h} %{d2} - %{keep-local-as-symbols:-L} from assembler rules. - -Thu Mar 16 16:58:09 1995 Michael Meissner - - * rs6000/eabi-ctors.c: New file, handle C++ static constructors - and destructors without requiring anything else from a libc. - - * rs6000/t-eabi (LIB2FUNCS_EXTRA): Build eabi-ctors.c. - - * rs6000/eabi.asm: Do not load up register 2 if there is no .got - section. Jump to the __do_global_ctors function at the end of - processing to call C++ static constructors, and it will return to - __eabi's caller. Use normal volatile registers, instead of saving - and restoring registers 30 and 31. - - * rs6000/eabi.h (STARTFILE_SPEC): Define as null. - (LIB_SPEC): Ditto. - (ENDFILE_SPEC): Ditto. - (LIBGCC_SPEC): Always look for libgcc.a. - -Thu Mar 16 17:05:14 1995 Richard Kenner - - * stmt.c (warn_if_unused_value, case SAVE_EXPR): New case. - (warn_if_unused_value, case NOP_EXPR): OK if CALL_EXPR inside. - - * c-common.c (decl_attributes): Allow alignment for TYPE_DECLs. - - * Makefile.in (xsys-protos.h): Fix typo in -U operand. - -Thu Mar 16 13:49:10 1995 Per Bothner - - * cpplib.c, cpplib.h: New files - a C PreProcessor library. - * cpphash.c, cpphash.h, cppalloc.c, cpperror.c, cppexp.c: - New files - utility features used by cpplib. - * cppmain.c: New file - cpp replacement main program for cpplib. - * Makefile.in: New rules to build cppmain. - -Thu Mar 16 16:11:05 1995 Douglas Rupp (drupp@cs.washington.edu) - - * i386/winnt.h (FUNCTION_PROLOGUE, HAVE_probe, gen_probe): Deleted. - (ENCODE_SECTION_INFO, VALID_MACHINE_DECL_ATTRIBUTE): New macro. - -Thu Mar 16 15:58:24 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * combine.c (apply_distributive_law, case SUBREG): Fix typo when - checking for paradoxical SUBREG. - -Wed Mar 15 18:45:08 1995 Doug Evans - - * libgcc1-test.c: Renamed from cross-test.c. - * Makefile.in (LIBGCC1_TEST): Renamed from CROSS_TEST. - (all.cross): Delete $(ENQUIRE) dependency. - (libgcc1-test): Renamed from cross-test. - Delete unnecessary gcc-cross and $(LIBGCC) dependencies. - Link with -nostartfiles -nostdlib - `$(GCC_FOR_TARGET) --print-libgcc-file-name`. - (libgcc1-test.o): Renamed from cross-test.o. - Change gcc-cross dependency to xgcc since the latter is used. - -Wed Mar 15 13:49:21 1995 Jason Merrill - - * tree.c (save_tree_status): Now takes a tree 'context' instead of - a boolean 'toplevel' as an argument. If 'context' is not - current_function_decl, create a new obstack for the new function. - Also save inline_obstacks. - (restore_tree_status): No longer takes a second argument. Also - restore inline_obstacks. - (temporary_allocation): Clear inline_obstacks. - (permanent_allocation): Free up the obstacks in inline_obstacks. - - * function.h (struct function): New fields contains_functions and - inline_obstacks. - - * function.c (push_function_context_to): Now takes a tree - 'context' instead of a boolean 'toplevel' as an argument. - Also save current_function_contains_functions. - (push_function_context): Pass current_function_decl to it. - (pop_function_context_from): Takes 'context' instead of 'toplevel'. - Set current_function_contains_functions properly. - (pop_function_context): Pass current_function_decl to it. - -Wed Mar 15 14:53:09 1995 Michael Meissner - - * rs6000/rs6000.md (abssi2): Turn into a define_expand. If - TARGET_POWER, do old code that uses the abs instruction. If not, - do abs in three instructions, using a temporary register, which - enables generating more reasonable code for sne. Add a recognizer - for negative of the absolute value. Add define_splits for the - PowerPC. - (sne insn): Add a recognizer for sne on the PowerPc to use two - instructions, compared to the four generated using the absolute - value insn. - -Tue Mar 14 18:38:40 1995 J.T. Conklin - - * m68k.md ({add,sub,mul,div}[sdx]f3): Add new patterns for recognizing - SImode, HImode, and QImode operands. - -Mon Mar 13 18:59:36 EST 1995 David Edelsohn - - * rs6000.h (CPP_SPEC): Add PPC403. - (processor_type): Add PPC403. - (RTX_COSTS): Add PPC403. - * powerpc.h (CPP_SPEC): Add PPC403. - * sysv4.h (CPP_SPEC): Add PPC403. - * rs6000.c (processor_target_table): Add PPC403. - * rs6000.md (define_attr cpu and function units): Add PPC403. - -Mon Mar 13 14:40:23 1995 Michael Meissner - - * rs6000/rs6000.md (call, call_value insns): Do not put a nop - after a bl instruction on System V.4 and eABI. - - * rs6000/sysv.4 (SUBTARGET_SWITCHES): Add support for - -mno-traceback to suppress the V.4 traceback word. - (ASM_DECLARE_FUNCTION_NAME): Don't put out a traceback work if - -mno-traceback. - -Mon Mar 13 13:36:37 1995 Jason Merrill - - * t-svr4, i386/t-{crtpic,sol2}, m88k/t-svr4, sparc/t-sol2: - Use -fPIC, rather than -fpic, for building crtstuff. - -Sat Mar 11 17:27:08 1995 Jason Merrill - - * configure: Use aix3newas.h for AIX 3.2.4 and 5. - * rs6000/aix41.h: Undefine ASM_OUTPUT_EXTERNAL{,_LIBCALL}. - * rs6000/aix3newas.h: New file. Define ASM_SPEC to -u, and - undefine ASM_OUTPUT_EXTERNAL{,_LIBCALL}. - -Sat Mar 11 06:42:50 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * dbxout.c (dbxout_symbol): Properly handle decl whose DECL_NAME - points to a TYPE_DECL with a zero TYPE_NAME. - -Fri Mar 10 18:18:33 1995 Torbjorn Granlund - - * pa.h (PROMOTE_MODE): Define. - -Fri Mar 10 14:37:58 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * sdbout.c (sdbout_record_type_name): If TYPE_NAME is - a TYPE_DECL, get name from DECL_NAME. - -Fri Mar 10 14:09:26 1995 Doug Evans - - * arm/riscix.h (SUBTARGET_SWITCHES): Renamed from - ARM_EXTRA_TARGET_SWITCHES. - * arm/riscix1-1.h (SUBTARGET_SWITCHES): Likewise. - * arm.h (SUBTARGET_SWITCHES): Likewise. - (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define. - (TARGET_SWITCHES): Add -msoft-float, -mhard-float. - (BYTES_BIG_ENDIAN): Delete #ifndef/#endif. - (CONDITIONAL_REGISTER_USAGE): If -msoft-float, disable fp regs. - (FUNCTION_VALUE): R16 is return reg only if !-msoft-float. - (LIBCALL_VALUE): Likewise. - * arm.md (all fp patterns): Conditionalize on TARGET_HARD_FLOAT. - (*movsf_soft_insn, *movdf_soft_insn): New patterns. - -Fri Mar 10 13:53:46 1995 Jim Wilson - - * reorg.c (steal_delay_list_from_target): Exit at the top if the - branch in SEQ is not a single set. - - * sh.md (movdi define_split, movdf define_split): Correct indentation - and formatting. Make the condition fail if an operand is a MEM - with an auto-inc address. - - * varasm.c (copy_constant): Copy operand of ADDR_EXPR if it is a - constant. - - * mips/abi64.h (SETUP_INCOMING_VARARGS): Correct arguments to - move_block_from_reg call. - - * expr.c (expand_assignment): When offset is zero, make new MEM - before setting MEM_VOLATILE_P. - - * reload.c (find_reloads, case 'o'): Accept a fully reloaded - auto-increment address. - - * combine.c (max_uid_cuid): New static variable. - (INSN_CUID): Call abort if INSN is out of range. - (combine_instructions): Set max_uid_cuid. Set uid_cuid directly - instead of through INSN_CUID. - (get_last_value): Use prev_real_insn instead of prev_nonnote_insn. - Ignore USE insns generated by combine. - -Fri Mar 10 13:47:08 1995 Rod Barman - - * m68k/fpgnulib.c (__fixdfsi): Catch values < 0.5 in magnitude. - -Fri Mar 10 12:02:33 1995 Ian Lance Taylor - - * fixincludes: Fix `typedef struct term;' on hppa1.1-hp-hpux9. - -Fri Mar 10 05:50:11 1995 Oliver Kellogg (Oliver.Kellogg@RST13.DASA.DBMAIL.d400.de) - - * 1750a.c (sectname): Reverse Init and Normal. - (print_operand_address, case PLUS): Add case for LABEL_REF. - (print_operand_address, case LABEL_REF): Split fom SYMBOL_REF. - (print_operand_address, case CODE_LABEL): New case. - (ASM_FILE_END): Delete. - * 1750a.h (FUNCTION_EPILOGUE): Restore stack before freeing local vars. - (DEFAULT_SIGNED_CHAR): Now 1. - (DATA_SECTION_ASM_OP): Use pseudo-op for read-only data (later copied). - (JUMP_TABLES_IN_TEXT_SECTION): Define. - (ASM_OUTPUT_ASCII): Split into multiple lines if long. - (ASM_OUTPUT_{CHAR,SHORT,INT,LONG_INT}): Split up. - (ASM_OUTPUT_COMMON): Call check_section. - -Thu Mar 9 12:46:53 1995 Michael Meissner - - * rs6000.md (movsf): Do not call truncdfsf2 for non PowerPC - when expanding a store to memory and -msoft-float was used. - -Thu Mar 9 08:51:35 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * c-decl.c (start_function): Handle new parameter ATTRIBUTES. - * c-tree.h (start_function): Add new parameter. - * c-lang.c (finish_file): Pass new parm to start_function. - * objc-act.c (build_module_descriptor, really_start_method): Likewise. - * c-parse.in (fndef, nested_function): Pass prefix_attributes - to start_function. - (setspecs): Save prefix_attributes in declspec_stack. - (decl rules): Restore prefix_attributes along with current_declspecs. - (setattrs): Concatenate prefix_attributes to previous value. - * c-common.c (decl_attributes): Handle prefix and suffix attributes - the same way. - - * print-tree.c (print_node): Fix typo in printing large INTEGER_CST. - - * varasm.c (assemble_variable): Consistently use DECL_SIZE for - everything. - - * c-typeck.c (convert_for_assignment): Fix typo in testing for - pointer to function type. - - * varasm.c (record_constant_1): Handle NON_LVALUE_EXPR. - Rewrite to use switch instead of if/then/elseif/else. - -Wed Mar 8 18:21:51 1995 Paul Eggert - - * cccp.c (do_include): Fix type typo: pcfbuflimit is char *, not int. - -Wed Mar 8 17:30:29 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * fold-const.c (force_fit_type): Always propagate OVERFLOW. - - * rtl.def (INLINE_HEADER): Add new "e" field. - * rtl.h (FORCED_LABELS): New field; other fields adjusted. - (gen_inline_header_rtx): New parm FORCED_LABELS. - * emit-rtl.c (gen_inline_header): Add new parm FORCED_LABELS. - * integrate.c (initialize_for_inline, output_inline_function): - Handle FORCED_LABELS. - -Wed Mar 8 13:47:20 1995 Jason Merrill (jason@cygnus.com) - - * alpha.h (WORD_SWITCH_TAKES_ARG): Add -rpath. - (LINK_SPEC): Pass through -taso and -rpath. - * alpha/osf12.h (LINK_SPEC): Ditto. - -Wed Mar 8 09:59:56 1995 Michael Meissner - - * rs6000/eabi.asm: Rewrite so that the initialized pointers go - into the .got2 section, which allows eabi.asm to be assembled with - the -mrelocatable option. Move the data picked up from the bl - instruction to before the traceback tag. - - * rs6000/sysv4.h (CPP_SPEC): Define _RELOCATABLE if -mrelocatable - switch is used. - - * libgcc2.c (__new_handler): Don't initialize the pointer variable - with the address of __default_new_handler, which may not work in - some shared library mechanisms. - (__builtin_new): If __new_handler is NULL, call the function - __default_new_handler. - -Tue Mar 7 17:34:59 1995 Ian Lance Taylor - - * i960.h (PROCESS_PRAGMA): Define. - (ROUND_TYPE_ALIGN): Pass maximum of COMPUTED and SPECIFIED to - i960_round_align. - (ROUND_TYPE_SIZE): Delete. - * i960.c (process_pragma): Uncomment, and rewrite for gcc 2. - (i960_round_size): Delete. - (i960_round_align): Don't adjust suggested alignment downward. - Restrict alignment to value set by #pragma align. - -Tue Mar 7 12:14:46 1995 Doug Evans - - * configure (sparc64-*-elf): Add crtbegin.o, crtend.o to extra_parts. - * sparc/sp64-elf.h (TARGET_VERSION): Define. - (CPP_PREDEFINES): Delete sun, sparc, unix. Delete OS assertions. - (ASM_SPEC): Define. - (LINK_SPEC): Delete solaris stuff, this is an embedded target. - (STARTFILE_SPEC, ENDFILE_SPEC): Define. - -Mon Mar 6 17:54:01 1995 Doug Evans - - * Makefile.in (install-common): Fix typo in installation of cpp. - Likewise with gcc-cross. - -Mon Mar 6 02:29:05 1995 Jeffrey A. Law - - * pa.md (movsicc): New expander. - -Fri Mar 3 13:34:20 1995 Michael Meissner (meissner@cygnus.com) - - * rs6000/sysv4.h (ASM_SPEC): If -mrelocatable was passed to - compiler, pass it on to the assembler. - -Fri Mar 3 12:11:28 1995 Ian Lance Taylor - - * fixincludes: Add fixes for VxWorks header files. - * ginclude/stddef.h: If VxWorks typedef macros are defined, invoke - them as appropriate. - -Fri Mar 3 05:48:54 1995 Paul Eggert - - * cccp.c (dump_single_macro): Fix typo: % wasn't properly - doubled in printf formats. - -Thu Mar 2 19:44:02 1995 Jason Merrill - - * expr.c (expand_expr, CLEANUP_POINT_EXPR): Force the operand out - of memory before running cleanups. - -Thu Mar 2 19:15:24 1995 Paul Eggert - - * cccp.c (rescan): Prevent accidental token-pasting to - get !=, *=, /=, ==, or ^=. - -Thu Mar 2 15:37:13 1995 Jason Merrill - - * c-typeck.c (build_binary_op): Avoid spurious warning - comparing enumerator to unsigned variable. - -Thu Mar 2 18:18:38 1995 J.T. Conklin - - * m68k.md (sqrtsf2,sqrtdf2): Use fp precision specifiers. - -Thu Mar 2 18:09:01 1995 Stephen L Moshier (moshier@world.std.com) - - * c-lex.c (yylex, case !NOT_FLOAT): Remove previous change. - -Thu Mar 2 15:26:50 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - - * Makefile.in (bootstrap*): Pass new STAGE_PREFIX to recursive makes. - -Wed Mar 1 14:52:16 1995 Ian Lance Taylor - - * i960/i960-coff.h (ASM_FILE_START): Define. - (CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP): Define. - (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Define. - (CTORS_SECTION_FUNCTION, DTORS_SECTION_FUNCTION): Define. - (INT_ASM_OP): Define. - (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR): Define. - * i960/vx960-coff.h (CPP_PREDEFINES): Define. - (CPP_SPEC): Define. - (CC1_SPEC): Default to -mca. - -Wed Mar 1 11:10:54 1995 Michael Meissner (meissner@cygnus.com) - - * rs6000/rs6000.c (output_prologue): Do not emit the word that - gives the PC relative location to the local GOT table for the - -mrelocatable option here. - * rs6000/sysv4.h (ASM_DECLARE_FUNCTION_NAME): Emit it here. - - * t-eabi (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Build -msoft-float - and -mrelocatable versions of the library. - - * rs6000/powerpc.h (CPP_PREDEFINES): Define the cpu and machine as - powerpc, not rs6000. - - * libgcc2.c (_unwind_function): Clone for powerpc, using the - PowerPC mnemonics. - - * rs6000/rs6000.md (uminsi3, umaxsi3): Silence warnings that - -2147483648 is too large to fit in a signed integer on 32-bit - hosts. - -Wed Mar 1 06:48:31 1995 Richard Kenner - - * fold-const.c (decode_field_reference): Don't check TREE_CODE - of EXP; let get_inner_reference decide if have reference. - Allow no bit reference if have AND_MASK. - (all_ones_mask_p): Use tree_int_cst_equal, not operand_equal_p. - (unextend): New function. - (fold_truthop): For constant cases, use new function, rework - conversion, and warn if comparison can never be true. - - * expr.c (store_expr): Do conversion in two steps for promoted lhs. - -See ChangeLog.9 for earlier changes. diff --git a/gcc/ChangeLog.2 b/gcc/ChangeLog.2 deleted file mode 100644 index a5e092c26a7d..000000000000 --- a/gcc/ChangeLog.2 +++ /dev/null @@ -1,7229 +0,0 @@ -Thu Jan 31 00:33:33 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * loop.c (scan_loop): Check each libcall for regs it uses - but does not mention in the equivalent value. - To move the libcall, we must have at most one such reg - and it must be moved as well. - (libcall_other_reg): New subroutine. - * rtlanal.c (record_excess_regs): New function. - - * tree.c (gcc_obstack_init): New function. - (init_obstacks, save_tree_context): Use that. - (OBSTACK_CHUNK_SIZE): New parameter. - * xm-next.h: New file. - * configure (m68k/next): Use that file. - - * flags.h (flag_no_common): Declare new flag to treat external defs - as ANSI specifies (i.e. not as common). - * toplev.c (flag_no_common, f_options): Support -fno-common. - * varasm.c (assemble_variable): Don't output a common if - flag_no_common is set. Treat as if initialized to 0. - - * gcc.c (default_compilers): Define __ASSEMBLER__ for .S file. - - * tm-aix386.h (ASM_OUTPUT_LOCAL): Ok to use bss, since no shared libs. - (LINK_SPEC): Pass through all -K and -T options. - * xm-aix386.h (TRUE, FALSE): Undef if already def, to avoid warning. - - * tm-m68k.h (TARGET_68040, TARGET_68040_ONLY): New machine flags. - (TARGET_SWITCHES): Alternatives to set them. - * tm-next.h (TARGET_DEFAULT): Changed to 0407 for 68040. - - * out-m68k.h (standard_68881_constant_p): Always return 0 - for TARGET_68040 since fmovecr is no longer implemented in hardware. - - * m68k.md (ftruncdf2, ftruncsf2): Don't emit fintrz for - TARGET_68040, since it is no longer implemented in hardware. - (muldf3): Don't use fscale on 68040, since not implemented in hardware. - - * toplev.c (optimize): Now stores specified optimization level. - (main): Keep the largest optimization level specified. - Handle any integer. - - * c-decl.c (pushdecl): Don't make an extern global for -traditional - if it uses any local types. - - * tm-sun386i.h (PCC_BITFFIELD_TYPE_MATTERS): Use 1 as value. - -Wed Jan 30 12:41:15 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * fixincludes (sys/systypes.h): Edit this to handle _SIZE_T, etc. - - * function.c (put_var_into_stack): Allocate var ref chain link - while in the proper function's obstack. - - * fold-const.c (const_binop): Don't crash for real/0 if have infinity. - - * flow.c (mark_set_1): Don't make log link for hard reg in asm insn. - -Wed Jan 30 07:45:33 1991 Tom Wood (wood at dg-rtp.dg.com) - - * sched.c (schedule_block): Indicate what insns constitute each - basic block. - -Tue Jan 29 12:35:42 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * Makefile.in (gnulib1.*, gnulib2.*): Declare them phony targets. - - * print-tree.c (print_node): Print message if TREE_PERMANENT is wrong. - * tree.c (object_permanent_p): New function. - - * print-tree.c (print_node): Remove DECL_LANG_FLAG_10. - -Tue Jan 29 10:07:48 1991 Tom Wood (wood at dg-rtp.dg.com) - - * m88k.md (minus/xor/and, neg/ne/compare/and): Delete these. This - should be done by combine. - (compare operator): Eliminate except when a SET_SRC. - * tm-m88k.h (OPTIMIZATION_OPTIONS): -fomit-frame-pointer is a - default optimization. - -Mon Jan 28 12:52:11 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * tree.h (DECL_VIRTUAL_P): Renamed from TREE_VIRTUAL. - (struct tree_common): Eliminate virtual_flag. - (struct tree_decl): Add virtual_flag. - - * Makefile.in (enquire.o): Pass -DNO_STDDEF. - - * m68k.md (tablejump): Now have a define_expand that does - different things depending on CASE_VECTOR_PC_RELATIVE, - and a separate define_insn for each case. - - * function.h (outer_function_chain): Declare the variable. - - * tree.c (debug_obstack): Fix typos. - * tree.h (struct tree_common): Fix typo. - - * Makefile.in (GNULIB1_TARGET, GNULIB2_TARGET): Variables deleted. - (gnulib): Depend on gnulib1.target and gnulib2.target explicitly. - - * dbxout.c (dbxout_type): Use DECL_VIRTUAL_P, not TREE_VIRTUAL. - - * cplus-tree.h (TREE_PRIVATE, TREE_PROTECTED): #if 0. - - * cexp.y (keywords): Cast names for parens to U_CHAR *. - - * gcc.c (process_command): Fix typo setting switches[n_switches].arg. - - * loop.c (loop_reg_used_before_p): Check insns before INSN, not after. - - * objc-actions.c (objc_finish): Renamed from lang_finish. - * objc-parse.y (program): Call objc_finish at the end. - - * Changes from Matthew Self (mself@next.com): - - * objc-parse.y: Since objc-parse.y was so out of date with - respect to c-parse.y, I started over with c-parse.y and - reintegrated the Objective-C modifications. Now that - Objective-C is working I hope that objc-parse.y will be kept - more up to date.... I did not re-integrate the lexer since I - don't have gperf working. I simply cut and pasted what - Stallman had in objc-parse.y. Someone with access to gperf - should re-generate this stuff. - - * objc-actions.c (comp_method_with_proto, - comp_proto_with_proto): Stallman's change to use the - functions end_temporary_allocation and - resume_temporary_allocation is incorrect, since it always - leaves allocation temporary, whether it was before or not. - - Perhaps the push and pop functions would do the trick.... - - * objc-actions.c (get_arg_type_list): Use new function - groktypename_in_parm_context. - - * objc-actions.c (_OBJC_SELECTOR_REFERENCES_decl, - _OBJC_SELECTOR_REFERENCES_id): Removed. - - * objc-actions.c (synth_module_prologue): Eliminated code to - forward declare the selector references array. - - * objc-actions.c (init_objc_symtab): Eliminated code to - initialize "refs" field in objc_symtab structure (which is - now vestigial). - - * objc-actions.c (build_selector_translation_table): Rewrote. - - * objc-actions.c (build_selector_reference): New routine. - - * objc-actions.c (build_message_expr, build_selector_expr): - Use new routine. - - * config/tm-next.h (GO_IF_INDEXABLE_BASE): Don't use pc - relative addressing for LABEL_REF's. Since branch tables are - in the const section, we treat LABEL_REF's like SYMBOL_REF's - here. Otherwise invalid addresses were being generated. - - * config/tm-next.h (CASE_VECTOR_PC_RELATIVE, CASE_VECTOR_MODE): - Use absolute branch tables rather than relative ones. - - * config/tm-next.h (ASM_OUTPUT_MAIN_SOURCE_FILE_END): Output - an N_SO symbol with no name to mark the end of the module. - This is needed to support scattered loading on the NeXT. - - * config/out-next.c (handle_pragma): Call to xrealloc had wrong args. - - * configure: Entry for NeXT must set out_file to out-next.c. - - * config/out-next.c: Typo: "flags" -> "flags.h" - - * config/tm-next.h (LIB_SPEC): Brought up-to-date. There - are probably more changes needed here. - - * c-decl.c (pushdecl_top_level): New function. This was - copied from an older version of g++. - - * c-decl.c (init_decl_processing): Make alloca first arg sizetype. - - * c-decl.c (groktypename_in_parm_context): New function. - -Mon Jan 28 07:07:01 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * loop.c (loop_reg_used_before_p): Don't use INSN_LUID since INSN - might have been made by loop.c for an outer loop. - - * loop.c (move_movables, strength_reduce): Replace register references - in REG_NOTES as well as PATTERN. - - * loop.c (strength_reduce): Call maybe_eliminate_biv twice, not - three times. - (maybe_eliminate_biv): Don't abort if elimination fails even though - we thought it wouldn't. This can happen if certain insn patterns - aren't valid. - (maybe_eliminate_biv_1): Ensure that we do not change the insn at - all if all the required changes can't be done. - -Sun Jan 27 21:26:29 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * Makefile.in: Rename config-dir back to config. - -Sat Jan 26 17:48:22 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * objc-parse.y (program): Call objc_finish. - * objc-actions.c (objc_finish): Renamed from lang_finish. - - * objc-actions.c, objc-parse.y: New version from NeXT. - -Sat Jan 26 17:37:48 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (expand_expr, case COND_EXPR): Disable special-case of - A ? B : C when B and C are simple. This is now done better by jump. - -Sat Jan 26 13:16:58 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * tree.h (TREE_PRIVATE, TREE_PROTECTED, TREE_VIRTUAL): New macros. - (struct tree_common): New flag fields. - * dbxout.c (dbxout_type): Get rid of conditional; can always use these. - - * cccp.c (lookup_import): Do return -2 if file found. - (main): Handle `.m' suffix like `.S'. - - * configure (m68k/next): Use out-next.c. - - * WORD_SWITCH_TAKES_ARG and SWITCH_TAKES_ARG now give # of args. - * gcc.c (struct switchstr): New field `args' replaces `part2'. - (process_command): Record all the args a switch has. - (give_switch): Pass all the strings in `args'. - - * tree.h (struct tree_common): Normally make `code' an enum tree_code. - - * m68k.md (tablejump): New pattern. - (casesi, etc.): Deleted. - - * tree.c (debug_obstack): New function. - - * toplev.c (compile_file): Call dbxout_finish near the end. - * dbxout.c (dbxout_finish): New function. - - * print-tree.c (print_node): Always print ERROR_MARK node briefly. - - * objc-actions.h (METHOD_ENCODING, CLASS_CATEGORY_LIST): New macros. - - * gcc.c (execute): Make fatal signal message clearer. - (default_compilers): For .m file, define __OBJC__, - and pass -lang-objc and -gen-decls to cc1. - - * dwarfout.c: Include output.h. - (current_function_decl, asm_out_file): Explicit extern decls deleted. - (abort, fatal): Explicit extern decls deleted. - (NO_RETURN): Definition deleted. - (named_labels): Don't declare it. - (output_symbol): Don't use it. - (MAXPATHLEN): Don't define this. Don't include sys/param.h. - (output_source_file_die): Avoid limit on file name size. - (output_symbols_for_stmt): Deleted. - (output_symbols_for_block): Adapt to using BLOCK, not LET_STMT. - - * configure: Renamed from `config'. - * config: Directory renamed back from config-dir. - -Sat Jan 26 1990 Ron Guilmette (rfg at ncd.com) - - * README.DWARF: updated to reflect changes to dwarfout.c, the - inclusion of dwarf.h (and its changes) and the fact that the - DWARF support is no longer directly tied to the DG versions of - GCC. - - * dwarfout.c: included a patch (provided by Ray Essick) to allow - dwarfout.c to properly get a value for MAXPATHLEN even on (old) - System V.3 systems. - - * dwarfout.c: added support for long long types (as suggested by - Ray Essick). - - * dwarfout.c: added support for the AT_comp_dir attribute. Also, - as part of this change, the name of the compilation directory is - no longer placed into in the .sources section. - - * dwarfout.c: added support for the AT_addr_ranges attribute. - - * dwarfout.c: added support for the AT_prototyped attribute. - - * dwarfout.c: added support for the AT_src_info attribute. Also, - as part of this change, there is no longer a "special" entry - at the start of the .srcinfo section for each compilation unit, - and the contents of the "special" final entry in the .srcinfo - section have changed (to { -1, -1 }). - - * dwarfout.c: modified to allow additional GNU DWARF extensions - to be generated whenever the corresponding extended attribute - codes are defined (presumably within a modified dwarf.h file). - - * dwarfout.c: use the section names .srcinfo and .sources rather - than .finfo and .files. The additional specificity is warranted - because the DWARF information may someday include information - about object files as well as source files. - - * dwarfout.c: fixed a bug where a type attribute was being generated - for functions and function types even when the return type was - void. "Standard" dwarf says that if the return type for a function - or function type is void then no type attribute should be generated - for the corresponding DIE. - -Sat Jan 26 04:22:08 1991 Michael Tiemann (tiemann at cygnus.com) - - * cplus-lex.c (interface_strcmp): Handle String.String.Map.cc and - friends. - - * cplus-typeck.c (build_unary_op): Merge change to generate better - code from simple cast expression. - -Fri Jan 25 10:06:28 1991 Michael Tiemann (tiemann at cygnus.com) - - * cplus-decl.c (pushtag): Don't call `pushdecl' if the type's name - is anonymous, lest we recurse ad infinitum. - -Thu Jan 24 23:56:55 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * optabs.c (expand_binop, expand_unop): Word at a time only for ints. - -Thu Jan 24 09:40:37 1991 Tom Wood (wood at dg-rtp.dg.com) - - * sdbout.c (sdbout_symbol): Apply changes in dbxout.c to deal with - SUBREG. Don't emit a symbolic definition for variables that can't - be represented. - -Thu Jan 24 21:18:15 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * config: Conditional for setting $os was backward. - Also mention name of make-var file if one exists. - - * out-i386.c: Delete a large piece of accidental insertion. - - * dwarfout.c: Don't include c-tree.h or cplus-tree.h. - (INT_TYPE_SIZE, etc.): Define them if not overridden. - (fundamental_type_code): Distinguish types by TYPE_PRECISION. - But also check for the built-in C type names. - -Thu Jan 24 15:23:17 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * gcc.c (default_compilers): Pass all args starting with "O" to - cc1 so that -O2 is passed along. - -Thu Jan 24 13:10:27 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * stmt.c (expand_expr_stmt): Don't warn for any casts to void. - - * config: Fix typos setting shell vars. - Rename config to config-dir. - Insert missing \ in case for delta. - -Wed Jan 23 16:31:27 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * emit-rtl.c (emit_jump_insn_{before,after}): Allow PATTERN to be - a SEQUENCE. - - * loop.c (check_dbra_loop): Use emit_jump_insn_before when writing - out compare and jump sequence, not emit_insn_before, to ensure that - if we only write one insn that it is a JUMP_INSN. - - * toplev.c (flag_rerun_cse_after_loop): New: -frerun-cse-after-loop. - (rest_of_compilation): Rerun cse after loop if desired. - (main): Add support for -O2. - Prescan args for -O and -O2 to set default values for many -f options. - Add call to new macro OPTIMIZATION_OPTIONS. - Save status of -version until all args have been processed; then - write out the info. - (print_single_switch): New function. - (print_switch_values): Renamed from print_target_switch_defaults. - Now prints out currently enabled -f, -m, and -W switches. Calls - print_single_switch to write out switch and handle long lines. - - * rtl.def (SUBREG): Change rtx class from 'o' to 'x'. - - * cse.c (find_comparison_args): Ignore hash table entry if not valid. - -Wed Jan 23 00:12:24 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * config: File renamed from config.gcc. - Allow abbreviations for +-options. - Allow config HOST TARGET. - Support +gas and +nfp as separate options. - Rename all the machine alternatives to general scheme: - cpu/company-system. Allow abbreviations for cpu/company pairs. - * config-dir: Dir renamed from config. - - * Makefile.in (install-dir): Create bindir here. - - * cccp.c (main): Delete duplicat p++ left in last change. - - * Makefile.in (GNULIB1, GNULIB1_TARGET): Renamed from GNULIB*. - (gnulib1.portable, gnulib1.target): Renamed from gnulib.*. - They now make a file named gnulib1, from gnulib1.c. - (LIB1FUNCS, LIB1FUNCS_EXTRA): Renamed from LIBFUNCS*. - (for-bootstrap, rest.encap): Depend on gnulib, not GNULIB2_TARGET. - (stamp-gnulib2): This file is no longer used. - (gnulib2.portable): Old stamp-gnulib2 rule renamed to this. - Now create a file named gnulib2, from gnulib2.c alone. - (gnulib): New target, combines gnulib1 and gnulib2 into gnulib. - (mostlyclean): Delete additional temporary files. - No need to avoid deleting stamp-gnulib2. - (clean): Delete gnulib1 and gnulib2, but not stamp-gnulib2. - (realclean): No need to delete gnulib here. - (install-gnulib): Changed dependencies. - * gnulib1.c: File gnulib.c renamed. - - * Makefile.in (install-dir): Create bindir here. - - * cccp.c (main): Delete duplicat p++ left in last change. - -Sun Jan 20 14:00:16 1991 Michael Tiemann (tiemann at cygnus.com) - - * cplus-class.c (finish_struct): Conditionalize EMPTY_FIELD_BOUNDARY - on whether or not it is defined. Similarly for PCC_BIT_FIELD_MATTERS. - -Wed Jan 16 18:56:30 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * cse.c (fold_rtx): When folding dispatch table, stay inside bounds. - -Wed Jan 16 08:11:48 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reload.c (find_reloads_toplev): Fix typo in recent change. - - * reload1.c (eliminate_regs): If we have a non-paradoxical - (subreg (pseudo)) and the pseudo has an equivalent memory - location, replace the SUBREG because find_reloads may do it. - -Tue Jan 15 01:41:28 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * loop.c (scan_loop): Condition for movability was wrong. - A reg that isn't necessarily set may be unsafe - even if used only inside the loop. - However, a reg used only in the same basic block after the set is safe. - So is a reg that isn't a user-level variable. - - * loop.c (loop_optimize): Reverse order of scanning loops. - - * loop.c (scan_loop): After skipping the insns of a libcall sequence, - ignore notes when searching back to find the last insn of the seq. - - * cccp.c (main): Use envvar GCC_EXEC_PATH to specify translation - of prefixe in default include dirs. - - * cccp.c (main): Do path_includes after explicit options. - - * combine.c (try_distrib): Don't push + thru negative count shifts. - -Mon Jan 14 09:40:28 1991 Ken Raeburn (raeburn at watch.com) - - * cplus-lex.c (yylex): Even in `extern "C"', the keywords are the - same. - - * cplus-lex.c (input_from_saved_text): New function. Set string - source for FILE pointer. - (yylex, do_pending_inlines): Call it. - - * cplus-parse.y (stmts, stmt): Type is now `tree'. Some actions - fixed to return it. - - * cplus-lex.c (reinit_parse_for_block): New function, with most of - the guts of reinit_parse_for_method. Magic argument IS_TEMPLATE - chooses a set of error messages. - (reinit_parse_for_method): Call it. - cplus-template.c (reinit_parse_for_template): New function, also - calls reinit_parse_for_block. - -Mon Jan 14 07:20:36 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * loop.c (skip_consec_insns, move_movables, strength_reduce): Don't - call find_reg_note on a NOTE. - -Sun Jan 13 15:45:23 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * cccp.c: Separate namespace for assertions. Don't expand macros - inside assertions in #if. Allow arbitrary token sequences. - (rescan): Special handling after `#' if assertions_flag. - (expand_to_temp_buffer): New arg sets assertions_flag. Callers changed. - (eval_if_expression): Pass 1 for that arg. - (skip_paren_group): New function. - (assertion_hashtab, ASSERTION_HASHSIZE, ASSERTION_HASHNODE): New. - (assertion_install, assertion_lookup, delete_assertion): New functions. - (T_ASSERTION): Deleted. - (tokenlist_list): Renamed from arglist_list. - (read_token_list): Renamed from read_keyword_list. Much changed. - Copy the strings into the heap. - (free_token_list): Renamed from free_keyword_list. Free the strings. - (do_assert, do_unassert): Considerably changed. - (check_assertion): Somewhat changed. - (check_macro_name): Extra arg contributes to error message. - * cexp.y (yylex): Parse everything as a name if keyword_parsing. - (rule for assertions): Set, then clear, keyword_parsing. - (keywords): Allow empty sequence. Allow nested parens. - -Sat Jan 12 12:18:00 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * c-typeck.c (build_unary_op): Make better code for simple casts. - - * reload.c (find_reloads): Computing reload_when_needed, don't neglect - operands that don't have output reloads. - - * cse.c (refers_to_mem_p): At check_addr, handle PLUS inside CONST. - -Sat Jan 12 06:30:56 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reorg.c (steal_delay_list_from_*): Add missing argument to calls to - insn_sets_resource_p. - (fill_eager_delay_slots, relax_delay_slots): Add missing argument - to calls to mostly_true_jump. - (relax_delay_slots): Correctly handle case where we can't invert jump. - - * reload.c (find_reloads_toplev): If we have a SUBREG of a - pseudo that resides in memory and the address is not offsettable, - substitute for the pseudo now so we can generate a reload for the - address. - -Fri Jan 11 14:39:09 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * tm-next.h (LIB_SPEC, STARTFILE_SPEC): Don't support -p. - -Thu Jan 10 12:26:49 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * tm-sun2.h (CC1_SPEC): Define to ignore -sun2 and -target. - (WORD_SWITCH_TAKES_ARG): Define to recognize -target. - (LIB_SPEC): Define; handle -a. - * tm-sun2os4.h: New file. - * tm-m68k.h (TARGET_SWITCHES): Handle -msky and -mnosky. - (TARGET_SKY): New macro. - - * tm-next.h (LIB_SPEC): Use -lsys_s, not -lc. - - * c-parse.y (yylex): Fix typo. - - * genoutput.c (output_prologue): Make insn-output.c use insn-codes.h. - * Makefile.in (insn-output.o): Depend on insn-codes.h. - - * Makefile.in (install-headers): Save $(libsubdir) before cd. - - * Makefile.in (gnulib): Depend on config.status. - - * gnulib2.c (__umulsidi3): Use #else around inline function. - Use __-style names for all machines. - -Wed Jan 9 17:06:18 1991 Michael Tiemann (tiemann at cygnus.com) - - * out-sparc.c (various places): Change \; to \n\t in printf - strings. - - * sparc.md: Change PIC initialization pattern to recognize pattern - that doesn't involve a clobber. - * out-sparc.c: Rest of change is here, where PIC initialization is - emitted. - - * cse.c (simplify_unary_operation, simplify_binary_operation): - Correctly adjust VAL for bits outside MODE. - -Wed Jan 9 15:45:26 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * flow.c (libcall_dead_p): Handle a CALL in a PARALLEL. - -Tue Jan 8 13:35:50 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expmed.c (emit_store_flag): Correct UNSIGNEDP value passed to - convert_to_mode and expand_unop. - -Mon Jan 7 11:56:31 1991 Michael Tiemann (tiemann at cygnus.com) - - * gplus.gperf: New keywords for templates and other extensions. - - * cplus-lex.c: Incorprate new gperf code. - - * cplus-class.c (resolve_scope_to_name): New function. - (build_scoped_method_call): Call `resolve_scope_to_name' instead of - handling by itself. - * cplus-decl.c (pushdecl_class_level): Give forward declaration. - (lookup_nested_type): New function. - (pushtag,lookup_tag,xref_tag): Handle nested classes. - (finish_function): Add comment about obscure argument passing - convention for static method calls (at the call site). Also, don't - call operator delete with NULL pointer. Call it with - `current_class_decl' instead. - (globalize_nested_type): New function. Used when we learn that a - type which initially appeared to be nested should be defined in the - global scope instead. - (grokdeclarator): Call `globalize_nested_type' when grokking an - as-yet undefined class type. - * cplus-dem.c: Updated to handle qualified (i.e. nested) types. - This means handling the new letter `Q' in mangled names. - * cplus-init.c (build_member_call): Handle nested classes using - `resolve_scope_to_name' instead of handling itself. - * cplus-lex.c (typename_scope_in_progress): New static variable to - allow the lexer to figure out what are nested class typenames, - scoped member references, etc., without getting the parser too - involved. - (yylex): Recognize SCOPED_TYPENAME and TYPENAME_SCOPE tokens. - Also, recognize '<' and '>' separately from ARITHCOMPARE so we can - implement templates. - No longer recognizes (X::*) or (X::&) as single tokens. - * cplus-method.c (build_overload_nested_name): New function to build - internal names for nested typenames. - * cplus-parse.y: Handle parameterized type syntax (more or less). - (dummy_decl): Gone! - Nested types are now handled. - * cplus-tree.h (DECL_UNDEFINED_FRIENDS): Moved out of DECL_CONTEXT - slot of TYPE_DECLs. DECL_CONTEXT of typename is now the enclosing - type for nested types. - (DECL_NESTED_TYPENAME): An identifier pointer that makes the name of - the type unique for the compilation. - (IDENTIFIER_*): When initializing, call `perm_calloc', not - permalloc, since non-zero values actually mean something, - and we don't guarantee to initialize everything in one go. - * tree.c (perm_calloc): New function. - * cplus-typeck.c (default_conversion): Don't defaultly convert a - naked METHOD_REF such that it becomes a virtual function table - index. Only let this happen if user requests it with `&'. - - * Makefile.in: Handle new source file cplus-template.c. - -Mon Jan 7 15:03:53 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * c-typeck.c (process_init_constructor): Error if values - provided for an array of empty elements. - - * out-i386.c (fp_top_dead_p1): Follow jump only if optimizing. - (fp_call_internal): Discard result if unused. Use fp_top_dead_p1. - - * cse.c (cse_insn): In special case for (set REG0 REG1), - change any REG_EQUIV notes to REG_EQUAL. - - * tm-sun386i.h (PCC_BITFIELD_TYPE_MATTERS): Define it. - - * tm-att386.h (ASM_OUTPUT_LOCAL): Change back to data section. - - * genrecog.c (write_tree_1): Typo in printf string. - - * flow.c (libcall_dead_p): New arguments NOTE and INSN. - Now test that the hard return reg in the call is dead. - Callers changed. - -Mon Jan 7 12:27:07 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * recog.c (cancel_changes): Cancel changes in opposite order we made - them. - - * integrate.c (subst_constants): Only commute operands if op0 is const. - - * rtl.def (INLINE_HEADER): Add new integer field. - * rtl.h (POPS_ARGS): New macro for place to save - current_function_pops_args. - (FUNCTION_FLAG_POPS_ARGS): Deleted; no longer a single bit. - * emit-rtl.c (gen_inline_header_rtx): Add new arg for "pops args". - * integrate.c (initialize_for_inline, output_inline_function): - Correctly save and restore current_function_pops_args. - -Sun Jan 6 14:10:44 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * rtl.h (ASM_OPERANDS_INPUT_LENGTH): New macro. - * reload1.c (eliminate_regs): Use ASM_OPERANDS_... macros. - * recog.c (asm_noperands, decode_asm_operands): Likewise. - - * rtl.def (IF_THEN_ELSE): Set class to '3'. - - * cse.c (simplify_{unary,binary,ternary}_operation): New functions, - from fold_rtx. - (fold_rtx): Call these function to do the bulk of the work. - Use GET_RTX_CLASS to find commutative and comparison operations. - Swap folded_arg[01] when commuting operands. - * rtl.h: Define new functions. - * integrate.c (try_constants): Replace constant folding code with - calls to new functions above. - In commutative operations, put constants last. - - * genemit.c (struct clobber_pat): New data structure. - (gen_insn): If pattern ends with a group of CLOBBERs of hard - registers, store this information in a struct clobber_pat. - (output_add_clobbers): New function. - (main): Call it to write code to add CLOBBERs. - * genrecog.c (struct decision): Add new field num_clobbers_to_add. - (make_insn_sequence): If pattern ends with a group of CLOBBERs, - set up to recognize it without the CLOBBERs but to indicate the - number of CLOBBERs omitted. - (add_to_sequence): Initialize num_clobbers_to_add. - Remove unnecessary conditionalization on STORE_FLAG_VALUE. - (break_out_subroutines, write_subroutine, write_tree): Remove - RETURN_PREFIX parameter; TYPE is sufficient. - (write_subroutine): Add extra parameter for recog_* functions. - (write_tree_1): Pass TYPE instead of string for return. - Write out code to return number of CLOBBERs needed. - (write_tree): Add new parameter to recog_*. - (main): Add new parameter to recog. - Don't pass return string to break_out_subroutines and write_tree. - * recog.c (recog_memoized): Pass extra (0) parameter to recog. - * combine.c (recog_for_combine): New function. - (try_combine, simplify_and_cc0, try_distrib): Use it instead of recog. - (reg_dead_at_p, reg_dead_at_p_1): New functions. - - * flow.c (mark_set_1): Count in reg_n_sets when a part of a register - is modified. - Update SIGNIFICANT correctly when subreg_p and multiple hard regs. - Compute reg_n_sets for hard registers. - -Sun Jan 6 13:41:49 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * function.c (locate_and_pad_parm): Do REG_PARM_STACK_SPACE just once. - - * Changes by wilson@cygnus.com. - * calls.c (expand_call): Test value of REG_PARM_STACK_SPACE instead - of assuming that it will always be greater than zero. - * function.c (assign_parms): Same as above. Also, correct - calculation of STACK_BYTES. - - * reload1.c (reload_reg_free_p): Old input reload blocks input_addr. - -Sat Jan 5 18:32:15 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * Makefile.in (mostlyclean): New name for old `clean'. - (clean): Deletes gnulib also. - (cleanconfig): Need not delete gnulib here. - - * reload.c (push_reload): Don't use dying reg unless operand fits. - - * c-parse.y (yylex): Hex and octal constants now traditionally signed. - -Sat Jan 5 18:03:50 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * regclass.c (regclass): reg_n_sets is one per set. It does not - take into account loop_depth. So don't adjust by loop_depth here. - -Fri Jan 4 13:18:07 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * function.c (put_var_into_stack): Don't mung virtual reg. - (fix_lexical_addr): Accept the virtual arg pointer. - * function.h (struct var_refs_queue): New structure. - (struct function): Use that for the pending var refs queue. - - * print-tree.c (print_node): Nicer format for rtl of decls. - - * c-decl.c (push_c_function_context, pop_c_function_context): - No need to deal with current_function_decl. - - * c-parse.y (nested_function): Delete spurious nonterminal. - -Fri Jan 4 12:13:14 1991 Michael Tiemann (tiemann at cygnus.com) - - * cplus-class.c (modify_vtable_entries): In case we are modifying - the main vtable, start with the vtable that comes from the immediate - baseclass, not the most base class. This is needed because later - fixups (for non-first and virtual baseclasses) do not fix up this - case. - -Fri Jan 4 06:55:00 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * optabs.c (expand_binop): Fix typo in testing for SImode operation. - Generalize to apply in more cases by calling emit_store_flag rather - than doing the gen_sltu explicitly. - - * expmed.c (store_bit_field, extract_bit_field): When insv/extv - don't allow MEM and we need to load the field into a register, don't - use the mode of OP0 if it is wider than the mode to be used for - insv/extv operating on a register. - - * expmed.c (emit_stor_flag): Try to convert some comparisons with - 1 and -1 to comparisons with zero. - Explicitly test sign bit of STORE_FLAG_VALUE rather than testing it - for being less than zero. - - * cse.c (find_comparison_args): Don't compute STORE_FLAG_VALUE < 0; - instead, test the relevant sign bit. - Use GET_RTX_CLASS instead of comparison_code_p. - * loop.c (get_condition): Likewise. - - * recog.c (validate_change): Eliminate duplicate code by always - saving the change. If in_group == 0, call apply_change_group. - (apply_change_group): If recog_memoized fails, see if we have a - CLOBBER at the end. Use validate_change to replace the pattern - with one without the CLOBBER if so; later we will verify that change. - - * tree.c (stabilize_reference_1): Now static; also, define as forward - reference at start of file. - - * rtl.def: Add new field in DEF_RTL_EXPR macro to give the "class" - of the rtx operation. - * rtl.h: DEF_RTL_EXPR has one additional arg. - (rtx_class, GET_RTX_CLASS): New var and macro. - * rtl.c: DEF_RTL_EXPR has one additional arg. - (rtx_class): Initialize table. - - * reload.c (push_reload): If an input operand contains a dead - register used nowhere else in the insn, try to use it as a reload reg. - * reload1.c (reload_as_needed): If cancelling optional reload, - clear reload_reg_rtx. - (choose_reload_regs): If we can find reload value lying around, - use that register unless choice made by find_reloads would also save - an insn (the new choice added above won't). - - * genoutput.c: Update comments on things written. Change order to - agree with the order written. - (output_epilogue): Remove extraneous tests. - -Thu Jan 3 13:32:54 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * rtl.c (read_rtx): Cast NULL vector. - - * By Jim Wilson. - * tree.c (stabilize_reference): Modified to call stabilize_reference_1 - instead of save_expr. - (stabilize_reference_1): New function. For arithmetic operator trees, - recurse on the subtrees. Otherwise, put a SAVE_EXPR around the - tree if it has side-effects. - -Thu Jan 3 12:37:56 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reload1.c (choose_reload_regs): Only set reload_when_needed to - RELOAD_FOR_OUTPUT or RELOAD_FOR_INPUT when it used to be RELOAD_OTHER. - -Wed Jan 2 18:28:23 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * emit-rtl.c (init_emit_once): Fix typo setting constm1_rtx. - -Wed Jan 2 07:53:04 1991 Michael Tiemann (tiemann at cygnus.com) - - * sparc.md (fix_truncdfsi2 recognizer): xoperands must have 3 - elements because `output_fp_move_double' can write to operands[2]. - -Wed Jan 2 17:16:20 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * calls.c (emit_call_1): If we have call_pop, use it if we have - no stack arguments. - - * out-vax.c (relational_op): Deleted, redundant. - * vax.md (branch): Use comparison_operator (in recog.c) instead of - relational_op. - * tm-vax.h (PRINT_OPERAND_PUNCT_VALID_P): "C" is not punctuation. - - * reload1.c (reload_as_needed, forget_old_reloads_1): Don't clear - reg_has_output_reload and reg_is_output_reload for each insn, just - ones that need reload. Instead, interpret each entry as zero if - n_reloads == 0. - -Wed Jan 2 15:52:13 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * optabs.c (expand_binop): Fix typos. - - * toplev.c (rest_of_compilation): Clear cse_not_expected after loop. - * rtl.h (cse_not_expected): Declare here. - * expr.h: Not here. - -Tue Jan 1 21:55:11 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * emit-rtl.c (constm1_rtx): New standard constant. - (gen_rtx): Use it when appropriate. - (init_emit_once): Initialize it. - - * out-vax.c (split_quadword_operands): New function. - (relational_op): Likewise. - * vax.md (extendsidi2, adddi3, subdi3): New patterns. - (movdi): Use clrq when appropriate. - (movaq recognizer): New pattern. - - * recog.h (OUT_FCN): New macro. - * genoutput.c: Include recog.h in output file. No - longer define "const", since that happens in recog.h. - - * tm-vax.h (PRINT_OPERAND): Add 'C' to print a reversed condition. - * out-vax.c (rev_cond_name): Return its name. - * vax.md (unnamed patterns): Combine several reversed branch patterns - into one, using match_operator with relational_op and "%C". - - * optabs.c (expand_binop): Handle multi-word addition and subtraction. - - * Makefile.in (install-gnulib): Use RANLIB_TEST. Use libg_dir. - (libg_dir): New customization variable. - - * assert.h (__assert): Use standard GNU format for error messages. - -Tue Jan 1 21:25:00 1991 Richard Kenner (kenner at vlsi1) - - * reload1.c (eliminate_regs, case PLUS): Always move constant to the - outside of a PLUS expression. - -Tue Jan 1 11:45:22 1991 Richard Stallman (rms at mole.ai.mit.edu) - - * ecoff-cmp: Specify `c' in option to tail. - - * stor-layout.c (layout_record, layout_union, layout_type): - Use ROUND_TYPE_ALIGN and ROUND_TYPE_SIZE to compute - alignment and size of records, unions and arrays. - * ROUND_TYPE_ALIGN: New. Args are type, spec'd align, other min align. - * ROUND_TYPE_SIZE: New. Args are type, size of contents, align. - - * reload1.c (emit_reload_insns) [PRESERVE_DEATH_INFO_REGNO_P]: - Scan output and output-address reloads together. - Check for matching hard reg. - - * config.gcc: Set proper shell vars in big dispatch. Not `machine'. - (i386-isc): New alternative. - -Tue Jan 1 08:29:49 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reorg.c (update_block): Turn bb_tick update back on; it is needed, - after all. - -Mon Dec 31 18:12:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * genattrtab.c (write_test_expr, case EQ_ATTR): Use correct expression - number for attribute value. - - * cse.c (cse_insn): Use single_set when looking for an insn that sets - cc0 followed by one that no longer does. - - * recog.c (find_single_use): If the next insn after one that sets - cc0 is not an INSN or JUMP_INSN, return 0; don't blow up on a NOTE. - - * emit-rtl.c (emit_insn_before, emit_insn_after, emit_insn): Return - something sensible if a SEQUENCE of length zero was passed. - We no longer make a SEQUENCE with XVEC == 0, so don't test for it. - - * reload1.c (emit_reload_insns): Handle gen_move_insn returning - no insns (occurs on RT for dummy registers). - - * rtl.h (reg_cc0_rtx, find_cc): No longer needed. - * emit-rtl.c: Likewise. - * conditions.h: Entire file is #ifdef HAVE_cc0. - * final.c (CC_STATUS_INIT): Make a null default #ifndef HAVE_cc0. - (cc_status): No longer exists #ifndef HAVE_cc0. - (final_scan_insn): Do CC processing only #ifdef HAVE_cc0. - (alter_cond): Only exists #ifdef HAVE_cc0. - * genemit.c (gen_exp): No longer have CC0_REGNUM or reg_cc0_rtx. - * genoutput.c (main): Include insn-config.h before conditions.h. - * reorg.c: Likewise. - * jump.c (rtx_equal_for_thread_p): Remove reference to CC0_REGNUM; - we'll have to do this optimization some other way later. - * tm-a29k.h (NOTICE_UPDATE_CC): Deleted. - -Mon Dec 31 14:44:31 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * reload.h (enum_reload_when_needed): - New alternatives RELOAD_FOR_OUTPUT, RELOAD_FOR_INPUT. - * reload1.c (choose_reload_regs): Use those when appropriate. - (mark_reload_reg_in_use): Record this usage specially. - (reload_reg_free_p, reload_reg_free_before_p): Handle this usage. - (reload_reg_reaches_end_p): Likewise. - (emit_reload_insns): Treat RELOAD_FOR_INPUT like RELOAD_OTHER. - - * i386.md (push for SFmode): Operand of fst was missing. - -Mon Dec 31 08:50:17 1990 Craig Burley (burley at pogo.ai.mit.edu) - - * stor-layout.c (layout_type): For ARRAY_TYPE case, don't try - and compute a size if there is no TYPE_MAX_VALUE for the index. - * tree.c, tree.h (build_index_2_type): New function, like - build_index_type except it accepts the low value as an arg instead - of assuming 0. - -Mon Dec 31 08:09:10 1990 Michael Tiemann (tiemann at cygnus.com) - - * cplus-typeck.c (c_expand_return): Handle case when we try - to return a void value (such as a void function call) in a - function returning void, and there are cleanups to run. - -Sun Dec 30 21:08:32 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * tm-a29k.h (TARGET_VERSION): Can't use target_flags since we can - be called from gcc.c. - - * tm-rs6000.h (REG_ALLOC_ORDER): Put r12 after r13; it might be - holding a DImode value and so might be very expensive (we won't - worry about TImode). - - * rs6000.md (subtract patterns): Fix incorrect operand number in %I. - (movti): Disallow indexed memory operands. - - * out-rs6000.c (print_operand, case 'm'): Fix typo. - (includes_rshift_p): Correctly compute mask. - - * out-a29k.c (output_operand): Add missing parentheses. - (print_operand): Replace if/then/else structure with switch statement. - - * a29k.md (beq, bne): Try to use NE test whenever possible; it - will produce better code if we have bit-tests. - -Sun Dec 30 12:02:03 1990 Michael Tiemann (tiemann at cygnus.com) - - * tm-sparc.h (PRINT_OPERAND): Put 'R' case before REG so that it - takes when 'R' is passed in as CODE. Also, handle 'B' letter. - - * sparc.md: (pattern for converting DFmode to SImode): Second - argument to `output_asm_insn' should be `operands', not zero. - (tablejump): The jump insn is "jmp", not "jump". - (gen_fixtruncdfsi2): operands[2] should get the pseudo, not - operands[3] (which is nonexistent). - (call): Fix typo which had %o7 being emitted as %o. - (various patterns): Fixed places where match_operand had the wrong - operand number. - -Sat Dec 29 17:27:00 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * sparc.md: cc_status no longer handles condition code updates. - Instead, condition codes are explicitly set and used via - hard register 0. Special attributes specific to condition codes - (such as whether conditional branches should test the integer or - floating-point condition codes, or that the condition codes cannot - be tested for a condition which would test the overflow bit) are - handled by encoding the attribute in the mode for the condition - code register. - (type attributes): type "unary" insns have one input operand (1) - and one output operand (0) - type "binary" insns have two input operands (1,2) and one output (0) - type "compare" insns have one or two input operands (0,1) and no output - type "move" and type "arith" have been deleted. - (prescan attribute): Deleted. Machine description now puts - floating-point zero in registers when needed. - (use_cc attribute): Deleted. - (fpcc define_delay): No longer depend on "use_cc" attribute. - Also, fpcc delay characteristics hold for "fpcc" type insns. - (cc attribute): Deleted. - (cmpxx patterns): Now written as `define_expand's so we can stow - away operands. When the pattern that will use the results of the - conditional test is emitted, it can use these operands to figure - out the right way to emit the compare. - (bcc patterns): Rewritten to emit comparison (based on stowed-away - info) before emitting branch. - (scc patterns): Handle all the cases with branch-free code. - Added new pattern to recognize (x + (i == 0)). - (movsi pattern recognizer): Split into two patterns so that e.g. - "(set:SI (mem:SI ...) (const_int 5))" is never considered valid. - Instead this has to be a two-insn sequence. - (mov{hq}i pattern recognizers): Ditto. - (movstrsi): Force operands[2] out of memory if it was in memory. - ({zero,sign}_extendXY): Now written as `define_expand's instead of - `define_insn's for more accurate machine modeling. - Added new pattern to optimize bit-field compares. - (floatsisf2 patterns): Delete redundant setting of "in_call_delay" - attribute. - (fix_trunc{sf,df}si2 pattern): Use clobberable register in which - the conversion can take place. Used to use %f30,%f31. - ({add,sub}di3 pattern): Put explicit clobber of (reg 0) in the - pattern. - (negdi2 pattern): Ditto. - Added new patterns to handle merging of addition/subtraction with - condition code testing (with (reg:CC_NOOV 0)). - ({and,ior,xor}cbsi3 pattern): Obsolete. Deleted. - Added patterns to represent setting of condition codes in addition - to performing logical operations. - ({neg,abs}df2 pattern): Use `R' print letter to overcome the need - to use a C action instead of a simple template. - (ash{l,r}{hi,qi}3): Define patterns for shifts on sub-SImode - operands. - (jump pattern): Use `*' print code to obviate the need for a C - action when a template can do. - (tablejump pattern): Ditto, with `^' code as well. - Deleted `define_split's that were used to handle mem-mem moves in - the case of PIC generation. Since all move insns are emitted and - maintained as SPARC-valid insns, these should no longer be needed. - (various patterns): (HI ...) is spelled (HI:SI ...). Also, use - `gen_lowpart' instead of building subregs directly. - New `define_split's were added to split scc insns into simpler - components which have single-insn templates. - Fixed a return peephole when returning a SFmode value (it was - missing the "ret"!). - Lots of complicated peepholes that brought cc testing and - arithmetic operations together were deleted. This is because the - combiner should now handle all these cases. - - * out-sparc.c (sparc_compare_op{0,1}): New global variables. - Used to hold the operand(s) to compare insns in lieu of emitting a - compare. - (reg_or_cc0_operand): Deleted. - (normal_comp_operator): New function. - (cc_arithop): Now returns 0 for PLUS and MINUS. - (cc_arithopn): Now returns 0 for XOR. - (gen_compare_reg): New function. - (sparc_address_cost): Simplified because it turns out it doesn't - matter what is returned for illegitimate addresses. - (hard_regno_mode_ok): Updated to use these new #defines. - (C_MODES): New #define, for condition code modes. - (S_MODES): Ditto, for single-word (and smaller) quantities. - (D_MODES): Ditto, for double-word (and smaller) quantities. - (T_MODES): Ditto, for tetra-word (and smaller) quantities. - (SF_MODES): Ditto, for SFmode quantities. - (DF_MODES): Ditto, for SF_MODE, DFmode, SCmode, etc. - (TF_MODES): Ditto, for DF_MODE, TFmode, DCmode, etc. - (output_floatsi{df,sf}2): Greatly simplified. - (output_pic_sequence,output_pic_sequence_2,fp_zero_hook, - output_tail_call): Turned off. - - * tm-sparc.h (ASM_SPEC): Pass `-k' to assembler if compiling PIC. - (WORDS_BIG_ENDIAN): Define as 1, not 0. - (FIXED_REGISTERS): %f30 and %f31 are now allocatable. - (REG_CC0_RTX, CC0_REGNUM): Deleted. - (EXTRA_CC_MODES): New modes CC_NOOVmode and CCFPmode. The former - is for when the overflow bit it not to be tested; the latter is - for when the condition is sitting in the floating point unit. - (SELECT_CC_MODE): New macro. - (FINAL_PRESCAN_INSN): Deleted. - (CC_* macros): Deleted. - (PRINT_OPERAND_PUNCT_VALID_P): New valid chars are '#' (for - whether to print a noop or not), '*' (for whether to print a ",a" - or not), and '^' (for whether to emit code for PIC branch or not). - (PRINT_OPERAND{,_ADDRESS}): Replace calls to fprintf by calls to - fputs where that is convenient. - - * expr.h, cplus-dbxout.c: #ifdef BYTES_BIG_ENDIAN should be #if. - - * reload.c (struct replacement): Add new field subreg_loc. - (push_reload): If reloading SUBREG_REG of a paradoxical SUBREG, - store the location of the SUBREG in subreg_loc in REPLACEMENTS. - (push_replacement): Initialize subreg_loc. - (subst_reloads): Don't produce nested SUBREGs; use subreg_loc. - - * regclass.c (regclass): Handle (set X (op CONST Y)) properly when - the modes of operands 0 and 1 are different. - -Sat Dec 29 16:37:10 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * cccp.c (macroexpand): Test traditional when computing expansion size. - - * toplev.c (compile_file): - If profiling, leave some space after `gcc_compiled.'. - * tm-m88k.h, tm-sparc.h, tm-sun386i.h (ASM_IDENTIFY_GCC): Deleted. - - * reload1.c (emit_reload_insns): Set reg_reloaded_contents, etc, here. - (choose_reload_regs): Not here--except for reg_has_output_reload. - - * c-parse.y (nested_function, notype_nested_function): - Use compstmt for body, not compstmt_or_error. - - * Makefile.in (install-headers): Use basename on - * stupid.c (stupid_mark_refs): Really do mark clobbered hardreg - live before the insn. - -Fri Dec 28 05:44:10 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * emit-rtl.c (subreg_lowpart_p): Use correct modes in - WORDS_BIG_ENDIAN case. - - * reload.c (combine_reloads): Don't try to reference - insn_operand_constraint for an ASM insn. - Fix typo in testing for modified operand. - -Thu Dec 27 19:02:54 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (cse_insn): Ensure we invalidate SET_DEST if SET_SRC is a CALL. - - * cse.c (fold_rtx): Save mode of original first operand in case this - is becoming (sign_extend (const_int)). - -Thu Dec 27 16:15:56 1990 Tom Wood (wood at dg-rtp.dg.com) - - * m88k.md, out-m88k.c (CCmode): Use it. - (emit_bcnd): Avoid loosing when bcnd is changed into sxx. - (hi16/lo16): Don't use these to form 16-bit immediate values. - Introduce and use %X/%x. - (length attribute): Make better use of defaults. - - * tm-v88r32.h (LIB_SPEC): Goes here rather than in xm-v88r32.h. - * xm-*88*.h: Clean these up. Most differences go away by relying - on the 88open standards. - -Thu Dec 27 12:48:26 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * expmed.c (store_bit_field, extract_bit_field): - Change #ifdef to #if, testing BYTES_BIG_ENDIAN. - -Thu Dec 27 07:36:45 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reorg.c (find_end_label): Ignore USE and CLOBBERs when looking for - label at end of function. - -Wed Dec 26 22:35:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * emit-rtl.c (sequence_element_free_list, sequence_result): New vars. - (restore_emit_status, init_emit): Initialize them. - (emit_insn_before, emit_insn_after, emit_insn): Save SEQUENCE in - sequence_result. - Make these three routines more alike in structure. - (start_sequence, end_sequence, push_to_sequence): Cache INSN_LIST pairs - in sequence_element_free_list rather than making new ones. - (start_sequence): No longer return unused rtx; only one caller - needed to be changed (in function.c, see below). - (end_sequence): No longer has argument. - (gen_sequence): Try obtaining a pre-built SEQUENCE from - sequence_result; no longer special-case length 0 vectors. - * function.c (fixup_memory_subreg): start_sequence no longer - returns an rtx and end_sequence no longer has an argument. - * rtl.h (start_sequence): Now void. - (push_to_sequence, end_sequence): Define. - -Wed Dec 26 13:19:40 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * gnulib.c: No longer #undef perform_* if not __GNUC__. - (perform_*): Define each if not already def. - -Tue Dec 25 17:31:17 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * loop.c (get_condition): Rework scan that looks for sets of things - being compared to allow intervening insns; check to ensure that - they don't set something that we need. Return 0 if the best we can - do is find something whose mode is in class MODE_CC. - - * calls.c (emit_call_1): RETURN_POPS_ARGS now gets the length of - arguments on the stack and returns the number of bytes popped by the - called function. - * output.h (current_function_pops_args): Change description. - * function.c (current_function_pops_args): Likewise. - (assign_parms): Initialize current_function_pops_args here. - (init_function_start): Not here. - * tm-*.h (RETURN_POPS_ARGS): Reflect new meaning. - (FUNCTION_EPILOGUE): Use new meaning of current_function_pops_args. - * out-i386.c (function_epilogue): Likewise. - -Tue Dec 25 15:52:06 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * gnulib.c (all functions): Support a hook for redefining contents. - These hooks are called perform_addsi3, and so on. - They are used only if compiling with GCC. - - * rtlanal.c (single_set): Moved from loop.c. - - * cse.c (fold_rtx): For a MEM, fold address when looking for constant. - (cse_insn): When fetch a constant label from a dispatch, - substitute into following tablejump. - (find_best_addr): Clear do_not_record before hashing. - * jump.c (mark_jump_label): Don't record table-labels on non-jumps. - - * m68k.md (casesi_2 recognizer): Use register_operand as predicate. - -Mon Dec 24 17:54:42 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * cse.c (fold_rtx): Handle ADDR_DIFF_VEC like ADDR_VEC, - when the index in it is constant. - - * c-decl.c (start_function): Handle new option -Wmissing_prototypes. - (c_decode_option): Likewise. - -Mon Dec 24 07:21:06 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * rtl.h (reload_completed, reload_in_progress): Now defined here. - * output.h (reload_completed): No longer defined here. - * emit-rtl.c, optabs.c, recog.c, sched.c, toplev.c, out-a29k.c: - Don't define reload_in_progress or reload_completed. - * a29k.md, romp.md, rs6000.md: Likewise. - - * machmode.def: Terminate GET_MODE_WIDER_MODE chains with VOIDmode, - not zero. - (CCmode): New mode. - * machmode.h (enum machine_mode): Includes modes in EXTRA_CC_MODES, - if defined. - (enum mode_class): New class MODE_CC; delete MODE_FUNCTION. - * rtl.c (mode_name): Define to be known size; add names for extra - CC modes, if present. - (mode_class, mode_size, mode_unit_size, mode_wider_mode): Define - to be known size. - (init_rtl): Initialize extra CC modes. - -Sat Dec 22 19:33:54 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * tm-i386v.h (MAXPATHLEN): Define if not already defined. - * tm-i386vgas.h: New file. - - * out-i386.c (print_operand_address): Handle scaled indexing. - -Sat Dec 22 11:15:03 1990 Tom Wood (wood at dg-rtp.dg.com) - - * m88k.md, out-m88k.c, tm-m88k.h (swapped cmpsi): Don't rely on - NOTICE_UPDATE_CC doing the job. Instead, compliment the swapped - compare. Also, make COMPARE SImode. - (and/cmpsi/sxx/neg): Add patterns to do this in one instruction. - Change sign_extend/sxx to neg/sxx for other cases. - (iorsi3/xorsi3): Use alternatives and explicit patterns. - (casesi): Make the constant the second operand to cmpsi. - (output_and): Must compliment value to use the clr instruction. - (output_reg_adjust): Simplify the interface and use TEMP_REGNUM. - (TARGET_SWITCHES): Eliminate needless no-* options. - -Fri Dec 21 05:46:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * recog.c (find_single_use{,_1}): New functions. - * rtl.h (find_single_use): Declare it. - -Thu Dec 20 21:27:36 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * optabs.c (init_optabs): Add __ to names of floating compare fcns. - -Thu Dec 20 18:21:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (expand_builtin, case BUILTIN_FFS): Get mode for arg from - tree, not rtx, in case arg was CONST_INT. - -Thu Dec 20 17:31:46 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-decl.c (init_decl_processing): Don't define `ffs'. - -Wed Dec 19 16:59:38 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * gcc.c (main): Handle if SIGPIPE not defined. - - * cccp.c (xmalloc, xrealloc, xcalloc): Don't declare malloc or realloc. - -Wed Dec 19 06:50:17 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (gen_lowpart_for_combine): Avoid making a nested SUBREG - when we are being passed a paradoxical SUBREG of MEM. - - * cse.c (new_basic_block): Compilations spend about 5% of their time - in this function so replace loop initializing qty_{first,last}_reg - with copy from a larger consec_ints. Only loop over extra entries. - (cse_main): Allocate consec_ints to be default size of max_qty large. - - * reorg.c (get_branch_condition): Fix typos when reversing condition. - (condition_dominates_p): Fix typo in comparison. - (redundant_insn_p): This function was taking about 4% of the - compilation time. Rework so it doesn't split, only looks at resource - usage if it finds a matching insn (since it usually won't), and - improve code that looks at resources. Now takes about 0.5% of - compilation time. - (fill_simple_delay_slots): Always call mark_target_live_regs with an - active insn; currently being called with a CODE_LABEL. - -Tue Dec 18 14:08:11 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * out-sparc.c: Fix uninitiated comment. - - * final.c (end_final): Call strip_off_ending to remove the file - name suffix. - (final_start_function): Execute SDB_DEBUGGING_INFO code only if - generating SDB symbol info. - - * Makefile.in (cccp.o): Depend on gcc. - - * tm-sparc.h, xm-sparc.h: Make this machine big-endian. - - * expr.c (expand_builtin): Pass correct arguments to gen_cmpstrsi4. - - * recog.c (nonmemory_operand): Reject reg whose class is NO_REGS. - - * c-decl.c (finish_struct, grokdeclarator): - Strip NON_LVALUE_EXPR more than once. - - * combine.c (combine_instructions): Check that a jump insn uses CC0 - before trying to combine it with an insn that sets CC0. - - * cplus-decl.c, cplus-search.c, gcc.c, objc-actions.c, rtl.c, stmt.c, - symout.c, toplev.c: Use xmalloc instead of malloc. - - * cccp.c (do_include): Check for truncation of precompiled file name. - -Mon Dec 17 16:53:46 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-typeck.c (build_binary_op_nodefault, build_conditional_expr): - Fix indentation. - * reload1.c (choose_reload_regs): Fix indentation. - (gen_input_reload): Fix typo in comment. - - * reload.c (find_reloads): Call abort when the last operand is - marked commutative, to make it easier to find this error. - - * rtlanal.c (refers_to_regno_p): Don't crash if X is 0. - -Mon Dec 17 15:29:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * local-alloc.c (combine_regs): No need to see if suggested hard reg - is suitable; if it isn't, it won't end up being used. Existing tests - were too conservative. - - * jump.c (delete_jump): When searching for the SET of the condition - codes for a jump insn, give up if we hit a SEQUENCE. - -Mon Dec 17 02:14:06 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-typeck.c (c_size_in_bytes): New function. - (pointer_int_sum, pointer_diff): Use that. - (pointer_diff): Handle warn_pointer_arith. - -Sun Dec 16 22:27:11 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-decl.c (start_decl): Ignore with error any init for a parm. - (finish_decl): Likewise. - -Sun Dec 16 01:02:57 1990 Michael Tiemann (tiemann at cygnus.com) - - * jump.c (rtx_equal_for_thread_p): Treat the special CC register as - equivalent for the two threads we are looking at. - - * combine.c (try_combine): Fix typo in loop over I1 with PARALLEL - body. Also, don't test HARD_REGNO_MODE_OK for hard registers we are - thinking about combining. This screws up using registers to - represent the condition codes, and probably doesn't save anything in - the general case. - - * expmed.c (expand_and): Comment says that result is always stored - in target, so the code now does this. - -Sat Dec 15 18:09:46 1990 Michael Tiemann (tiemann at cygnus.com) - - * loop.c (get_condition): Try a little harder to find the setter of - the register used in a conditional test. On the SPARC it is vital - to either find the setter of the register used for the condition - codes or for this function to return 0. Also, have test for - non-NULL, matching `set' govern both normal and reversed cases of - comparisons. - - * jump.c (jump_optimize): When moving USE insns from before jumps to - after BARRIERs, put the label for the redirected jump after the - BARRIER instead of just before the PREV_INSN of the original target. - This gets around problems when there are NOTEs between the BARRIER - and the original target. - -Sat Dec 15 10:16:29 1990 Michael Tiemann (tiemann at cygnus.com) - - * sparc.md (cmpdf,cmpsf): No longer a define expand. Now depends - on fp zero being loaded into a register. - (tstsi,tstdf,tstsf): Deleted. - (seq,sne): Fail if we are not testing operands of integer mode. - (movsi): Split recognizers into two parts. The first handles - [reg,mem,zero] <=> [reg,mem]; the second handles [reg,const] => - [reg]. - (adddf,subdf,negdf): Simplify output routines using 'R' as an - output letter. - (tail_call): Turn this off. It is never used, and it depends on - routines which are about to become broken. - (various places): Add USE_CC attribute where appropriate. - (various places): Change (use (reg:SI 0)) to (clobber (reg:SI 0)) - and delete CC_CLOBBER attribute from the pattern. - * out-sparc.c (move_operand): No longer recognize certain - immediates as a `move_operand'. - (move_reg_or_immed_operand): New recognizer for immediates no - longer recognized by `move_operand'. - (output_pic_sequence*): Turned off. - (sparc_address_cost): Simplified, since the value returned is not - used if the address is not legitimate. - (emit_move_sequence): Use `gen_lowpart' instead of building - SUBREGs explicitly. - (make_f30_contain_zero): Deleted. - (output_tail_call): Turned off. - * tm-sparc.h (PRINT_OPERAND): Recognize 'R' code letter, which - means print the name of REGNO (X)+1. No longer recognizes the 'G' - letter. - (PRINT_OPERAND,PRINT_OPERAND_ADDRESS): Replace various calls to - fprintf with calls to fputs or fputc. - (FINAL_PRESCAN_INSN): No longer defined. - -Sat Dec 15 14:37:51 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * recog.c (offsettable_address_p): Check validity in narrower modes. - -Sat Dec 15 11:21:55 1990 Tom Wood (wood at dg-rtp.dg.com) - - * syms.h sdbout.c (T_VOID): Ensure that T_VOID is provided a - default meaning if is used. - -Fri Dec 14 14:39:10 1990 Tom Wood (wood at dg-rtp.dg.com) - - * m88k.md (increment and test peephole): Updated so it would apply - with the new method for doing cmpsi/bxx. - * m88k.md (function units): Replace decode with alu and update - accordingly. - * out-m88k.c (emit_test): Add a mode parameter. - * tm-m88k.h (GO_IF_LEGITIMATE_ADDRESS): Constrain how the arg - pointer can be used. - -Fri Dec 14 06:48:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (convert_move): Add missing argument to some recursive calls. - - * jump.c (invert_jump): Pass new label to recursive call. - - * expr.h (setcc_gen_code): Replaces setcc_gen_fctn; stores insn_code. - (expand_and, emit_store_flag, label_rtx): Add definitions. - (get_condition, compare_from_rtx): Likewise. - * rtl.h (STORE_FLAG_VALUE): Provide a default value of 1. - (reg_set_last): Add definition. - (const_true_rtx): New variable. - * cse.c: Remove defaulting of STORE_FLAG_VALUE from here. - (const_true_rtx): Remove static version; now global. - * emit-rtl.c (const_true_rtx): Define here. - (gen_rtx): Return const_true_rtx for CONST_INT of STORE_FLAG_VALUE. - (init_emit_once): Initialize const_true_rtx. - * expmed.c (emit_store_flag): Rewritten. Is passed the operands - to compare in addition to the compare operation and emits both the - comparison and the store-flag insn. - Handles special-case of testing for A < 0 and A >= 0. - If result is constant, just return it. - Accepts an argument saying how to normalize the result and does - appropriate normalization. - Give preference to using the sign bit rather than the low-order bit. - Allow sxx insns to fail. - If don't have seq or sne insns, can sometimes do with abs. - * expr.c (expand_expr, case COND_EXPR): For X ? A + 1 : A, only - do store_flag if it is cheap. - (do_jump): True comparisons return STORE_FLAG_VALUE, not 1. - (compare_constants): Correctly handle unsigned comparisons. - Return STORE_FLAG_VALUE, not 1, for true comparison. - (compare_from_rtx): New name for compare1. - Accept size and alignment, for BLKmode. - No longer statuc. - (compare, compare_from_rtx): No need to pass forward and reverse codes; - can trivially derive the reverse code from the forward one. - All callers changed. - If one operand is constant, make it the second one. - (compare): Let compare1 do most of the work. - (do_store_flag): Rewritten, now lets emit_store_flag do most of - the work. - Handles the special-case of comparing a single bit with zero., - Add additional argument ONLY_CHEAP; if non-zero, fail if it looks like - this will be an expensive operation; all callers changed. - If it looks like it will be possible to do a store-flag operation, - call emit_store_flag; if it can't do it, emit as assignments and a - jump. If it doesn't look possible to do a store-flag operation, return - zero before expanding anything. - * final.c: (final_scan_insn): Don't check STORE_FLAG_VALUE; if the - insn doesn't exist, we won't try to change it. - * genemit.c (gen_exp): Use const_true_rtx when appropriate. - * genrecog.c (add_to_sequence): Likewise. - (try_merge_1): Two nodes aren't identical if they are to test - different modes or if they have different values of EXACT. - * integrate.c: Don't supply a default value for STORE_FLAG_VALUE here. - * jump.c: Now includes expr.h (for emit_store_flag and get_condition). - (jump_optimize): Split optimization that made store-flag insn - into three separate optimizations, the first two of which are useful - even in the absence of store-flag operations. - (can_reverse_comparison): Set and use of cc0 must be immediately - adjacent. - (mark_jump_label): Abort if LABEL_REF codesn't contain a CODE_LABEL. - Consider two labels adjacent after reload if separated by just USE or - CLOBBER insns. - * loop.c: Now includes real.h. - (get_condition_for_loop): New function. All callers of get_condition - in this file now call this function. - (strength_reduce): no_labels_between_p now skips FROM. - (get_condition): No longer static. - Refine cases when we can't reverse a comparison operation. - * optabs.c (init_optabs): Initialize and define setcc_gen_code - instead of setcc_gen_fctn. - * rtlanal.c (no_labels_between_p): Skip FROM, like as ..._between_... - functions do. - (no_labels_between): Deleted. - (reg_set_last, reg_set_last_1): New functions. - * Makefile.in (jump.o): Now include expr.h. - (loop.o): Now includes real.h. - - * c-tree.h (int_ftype_cptr_cptr_sizet, ptr_ftype_ptr_cptr_sizet): - New names. - - * alliant.md, i386.md, m68k.md, m88k.md, ns32k.md, sparc.md: Add mode - to comparison operators (EQ, NE, etc.) to agree with the mode of the - destination. - * out-m88k.c (emit_test): Likewise. - -Fri Dec 14 00:12:46 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-decl.c (finish_struct): Strip NON_LVALUE_EXPR from field width. - -Thu Dec 13 13:10:47 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * cplus-init.c (expand_vec_init): Add missing arg to - expand_exit_loop_if_false. - - * config.gcc (tron): Alias for gmicro. - - * c-decl.c (int_ftype_cptr_cptr_sizet): Variable renamed. - (ptr_ftype_ptr_cptr_sizet): Likewise. - - * gcc.c (default_compilers): Handle .C. - - * Makefile.in (enquire.o): Add -I. so can find stddef.h. - (install-cross): Install cc1obj like the others. - - * Makefile.in (gnulib.target): Renamed from gnulib. - (gnulib): Renamed from tmpgnulib. Rename that file in this rule. - Also delete stamp-gnulib2 here. - (gnulib.portable, gnulib.convert): Input now is named gnulib. - (GNULIB_TARGET, GNULIB2_TARGET): Define these vars (already in use). - (gnulib2.target): Renamed from gnulib2. - (gnulib2): New rule, alias for gnulib2.target. - - * local-alloc.c (local_alloc): Cast an enum used as index. - * optabs.c (emit_indirect_jump): Likewise. - * reload1.c (choose_reload_regs): Likewise. - -Thu Dec 13 12:38:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expmed.c (store_bit_field): Verify that operand 1 of movstrict - satisfies its predicate. - -Wed Dec 12 17:26:21 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * gvarargs.h: Avoid duplicate inclusion using _VARARGS_H. - -Wed Dec 12 14:11:30 1990 Tom Wood (wood at dg-rtp.dg.com) - - * tm-m88k.h, out-m88k.c, m88k.md: Eliminated the fixed condition - code register. As a temporary measure, NOTICE_UPDATE_CC is used - to track swapped cmpsi cases. - - * m88k.md (shift patterns): Deal with TARGET_*_LARGE_SHIFT - uniformly with define_expand. Make gen_lshlsi3 generate ASHIFT - and eliminate the optimization patterns using ASHIFT. Eliminate - other optimization patterns that will be handled by combine. - -Tue Dec 11 22:13:48 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * expr.c (convert_move): With slt, handle dest that's invalid. - - * stmt.c, tree.h (stmt_nesting): - Typedef deleted; use `struct nesting *'. - * stmt.c (expand_start_cond): If exitable, make an exit label. - -Tue Dec 11 21:28:56 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (subst, case SUBREG): Update TO for earlier - changes so we can always detect (subreg (mem ...)). - -Tue Dec 11 10:56:53 1990 Craig Burley (burley at pogo.ai.mit.edu) - - * stmt.c (expand_start_loop{,_continue_elsewhere}): Return pointer - to nesting structure (new type stmt_nesting). - (expand_exit_loop{,_if_false},expand_continue_loop): Accept pointer - to nesting structure, substitute loop_stack if 0 (same behavior as - before when there was no argument), so F90 CYCLE and EXIT statements - (like C's continue and break stmts) can refer to other than the - innermost loop. - (expand_start_cond): Uses new names for if-related labels that - reflect addition of "elseif" call, and sets endif_label to whatever - exit_label gets set to (so we don't generate two identical labels - for languages from which if is exitable via expand_exit_something). - (expand_start_elseif): New function, used by Fortran. - (expand_start_else): Moved above _end_cond so these four functions - appear in the order they get called; uses new names, and fills in - only endif_label if needed, not exit_label. - (expand_end_cond): Handles end of any if, not just if-without-else. - Generates both labels for next else/elseif pending (there was none) - and the endif itself, if they exist (and there will always be at least - one). - (expand_end_else): Gone, call expand_end_cond instead. - * c-parse.y, cplus-parse.y, objc-parse.y: Pass new 0 argument to - expand_..._loop_... to indicate the innermost loop; call - expand_end_cond instead of expand_end_else. - * tree.h: Typedef for stmt_nesting returned by expand_start_loop... - and change their return types accordingly. - -Mon Dec 10 06:59:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (check_asm_operands): Delete from here. - * recog.c (check_asm_operands): Move to here; no longer static. - (validate_change): Don't assume change is valid is asm_noperands >= 0. - If recog_memoized returns < 0, accept change if asm_noperands >= 0 - and check_asm_operands returns non-zero. - (apply_change_group): Likewise. - (validate_replace_rtx_1): Swap operands on commutative operation - if first is constant. - Use plus_constant to simplify a PLUS with CONST_INT as second operand. - - * reload.c (find_equiv_reg): We must have a stable SP if GOAL is - a MEM that uses SP. - - * combine.c (try_combine): Don't do anything if I2 or I1 - has an ASM_OPERANDS and CLOBBERS; we'll need those clobbers - and it is too messy to try to get things set up correctly. - -Sun Dec 9 22:07:41 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * cccp.c (collect_expansion): Don't check for /* */ concat here. - (macroexpand): Always use raw arg if traditional. - - * c-parse.y (unary): Mark address of label as constant. - -Sun Dec 9 14:45:34 1990 Michael Tiemann (tiemann at cygnus.com) - - * cplus-class.c (propagate_basetype_offsets): Take effect on ASSOC - before recursive calling. - (finish_struct): Call `layout_decl' with zero for KNOWN_ALIGN - when laying out TYPE_DECL. - * cplus-tree.c (assoc_value): Change recursion condition to compare - ASSOC_VALUE (assoc) against TYPE_MAIN_VARIANT (type) instead of just - against type. - -Sat Dec 8 10:40:00 1990 Tom Wood (wood at dg-rtp.dg.com) - - * m88k.md (attributes): Reorganize and include a block diagram. - Make better use of defaults. - * m88k.md (peephole), out-m88k.c, tm-m88k.h (short_branch): Add - the sparc peepholes for changing bsr/br into bsr.n/addu or - bsr.n/subu. Install the length attribute for this. Requires the - use of `def' to accomodate broken assemblers in the bsr.n/addu - case. - -Fri Dec 7 06:12:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reorg.c (find_end_label): Increment usage count of label we return - so we know it won't go away. - (dbr_schedule): Decrement count of end label and delete it if dead. - -Wed Dec 5 17:36:23 1990 Tom Wood (wood at dg-rtp.dg.com) - - * m88k.md: Add instruction attributes for scheduling and delay - slot information. - * m88k.md (addsi pattern): Adding large constants does arise. - (udivsi pattern): Wrong predicate. - * tm-m88k.h, out-m88k.c (NOTICE_UPDATE_CC): Do so using - attributes. - - * make-m88k, make-m88kdgux: Say how to create m88k-trace.asm. - -Wed Dec 5 13:52:16 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * optabs.c (expand_binop): Support insn_before == 0. - - * function.c (optimize_bit_field): Fix wrong arg to validate_change. - - * Makefile (includes): Export LIB. - -Wed Dec 5 13:31:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (try_combine): Don't discard CLOBBERs from an insn - with ASM_OPERANDS. - -Tue Dec 4 16:12:21 1990 Tom Wood (wood at dg-rtp.dg.com) - - * tm-m88k.h, out-m88k.c, m88k.md: More cleanups: introduce - POWER_OF_2 for tests (x && (x & (x-1) == 0); rename predicate - functions *_p instead of *_operand; cleanup addsi3 insns; simplify - udivsi3 insns; simplify memory shift insns; make LOW_SUM and HIGH - SImode instead of VOIDmode; add a predicate to the increment and - test peephole insn; deal with setting SFmode to zero; delete bogus - pattern for divide-by-power-of-2. - * make-m88k, make-m88kdgux: dg88k-trace.asm is now m88k-trace.asm. - Move movstr-m88k.sh to config/m88k-movstr.sh. - -Mon Dec 3 19:08:03 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * Makefile.in (gnulib2.ready): New target. - (stamp-gnulib2): Depend on that. - Avoids recompiling gnulib2 each time cc1 changes. - -Mon Dec 3 16:17:56 1990 Tom Wood (wood at dg-rtp.dg.com) - - * tm-m88kdgux.h, xm-m88kdgux.h (SEPARATE_AUX_OUTPUT): Should be in - xm-m88kdgux.h. - * tm-m88k.h, out-m88k.c, m88k.md: Eliminated the fixed literal - synthesis register. Reworked the addressing method to be like the - sparc (uses HIGH and LO_SUM). Numerous cleanups. These changes - are based on work done by Steve Chamberlain (steve@cygnus). - * tm-m88k.h, out-m88k.c (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): - Implemented. - -Mon Dec 3 15:19:04 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * cccp.c (special_symbol): Use time_t as type of t. - - * m88k-movstr.sh, m88k-trace.asm, va-m88k.h: New files. - - * gcc.c: Don't define R_OK, etc. if already defined. - - * out-sparc.c (finalize_pic, emit_move_sequence, output_arc_profiler): - Finish change to emit HIGH and LO_SUM as Pmode instead of VOIDmode. - -Sun Dec 2 22:13:53 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * config.gcc (tower): New alternative. - (mips-news): Adapt for version 2. - - * tm-tower.h, tm-tower-as.h, xm-tower.h: New files. - -Sun Dec 2 17:47:28 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reload1.c (eliminate_regs, case ASM_OPERANDS): Fix typo in testing - for changed vector. - - * out-rs6000.c (output_epilogue): Fix typo restoring general registers. - (print_operand): Add new option %H. - * rs6000.md: Add (clobber (reg:SI 64)) to many patterns even though - they don't clobber MQ to allow combining to work well. This will be - removed once combine knows how to add clobbers when required. - Change patterns to reflect new canonicalization rules. - Where we have (and (xshift)), add patterns for (zero_extend (xshift)). - (andsi3, xorsi3): Fix bug in case where two insns are needed. - (moveti): Don't call change_address when in reload. - (sign_extend): Add patterns for sign extend preceeded or followed by - one of the shifts it will do. Use %H to output the merged shift. - - * out-romp.c (print_operand): Allow exact_log2 result to be zero. - * romp.md: Likewise. - * tm-romp.h (CONST_OK_FOR_LETTER): Likewise. - - * a29k.md (type attribute): Add types for floating-point insns. - (in_delay_slot attribute): Update to allow for new types. - (function_unit definitions): Add definitions for floating-point units. - (andcb*3): Delete obsolete names. - (convert insn): Use register_operand instead of gen_reg_operand for - floating-point operand. - (cpeq, feq, deq, etc): New patterns. - (floating-point arithmetic): Add support for 29050 insns and - accumulators; indicate function unit usage. - (ior/and patterns): Put NOT as second operand. - (orn insn): New, for 29050. - (load patterns): If using match_operator, make it the highest operand - number. - (loadm insns): Add workaround for rev A1 bug on 29050. - (negsf2, negdf2): Don't use XOR to negate on 29050. - (movsf, movdf): Add support for accumulators on 29050. - (movsi, movhi, movqi): No need to support special->special copies. - Support consthz insn on 29050. - (compare, scc, and branch insns): Rework to not use cc0. Use a pseudo - register instead. Compare doesn't generate any code, but merely - saves the operands. scc and branch then emit the appropriate compare - and jump (if branch) insns. - (tstsi): Delete pattern; not used when no cc0. - (peepholes): Remove peepholes to convert jumps to scc insns; now - done in jump.c. - * out-a29k.c (a29k_compare_*): New variables. - (long_const_operand): Anything with low-order 16 bits zero is not a - long constant on the 29050. - (accum_reg_operand): New function. - (gen_reg_operand): Returns false for accumulator registers. - (output_operand): Allow accumulators. - (ne_comparison_p, fp_comparison_p, return_peep_operand): Deleted. - (fp_comparison_operator, branch_operator): New functions. - (output_compare): Deleted. - (print_operand): Change meaning of %b and %B. - Add new code %J. - * tm-a29k.h (TARGET_VERSION): Say if compiling for 29050. - (TARGET_FLAGS): Add -29000 to turn off support for 29050; this is - still the default. - (various register macros): Add support for the floating-point - accumulators on the 29050. - (CONST_OK_FOR_LETTER): Use 'O' for a constant that can be set using - conthz on the 29050; keep old definition for 29000. - (STORE_FLAG_VALUE): Now 0x80000000. - (ASM_FILE_START): Write ".cputype 29050" when compiling for 29050. - - * combine.c (subst): Put NOT, NEG, MULT, PLUS, and MINUS as the - first operand of commutative operations. Note that NOT used to be - put as the second operand but it has always been assumed that - MULT would be the first operand in address expressions, so we have - to change the previous canonicalization. This is possible now that we - have eliminated the andcbm3 operations. - * i860.md (andnot): Remove obsolete andcbsi3 name and place NOT - as first operand. - * m68k.md (fpm*): Delete patterns with MULT as second operand and - use "@" construct when possible. - * m88k.md (and.c, ior.c): Remove obsolete andcbsi3 and iorcbsi3 names. - Delete patterns with NOT as second operand. - (xor.c): Rewrite in new canonical form. - * mips.md (nor): Rewrite in new canonical form. - * pyr.md (bicw): Remove pattern with NOT as first operand, removing - obsolete name andcbsi3 in the process. - * sparc.md: Remove patterns with NOT as first operand. - Remove obsolete names andcbsi3, iorcb3, and xorcbsi3. - Rewrite xnor into new canonicalized form. - Add mode to HIGH and LO_SUM operations. - * vax.md (bic*): Remove obsolete andcbm3 names. - Put NOT as first operand when both generating and recognizing RTL. - (jlbc): Rewrite with NOT as first operand. - -Sun Dec 2 17:08:16 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * m68k.md (recognizer for casesi_2): Handle ASM_RETURN_CASE_JUMP. - - * stddef.h (ptrdiff_t): Prevent definition, as with size_t. - -Sat Dec 1 16:31:30 1990 Ron Guilmette (rfg at ncd.com) - - * dwarfout.c (lookup_filename, dwarfout_finalize): changed from - maintaining a linked list of filename entries to maintaining an - (expandable) array of filename entries instead. Also, changed - code so that *all* filename strings are output (to the .files - section of the asm file) in one swell foop just as the asm file is - being finalized rather than writing out new filenames one-by-one - as they arise (as previously). This circumvents a problem caused - by rfg's naive assumption that assemblers kept a stack of prior - section names (of depth > 1) which could be successively popped - via multiple `previous' directives. For some assemblers, the - depth of the stack is only 1 and they can get confused if you do - two (or more) `previous' directives in a row. Anyway, it is no - longer either necessary or useful to do that, so who cares. - - * dwarfout.c: added code to output newlines to the asm file just - prior to each and every change of section (for better readability - of the asm files). - - * dwarfout.c: changed code so that if DWARF_DESCRIBE_USED_EXTERNS - is defined, it forces DWARF_LOCATION_ATTRIBUTES to also be defined. - - * dwarfout.c: changed code so that if DWARF_LOCATION_ATTRIBUTES - is defined, it forces DWARF_DESCRIBE_FILES to be defined (to `1'). - - * dwarfout.c: changed code so that if DWARF_DESCRIBE_FILES is not - already defined (in the user's tm.h file) it will automatically be - defined (by default) to `1'. Also changed all instances of - `#ifdef DWARF_DESCRIBE_FILES' to `#if DWARF_DESCRIBE_FILES'. - The user must now intentionally *disable* this feature (by - defining DWARF_DESCRIBE_FILES to `0' in his tm.h file) if he - wishes to have the additional information about files suppressed. - - * dwarfout.c: changed comments relating to optional defines for - extended GNU DWARF features to include more information and to - add some additional clarity. - -Sat Dec 1 16:00:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (subst): Call reverse_condition instead of - reverse_comparison. - We are allowed to reverse floating-point EQ and NE comparisons. - - * combine.c (subst): Call simplify_and_const_int for all AND - and ZERO_EXTEND cases and all cases where we make one of them. - Remove all other code in AND and ZERO_EXTEND cases. - (simplify_and_const_int): Rewritten to follow a consistent model - of tracking what AND's need to be done and which bits are not - significant. Consistently try a ZERO_EXTEND for all cases where - the result is an AND with a mode-wide mask. Move all remaining - cases from AND any ZERO_EXTEND cases from subst. - -Sat Dec 1 09:13:17 1990 Michael Tiemann (tiemann at cygnus.com) - - * cplus-tree.h (lang_type): Remove any_assigns_this, - none_assigns_this from type_flags. - * cplus-decl2.c (get_temp_name): If the initializer is a - pointer to zero, cache it in EMPTY_TABLE. - (finish_builtin_type): New function, to factor common code - arising from building internal structures. - * cplus-decl.c (init_decl_processing): Call it. - -Fri Nov 30 10:39:04 1990 Michael Tiemann (tiemann at cygnus.com) - - * cplus-decl.c (finish_function): Use CLASSTYPE_ASM_WRITTEN instead - of TREE_USED to indicate that we need debugging info for - TTYPE. - Note that nobody ever sets EXTENDED_DBX_DEBUG. For now, - change to test DBX_DEBUG. For later, change everything to - key off of EXTENDED_DBX_DEBUG. - Also, set `warn_return_type' to one always, since this warning - is too valuable to lose. - * cplus-tree.c (lang_output_debug_info): Don't test TREE_USED. That - field is already used by other routines, and we have all we need now - in CLASSTYPE_ASM_WRITTEN. - * cplus-dbxout.c (dbxout_type_method_1): Handle const, - volatile, and const/volatile member functions. - -Fri Nov 30 04:51:46 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (reg_last_set_value): New variable. - (combine_instructions): Allocate and initialize it. - (record_dead_and_set_regs): Set reg_last_value to source - of assignment; clear it for a CLOBBER or partial assignment. - (subst): Use reg_last_set_value instead of interpreting the - insn in reg_last_set as if it was a single SET. - - * combine.c (gen_lowpart_for_combine): Call gen_lowpart for CONST_INT. - When making a new MEM, copy MEM_VOLATILE_P and MEM_IN_STRUCT_P. - If cannot recognize the argument, just form a SUBREG; usually, - it won't be recognized, but sometimes will allow further - simplifications. - - * regclass.c (reg_scan): Save size of uid map; reallocate if - we have more registers than we allocated. - Leave some extra room in map. - - * stmt.c (emit_case_nodes): Supply missing argument to emit_cmp_insn. - - * fold-const.c (decode_field_reference): Add missing arg declaration. - - * expmed.c (store_bit_field): Add missing last argument to - recursive call. - - * cse.c (cse_insn): Remove extra arg passed to rtx_equal_p. - - * Makefile.in (proto): Make protoize.1 and unprotoize.1. - (protoize.1, unprotoize.1): New targets. - (install_man): Install protoize.1 and unprotoize.1./ - * proto-unproto.1: New file. - - * loop.c (scan_loop): Properly set SET_SRC in movables entry for - MOVE_INSN == 1 and CONSEC > 0 case. - (force_movables): Don't look at SET_SRC when CONSEC > 0. - - * expr.c (expand_expr, case ARRAY_REF): Ensure TYPE_POINTER_TO - gets initialized after we build a variant type. - -Fri Nov 30 00:35:06 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * m68k.md (ashr of 16 to 24 bits): Use extl, not extw. - -Thu Nov 29 21:41:03 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * tm-vax.h (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): New macros. - - * gcc.c (add_prefix): Add new element, don't replace old first elt. - - * dwarfout.c (dwarfout_finalize): Go to DEBUG_SECTION first thing. - -Thu Nov 29 17:50:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu) - - * stmt.c (expand_end_loop): Stop looking for branch to the loop - exit when we hit a NOTE_INSN_BLOCK_{BEG,END}. - * jump.c (duplicate_loop_exit_test): Likewise. - Also, only copy line-number notes. - - * integrate.c (expand_inline_function): Call expand_expr for the - arguments before allocating maps that are based on register numbers. - - * loop.c (loop_reg_used_before_p): Accept new argument, SET, to - indicate which part of INSN is setting the relevant register. - (scan_loop): Pass new arg to loop_reg_used_before_p. - - * function.c (optimize_bit_field): Don't assume ZERO_EXTRACT can - be replaced by MEM; use validate_change to check. - - * reload.c (find_reloads_toplev): Add missing arg to recursive call. - - * calls.c (expand_call): Correct two cases of missing mode to gen_rtx. - -Thu Nov 29 02:42:35 1990 Michael Tiemann (tiemann at cygnus.com) - - * version.c: Bump version number to 1.90.04. - - * toplev.c (rest_of_compilation): If FLAG_PIC is nonzero, emit any - special PIC code once we start really compiling a function (i.e., we - are not in an inline function). Inline functions cannot - meaningfully hold PIC code because there is no notion of position - independence in code that isn't really being written down. - - * Makefile.in: Don't build cplus-cadillac.o by default. Build - cplus-edsel.o instead. Until Lucid frees their programming - environment, their Cadillac will always be an Edsel to GNUsers. - - * stmt.c (fixup_gotos): Change loop to run in two passes so that - cleanups don't experience a race condition. - (expand_cleanups): Replace Nov 5 word-around with consistency check. - The same cleanups should never be run twice. - - * cplus-decl.c (lang_{init,finish}): Move these functions... - cplus-lex.c: ...to here. Also, make change to lang_init analogous - to Nov 27 change for C compiler. - - * cplus-decl.c (pushdecl): Don't warn about static/extern conflicts - if X is a TYPE_DECL. - (build_enumerator): Certain CONST_INT nodes cannot be coopted to be - the constant for enumerator. Mark them as non-shareable and don't - coopt them. - - * cplus-decl.c (lang_{init,finish}): Declare these to be void - functions to match new tree.h. - -Wed Nov 28 18:48:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reload1.c (eliminate_regs): Convert (subreg (mem)) to (mem) when - not a paradoxical SUBREG. - -Wed Nov 28 17:15:43 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * emit-rtl.c (gen_label_rtx): Clear LABEL_NAME via gen_rtx. - -Tue Nov 27 21:54:15 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * varasm.c (assemble_external): Never write a .extern for a static - name. - - * recog.c (validate_replace_rtx_1): Handle making a SUBREG of a MEM - by trying a new MEM. - -Tue Nov 27 11:54:28 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-lang.c, objc-action.c: Include input.h. - (lang_init): Call check_newline here. - * toplev.c (compile_file): Not here. - Call lang_init after setting input_filename. - - * tree.h: Declare numerous functions that the front end must provide. - - * rtl.h (LABEL_REFS): Use operand 5, same as LABEL_NUSES. - - * toplev.c (warn_return_type, W_options): Handle -Wreturn-type here. - * c-decl.c: Not here. - * flags.h: Declare it here, not in c-tree.h. - - * gcc.c (pexecute): Wait and retry if fork fails. - - * expr.c (do_jump): Pass all args to get_inner_reference. - (expand_assignment): Fix typo in arg to get_inner_reference. - - * tm-hp9k320.h (STANDARD_STARTFILE_PREFIX): Don't alter if already set. - -Mon Nov 26 18:28:51 1990 Michael I Bushnell (mib at churchy.ai.mit.edu) - - * cccp.c (handle_directive): Do backslash-newlines inside of - strings. - -Mon Nov 26 15:39:29 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * cccp.c (main): Handle -w. - (warning): Do nothing if -w. - * gcc.c (compilers): Pass -w to cpp. - - * c-decl.c (grokdeclarator): Don't discard arg types - for prototype even if traditional. - -Sun Nov 25 20:52:31 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * protoize.c: Undef CHAR_BIT, etc, before including limits.h. - - * reload1.c (old_asm_operands_vec, new_asm_operands_vec): - Type should point to a vector. - (Eliminate_regs): For asm_operands, copy the vector properly. - -Sun Nov 25 20:35:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu) - - * jump.c (jump_optimize): Fix typo in stack push combining code. - - * reload1.c (eliminate_regs): Ensure we share operands 3 and 4 - of ASM_OPERANDS operations if they were originally shared. - Copy all rtx flags when making a new MEM. - (eliminate_regs_in_insn): Initialize for ASM_OPERANDS sharing check. - -Sun Nov 25 16:37:10 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * Makefile.in (stamp-gnulib2): Don't depend on gnulib2-indirect. - - * gcc.c (do_spec_1): Handle %W{...}. - (default_compilers): Use %W{...} when passing -o option. - -Sat Nov 24 16:39:56 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * cplus-lex.c (init_lex, do_pending_inlines, reinit_lang_specific): - Add conditionals for __GNU_LIBRARY__. - -Thu Nov 22 13:48:06 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * fold-const.c (optimize_bit_field_compare): Pass additional - arg to get_inner_reference; it gets set if something was volatile. - (decode_field_reference): New arg PVOLATILEP; passed to - get_inner_reference. - (merge_component_references): Add pointer to place to store if - something is volatile to calls to decode_field_reference; don't - do anything if it gets set (this may be very conservative). - - * stmt.c (expand_end_loop): Skip initial CODE_LABEL at start of - loop when looking for qualified conditional exit. - - * reload.c (push_reload): If (subreg:M1 (reg:M2 ....)) and we - have trouble access the register in M1, reload the reg, not subreg. - Fix typo in testing for memory. - (reload): Force reload of the operand in the above cases. - -Wed Nov 21 17:39:42 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * loop.c (strength_reduce, combine_givs): Don't penalize - non-replaceable givs unless they are user variables; temporaries - are probably dead even though we can't prove it. - - * integrate.c (save_constants): Don't get confused by looking - inside CONST_DOUBLE_MEM. - Call recursively on what get_pool_constant returned, in case it - was itself the address of a pool constant. - (copy_for_inline, copy_rtx_and_substitute, restore_constants): - Remake CONST_DOUBLE so it gets chained in correctly and we don't use - obsolete CONST_DOUBLE_MEM values. Call recusively on operand we are - about to pass to force_const_mem; it might have been a case of a - constant value being an address of another constant. - - * loop.c (find_mem_givs): Don't make a DEST_ADDR giv with mult_val == 1 - and add_val == 0. - (maybe_eliminate_biv_1): Turn off elimination in (compare biv1 biv2) - cases; they have problems. - -Wed Nov 21 16:06:14 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * dwarfout.c (location_attribute): Offset for bitfields is special. - - * expr.c (get_inner_reference): New arg pvolatilep. - (expand_expr, expand_assignment): Use to set MEM_VOLATILE_P. - -Wed Nov 21 10:34:25 1990 Tom Wood (wood at dg-rtp.dg.com) - - * stor-layout.c (layout_decl): Record whether a FIELD_DECL is a - bit-field and if so its original type. - * tree.h (DECL_BIT_FIELD_TYPE): New. - * dbxout.c (dbxout_type): Use DECL_BIT_FIELD_TYPE. - * dwarfout.c (output_member_die, bit_offset_attribute, - bit_size_attribute, member_declared_type): Use DECL_BIT_FIELD_TYPE. - * sdbout.c (sdbout_one_type): Use DECL_BIT_FIELD_TYPE. - - * sdbout.c (DEBUGGER_ARG_OFFSET, DEBUGGER_AUTO_OFFSET): New - interfaces to compute the location of arguments and automatic - variables. - * dbxout.c (DEBUGGER_ARG_OFFSET, DEBUGGER_AUTO_OFFSET): Likewise. - - * dbxout.c (dbxout_parms): Describe a parameter passed in - registers but living on the stack as N_PSYM rather than N_LSYM. - These are typically arg_pointer based locations. - - * out-m88k.c (m88k_debugger_offset): New function. - * tm-m88k.h (DEBUGGER_ARG_OFFSET, DEBUGGER_AUTO_OFFSET): Replaces - SDB_AUTO_NORMALIZE_OFFSET. - * tm-m88k.h (STACK_BOUNDARY): Update to 16 byte aligned stacks. - -Tue Nov 20 23:48:57 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * dwarfout.c (dwarfout_init): Set stack depth to 1 at start. - (output_padded_null_die): New function. - (dwarfout_finalize): Use that to ensure length divisible by 4. - - * ns32k.md (addsi3): Don't use `addr' for very large displacements. - -Tue Nov 20 05:48:42 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * jump.c (can_reverse_comparison_p): It is safe to reverse an EQ - or NE comparison, even if IEEE floating-point. - - * integrate.h (struct inline_remap): const_*_map now maps registers - in calling function, not called function. - Add fields to save values recorded from SETs. - * integrate.c: Now includes insn-config.h and real.h. - (expand_inline_function): New meaning for const_*_map. - Don't fill in constant equivalences here; now done in try_constants. - Show CALL_INSNs potentialy clobber all hard registers since we - now record equivalences for hard registers. - (try_constants): No longer need original RTL; all callers changed. - Call note_stores to kill any known equivalences for registers changed. - Record equivalences for PC, CC0, and registers set by this insn. - (subst_constants): No longer need original RTL; all callers changed. - Reflect new meaning of const_*_map. - Perform more extensive constant folding, basically a subset of - fold_rtx in cse.c; specifically, fold the result of comparison - operations and IF_THEN_ELSE operations. - Record the constant equivalences of SETs, if any. - (try_fold_condition, const_equiv, fold_out_const_cc0): Deleted. - * Makefile.in (integrate.o): Now includes insn-config.h and real.h. - -Sat Nov 17 07:48:45 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * local-alloc.c (local_alloc): Don't allocate a reg that wants a - class that has only one register; let global-alloc do it so that it - can be given a GENERAL_REG if reload needs a spill reg of that class. - - * regclass.c (regclass, reg_class_record): Count savings in loops as - being greater the same way we adjust reg_n_refs for loops in flow.c. - - * expmed.c (store_bit_field, extract_bit_field): Remove change of - Oct 16; it causes problems with long long bit fields. - - * rtlanal.c (reg_overlap_mentioned_p): If called with a constant, - return zero. If called with a MEM, return 1 iff the second arg - contains a MEM. - * reload.c (push_reload): Call reg_overlap_mentioned_p only if OUT - is a MEM and then pass it the address of OUT. - - * cse.c (cse_insn): Refine when SRC_EQV, SRC, and DEST are added - to the hash table. SRC_EQV is not added to the hash table if it - is volatile or equal to DEST and similarly for SRC. DEST is not - added to the hash table unless either SRC_EQV or SRC is. - -Thu Nov 15 23:43:20 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-typeck.c (convert_for_assignment): Change warning message. - -Thu Nov 15 18:44:49 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * stmt.c (expand_end_loop): Generalize code to look for more - than one branch to the exit and include unconditional branches - to the exit; move the whole range to the end of the loop. - * jump.c (duplicate_loop_exit_test): New function. - (jump_optimize): Call it. - Don't allocate jump_chain until we have finished deleting dead code. - Leave some more room in jump_chain. - (simplejump_p): Reject if not JUMP_INSN. - (delete_insn): If simplejump_p, remove from jump chain. - * loop.c (loop_skip_over): Deleted. - (scan_loop): No longer call it. - * cse.c (predecide_loop_entry): Deleted. - (cse_basic_block): No longer call it. - -Thu Nov 15 18:00:20 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * math-68881.h (HUGE_VAL): Add extra braces for Sun. - - * stor-layout.c (layout_type): Don't let array have less - alignment than its mode calls for. - -Thu Nov 15 13:05:30 1990 Tom Wood (wood at dg-rtp.dg.com) - - * sdbout.c (sdbout_parms, sdbout_reg_parms): Reimplemented based - on dbxout_parms and dbxout_reg_parms. - -Wed Nov 14 08:48:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * emit-rtl.c (emit_...): All of these now return the last insn - emitted; previously some of them returned void. - (emit_barrier_before): New function, similar to others. - * rtl.h: All emit_... functions now return an rtx; reorder so - declarations are in the same order as definitions in emit-rtl.c. - - * reorg.c (steal_delay_list_from_{target,fallthrough}): Add missing - test when checking candidate insn for resource conflicts. - -Wed Nov 14 07:08:19 1990 Tom Wood (wood at dg-rtp.dg.com) - - * c-parse.y (pushlevel, compstmt): Place a line note at the first - token beginning a block and at the close brace ending a block. - These are the conventional locations for SDB and DWARF debugging - information. - -Tue Nov 13 18:16:47 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * function.c (assign_stack_local): If alignment not specified - and not BLKmode, use at least word alignment. - (assign_outer_stack_local): Likewise. - - * sparc.md: Turn off patterns that specify no_ov or CC_NO_OVERFLOW. - - * dwarfout.c (file_attribute): Fix arg to ASM_OUTPUT_DWARF_ATTRIBUTE. - (AT_line, AT_file): New definitions. - - * out-i860.c (output_block_move): Move .Lm%3 down one insn. - - * c-decl.c (grokdeclarator): -funsigned-bit-field doesn't affect enums. - -Tue Nov 13 09:28:27 1990 Tom Wood (wood at dg-rtp.dg.com) - - * gcc.c (default_compilers): Report an error if -C is used without - -E. Pass -H to cpp. - - * sdbout.c (plain_type, plain_type1): save and output the - rightmost array dimensions. - - * syms.h (enum sdb_type): Add T_VOID, equal in value to T_ARG. - * sdbout.c (plain_type_1): Use T_VOID for VOID_TYPE and define it - to be T_INT if not present in . - - * sdbout.c (sdbout_toplevel_data): Use abort rather than fatal. - -Mon Nov 12 08:49:33 1990 Michael Tiemann (tiemann at cygnus.com) - - * expr.c (compare): Fix use of GET_MODE_CLASS so we don't abort if - MODE is VOIDmode. - * optabs.c (init_optab): Call `xmalloc' instead of `malloc'. - - * out-sparc.c (hard_regno_mode_ok): Change initialization of array - to match behavior of Nov 11 change for complex modes. - - * jump.c (delete_labelref_insn): Chase all LOG_LINKS of insn to try - to delete references to LABEL. This is needed for machines like - SPARC which use multiple insns to get the value of LABEL into a - register. - -Mon Nov 12 16:07:27 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * machmode.def (SCmode, ...): Class is MODE_COMPLEX_FLOAT. - -Sun Nov 11 00:27:34 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * tm-i860.h (HARD_REGNO_MODE_OK): Handle values more than 2 regs long. - * tm-m68k.h (HARD_REGNO_MODE_OK): Likewise, for d7/a0 boundary. - * tm-spur.h (HARD_REGNO_MODE_OK): Likewise, for 31/32 boundary. - * tm-*.h (HARD_REGNO_NREGS): Use GET_MODE_NUNITS to handle - complex values in fp registers on machines where one reg holds a DF. - - * sdbout.c (sdbout_one_type): Do nothing for incomplete type. - - * c-decl.c (duplicate_decls): Warning only when redefining built-in fn. - - * c-decl.c (init_decl_processing): Use sizetype, not unsigned long, - in prototypes for memcpy and memcmp. - - * c-parse.y (component_decl): Don't read the semicolon here. - - * toplev.c (compile_file): Reverse top-level decls before output. - -Sat Nov 10 22:27:47 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * stor-layout.c (layout_type): Use MODE_COMPLEX_{INT,FLOAT}. - -Sat Nov 10 20:34:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reload.c: Provide a default definition of REGISTER_MOVE_COST. - -Sat Nov 10 01:43:09 1990 Michael Tiemann (tiemann at cygnus.com) - - * cplus-init.c (emit_base_init): Don't use CLASSTYPE_ASSOC as a list - of only immediate basetypes anymore. Use `get_base_distance' to - check whether a type is an immediate basetype or not. - - * stmt.c (expand_return): Don't emit a USE if VAL is a - pseudo-register. - - * integrate.c (function_cannot_inline_p): Call to strcmp for - "__builtin_va_alist" must use IDENTIFIER_POINTER not - DECL_NAME. - - * genattrtab.c (check_attr_test): Use XSTR macro instead of - XEXP macro in places where strings are used. - - * tree.c (type_hash_lookup): Have to check TYPE_DOMAIN for non-zero - before comparing the equality of the possible lists. - - * cplus-typeck.c (build_c_cast): Check TREE_TYPE before checking - that the TREE_TYPE is an OFFSET_TYPE. - - * cplus-typeck.c (c_expand_return): Use DECL_RESULT of - current_function_decl instead of `result' since `result' might be - set to zero. - - * cplus-decl.c (xref_tag): Fixed typo in setting - TYPE_USES_COMPLEX_INHERITANCE. - - * cplus-tree.c (assoc_value): Changed interface to take COPYING - parameter. - * cplus-{class,init,search,tree}.c All callers changed. - - * cplus-typeck.c (build_c_cast): Resolve OFFSET_REFs if the type we - are converting to is not an OFFSET_TYPE. - -Thu Nov 8 15:26:27 1990 Craig Burley (burley at pogo.ai.mit.edu) - - * tm-*.h: Try to change HARD_REGNO_NREGS, HARD_REGNO_OK, and other - macro defs to handle new complex type stuff. Mostly guesswork; needs - checking by people who really know each machine. - * machmode.def (SCmode, DCmode, XCmode, TCmode): New complex modes. - * machmode.h (GET_MODE_ALIGNMENT): New macro from stor-layout.c. - * tree.c (build_complex_type): New function. - * stor-layout.c (layout_type): Handle COMPLEX_TYPE. - * expr.c (compare1, compare, move_block_to_reg, emit_push_insn): - Change uses of GET_MODE_CLASS. - * optabs.c (expand_binop, expand_twoval_binop, expand_unop): - (emit_cmp_insn): Likewise. - -Thu Nov 8 06:19:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * local-alloc.c (no_conflict_p): Initialize *WHERE_DEAD; previously - uninitialized. - -Thu Nov 8 01:08:45 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-parse.y (yylex): Size of wide STRING_CST counted terminator wrong. - -Wed Nov 7 14:55:38 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * gnulib2.c (L_trampoline): Put it inside a dummy function. - - * enquire.c: Renamed from hard-params.c; new vers from steven@cwi.nl. - Modified to undef CHAR_BIT, etc. if defined in stdio.h. - * Makefile.in (enquire): Targets renamed. - (enquire.o): Define NO_MEM. - -Wed Nov 7 14:18:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * jump.c (invert_jump): If it is going to fail (i.e., redirect_jump - fails), don't invert the jump. - - * expr.c (expand_expr, case COND_EXPR): Don't accept a hard register - as a target if we are going to store into it before testing the - condition because that evaluation may involve a subroutine call - which might clobber it. - - * jump.c (delete_jump): reg_set_p should be called with PATTERN (insn). - (thread_jumps): Add omitted last argument to rtx_equal_for_thread_p. - - * reload.c (find_reloads): Only skip insns which set one hard register - to another if the cost of doing so is low; if not, there may not be - a single insn to do the copy and we may need a reload register. - -Wed Nov 7 00:01:18 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-parse.y (component_decl_list): Allow missing semi at end. - - * loop.c (move_movables): When moving and deleting library call, - don't be confused if an insn is deleted. - -Tue Nov 6 20:49:57 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * tm-m68k.h (TRANSFER_TO_TRAMPOLINE): Fix asm syntax. - - * xm-iris.h (alloca): Delete redundant definition. - * tm-iris.h (CPP_SPEC): Define variant symbols starting with _. - Define __EXTENSIONS__. - - * config.gcc (editing .gdbinit): Search current dir, not just srcdir. - -Tue Nov 6 22:24:09 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (expand_expr, case COND_EXPR): Generate efficient code for - A ? A : FOO and similar. - - * combine.c (subst): If we have, e.g., (lt CONST FOO), convert it - to (gt FOO CONST). - - * recog.c (comparison_operand): Use comparison_code_p. - - * genconfig.c (walk_insn_part): Add operand to indicate if PART is - going to be used to recognize an insn (as opposed to emitting rtl). - If not, ignore CC0. - (gen_insn, gen_expand, gen_split, gen_peephole): Add new operand to - walk_insn_part calls. - - * cse.c (find_comparison_args): Correctly compute rtx_code of - comparison; if we find another comparison code inside, use it. - * loop.c (get_condition): Likewise. - - * expr.c (expand_builtin): For ffs, don't pass VOIDmode to expand_unop. - -Mon Nov 5 12:55:00 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * final.c (output_addr_const): Don't print parens for CONST. - - * reload1.c (choose_reload_regs): Handle case where find_equiv_reg - returns a SUBREG. Also, use variable `regno' uniformly throughout - code that finds equivalent register. - - * gnulib2.c (__floatdisf, __fixunssfsi): New functions. - (__fixsfdi, __fixunssfdi): New functions. - * gnulib.c (__floatsisf, __fixsfsi): New functions. - -Mon Nov 5 06:37:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * fold-const.c (fold, case EQ_EXPR and NE_EXPR): Convert, e.g., - (A & 2) == 2 to (A & 2) != 0. This eliminates the need for these - patterns in MD files. - Detect more general cases of comparing something with itself. - -Mon Nov 5 00:09:55 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * stmt.c (expand_cleanups): Don't run any cleanup twice. - -Sun Nov 4 23:49:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (convert_move): Use emit_no_conflict_block when converting - SImode to DImode. - If have slt insn, emit a compare insn; we must not have a use of - cc0 without a set; normally, the compare will be deleted as - redundant in final.c. - Use shift rather than clear/test/negate for high-order word when - doing sign extension. - - * optabs.c (emit_no_conflict_block): Don't put REG_NO_CONFLICT - notes on the trailing copy insn; nobody looks there. - - * combine.c (try_combine): Don't combine a reg-reg copy if the - destination is used in a REG_NO_CONFLICT note. - - * reload.c (find_equiv_reg): Use true_regnum to support SUBREGs - as well as REGs. - -Sun Nov 4 12:55:03 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * i386.md (extend*): Take out last change. - Unix assembler rejects movsx... - - * expr.c (expand_expr): Special case for ignored volatile - failed to return. - -Sat Nov 3 14:42:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (do_jump, case PLUS_EXPR): Turn off this case; it was a - pessimization. - -Fri Nov 2 01:51:31 1990 Michael Tiemann (tiemann at cygnus.com) - - * stmt.c (expand_return): Don't emit a USE if VAL is a - pseudo-register. - -Fri Nov 2 15:30:48 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * gnulib2.c (__builtin_saveregs): Add version for i860. - - * out-i860.c (output_block_move): Rearrange the copy loop. - Now uses two labels and a more complicated lead-in. - -Fri Nov 2 14:17:24 1990 Tom Wood (wood at dg-rtp.dg.com) - - * m88k.md (extendsidi2): New define_expand. - - * out-m88k.c: Converted various constructs to use conventinal - formatting. - - * m88k.md (ext pattern): Must have parens. - * m88k.md (mul/div patterns): Added better documentation. Removed - unfounded restriction on immediate values. - * m88k.md (increment and test peephole): Don't use %L. - - * out-m88k.c (m88k_layout_frame): Must allocate space for the - addressing base register (-mpic). - * out-m88k.c (output_tdesc): Use version 2 tdesc with PIC. - - * tm-m88k.h, tm-m88kdgux.h,: Don't predefine memcpy and others. - * tm-m88k.h: Fixes for dwarf. - * tm-m88ksvr4.h: Dwarf changes. - * xm-m88k.h xm-m88kdgux.h xm-v88r32.h: Update comments. - -Fri Nov 2 12:30:15 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * jump.c (comparison_dominates_p): Return 1 if codes are the same. - (thread_jumps): Use get_label_after. - - * a29k.md (movdi): Handle CONST_INT as well as CONST_DOUBLE. - (comparisons): Fix typo in define_split for floating-point NE. - - * reorg.c (fill_slots_from_thread): Don't mark as annulled if no - delay list. - - * loop.c: Allow use of any register to store comparison results. - (loop_skip_over): Don't treat comparison specially; copy all insns - preceeding the jump. - (check_for_endtest, other_reg_use_p): Deleted. - (can_eliminate_biv_p, eliminate_biv): Deleted; code merged and - placed into new maybe_eliminate_p_1. - (may_eliminate_biv, may_eliminate_biv_1): New functions; recursively - look at all rtx to see if every occurrence of a biv can be - eliminated. - (check_eliminate_biv): Deleted; callers changed to call - may_eliminate_biv. - (get_condition): Rework to look into previous insns to find insns - that set the first operand of comparison insns. - -Thu Nov 1 22:07:42 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (fold_rtx, case COMPARE): Only convert compare to test if - HAVE_cc0 is defined. - * combine.c (subst): Copy COMPARE case from fold_rtx. - Simplify things like (ne (eq FOO BAR) (const_int 0)). - -Thu Nov 1 18:06:56 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * math-68881.h (HUGE_VAL): Alternate definition for Suns. - - * config.gcc (sun3, etc.): Assume os4 as default for Sun 3 and Sun 4. - - * tm-i386v.h (STARTFILE_SPEC, LIB_SPEC): Handle -posix. - (CPP_SPEC): New macro. - (LIB_SPEC): Handle -shlib. - - * c-decl.c (init_decl_processing): Make last arg to memcpy and memcmp - an unsigned long, to be like size_t. - - * Makefile.in (hard-params): Depend on gnulib2, not gnulib. - -Wed Oct 31 22:12:33 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * config.gcc (ultrix): New alternative. - - * i386.md (extend*): Change opcode to movsx. Was movs. - -Wed Oct 31 09:41:27 1990 Tom Wood (wood at dg-rtp.dg.com) - - * m88k.md: Deleted an old pattern for subtracting 0. - * m88k.md: Deleted patterns for aligned bit-field insns. - * m88k.md: Changed define_expand to define_insn for mulsi3 and - umulsi3. - * m88k.md: Converted various constructs to use conventional - formatting. - * m88k.md (mak patterns): Fixed transcription errors. - -Wed Oct 31 00:05:54 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-decl.c (init_decl_processing): Predefine the ordinary names - of alloca, abs, memcpy, etc. - - * c-decl.c (duplicate_decls): Allow redefining built-in as static, - but optionally warn. - -Tue Oct 30 14:39:17 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-decl.c (finish_function): Use DEFAULT_MAIN_RETURN in `main'. - * tm-vms.h (DEFAULT_MAIN_RETURN): Define this. - - * c-parse.y (yylex): Base is not 8 for just `0'. - - * cccp.c (do_define): Invert test of compare_defs. - - * cccp.c (make_definition): Convert newline to newline-newline. - - * Makefile.in (hard-params): Depend on gnulib. - - * m88k.md (divsi3): Delete declarations of gen_... functions. - -Tue Oct 30 14:26:20 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c: Rework handling of comparisons to generalize better to - machines that use registers to hold condition code information. - (prev_insn_cc0*): Just store last rtx assigned to cc0 in prev_insn_cc0. - (find_comparison_args): New function. - (fold_rtx): Folded value of cc0 is the value previously stored into it. - Rework handling of comparisons: use find_comparison_args to see what - is being compared. If they are constants, compute the result of the - comparison. If not, see if the two operands are equivalent (only for - non FP or non-IEEE FP). Then see if we have already seen a comparison - involving these operands that lets us give a value to this comparison. - True comparisons return STORE_FLAG_VALUE, not 1. - (fold_cc0): Deleted. - (predecide_loop_entry): Call cse_insn on a copy of each insn at the - loop test to propagate the values of items at the start of the loop. - Then use fold_rtx to see if we know the result of the jump. - (record_jump_equiv): Use new function find_comparison_args. - (cse_insn): Just record value of CC0 if set; don't call fold_cc0. - Don't modify PREV_INSN (insn) if INSN is a copy. - (cse_main): Initialize const_true_rtx to rtx for STORE_FLAG_VALUE. - - * jump.c (comparison_code_p, comparison_dominates_p): New functions. - (thread_jumps): Use comparison_dominates_p. - Remove debugging code. - * reorg.c (condition_dominates_p): Use new function - comparison_dominates_p. - - * emit-rtl.c (next_cc0_user): Don't get confused by being call with a - copy of an insn; use INSN_UID to check for an insn in a delay slot. - - * rtl.c (reg_note_name): Add name for new REG_LABEL note. - - * emit-rtl.c (make_insn_raw): No longer have JUMP_LABEL for INSN. - -Tue Oct 30 09:26:15 1990 Tom Wood (wood at dg-rtp.dg.com) - - * Update what strings in files edited so far. - * tm-m88k.h, tm-m88kdgux.h, tm-m88ksv4r.h: Introduce VERSION_STRING - and VERSION_INFO to more appropriately identify the compiler. - - * tm-m88k.h (ASM_OUTPUT_OPCODE): Stop processing the opcode if `%' - is encountered. - * out-m88k.c (print_operand): Add a tab to %L output. Delete - unused cases. - - * m88k.md: Rework the movstrsi pattern and provide call_block_move - and call_block_move_loop to support expand_block_move. - * out-m88k.c: Rework the block move functions. - * make-m88k, make-m88kdgux: Eliminate movstr.h. - - * m88k.md, out-m88k.c: Eliminate assembler comments. - - * m88k.md (ashlsi3 ashrsi3 lshlsi3 lshrsi3): Eliminate warnings - about out of range shifts. - - * tm-m88k.h, out-m88k.c: Rename CONDITION_CODE_REGNUM CC0_REGNUM. - -Mon Oct 29 18:06:54 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * final.c (final_end_function): Handle dwarf output. - (final_scan_insn): Likewise. - (output_source_line): Likewise, using ASM_OUTPUT_DWARF_LINE. - * toplev.c (rest_of_decl_compilation): Likewise. - (rest_of_compilation, main): Likewise. - * varasm.c (assemble_variable): Likewise. - * flags.h (enum debugger): Define DWARF_DEBUG. - - * cccp.c (do_define): Rewrite criterion for warning. - Don't warn if -D redefining symbol with constant numeric value. - - * toplev.c (output_file_directive): New function. - * sdbout.c (sdbout_filename): Deleted. - * tm-3b1.h, tm-att386.h, tm-encore.h, tm-m88k.h, - tm-mot3300.h, tm-tahoe.h, tm-vaxv.h (ASM_FILE_START): Use that. - - * c-decl.c (named_labels): No longer static. - (pushlevel): Clear named_labels. - (poplevel): Don't clear it here. - -Mon Oct 29 13:32:57 1990 Michael Tiemann (tiemann at cygnus.com) - - * Makefile.in: Update dependencies for various files, mostly cplus-* - files. - - * rtl.def: Remove Sep 26 that added JUMP_LABELs to INSN and - CALL_INSN. - * rtl.h: Add REG_LABEL register note. For INSN and CALL_INSN, the - presence of this register note has the same meaning that a non-NULL - JUMP_LABEL would have with the Sep 26 change. - * jump.c (jump_optimize): Revert to clearing JUMP_LABEL field of - JUMP_INSNs only. - (mark_jump_label): If INSN is an INSN or a CALL_INSN, add a - REG_LABEL note if a LABEL appears (and no such note already exists). - ??? Once recorded, this information appears never to be used. - - * jump.c (delete_jump): The deletion of INSN must take place when - INSN is a simple jump. Also, don't try to optimize if we come - across an insn with the reorg-generated pattern (USE (INSN ...)). - - * cplus-lex.c, cplus-dbxout.c: Remove vestigial support for dumping - and undumping the compiler. - - * Merge cplus diffs from Kenner. - * cplus-cvt.c (convert_to_integer): Fold the COND_EXPR we construct. - * cplus-typeck.c (build_conditional_expr): Ditto in three places. - * cplus-lex.c (yylex,do_pending_inlines): Add conditionals for - _IBMR2. This hair will disappear when pcccp support is merged, but - needed for now. - * cplus-tree.h: Conditionalize use of non-int bitfield types on - ONLY_INT_FIELDS. Also, remove duplication declarations of - get_temp_name, get_temp_aggr, and get_temp_regvar; add declaration - of build_decl_list. - -Mon Oct 29 11:45:03 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * fixincludes: Fix missing semi in rusers.h. - -Mon Oct 29 07:07:47 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * flow.c (mark_used_regs): When converting "...*p...; q = p + size" - to "q = p, ...*q..., q = q + size", show that Q is needed after INSN. - - * romp.md (negdi): Directly generate assembly code rather than - converting this into a MINUS. - - * fold-const.c (fold, case COND_EXPR): Add missing condition in test - for (A ? 0 : A). - -Sun Oct 28 15:01:19 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * flow.c (find_basic_blocks): An indirect jump can go - to any label whose address is used as data. - - * m68k.md (zero-extend QI): Use gen_rtx, not change_address. - - * Makefile.in (USER_H): List va-*.h explicitly. - (toplev.o): Depend on RTL_H. - (stamp-*): Depend on move-if-change. - (install-headers): Depend on various header files. - (install-man): Depend on gcc.1. - (gcc.o): Depend on gvarargs.h and obstack.h. - - * Makefile.in: Make sure every `if' has an `else'. - - * c-typeck.c (build_binary_op_nodefault): Prevent warning for - variable shift count. - - * i860.md (movsf): Handle moving from CONST_DOUBLE to reg or mem. - -Sun Oct 28 09:39:14 1990 Michael Tiemann (tiemann at cygnus.com) - - * jump.c (delete_jump): The deletion of INSN must take place when - INSN is a simple jump. Also, don't try to optimize if we come - across an insn with the reorg-generated pattern (USE (INSN ...)). - - * sparc.md, tm-sparc.h, out-sparc.c: Significantly rewritten to take - advantage of new 2.0 optimization capabilities. - * old-sparc.md, tm-old-sparc.h, out-old-sparc.c: These are copies of - the above files before the rewrite. They may be interesting for - measuring performance of old vs. new machine description idioms. - -Sun Oct 28 00:22:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * loop.c (scan_loop): Don't think that a branch to an end-test of - a containing look is actually the branch to the end-test of the - outer loop. - - * reload.c (indirect_ok): Deleted. - (find_reloads): Accept new arg IND_LEVELS instead of old IND_OK; - pass this to find_reloads_address and find_reloads_toplev. - (find_reloads_toplev): Accept IND_LEVELS and pass to - find_reloads_address. - (find_reloads_address): Accept IND_LEVELS and pass it on to - find_reloads_address_1. - When calling ourself recursively for a MEM as an address, show - one indirect level has been used. - (find_reloads_address_1): Accept IND_LEVELS and pass it to ourselves - in recursive calls and to find_reloads_address. - * reload1.c (spill_indirect_levels): New var; used to be - spill_indirect_ok. - (reload): Compute number of levels of indirection and set it into - spill_indirect_levels. - (reload, reload_as_needed): Pass spill_indirect_levels not - spill_indirect_ok. - - * reload.c (find_reloads): Make similar change to "V" as "O". - - * reload1.c (eliminate_regs): For binary operations, don't call - recursively on second arg if null (for EXPR_LIST). - (eliminate_regs_in_insn): Perform register elmination in the - REG_NOTES of an insn when we are doing it for the last time. - - * vax.md (call_value_pop): Use correct operand number for number - of bytes popped. - - * tm-romp.h (EXTRA_CONSTRAINT): Ensure we ignore reg_renumber if - register allocation hasn't been done yet. - - * function.c (init_function_start): Initialize reg_renumber to zero; - it is checked in rtx_renumbered_equal_p. - - * loop.c (loop_optimize): Ensure we assign a new LUID to all - special notes, including NOTE_INSN_FUNCTION_BEG (0). - -Sat Oct 27 12:22:46 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * out-a29k.c (print_operand, output_prolog): Don't try to fill delay - slots with parts of epilogue or prologue unless -O -fdelayed-branch. - - * tm-rs6000.h (STRUCTURE_SIZE_BOUNDARY): Should be 8. - - * reorg.c (mark_target_live_regs): Ignore REG_DEAD notes for pseudos; - they must not have gotten hard registers. - -Fri Oct 26 11:30:28 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * gcc.c (main): Set machine_suffix before reading specs file. - - * c-typeck.c (build_binary_op_nodefault): Warn for bad shift counts. - - * stor-layout.c (layout_record): - BITFIELD_NBYTES_LIMITED affects bitfields only. - - * loop.c (note_addr_stored): Don't assume PLUS in address is aggregate. - -Fri Oct 26 00:46:09 1990 Michael Tiemann (tiemann at cygnus.com) - - * cplus-tree.h: Declare `build_type_conversion' once instead of - three times. - - * loop.c (loop_skip_over): Handle machines without cc0. - (labels_in_range_p): Fixed typo where this function returned 0 when - it meant to return 1. - (check_for_endtest): New function. Returns non-zero when - argument is a simple conditional test insn (suitable for being the - endtest of a loop). - (strength_reduce): Use `check_for_endtest' to identify the endtest. - Also fixed some typos in comments. - (can_eliminate_biv): Use `check_for_endtest' here, too. - (get_condition): Generalized to handle machines without cc0. Now - THIS_CC_RTX is the value of the cc rtx. - - * integrate.c (expand_inline_function): Conditionalize away - cc0-specific code with HAVE_cc0. - (try_constants): Add appropriate declaration for ORIG. - (try_fold_condition): Generalized to work for non-cc0 condition - values. - - * cplus-type2.c (digest_init): Add missing declaration of FIELD. - * rtl.h: Add missing declaration of plus_constant_for_output. - * jump.c (can_reverse_comparison): Fixed typo. - (delete_jump): Made to work without cc0_rtx. - -Fri Oct 26 00:01:27 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reorg.c: Conditionalize references to CC0_RTX on HAVE_cc0. - - * reload.c (find_reloads): For the `o' constraint, if IND_OK is - true, use offsettable_memref_p instead of the nonstrict version. - - * jump.c (delete_jump): If HAVE_cc0 is not defined, it is not safe to - delete previous insn that sets a condition code register, because it - might not be dead. Rework to look at all registers dying in this insn - and delete the first previous insn that sets any such register if that - is all it does. - - * jump.c (jump_optimize): Remove extraneous call to next_active_insn - in optimization of "if (...) x = 1; else ...; if (x) ...". - - * cse.c (predecide_loop_entry): Don't set cc_value to null and then - stick it in the rtl. - - * rtlanal.c (find_next_ref): Deleted from here. - * explow.c: Include hard-reg-set.h for find_next_ref. - (find_next_ref): Moved to here. - * Makefile.in (explow.o): Includes hard-reg-set.h. - -Thu Oct 25 21:37:15 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * va-mips.h (va_list): Put __ in member names. - (va_dcl): Rename _va_alist to __va1_alist. - * va-i860.h (__va_struct): Put __ in member names. - * gvarargs.h, va-*.h: (__va_ellipsis): New macro. - (va_dcl): Use that. - - * c-typeck.c (convert_for_assignment): For functions, reverse the - usual criterion for warning about const vs non-const. Volatile also. - - * m88k.md, tm-m88k.h, out-m88k.c: Rewrites by wood@dg-rtp.dg.com. - * tm-m88kdgux.h, tm-v88r32.h, tm-m88ksvr4.h: New files. - * xm-m88kdgux.h, xm-v88r32.h, xm-m88ksvr4.h: New files. - * make-m88k, make-m88kdgux: New files. - * config.gcc (m88k-dgux, m88k-v88r32, m88k-svr4): New alternatives. - - * gvarargs.h, gstdarg.h: Include alternate file for m88k. - - * expr.c (expand_expr): For ARRAY_REF, preserve const and volatile. - - * expr.c (expand_builtin): Handle strcmp and memcmp with function calls - if can't be open coded. - - * function.c (expand_function_end): Round trampoline addr to init. - (round_trampoline_addr): Fix braino in alignment. - -Thu Oct 25 14:54:18 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * jump.c: Now includes insn-config.h. - (jump_optimize): inequality_comparisons_p takes only one operand again. - (can_reverse_comparison_p): Handle case where a register is used - for the condition code; if we can't easily find the COMPARE that - was used to set the register, say we can't reverse the comparison. - * Makefile.in (jump.o): Now includes insn-config.h. - - * jump.c (jump_optimize): Put back change removed on Oct 21st; - emit_store_flag has now been updated. - - * rtlanal.c (inequality_comparisons_p): Reject any ordered - comparison; we need not just reject when comparing against - cc0_rtx. - * recog.c (next_insn{,s}_test_no_inequality): inequality_comparisons_p - again has only one operand. - * genattrtab.c (cc0_rtx): No longer needed; remove change of Oct 21. - - * genconfig.c (have_cc0_flag): New variable. - (walk_insn_part): Set it when we see CC0. - (main): Write #define HAVE_cc0 when it is set. - * flow.c: Now includes insn-config.h. - * Makefile.in (flow.o): Likewise. - - * combine.c (subst): If X and FROM are the same register number, - but in different modes, force the combine not to be done. - Add missing initialization of undobuf.storage. - -Thu Oct 25 11:34:35 1990 Michael Tiemann (tiemann at cygnus.com) - - * sched.c (new_sometimes_live): Protect this function in case it is - called with (OFFSET,BIT) that evaluates to >= MAX_REGNO. - - * jump.c (sets_cc0_p): Conditionalized to abort if called when - machine does not support cc0. - - * rtlanal.c (reg_set_p): Now non-static. - * rtlanal.c (rtx_varies_p): Handle LO_SUM more accurately. - * rtlanal.c (find_next_ref): New function. Returns the insn that - next references REG after INSN, or 0 if REG is clobbered before next - referenced or it cannot easily find a reference to REG. - - * recog.c (next_insn_tests_no_inequality): Conditionalized on - HAVE_cc0. - - * rtlanal.c (inequality_comparisons_p): Takes new argument - THIS_CC0_RTX which is the rtl for the condition code value we are - concerned about testing. All callers changed. - - * flow.c (propagate_block,mark_used_regs): Conditionalize - specialized cc0 handling only if HAVE_cc0 is defined. - - * genemit.c (gen_exp): In REG case, If CC0_REGNUM is defined, - save space by using REG_CC0_RTX instead of allocating a new - (REG, mode, CC0_REGNUM) rtx if the mode is SImode. - - * final.c (output_addr_const): Handle PC for P.I.C. code generation. - Also, put parens around CONST expressions so that precedence can be - maintained. - * final.c (final_scan_insn): Don't look for redunant compares - except when HAVE_cc0 is defined. - Also, use `find_cc' to locate the rtx functioning as the - condition code register in order to perform appropriate calls - to `alter_cond'. - - * expr.c (expand_expr): Supply missing arg in calls to `store_expr'. - - * expmed.c (emit_store_flag): New argument COMPARISON is the - comparison operation whose result we store. - - * recog.c (offsettable_address_p,adj_offsettable_operand): Use - `plus_constant_for_output' instead of `plus_constant' since we - are testing conditions which rely on being able to add small - offsets to e.g. LO_SUM operands. - * explow.c (plus_constant): No special handling for LO_SUM. It is - not valid to add a constant to a term with LO_SUM, since the - constant may need to be added to the high bits that form the sum, - and those high bits are not readily available. - * explow.c (plus_constant_for_output): Same as `plus_constant' - except that we do allow adding constants to LO_SUM terms. This - function works only in special cases such as for - `adj_offsettable_operand' and `offsettable_address_p'. - - * emit-rtl.c: Declare reg_cc0_rtx which is like cc0_rtx, but - is a register instead of a special form. reg_cc0_rtx should - be used when representing the condition code register on a - machine where condition codes are only set if explicitly set. - For machines which allow arbitrary registers to be used as - condition code registers (such as the MIPS and 88k), normal - pseudo registers should be used instead. - * emit-rtl.c (next_cc0_user,prev_cc0_setter): Conditionalized - on HAVE_cc0. - * emit-rtl.c (find_cc): New function. Given INSN, returns - the rtx of what functions as the condition code register for - INSN. On machines which use cc0_rtx, this is always cc0_rtx. - On machines which have a dedicated register for cc0, this is - that register. On machines which allocate pseudos for holding - condition codes, this is the pseudo found in a REG_CC0 note. - Otherwise, this function returns 0. - * emit-rtl.c (init_emit_once): Allocate `reg_cc0_rtx' if - CC0_REGNUM is defined. - - * cse.c (make_regs_equiv): Don't consider making a reg - equivalent to another reg whose class is NO_REGS. - * cse.c (canon_reg): Don't canonicalize a register to - one whose class is NO_REGS. - * cse.c (fold_rtx): Conditionalize code for handling cc0_rtx - with HAVE_cc0. - * cse.c (predecide_loop_entry): Generalize code to use either - a register or cc0_rtx. - * cse.c (cse_insn): Conditionalize code for handling cc0_rtx - with HAVE_cc0. - - * combine.c (combine_instructions,try_combine,subst): - Conditionalize code handling cc0_rtx with HAVE_cc0. - * combine.c (simplify_set_cc0_and): Abort if HAVE_cc0 is not - defined. - * combine.c (try_distrib): Add break at end of switch cases. It is - dangerous to leave the last cases of a switch statement to fall - through since new cases added after will get fallen into. - - * recog.c (validate_change): Always succeed for an asm insn, - since recog always fails to recognize asm insns. This is - needed for virtual register instantiation in asm insns. - - * cse.c (cse_main): When following jumps, notice whether a - particular basic block causes CSE_JUMPS_ALTERED to become set. When - this happens, repeat the scan. - * cse.c (refers_to_mem_p): Changed parameter name REG to BASE, - which is more accurate. Also, taught it how to cope with - LO_SUM rtl constructs. - -Wed Oct 24 15:36:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * calls.c (store_one_arg): Accept additional arg, FNDECL. - Don't save argument area if it is within the REG_PARM_STACK_SPACE - area, but mark the area in use. - (expand_call): If ACCUMULATE_OUTGOING_ARGS and REG_PARM_STACK_SPACE, - treat the stack area for the registers as be clobbered by the called - routine (e.g., if it was compiled without -O) and save and restore - it if it was previously used for arguments in a similar manner to - the remainder of the argument area (done by store_one_arg). - - * calls.c (expand_call): Support new description macro, - STACK_PARMS_IN_REG_PARM_AREA. - * function.c (assign_parms): Likewise. - -Wed Oct 24 12:47:21 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-typeck.c (build_array_ref): Use main variant for value type. - - * genoutput.c (output_prologue): Let SEPARATE_AUX_OUTPUT - cause aux-output.c not to be included. - Makefile.in (aux-output2.c): Copy aux-output.c and then compile it. - - * reload.c (subst_reg_equivs): Treat HIGH like other constants. - - * reload.c (push_reload): When testing hard reg for validity, - test subsequent regs only against class, not for HARD_REGNO_MODE_OK. - -Tue Oct 23 22:49:33 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * cccp.c (collect_expansion): Skip ## at start after the error. - - * gcc.c (default_compilers): Handle - as suffix. - (main): Make that a special case; it matches only exactly `-'. - -Tue Oct 23 22:40:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * romp.md (store{s,h,q}i pattern): Allow "b" for clobbered pseudo - in addition to "d" in first alternative. - - * reload1.c (eliminate_regs): IF_THEN_ELSE isn't a unary operation. - -Tue Oct 23 20:35:13 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * m68k.md (zero-extend QI): When pushing, store value at 1(sp). - -Mon Oct 22 12:27:08 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * cccp.c (rescan): In the loop that handles numbers, discard \newline. - Also make `..' terminate a preprocessing number. - - * Makefile.in (tmpgnulib, stamp-gnulib2): Do `set -e'. - - * gcc.c (default_compilers): Give __GNUC__ value 2. - Don't define it for .S files. - -Mon Oct 22 07:33:42 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * optabs.c (emit_indirect_jump): New function; now checks predicate - of indirect_jump. - * stmt.c (expand_computed_goto, expand_goto): Use new function instead - of directly emitting indirect jump. - - * flow.c (mark_set_1): Make LOG_LINKS for hard registers. - * combine.c (subst): Make new macro COMBINE_RTX_EQUAL_P which - considers things equal if they are the identical RTX or the same - register with the same mode; use to see if something changed and - if we have a match. - - * cccp.c (S_ISREG): Use argument instead of global. - (main): Correct sense of S_ISREG usage. - (check_precompiled): Use S_ISREG. - - * flow.c (mark_used_regs): Don't allow reg_next_use to point to - a NOTE; either point it to replacement insn or invalidate it. - -Mon Oct 22 00:13:12 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-parse.y (xdecls): No warning unless -pedantic. - -Sun Oct 21 17:49:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * genattrtab.c (cc0_rtx): Define, referenced in rtlanal.c. - - * jump.c (jump_optimize): Remove code that depends on changes to - emit_store_flag that haven't been made yet. - - * expmed.c (extract_bit_field): Correctly check for bitfield - completely filling a mode. - - * out-romp.c (output_epilogue): Correctly write number of words of - arguments into trace table. - - * calls.c (store_one_arg): Fix error in change of Oct 19th. - - * reorg.c (mark_target_live_regs): Revert back to old behavior - of scanning all insns, even those in delay slots. - (fill_simple_delay_slots): Need only call update_block if we move - an insn across a label. - - * Makefile.in (LIBFUNCS): Use consistent naming convention for - comparison routines; gnulib.c was always correct. - - * function.c (assign_parms): Don't overwrite DECL_INCOMING_RTL when - we are called for the second time. - - * integrate.c (initialize_for_inline): Don't make a new return label - here; the maximum label number has already been computed. - (save_for_inline_copying, save_for_inline_no_copy): Do it here instead. - - * reload.c (find_reloads_address): For indirect address where the - underlying address is also invalid, ensure that we substitute into - the MEM that we will use. - -Sun Oct 21 14:12:47 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * reload.c (find_equiv_regs): Reject reg that overlaps goal. - - * expmed.c (extract_bit_field): For big fields, make sure - value really goes in the target. - - * expr.c (expand_builtin): Delete __builtin_varargs. - (EXPAND_BUILTIN_SAVEREGS): New macro says how to do __builtin_saveregs. - - * calls.c (expand_call): No "can't inline" warning if -fno-inline. - - * stddef.h: Add missing #endif. - -Sat Oct 20 14:33:14 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * function.c (round_trampoline_addr): New function. - (trampoline_address): Use that. - -Fri Oct 19 15:13:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * calls.c (store_one_arg): Don't mark stack area used until after - we have written into it; if we do it before, the restore might - clobber a function result being put into that stack area. - - * objc-actions.c (print_lang_statistics): Add empty function. - - * recog.c (inequality_comparisons_p): Deleted from here. - * rtlanal.c (inequality_comparisons_p): Moved to here; not static. - - * a29k.md (extendhisi2): Fix typo in define_split. - - * Makefile.in (integrate.o): Includes integrate.h. - (reorg.o): Includes insn-flags.h. - -Fri Oct 19 14:49:26 1990 Michael Tiemann (tiemann at cygnus.com) - - * sdbout.c (sdbout_symbol): If a variable belongs to an inline - function, the decl's rtl may not be rewritten by alter_reg. So if - we have a variable allocated to a pseudo, just get the hard register - number from `reg_renumber'. ?? But I thought that COFF was so - losing that it was decided one could not represent debug info for - inline functions in COFF. - -Fri Oct 19 13:21:25 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * fold-const.c (split_tree): Use NEGATE_EXPR to negate *conp. - -Fri Oct 19 00:15:21 1990 Michael Tiemann (tiemann at cygnus.com) - - * version.c: Bumped to 1.90.03. - - * tree.c: Added facility for gathering statistics on the number of - tree nodes allocated and the size in bytes they occupy. The - statistics are by tree_node_kind, which is almost like using the - tree code letter, but has more resolution for dealing with different - kinds of `x' nodes. The facility is enabled by compiling the - compiler with -DGATHER_STATISTICS and using the -fstats flag. - - * expr.c (do_tablejump): Emit a BARRIER after the jump that performs - the tablejump. - - * cplus-typeck.c (c_expand_return): Rewritten so that the function - value return register is not used except as a target of the function - return value. - - * cplus-tree.c (build_cplus_new): New argument WITH_CLEANUP_P - controls whether this functino should build its result with a - cleanup or not. All callers changed. - - * cplus-lex.c: File updated to latest changes to c-parse.y's lexical - analyzer. - - * cplus-except.c (cplus_expand_raise): New parameter FOR_RERAISE - is used to control whether to output extra gotos or not. When - nonzero, the compiler can avoid writing out the extra gotos that are - otherwise needed to avoid warning messages. - - * cplus-decl2.c (flag_short_double): Add support for this option. - - * cplus-decl.c (finish_function): Always cause returns to jump to - the return label. This allows -Wreturn to give meaningful error - messages. - - * jump.c (invert_exp): Make this non-static. - (jump_optimize): Reorganization and simplification of main inner - loop. Comments added explaining what the optimizers are looking - for. New optimization added that optimizes for consecutive testing - of an inequality test followed by an equality test (or vice-versa). - Changes made to accommodate reorg.c on Sparc. Code for - cross-jumping return statements was previously dead in this - function; as a result of the reorganization, it is now live. - (find_cross_jump): Added temporary variable PREV1 to hold return - value of `prev_nonnote_insn' instead of calling the function 3 times - in a row. Also changed so that USE or CLOBBERS are not cross-jumped - unless some real insns are also cross-jumped. This helps reorg. - (redirect_jump): Fixed a return that returned no value so that it - returns 1. - (rtx_renumbered_equal_p): Test that reg_renumber is nonzero before - using it. We may want to call this function earlier than by the - time that array has been initialized. - - * integrate.c (save_for_inline_{copying,nocopy}): New functions to - replace `save_for_inline'. save_for_inline_copying saves the rtl - for inline functions by copying the rtl to the - maybepermanent_obstack. It is called when the rtl of the current - function is going to be compiled immediately. - save_for_inline_nocopy takes advantage of the fact that inline - function rtl is already allocated to the maybepermanent_obstack, and - need therefore not be copied if it's not going to be modified by the - compiler (such as by `rest_of_compilation'). - ({initialize_for,finish}_inline): New helper routines for - save_for_inline_... functions. - (note_modified_parmregs): Function called by `mark_stores' to note - whether parameters are assigned to in the body of an inline - function. - New interface, integrate.h, provides declarations for functions used - by other routines that might want to copy chunks of rtl. - ({save,try}_constants): Now global (for integrate.h). - (mark_stores): Ditto. - (try_fold_condition): Ditto. - - * dbxout.c (dbxout_symbol): If a variable belongs to an inline - function, the decl's rtl may not be rewritten by alter_reg. So if - we have a variable allocated to a pseudo, just get the hard register - number from `reg_renumber'. - - * varasm.c (output_const_pool): No longer static. - (assemble_variable): Do output debugging information for global - register variables. GDB does the right thing for global register - variables. - - * toplev.c: New flag `warn_inline' for warning when a function - declared inline was not in fact inlined. Also, new flag - `flag_no_inline' which disables function inlining, but retains - other properties of inline functions (such as lazy compilation - and write-only-if-needed). - * toplev.c (compile_file): Changed logic for inline function - handling to work with `warn_inline' and `flag_no_inline'. - Also modified to call `save_for_inline_nocopy' when insns are to be - saved but not immediately compiled. - - * function.c (instantiate_decls): If instantiating a function - which was saved for inline expansion, preserve the rtl created - by the instantiation as well. - - * flags.h (flag_no_inline): New flag; if nonzero, then no - calls are inlined, regardless of their declaration. We still - save the insns for these functions in DECL_SAVED_INSNS so that - the functions need not be written if they are never called. - - * calls.c (expand_call): If `flag_no_inline' is set, don't - inline the call, regardless of whether it was declared inline - or not. - -Thu Oct 18 13:10:26 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * rtl.def (CODE_LABEL): Add new string field. - * rtl.h (LABEL_NAME): Define macro for access. - * emit-rtl.c (gen_label_rtx): Initialize it to 0. - * stmt.c (expand_label): Store proper name of label. - * final.c (final_scan_insn): Call sdbout_label. - - * tree.h (built_in_function): Add BUILT_IN_VARARGS. - * c-decl.c (init_decl_processing): Declare __builtin_varargs. - * expr.c (expand_builtin): Generate code for it. - Uses new macro EXPAND_BUILTIN_VARARGS. - - * sdbout.c (SDB_IS_FAKE): Macro deleted. - (MAKE_LINE_SAFE): New macro. - (sdbout_begin_block, sdbout_end_block, sdbout_end_function): Use it. - (sdbout_one_type): Delete spurious second arg in all callers. - (sdbout_types, sdbout_end_function): - Use sdbout_dequeue_anonymous_types. - (sdbout_label): New function. - - * expr.h (FUNCTION_ARG_BOUNDARY): Default is now PARM_BOUNDARY. - - * gvarargs.h, va-*.h (va_dcl): - Add ellipsis so current_function_varargs is set. - - * jump.c (jump_optimize): Exit push-optimize loop at end of insns. - -Thu Oct 18 07:09:06 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reorg.c: Major reorganization. Many special cases have been moved - into more general code and an overall restructuring has been done. - Numerous bugs have been fixed. Highlights: - (dbr_schedule): First make list of all insns needing filling. Then - iterate for two passes. In each pass, try two methods of filling - delay slots, then do some canonicalizations, which may create more - insns to fill. - (fill_simple_delay_slots): Now uses list of insns that need filling, - rather than making such a list. - Enhance code that finds insns when code paths merge to allow multiple - uses of the label as long as all uses are in the skipped code. - (struct resource): Notice volatile memrefs. - (stop_search_p): Allow option to continue when label is reached. - (find_end_label, make_return_insns): New functions; when we have a - filled branch that is really a RETURN, first convert it to a jump - to a return label and then later see if the insns in the delay slots - are also valid for a RETURN. - (mostly_true_jump): Test for branch to loop beginning rather than - branch at end of loop. Also, conditional return insns predict false. - (own_thread_p): New function to replace fall_through_to_p. - (try_merge_delay_insns): Only support merging insns already in an - insns delay list. - (get_branch_condition, condition_dominates_p): New functions. - (steal_delay_list_from_{target,fallthrough}): New functions to - replace steal_delay_list. - (redundant_insn_p): New function. - (update_block, mark_target_live_regs, dbr_schedule): When moving - an insn not at the front of the basic block to a delay slot, - leave a "ghost" USE so that we can track things livened and killed. - (fill_slots_from_thread): Eliminate use of static vars for number - of slots to fill and already filled. - Try to modify an insn that follows a register-register copy to use - the original register; this may create a delay-slot opportunity. - (try_hoist_target{,_1}): Deleted. - (relax_delay_slots): Rewritten to just perform canonicalizations - previously done elsewhere. No actual delay slot filling is done - here. Any new delay slots created will hopefully be filled in the - next pass around the loop in dbr_schedule. - - * expr.c (emit_push_insn): Don't try to compute a SUBREG of a - hard register in a non-integer mode when pushing a "partial" arg. - - * recog.c (validate_change, apply_change_group): After reload, ensure - that operands meet the constraints by calling constrain_operands. - (validate_replace_rtx_1): Consider two rtx equal if they refer to - the same register. - - * jump.c (jump_optimize): Extend change of Oct 16th to handle - the other usage of find_equiv_reg; remove invalid death notes there. - - * rs6000.md, tm-rs6000.h, out-rs6000.c, xm-rs6000.h, make-rs6000: - New files. - - * out-a29k.c (extract_subword): Use gen_{high,low}part from - an FP CONST_DOUBLE if host and target float formats are the same - or REAL_IS_NOT_DOUBLE. - - * out-romp.c (output_fpop, output_fpops): Provide fr0 as a scratch - register unless it is used in the insn. - - * romp.md: In combined set CC0 and move, optimize case where move - is nop. - (DF moves): Fix typo in generation of `get' insn. - Don't split if input is CONST_DOUBLE because we can't easily - generate the proper constants. - (call patterns): Copy data area address via a pseudo to allow - better CSE'ing. - - * tm-romp.h (RTX_COSTS): Memory is expensive, except for a reference - to our own data area, which is very cheap. - (ADDRESS_COST): References to the constant pool are as cheap as - register + offset, since that's what it will be. - - * emit-rtl.c (gen_{low,high}part): Can often extract word from FP - CONST_DOUBLE when host and target floating formats agree. - (add_insn_after): No longer static. - - * reload1.c (reg_equiv_memory_loc): Renamed from reg_equiv_stack_slot - and now static. - (reload): If have equivalence with constant that is not a legitimate - constant operand, force it into memory and handle this as an - equivalence to memory. - * reload.h (reg_equiv_stack_loc): Deleted. - -Wed Oct 17 20:50:58 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * gcc.c, cccp.c (main): Use TARGET_VERSION if -v. - - * expmed.c (extract_bit_field): Typo in last change. - - * Makefile.in (tmpgnulib): Support assembler files named *.asm. - - * gcc.c (do_spec_1): Null-terminate error message. - - * sdbout.c (sdbout_symbol): Handle subreg as DECL_RTL. - This happens for vars from the parms of inline functions. - * dbxout.c (dbxout_symbol): Likewise. - - * genattr.c (fancy_abort): New function, as in gen*.c. - -Wed Oct 17 14:53:48 1990 Michael I. Bushnell (mib at geech.ai.mit.edu) - - * pcp.h: New file. - - * cccp.c: Support use of precompiled files - Include "pcp.h". - (no_precomp, stringlist, stringlist_tailp): New variables. - (union hashval): New field `keydef'. - (enum nodetype): New alternative `T_PCSTRING'. - (main): Support -noprecomp. - Use write_output to write output. - (rescan): Call pcstring_used for T_PCSTRING symbols. - (do_include): New local variables pcftry, pcfname, pcf, pcfbuf, - pcfbuflimit, and pcfnum. - Check for possible use of precompiled files. - (check_precompiled): New function. - (check_preconditions): New function. - (pcfinclude): New function. - (pcstring_used): New function. - (write_output): New function. - (create_definition): New function. - (do_define): Moved most of the work into create_definition. - (dump_single_macro): New function. - (dump_all_macros): Moved most of the work into dump_single_macro. - (dump_defn_1): New argument OF. - (dump_arg_n): New argument OF. - - * cccp.c: Support generation of precompiled files - (pcp_outfile, pcp_inside_if): New variables. - (struct definition): New field `predefined'. - (main): Support -pcp. - (rescan): Don't expand macros outside #if during -pcp. - (special_symbol): Error for most special symbols during #if in -pcp. - Output precondition for T_CONST and T_SPEC_DEFINED symbols. - (eval_if_expression): Set and clear pcp_inside_if. - (do_ifxdef): Output preconditions. - -Tue Oct 16 13:22:05 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * stor-layout.c (layout_record): For PCC_BITFIELD_TYPE_MATTERS, - make it true that zero-length field affects alignment of next field. - - * rtlanal.c (get_integer_term, get_related_value): Moved from cse.c. - - * jump.c (jump_optimize): When reusing value via find_equiv_reg, - delete obsolete death note. - - * expmed.c (extract_bit_field, store_bit_field): - Handle fields wider than a word. - Restrict special case for word-sized field to aligned words. - - * expmed.c (extract_bit_field, store_bit_field): Don't let - BESTMODE be bigger than the insn can handle. - - * Makefile.in (tmpgnulib): Fix typos handling LIBFUNCS_EXTRA. - - * cccp.c (handle_directive): Turn on code to handle # LINENUM, - and move initializations past the label `old_linenum'. - - * c-decl.c (grokdeclarator): If traditional, make bitfields unsigned. - (finish_struct): Don't do that here. - - * fixincludes (CTRL): Don't put quotes around a quote. - - * stddef.h (size_t): Also inhibit if _SIZE_T_. - -Mon Oct 15 13:15:30 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-decl.c (grokdeclarator): Make flag_signed_bitfields work - for int and for typedefs. - -Sun Oct 14 21:28:32 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * flow.c (life_analysis): No hard regs for any pseudos live at setjmp. - - * c-decl.c (duplicate_decls): Don't suppress warning for fn defn - after implicit declaration, if fn has already been defined. - -Fri Oct 12 15:54:11 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-parse.y (xdecls): Allow ellipsis after parm decls. - Call c_mark_varargs. - * c-decl.c (start_function): Clear c_function_varargs. - (c_mark_varargs): New function. Set it. - (store_parm_decls): Maybe call mark_varargs. - * function.c (init_function_start): Clear current_function_varargs. - (mark_varargs): New function. Set it. - -Thu Oct 11 13:15:36 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * genattrtab.c (fancy_abort): New function, as in gen*.c. - - * expr.c (saveregs_value): New variable. - (init_expr, save_expr_status, restore_expr_status): - Init, save, restore the variable. - (expand_builtin): Don't call __builtin_saveregs twice in one function. - - * va-*.h: Rename all structure fields to start with __. - * va-pyr.h: Rename variables also. - (va_start): Delete the unmatched {. - (va_end): Now a nop. - -Wed Oct 10 22:03:20 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * va-sparc.h (__va_ctl): Rename fields to start with __. - -Tue Oct 9 12:55:48 1990 Michael Meissner (meissner at osf.org) - - * Allow configuration to specify size of a wide character. - (WCHAR_TYPE_SIZE): New parameter. - (WCHAR_UNSIGNED): New parameter, says whether type is signed. - - * c-decl.c (WCHAR_TYPE_SIZE): Define if not defined. - (WCHAR_UNSIGNED): Likewise. - (wchar_type_node, signed_wchar_type_node, unsigned_wchar_type_node): - (wchar_array_type_node): New variables. - (init_decl_processing): Init them. - * c-tree.h: Make them extern. - - * c-common.c (WCHAR_TYPE_SIZE, WCHAR_BYTES): Define them. - (combine_strings): Handle them. - * c-parse.y (init_lex, yylex): Likewise. - - * c-typeck.h (digest_init): Use wchar_type_node and - signed_wchar_type_node to get the base type of wide strings, rather - than using int and unsigned. - -Tue Oct 9 14:16:37 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * expmed.c (extract_bit_field): Typo; section for extv used extzv. - - * c-typeck.c (digest_init): Error if union has no name field. - (process_init_constructor): For union, use first named field. - - * flow.c (propagate_block): Include NOTE at end of block in scan. - - * fixincludes: Fix missing semicolon in rstat.h. - - * cccp.c (main): Record the option names used for assertions. - Call make_assertion properly. - -Tue Oct 9 06:18:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (fold_rtx): Call find_best_addr before seeing if we know - what is located at that address. - Don't try to return the contents of an ADDR_DIFF_VEC table; we have - no simple way of representing it. - (cse_insn): Detect SRC == DEST even when DEST is not the canonicalized - form of the value represented by SRC. - - * loop.c (scan_loop): Don't set THRESHOLD until LOOP_HAS_CALL - has been set. - (struct induction): Add field MEM_MODE. - (find_mem_givs, combine_givs_p): Record mode used to access memory - when making DEST_ADDR giv and use it to test validity of - derived address. - - * jump.c (delete_jump): No longer static. - (invert_jump): Allow changing RETURNs to branches and vice versa. - Now returns success/failure indication like redirect_jump. - * rtl.h (delete_jump): Define. - - * calls.c (store_one_arg): Don't expand a `partial' arg into - arg->stack and don't set arg->value to arg->stack_slot for - such args. - Clean up by breaking out common code. - -Mon Oct 8 15:09:31 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * loop.c (can_eliminate_biv_p): Insist that mult_val be positive. - - * Makefile.in (insn-*): Remove semicolon from these rules. - (INSTALL_PROGRAM, INSTALL_FILE): New variables. - (install-*): Use those variables. - (mandir): Default based on manext. - -Mon Oct 8 10:57:14 1990 Michael Tiemann (tiemann at cygnus.com) - - * stmt.c (expand_catch_default): Return 1 if EXCEPT_STACK is - nonzero. - - * c-decl.c (finish_enum): Argument to floor_log2 in - calculation of negprecision was not negated. - -Mon Oct 8 06:50:15 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * rtl.h (INSN_ANNULLED_BRANCH_P, INSN_FROM_TARGET_P): New fields. - -Sun Oct 7 23:33:24 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * tm-i386v.h (STARTFILE_SPEC): Handle -p here. - (LIB_SPEC): Not here. - -Thu Oct 4 05:06:02 1990 Michael Tiemann (tiemann at cygnus.com) - - * gcc.c (default_compilers): Define __OPTIMIZE__ for %{O*}, not just - %{O}. This permits the use of -O2, -O3, etc., with predictable - results. - - * expr.c (expand_expr): Do not build new cleanups for - TARGET_EXPRs. Their cleanups are now handled entirely by the - language-specific code that causes them to be generated. - - * function.c ({push,pop}_temp_slots): Do not change - temp_slot_level if within a sequence. GNU C++ must be able to - emit a sequence it is building anywhere at the level the sequence - was initiated. If the level is changed when building a sequence, - temporaries could be unwittingly shared. - - * cplus-tree.def: change print strings for NEW_EXPR and - CPLUS_CATCH_DECL. - - * cplus-dem.c (do_type): Support `long long' types. - - * cplus-decl.c (finish_file): No longer try to emit _init,_fini - records for GNU C++. This was supposed to help the SunOS dynamic - linker link C++ code, but it turned out not to work. - - * cplus-decl.c ({start,finish}_function): Don't emit an extra - binding contour if not in a constructor or destructor. It is not - needed, and saves writing out unneeded debugging info. - - * cplus-class.c (build_method_call): Conditionalize handling of - wrappers and operator->(); these are now only compiled if ESKIT is - #defined. - - * cplus-decl.c (define_label): Updated to treat labels in the same - new fashion that c-decl.c treats them. - - * cplus-*.c: C++ front-end files now support a generic - class-browser interface. It is up to some adventurous hacker to - implement the class browser. - - * cplus-*.c: C++ front-end files no longer #include rtl.h. - -Sun Sep 30 15:53:02 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * cccp.c (make_assertion): New function. - (main): Handle -A by calling make_assertion. - -A- gets rid of predefined macros and those specified earlier. - - * print-tree.c (print_node_brief): Declare i for printing REAL_CST. - - * recog.c (immediate_operand, nonmemory_operand): Don't accept - integer constants if caller wants a floating mode. - -Sat Sep 29 18:40:08 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * reload1.c (emit_reload_insns): Handle preserving death info - with find_equiv_reg. - - * reload.c (find_equiv_reg): Handle INSN_CLOBBERS_REGNO_P. - - * fixincludes: For link pointing outside /usr/include, - use $x rather than $dest. - - * optabs.c (expand_float, expand_fix): Use dconst1, not 1.0. - -Sat Sep 29 06:38:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * emit-rtl.c (try_split): Use emit_insn_after and delete_insn to - ensure that the correct insn chain is maintained in the presence of - SEQUENCEs; be careful if the insn being split has a following BARRIER. - * jump.c (delete_insn): Correctly update insn chain when deleting - insn following or preceeding a SEQUENCE. - -Fri Sep 28 16:07:42 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-parse.y (yylex): Use REAL_VALUE_TRUNCATE for `f' suffix. - - * fold-const.c (const_binop): Don't initialize REAL_VALUE_TYPE decls. - -Thu Sep 27 14:06:37 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * expr.c (expand_expr): Set MEM_VOLATILE_P from TREE_THIS_VOLATILE. - -Wed Sep 26 00:21:23 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * tm-mips-news.h: New file. - - * out-i860.c (output_size_for_block_move): Don't decrement. - (output_block_move): Decrement initial storing address instead. - - * c-parse.y (yylex): Always try unsigned int if `u' is written. - - * c-typeck.c (build_unary_op): Don't let &* make an lvalue. - - * c-parse.y (initlist): Use [N] rather than case N: for array index. - - * tm-seq386.h (LINK_SPEC): Define it. - - * c-parse.y (yylex): Don't try signed int for nondecimal constant - if -traditional. Improve messages for -Wtraditional. - - * stor-layout.c (layout_record): Avoid using DECL_SIZE_UNIT. - - * jump.c (jump_optimize): Scan all insns for label refs. - (mark_jump_label): Quickly ignore uninteresting rtl types. - * rtl.def (INSN, CALL_INSN): Add a slot for JUMP_LABEL. - - * jump.c (jump_optimize): Try combining stack adjusts with pushes. - -Mon Sep 24 07:31:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * stmt.c (expand_computed_goto): Emit barrier after jump. - - * expr.c (case LABEL_DECL): Return a MEM, so we can take its - address; correctly form LABEL_REF. - -Sun Sep 23 22:54:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * loop.c (struct movable): Delete field SET_EQUAL; new field MOVE_INSN. - (scan_loop): Only use REG_EQUAL note under very restricted - cirsumstances. Set MOVE_INSN field in movables when appropriate. - (combine_movables): Simplify matching test now that we only have one - source field. - (move_movables): Handle MOVE_INSN movables by emitting a new move - insn in front of the loop. - Correct typo in checking for CALL_INSN. - Don't try to make a REG_EQUAL note. - (count_loop_regs_set): Remove extraneous assignment to MAY_NOT_MOVE. - -Sun Sep 23 14:59:21 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * cccp.c (S_ISREG): Define it unless overridden. - (main, finclude): Use that. - - * reload1.c (reload): If insn after a function call uses the - function value, and that reg is spilled, and the insn might - use it for reloading, add an extra need. - (reload_as_need): Detect such insns for new arg to choose_reload_regs. - (choose_reload_regs): In that case, don't choose function value reg. - - * tm-convex1.h, tm-convex2.h (CPP_SPEC): Define __NO_INLINE_MATH. - -Sun Sep 23 07:52:32 1990 Michael Tiemann (tiemann at cygnus.com) - - * version.c (version_string): Bumped to 1.90.02. - - * final.c (leaf_function): Variable now non-static. - * final.c (only_leaf_regs_used): Function now non-static. - * final.c (leaf_function_p): Move initialization of - `leaf_function' from here... - * toplev.c (compile_file): ...to here. We want to know the - value of `leaf_function' when we perform code reorginization. - * final.c (leaf_function_p): If profiling arcs, we cannot have - a leaf function. Also, we have to look at insns in - `epilogue_delay_list' to know that all our constraints are - satisfied. - * final.c (only_leaf_regs_used): Have to look in - `epilogue_delay_list' to know that all our constraints are - satisfied. - - * toplev.c (warning_with_file_and_line,warning): Declare third - argument V3 for warnings that require 3 `%' expressions in S. - * toplev.c (strip_off_ending): New helper function that removes - a GCC-recognized filename extension. Call this function in - GCC instead of expanding it inline in C code everywhere. - - * sched.c (schedule_block): The last basic block does not have - no live registers. Also, check that we don't copy from an - entry in `basic_block_live_at_start' that does not exist. - * sched.c (update_reg_first_use): When splitting insns, the - insn that is in REG_FIRST_USE might become a NOTE, and a new - insn become the insn that should be considered the first use. - `update_first_use' keeps REG_FIRST_USE up to date. - * sched.c (update_links): Call note_stores with - `update_first_use' when an insn splits. - -Sun Sep 23 00:05:49 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-decl.c (grokdeclarator): Put var array bound in save_expr. - -Sat Sep 22 14:01:00 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * tree.c (build_index_type): Don't hash variable-bound type. - - * c-decl.c (start_decl): Error here if var-size object initialized. - (grokdeclarator, finish_struct): Record types & decls - with array sizes not written as constants. - * c-tree.h (C_TYPE_VARIABLE_SIZE, C_DECL_VARIABLE_SIZE): New macros. - - * tm-aix386.h (LIB_SPEC): Different library name for -p. Always -lc. - (LINK_SPEC): Don't pass -lg or -g. - (CPP_PREDEFINES): Define _I386 and _AIX. Don't define unix. - (SDB_DEBUGGING_INFO): Define it. - (DBX_DEBUGGING_INFO): Undefine it. - (ASM_FILE_START): Output .noopt if not optimizing. - (PCC_BITFIELD_TYPE_MATTERS): Define it. - (FUNCTION_PROFILER): Add definition. - -Fri Sep 21 16:26:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * function.c (current_function_epilogue_list): Define this here. - * reorg.c: Not here. - -Fri Sep 21 13:11:11 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * varasm.c (assemble_external_libcall): Frob SYMBOL_REF_USED here. - -Thu Sep 20 15:29:44 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * expr.h (struct optab): Field libfunc, an rtx, replaces lib_call. - * rtl.h (SYMBOL_REF_USED): New macro. - * optabs.c (init_optabs): Initialize that field properly. - Also initialize new variables *_libfunc. - (various functions): Use those vars; use libfunc field. - * expr.c (convert_move, emit_block_move, clear_storage): Use the vars. - (emit_push_insn, expand_assignment): Likewise. - -Thu Sep 20 13:51:18 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * out-a29k.c (current_function_epilogue_delay_slot): Renamed from - epilogue_delay_slot. - - * romp.md (movdi): Fix missing short/long qualifier on memory ref. - (SFmode/DFmode move patterns): Add explicit alternatives for - storing and loading general registers from memory; also add - DEFINE_SPLITs for these cases for DFmode. - (negsf2,negdf2): Don't use XOR if an operand is a hard FP register. - - * tm-romp.h (FIXED_REGISTERS, CALL_USED_REGISTERS): Use correct - register numbers for FP registers. - - * output.h (current_function_epilogue_delay_list): New var. - * function.c: Include output.h and initialize new var above. - * Makefile.in (function.o): Now includes output.h. - * reorg.c (epilogue_delay_list): Renamed to - current_function_epilogue_delay_list. - - * final.c (final_scan_insn): Don't delete no-op insn if in delay slot - or if we have already pre-scanned. - - * genconfig.c (max_insns_per_split): Rename from - max_insns_per_split_flag and default to 1 instead of 0. - - * genattrtab.c (n_comma_elts): Return zero for null string. - - * sdbout.c (MIN,MAX): Add to here; required by recent changes. - - * expr.c (safe_from_p): A MEM rtx is not safe from an INDIRECT_REF. - - * c-parse.y (ridpointers): Move definition in front of first use. - - * reorg.c (mark_referenced_resources): Allow for CODE_LABELs between a - CALL_INSN and USE insns preceeding it. - (mark_set_resources): Likewise, for following CLOBBERs. - -Wed Sep 19 17:45:49 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * assert.h (printf): Don't define; should be in stdio.h. - - * rtl.h (PUT_REG_NOTE_KIND): New macro. - * sched.c (attach_deaths): Use it. - - * reorg.c (mark_referenced_resources): If we put insns to load - parameters into the delay slot of a CALL, ignore the USE insns - for those parameters. - - * function.c (fixup_var_refs_1): Don't call fixup_memory_subreg unless - its would-be operand is a SUBREG. - -Wed Sep 19 00:26:59 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * print-tree.c (print_node): Indent before printing RTL. - - * Makefile.in (protoize.o, unprotoize.o): Look for SYSCALLS.c.X - in libsubdir. - -Tue Sep 18 21:55:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (fold_rtx): For MEM with constant address, split the - address into possible base and offset; ensure constant pool - value is same mode as our reference unless we are getting a - word of a DImode CONST_INT. - Treat SYMBOL_REF and LABEL_REF as constants. - If we are getting a word at a constant offset from a jump table, - replace with the contents of that jump table entry. - (cse_insn): When folding jump to variable location (e.g., tablejump), - LABEL_REF is the cheapest of all, since the branch would be simple. - Special-case changing variable branch to normal unconditional - because the RTL may be different (e.g., the variable branch may - include a USE). - -Tue Sep 18 18:33:19 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * toplev.c (count_error): Handle warnings_are_errors. - (W_options): Handle -Werror. - -Mon Sep 17 00:02:12 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-decl.c (lookup_label): Use void as type of label. - * stmt.c (label_rtx): No longer static. - * expr.c (expand_expr): Handle LABEL_DECL. - -Sun Sep 16 16:27:29 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * expr.c (expand_builtin): Error for __builtin_nextarg - if function definition doesn't have `...'. - - * expmed.c (store_bit_field): Adjust BITPOS to UNIT all at once. - for insv, use mode of operand 3 instead of SImode. Define MAXMODE. - Adjust XBITPOS along with mode of XOP0. - (extract_bit_field): Adjust XBITPOS along with mode of XOP0. - for extv and extzv, use mode of operand 3 thoroughly instead of SImode. - - * sdbout.c (CHAR_TYPE_SIZE,...): Default definitions of these macros. - (plain_type_1): Use those macros to distinguish int and floating types. - - * toplev.c (rest_of_decl_compilation): Output TYPE_DECL here for sdb - only if top_level. - - * c-parse.y (unary): Don't forget to look up the label. - - * c-typeck.c (build_conditional_expr): Don't skip arg promotion. - -Sun Sep 16 14:54:03 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (try_combine): If we don't recognize the combined insn, - try it without any CLOBBERs. - - * final.c (final_scan_insn): Prevent CC tracking from thinking - that the CC was set by an insn in the delay slot of a CALL_INSN. - - * expmed.c (init_expmed, expand_divmod): Allow machine to have - low cost specified for divides by powers of two if it can do it by - a method that if cheaper than the normal shift/branch/adjust mechanism. - - * cse.c (fold_rtx): When putting constant last, ensure that the - resulting insn is valid. - - * objc-actions (finish_objc): Remove dup defn of gen_declaration_file. - - * objc-parse.y (ridpointers, token_buffer): Define before use. - - * reload1.c (scan_paradoxical_subregs): Declare correctly. - - * tm-romp.h (ENCODE_SEGMENT_INFO): Use INTEGRATED bit to mark - SYMBOL_REFs that are addresses of functions (really their data blocks). - (LEGITIMATE_CONSTANT_P): Data block addresses of functions are not - valid operands. - * out-romp.c (symbolic_operand): Likewise. - * romp.md (call*): emit_move_insn will now do force_const_mem - so it needn't be done explicitly. - - * out-romp.c (output_fpop): Work around yet another RT fp bug; - cannot merge output and first operand for SFmode if general reg. - - * romp.md: Add new pattern to match combination of copy and test. - Use nilo instruction to set CC. - -Fri Sep 14 07:07:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * c-tree.h: Define all *_type_node trees defined in c-decl.c, in the - same order as defined there. - -Fri Sep 14 08:39:17 1990 Michael Tiemann (tiemann at cygnus.com) - - * cplus-typeck.c (build_c_cast): Convert READONLY_DECLs to make up - for the fact that we do not call `default_conversion' anymore. - - * function.c (instantiate_virtual_regs): If the function is inline, - we don't need to worry about making valid rtl, but we do need to - worry about instantiating all virtual registers. Otherwise we must - make the rtl valid, and we have other opportunities to eliminate the - virtual registers during the compilation. - -Thu Sep 13 16:00:05 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * reload.c (MATCHES): Check for different rtx's with same reg number. - - * fixincludes: Discard `.' from value of `files'. - - * c-parse.y (unary_expr): Use unary && to get address of label. - (stmt): Handle `goto *EXPRESSION;'. - * stmt.c (expand_computed_goto): New function. - - * gstdarg.h: New name for stdarg.h. - * Makefile (install-headers): Rename gstdarg.h while installing it. - - * sdbout.c (PUT_SDB_LAST_DIM): Get rid of SDB_DELIM. - (plain_type): Output accumulated array dims and size. - (plain_type_1): Eliminate arg NOSIZE. Save up dims and size. - Call self rather than plain_type for pointers and functions. - (sdbout_array_type, sdbout_array_depth): Functions deleted. - -Thu Sep 13 16:12:15 1990 Michael Tiemann (tiemann at cygnus.com) - - * cplus-class.c (build_method_call): Fix typo in deciding whether to - do hairy or trivial pointer conversions on `this'. - - * cplus-tree.c (layout_vbasetypes): Don't double-count space taken - up by virtual baseclasses. - -Wed Sep 12 18:14:19 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * tm-m68k.h: Use asm_fprintf widely. - (REG_PREFIX, IMMEDIATE_PREFIX, LOCAL_LABEL_PREFIX, USER_LABEL_PREFIX): - New macros. - - * final.c (asm_fprintf): New function. - -Wed Sep 12 06:07:50 1990 Michael Tiemann (tiemann at cygnus.com) - - * cplus-dbxout.c (dbxout_type): Output basetype size and offset info - in bits, not bytes. - - * cplus-decl.c (finish_{decl,function}): Set CLASSTYPE_ASM_WRITTEN - bit of types used by non-extern VAR_DECLs. Set it also for types of - PARM_DECLs and return types of functions defined in the file being - compiled. - -Tue Sep 11 13:21:40 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * sdbout.c (plain_type_1): New argument NOSIZE. Inhibits size output. - (sdbout_array_type): Call plain_type_1 directly; set NOSIZE. - - * sdbout.c (sdbout_array_type): New argument DEPTH. - Don't output more than SDB_MAX_DIM dimensions. - (sdbout_array_depth): New function. - (plain_type_1): Start DEPTH by calling sdbout_array_depth. - - * gnulib2.c (_bb_init_func): Library member now named _bb. - - * tree.h: Add comments. - -Mon Sep 10 17:20:06 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * Makefile.in (install): Fix typo. - - * cccp.c (macarg1): With -traditional, backslash quotes chars. - -Mon Sep 10 16:37:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * jump.c (jump_optimize): Don't swap THEN and ELSE parts during jumps - runs after reload. - -Mon Sep 10 13:07:39 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * cccp.c (collect_expansion): Don't actually substitutee into a - string if ANSI; just consider warning. - - * gnulib2.c (div_qrrnd for i386): Fix typo. Rename some args. - - * sdbout.c (sdbout_array_type): New argument DEPTH. - Don't output more than SDB_MAX_DIM dimensions. - (plain_type_1): Start DEPTH at 1. - -Sun Sep 9 22:02:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * out-a29k.c (gen_reg_operand): Exclude SUBREG of a special - register. - - * cse.c: (fold_rtx): Get equivalent for register before seeing if - memory reference is to constant pool. - (cse_ins): Only call force_const_mem if we actually try to use - the constant (i.e., we haven't found anything cheaper). - -Sun Sep 9 21:49:18 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * ..._BIG_ENDIAN: Now expect definition to be 0 or 1. - All refs and defs changed. - - * tm-mips.h (CPP_SPEC): Error for -EL (for -EB, if DECSTATION). - - * sdbout.c (sdbout_one_type): Set TREE_ASM_BEING_WRITTEN before - recursion, and TREE_ASM_WRITTEN after. - -Sat Sep 8 16:47:27 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * hard-params.c (main): Don't try to malloc all memory. - -Sat Sep 8 16:38:53 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reload1.c (reload): Set reg_equiv_constant if the equivalence - is any constant, not just a legitimate constant operand. - - * final.c (get_attr_length, shorten_branches, final_scan_insn): - If JUMP_TABLES_IN_TEXT_SECTION is defined, don't put jump tables - in readonly data section, even if it exists. - -Sat Sep 8 14:07:05 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * Makefile.in (bootstrap*): Pass null ALLOCA definition to recursive - makes when compiling with GCC since it never needs alloca.c. - - * c-typeck.c (build_binary_op_nodefault): Warn for signed < unsigned. - Controlled by -W. - - * tm-i386v4.h: New file. - -Fri Sep 7 13:10:24 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * cccp.c (STDC_VALUE): New macro, defaulting to 1. - (intialize_builtins): Use that. - - * m68k.md (movqi): `st' does not set cc's. - -Fri Sep 7 07:49:23 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * genemit.c (gen_expand): Fix test for no C code. - If no C code, no MATCH_DUPs, and only one insn to write, handle - like DEFINE_INSN and return that insn rather than making a sequence. - - * emit-rtl.c (add_insn_after): If previous or next insn is a - SEQUENCE, update the NEXT_INSN in the last insn in the SEQUENCE or - PREV_INSN of the first, as appropriate. - (emit_insn_before, emit_jump_insn_before, emit_note_before): - Call add_insn_after. - - * stmt.c (check_for_full_enumeration_handling): If a switch whose index - is an enumerated type contains labels for every enumeration value, - make the label for the last value the default label since such a - switch can never fall through. - - * genattr.c (fatal): Declare first arg correctly. - - * combine.c (try_combine): No longer check REG_FUNCTION_VALUE_P; - its value shouldn't matter once RTL generation is complete. - (subst): If NOT is present as an operand in commutative operation, - put it last to reduce the number of required patterns. - - * out-romp.c (output_fpops): Align to word boundary before writing - any floating-point blocks. - - * function.c (instantiate_virtual_regs_1): Fix typo in previous change. - When a MEM must be copied, use copy_rtx; the PLUS may also be shared. - -Thu Sep 6 15:19:42 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * gcc.c (do_spec_1): Don't add __ to -D if __ already present. - - * c-typeck.c (convert_for_assignment): - Better warning for FCN * vs. void * - Specific warning for char * vs. unsigned char *. - -Thu Sep 6 14:52:08 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reorg.c (find_basic_block): Return -1, not 0, if we can't find - the basic block. - (mark_target_live_regs): Clear PENDING_DEAD_REGS unconditionally. - (relax_delay_slots): Don't call optimize_skip for unconditional jump. - Only try to remove jump if it is a simple conditional or - unconditional jump (but not a tablejump or similar such). - - * cse.c (invalidate, refers_to_mem_p, cse_rtx_addr_varies_p): - Consider (plus (reg) (const_int)) to be a fixed address if REG - is constant; old code just handled REG. - - * genrecog.c (enum routine_type): Use to distinguish two types of - routines that we write: recog and split_insns. - (make_split_sequence): Write out extern for gen_split_ function. - (break_out_subroutines, write_subroutine, write_tree, main): - Use new enum routine_type instead of passing "split" or "recog". - (write_subroutine): Write correct type for splitting functions and - return 0, not -1. - (main): Write includes before declarations of gen_split_ functions - since "rtx" is needed for them. - * rtl.h (try_split, split_insns): Added definitions. - -Wed Sep 5 16:20:07 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * Makefile.in (includes): Use proper directory. - -Tue Sep 4 13:59:31 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-decl.c (store_parm_decls): Let extra_warnings control - warnings about parms not declared. - - * flow.c (life_analysis): Move code to detect stack-adjust insns. - It was unreachable. - - * gnulib.c, gnulib2.c (abort): #undef in case config.h defines it. - -Mon Sep 3 17:50:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * calls.c (expand_call): If SETUP_INCOMIMG_VARARGS is defined, pass - unnamed args in registers. - * function.c (assign_parms): Call SETUP_INCOMING_VARARGS for - stdargs as well as varargs; ensure we only call it once. - - * function.c (instantiate_virtual_regs_1): Don't assume all memory - addresses are valid for all insns. - -Sun Sep 2 22:17:40 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * expr.c (emit_library_call): Push all stack args, then load regs. - - * c-decl.c (c_build_type_variant): For an ARRAY_TYPE, - put the qualifier into the array as well as the element. - (grokdeclarator): When a field or variable is supposed to be - a const or volatile array, make the array elements const or - volatile, but also make the field or variable so. - - * c-decl.c (grokdeclarator): Turn off the warning for const or volatile - function type when making an array. It was useless. - -Fri Aug 31 16:26:40 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-common.c (truthvalue_conversion): Let the - language-specific code decide how to convert EXPR - if it is not one of the special forms we recognize. - -Fri Aug 31 15:08:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * gcc.c (execute): Use I instead of undefined var J if DEBUG defined. - -Fri Aug 31 14:37:36 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * sdbout.c (sdbout_begin_block): Delete excess arg to sdbout_block. - -Thu Aug 30 21:31:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expmed.c (extract_bit_field): Fix typos in computations of UNIT. - -Wed Aug 29 12:33:33 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * sdbout.c (sdbout_reg_parms): Don't advance parm twice. - -Tue Aug 28 22:49:41 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * cccp.c (delete_newlines): New function. - (macroexpand): Remove newlines from args used more than once. - -Tue Aug 28 22:16:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * Makefile.in (sched.o): Add to list of files to compile. - - * c-parse.y (position_after_white_space): Declare with correct type. - - * fold-const.c (optimize_bit_field_compare): Fix typo. - - * reorg.c (split_insns): No longer need extern for this here. - - * toplev.c (sched_dump_file): Define. - (compile_file): Initialize and print sched_time and sched2_time. - - * local-alloc.c (block_alloc): Fix typo in allocation of insn_map. - - * cse.c (cse_insn): Try related value in case where CONST is seen - first and SYMBOL_REF later. - -Tue Aug 28 16:26:50 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * cccp.c (main): Don't modify or validate arg of -D here. - (make_definition): Do it all here. - - * function.c (assign_parms): Reenable `register' for parms. - -Tue Aug 28 07:12:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * tm-a29k.h (CONST_COSTS): All CONST_INTs are cost zero; adjust - SYMBOL_REF and CONST_DOUBLE costs to reflect their actual cost. - - * expr.c (expand_expr): Don't suppress EXPAND_SUM here if not Pmode. - (expand_expr, case *_DECL): Return constant address if - EXPAND_SUM or EXPAND_INTO_STACK in addition to EXPAND_CONST_ADDRESS; - all of these cases will later call memory_address. - (expand_expr, case COMPONENT_REF): Always make recursive call with - EXPAND_SUM. - (expand_expr, case PLUS_EXPR): Try to form constant if X + CONST and - mode is Pmode without EXPAND_SUM; if not EXPAND_SUM, use force_operand. - Check for MODE != Pmode with EXPAND_SUM here. - (expand_expr, case MINUS_EXPR): Always process X - CONST_INT as - X + (-CONST_INT)). - -Sun Aug 26 23:10:10 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-decl.c (c_decode_option): Handle -funsigned-bitfields. - (grokdeclarator): Do the real work. - (grokfield): Pass either FIELD or BITFIELD to grokdeclarator. - - * tm-att386.h (asm_output_common): Use SIZE, not ROUNDED. - -Sat Aug 25 17:17:27 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-parse.y (unary_expr): Turn off handling of &... - * c-decl.c (store_parm_decls): Turn off extra dummy parameter. - - * tm-att386.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): New macros. - (BSS_SECTION_ASM_OP): New macro. - (ASM_OUTPUT_LOCAL): Call bss_section, don't just print .bss. - - * combine.c (subst): Handle shift within mem, as multiplication. - -Sat Aug 25 11:43:09 1990 Michael Tiemann (tiemann at cygnus.com) - - * final.c (alter_cond): Handle CC_INVERTED. - - * conditions.h (CC_INVERTED): New flag indicating that the condition - tested leaves the falgs set opposite to the condition tested. This - is unsafe for IEEE floating point operations, but useful for integer - operations which can combine with condition-code setting operations. - - * c-parse.y (position_after_white_space): New function. Skips - all of the whitespace at the current location in the input - file, taking NEXTCHAR into account. Changed all callers of - `skip_white_space' in grammar to use this function instead. - - * genrecog.c (main): Generate code which is more easily optimized by - GCC's cse. In particular, start each recognizer with the address of - `recog_operands' in a register. - - * reload.c (combine_reloads): Can only combine reloads if the - register we find can hold the entire output reload (i.e., SFmode - register may not be suitable for combining with DFmode register). - - * optabs.c (have_sub2_insn): Fixed typo. - * combine.c (combine_instructions): Fixed typo in comment. - - * function.c (expand_function_end): Emit a barrier after a RETURN - jump. - - * Added diffs for new instruction scheduling code. - * emit-rtl.c (try_split): Moved here from reorg.c and made - public. Both instruction scheduling and delayed branch - filling now use the same code to split insns. - * flags.h: Add new flags FLAG_SCHEDULE_INSNS for instruction - scheduling before register allocation and - FLAG_SCHEDULE_INSNS_AFTER_RELOAD for insn scheduling after - register allocation. - * recog.c (constrain_operands): Recognize pseudo registers as - registers for the purpose of insn constraint matching before - register allocation. Otherwise, the insn scheduler assumes - the operands will be memory, which is usually wrong (and - causes it to build bad schedules). - * sched.c (order_calls): New function. For two CALL_INSNS in - the rtl chain, we set up a constraint that the second - CALL_INSN may not be scheduled to run before the first. - (sched_analyze_*): Three kinds of dependencies (true, anti, - and output) constrain the order in which insns can be - rearranged and still preserve their execution semantics. - We now handle dependencies for pseudo and hard register usage - and for memory usage in these functions. - (launch_links): The ordering of which newly ready insns to - execute is now preserved according to their `priority' in the - insn chain, and no longer on their order in the dependency - list from which they were launched. - (schedule_block): Removed support for trying to schedule insns - taking branch delays into account. Reorg.c should be hacked - to understand which insns to pull into delay slots and which - insns to leave alone. - (schedule_block): (Re-)compute all register life information here. - No longer dependent on flow to keep `basic_block_live_at_end' - allocated. - (schedule_insns): Recompute LABEL->BASIC BLOCK mapping, so we - can compute register life information. - * rtl.c (add_dependence): New function to add and remove insn - dependencies. If an insn (I2) must execute after another - (I1), we add an INSN_LIST containing I1 to I2's LOG_LINKS. - If such an INSN_LIST is already in I2's LOG_LINKS, we don't - add a second. - (remove_dependence): Similar, but removes dependencies. May - not actually be needed. - * toplev.c (compile_file,rest_of_compilation): Added code for - dumping info about insn scheduling. - -Fri Aug 24 17:24:03 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * Implement `aligned (INTEGER)' attribute for real. - * c-parse.y (attrib): Really record info for `aligned' attribute. - Don't warn for any integer alignment. - (attribute_list): Make a list. - (initdcl, notype_initdcl, component_declarator): Handle that info. - * c-common.c (decl_attributes): New function. - -Fri Aug 24 07:12:05 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * genattrtab.c (insn-config.h): This is really needed after all. - * Makefile.in (genattrab.o): Show dependency on insn-config.h. - - * local-alloc.c (block_alloc): Don't update qty_birth for a - register whose quantity is <= 0. - - * fold-const.c (decode_field_reference): Actually obtain unsigned - type where one is wanted. - (merge_component_references): Correctly test for mutually exclusive - conditions. - -Thu Aug 23 14:56:44 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-typeck.c (digest_initializer): No pedantic warning for string - and array of unsigned char. - - * tree.c (get_identifier): Do id_clash_len stuff if length equals that. - -Thu Aug 23 10:30:10 1990 Michael Tiemann (tiemann at cygnus.com) - - * cplus-tree.h (CLASSTYPE_CID): Key off of TYPE_MAIN_VARIANT. - -Thu Aug 23 06:44:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * out-romp.c (romp_pushes_stack): Don't count - current_function_pretend_args_size in size of stack. - -Wed Aug 22 18:00:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * tm-a29k.h, tm-a29kunix.h, xm-a29k.h, a29k.md, out-a29k.c: New files. - - * config.gcc (a29k-unix): New target. - - * calls.c (expand_call): Allow FUNCTION_ARG to return an EXPR_LIST - specifying multiple registers to load. - (store_one_arg): Likewise; also delete handling of fully-in-register - case, which hasn't been handled here for a while. - * expr.c (emit_library_call): Our subset of calling sequence for - library routines does not include multiple registers for an arg. - -Tue Aug 21 17:44:49 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * make-cc1.com: Compile and link version.c. - - * Makefile.in (install-gnulib): Create libg.a if none already. - - * expr.c (convert_move): Handle expand_unop retval not same as target. - - * reload.c (find_reloads): For register letters, don't win if BLK. - - * sdbout.c (sdbout_toplevel_data): Fix error message. - - * protoize.c (open): Prototype deleted. - - * flow.c (mark_set_1, mark_used_regs): Update reg_first_use. - (allocate_for_life_analysis): Allocate and clear it. - * local-alloc.c (block_alloc): Calculate INSN_MAP. - Get first use of each reg from reg_first_use. - - * tm-vms.h (MAYBE_VMS_FUNCTION_PROLOGUE): Distinguish C from C++. - (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Add a const data section. - (ASM_OUTPUT_EXTERNAL): Use that section. - (SELECT_SECTION): Go to that section when appropriate. - -Tue Aug 21 18:26:47 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reorg.c (fill_simple_delay_slots): Mark anything referenced by an - insn that will be placed in a delay slot in the epilogue as being - needed at the end of the function. - - * cse.c (constant_pool_entries_found): New static var. - (cse_main): Initialize it. - (use_related_value): Correctly look for registers in hash table. - (fold_rtx): Fold constant pool entries to their constants and - set constant_pool_entries_found. - (cse_insn): If we weren't able to place a constant in an insn - and we have previously seen constant pool entries used, set up - to try the constant pool entry also. - -Mon Aug 20 12:14:27 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * function.c (assign_parms): Set LAST_NAMED for parm before dummy. - See August 9 change in c-parse.y. - - * gcc.c (process_command): Split -oFOO into two arguments. - - * stmt.c (expand_asm_operands): Handle COMPONENT_REF and - ARRAY_REF directly as output operands. Avoids crash if BLKmode. - - * c-parse.y, cplus-parse.y, objc-parse.y: Include stdio before input.h. - * input.h: Declare finput. - - * expr.c (emit_push_insn): Don't adjust for EXTRA separately - if will have to adjust the stack anyway. - - * m68k.md (*sh*si3): On 68000, optimize case of >= 16 bits. - - * varasm.c (decode_rtx_const): Don't dereference a PLUS - subexpression of a CONST twice. - -Sun Aug 19 21:51:51 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * toplev.c (finput): Define here. - * *-parse.y (lineno, finput): Duplicate definitions deleted. - - * global-alloc.c (find_reg): Test best_reg against 0, - not first_pseudo_register. - -Sun Aug 19 17:48:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * explow.c (plus_constant): If adding to constant pool constant, - return a new one. - - * genattrtab.c: Need not include insn-config.h. - -Sun Aug 19 17:23:10 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * tm-hp9k320bsd.h (CPP_SPEC): Def __HAVE_68881__ like __HAVE_FPU__. - - * Makefile.in (USE_ALLOCA): Test was backwards. - (USE_HOST_ALLOCA): Likewise. - -Sun Aug 19 09:58:16 1990 Michael Tiemann (tiemann at cygnus.com) - - * stmt.c: Fixes from 2.0 for fixup_goto incorporated here. - - * cplus-decl2.c (write_vtable_entries): Don't test TREE_EXTERNAL - of DECL_CONTEXT (FN). TREE_EXTERNAL is not meaningful for types. - -Fri Aug 17 22:14:09 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * optabs.c (emit_cmp_insn): Don't abort after floating lib cmp. - -Thu Aug 16 23:16:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * varasm.c (assemble_variable, assemble_static_space): Don't - call data section if -fshared-data. If this section is needed, - it should be entered from elsewhere, and this is believe to be - done in all known cases. - (output_constant_pool): Add support for ASM_OUTPUT_SPECIAL_POOL_ENTRY - which writes certain constant pool entries specially; used for TOC - on RS/6000. - (assemble_external_libcall): New function. - * expr.c (emit_library_call): Call it. - - * reorg.c (mark_target_live_regs): Don't follow around infinite loops. - - * varasm.c (struct rtx_cont): Don't use enums in bit fields if - ONLY_INT_FIELDS is defined. - - * cse.c (remove): Rename to remove_from_table to avoid conflict - with `remove' defined in stdio.h. - -Thu Aug 16 22:44:35 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * stmt.c: fixup_gotos must ignore blocks started after the goto. - (block_start_count): New variable, and slot in some structures. - (expand_function_start): Initialize it. - (expand_start_bindings): Increment it and store in struct nesting. - (expand_goto): Store it in struct goto_fixup. - (fixup_gotos): Compare fixup's count with block's count. - (save_stmt_status, restore_stmt_status): Handle block_start_count. - * function.h (struct function): Make slot to save it. - -Thu Aug 16 18:02:03 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * obtabs.c (expand_fix, expand_float): Support direct conversion - between SFmode and fixed modes by library call. - -Wed Aug 15 18:36:28 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cccp.c (main): Allow -M to work on .s files by checking for .s - and .S suffixes when writing dependencies. - - * reorg.c (optimize_skip, fill_eager_delay_slots, try_host_target): - Don't need to call can_reverse_comparison_p because invert_jump is - safe for floating-point; only reverse_condition isn't. - -Wed Aug 15 15:50:36 1990 Michael Tiemann (tiemann at cygnus.com) - - * dbxout.c (dbxout_type): Skip past const and volatile qualifiers - that might appear in method names. - -Wed Aug 15 15:44:17 1990 Richard Stallman (rms at mole.ai.mit.edu) - - * c-parse.y (hash, is_reserved_word): Use __inline. - - * cccp.c (main): Support -dN and -dD. Support -lint. - (dump_macros): Two new alternatives. - (handle_directive): Output macro definitions if -dN or -dD. - (rescan): Check comments if -lint. - (get_lintcmd): New subroutine. - - * c-decl.c (c_decode_option): Handle -fshort-double. - (init_decl_processing): Create double_type_node accordingly. - - * c-decl.c (c_decode_option): Handle -Wno... - -Tue Aug 14 23:10:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * explow.c (break_out_memory_refs): Don't break out reference if - constant but not legitimate constant for a machine insn. - (memory_address): Only put legitimate constants, rather than all - constants, into registers if they are used as an address. - -Tue Aug 14 14:34:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * reorg.c (steal_delay_list): Can't put something in a - non-annulled delay slot that can trap. - - * tm-i860.h (GO_IF_LEGITIMATE_ADDRESS): Typo testing offset alignment. - - * cccp.c (do_assert, do_unassert, check_assertion): New functions. - (compare_keyword_lists, read_keyword_list, free_keyword_list): - New functions. - * cexp.y (yylex): Allow `#' as token. - Return name and length of symbol. - (keywords): New nonterminal. - (expr): Recognize # to test an assertion. - (U_CHAR, struct arglist): Data types copied from cccp.c. - (%union): New alternatives `keywords' and `name'. - -Mon Aug 13 22:26:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * tm-romp.h (SLOW_BYTE_ACCESS): Set to 0. - - * expmed.c (store_bit_field, extract_bit_field): Use get_best_mode - to select mode to use for accessing memory when bitfield insns don't - accept memory. - - * c-common.c (rewrite_for_merged_ref, make_merged_ref): Deleted. - (merge_component_comparisons): Delete from here. - * c-tree.h (merge_component_comparisons): No longer global. - * c-convert.c (build_binary_op_nodefault): Don't try to merge component - references here; now done in fold. - * cplus-typeck.c (build_binary_op_nodefault): Likewise. - * Makefile.in (fold-const.o): Now includes flags.h. - * fold-const.c: Likewise. - (STRIP_NOPS): New macro. - (decode_field_reference, all_ones_mask): New functions. - (merge_component_references): Put rewritten version here. - This fixes bugs in the way that comparisons with non-equal - constants (!p->a && p->b) are handled and in endianness checking. - Also accepts more general comparisons, and, in particular, its - own output so more than a pair of operations can be merged. - (fold): Call it for TRUTH_{AND*,OR*}_EXPR. - - * tree.def (BIT_FIELD_REF): New tree code. - * expr.c (get_inner_reference): Support BIT_FIELD_REF. - If bitfield is a complete mode-sized unit, return that mode; if it - is a subset of bits within a mode-sized unit, return VOIDmode. - (expand_assignment): Check for BIT_FIELD_REF. - Use mode returned from get_inner_reference to see if bit field. - (store_constructor): Likewise. - (store_field): Don't pass arg BIT_FIELD; use MODE == VOIDmode - instead. All callers changed. - (expand_expr, case BIT_FIELD_REF): New case. Handled same as - COMPONENT_REF. - Use mode returned from get_inner_reference rather than DECL_BIT_FIELD. - (expand_increment): Must stabilize BIT_FIELD_REF. - (do_jump, case NOP_EXPR): Check for inner BIT_FIELD_REF and ARRAY_REF. - (do_jump, case COMPONENT_REF): Generalize to handle BIT_FIELD_REF - and some ARRAY_REFs also. - * fold-const.c (operand_equal_p): Handle BIT_FIELD_REF. - * tree.c (staticp): Rework to use switch instead of if-then-else. - Add support for BIT_FIELD_REF. - (stabilize_reference, simple_cst_equal): Support BIT_FIELD_REF. - - * c-common.c (truthvalue_conversion): Rework to use switch rather - than if-then-else. - Generate either TRUTH_{OR*|AND*}_EXPR or comparison operations as - much as possible. - Handle REAL_CST, ADDR_EXPR, ABS_EXPR, FLOAT_EXPR, FFS_EXPR, - LROTATE_EXPR, RROTATE_EXPR, BIT_XOR_EXPR, and MINUS_EXPR. - Call fold for COND_EXPRs that we make. - * c-convert.c (build_unary_op): invert_truthvalue can't return 0, - so don't check for it. - (invert_truthvalue): Delete from here. - (convert_to_integer, build_conditional_expr): Try to fold COND_EXPR. - * c-plus-cvt.c (convert_to_integer): Likewise. - * cplus-typeck.c (build_conditional_expr): Likewise. - (build_unary_op): invert_truthvalue can't return 0. - (invert_truthvalue): Delete from here. - * fold-const.c (invert_truthvalue): Move to here. - Don't invert floating-point test. - Look inside conversions. - Use recursive call to negate inside logical operations rather than - building a TRUTH_NOT_EXPR. - Allow only certain TREE_CODEs as operands; abort for the rest. - (fold_convert): Accept second argument that is item being - converted to ensure that NOPs have been stripped. - (operand_equal_p): Return 0 if either operand has side effects. - If both integer or real constants, check the values. - Do a more thorough test to see if two items are identical; - specifically, compare the operands of simple TREE_CODEs. - (omit_one_operand, distribute_bit_expr): New functions. - (make_bit_field_ref, optimize_bit_field_compare): Likewise. - (fold): Remove LOSES; now done explicitly or by calling - omit_one_operand. Some previous uses weren't needed. - Try to fold any COND_EXPRs and some COMPOUND_EXPRs we make. - Remove pair of NEGATE_EXPRs and BIT_NOT_EXPRs. - Convert "- (a - b)" to "b - a" for non-floating-point. - ABS_EXPR applied to ABS_EXPR or NEGATE_EXPR is ABS_EXPR of inner arg. - Convert "a + (-b)" to "a - b" and "a - (-b)" to "a + b". - If adding ANDs with constants that have no bits, in common, try - bitwise-or, since we may then be able to distribute the operation, - e.g., (a & 7) + (a & 0x70) -> a & 0x77. - Add missing last arg to operand_equal_p call. - Call distribute_bit_expr for BIT_AND_EXPR and BIT_IOR_EXPR. - Exclusive-or with all ones is bit negation. - If second arg of BIT_AND_TC_EXPR is constant, convert to BIT_AND_EXPR. - Handle TRUTH_NOT_EXPR by calling invert_truthvalue. - Call optimize_bit_field_compare for comparisons of bitfields. - Handle "a ? 1 : 0" and "a ? 0 : 1" as test or negated test. - Simplify "a & 4 ? a & 4 : 0" and "a ? a : 0" to remove conditonal. - * stor-layout.c (get_best_mode): New function. - * machmode.h: Define it. - * tree.c (integer_pow2p): New function. - * tree.h: Declare new functions and functions no longer static. - -Mon Aug 13 17:45:13 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * config.gcc (sun3-mach): New alternative. - * tm-sun3mach.h: New file. - - * m68k.md (bfextu patterns): Set CC_NOT_NEGATIVE. - -Mon Aug 13 10:14:37 1990 Michael Tiemann (tiemann at cygnus.com) - - * cplus-decl2.c (flag_minimal_debug): Now is default is - -fflag-minimal-debug. - - * cplus-tree.c (virtual_member): Return the assoc of a non-virtual - basetype that comes from a virtual baseclass. Changed callers - which used to call `value_member' to call virtual_member instead. - -Mon Aug 13 06:54:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * optabs.c (expand_twoval_binop): Fix typo. - - * cse.c (lookup_as_function): Don't assume CODE is a unary - operation. It might be a binary op or REG. - -Sun Aug 12 21:42:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (expand_expr, case COND_EXPR): Don't abort if first arg of - COND_EXPR isn't a comparison; just suppress the do_store_flag call. - -Sun Aug 12 14:26:45 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tree.h (enum built_in_function): Delete comma after last name. - * c-parse.h (enum rid): Likewise. - * expr.h (enum optab_methods): Likewise. - * stab.h: Add dummy enum name at end. - - * config.gcc (genix): Set tm_file. - * tm-genix.h (ASM_OUTPUT_DOUBLE): New overriding definition. - - * tree.h (struct tree_type, struct tree_decl): Handle ONLY_INT_FIELDS. - * rtl.h (struct rtx_def): Likewise. That macro goes in xm-*.h. - -Sat Aug 11 16:56:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cplus-decl.c (finish_function): Check value of HAVE_return before - calling gen_return. - - * reorg.c (optimize_skip): Don't reject skip when we jump around an - insn and merge at the return point. - -Fri Aug 10 17:00:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * dbxout.c (dbxout_parms, dbxout_reg_parms): Ignore nameless parms. - * sdbout.c (sdbout_parms, sdbout_reg_parms): Ignore nameless parms. - -Fri Aug 10 14:14:08 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * recog.c (indirect_operand): Modes need not agree if MODE == VOIDmode; - remove test from here since it is in memory_operand, which this calls. - -Thu Aug 9 15:19:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (store_parm_decls): If function has variable number of args, - put a dummy decl at end of parmlist. - * c-parse.y (unary_expr): Handle &... with address of dummy decl. - - * tm-*.h (LEGITIMIZE_ADDRESS): Go to WIN instead of returning. - - * cccp.c (handle_directive): Add code to support `# DIGIT' - but disable it for the time being. - - * tm-hp9k320.h (CPP_SPEC): Define _HPUX_SOURCE if not ANSI. - (CPP_PREDEFINES): Don't define it here. - Do define alternatives with __ prepended. - -Wed Aug 8 14:00:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * out-romp.c: Don't include hard-reg-set; already in insn-output.c. - - * explow.c: insn-flags.h is needed to see if "probe" insn exists. - * Makefile.in (explow.o): Likewise. - -Wed Aug 8 13:35:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cccp.c (check_macro_name): Warn if name is `defined'. - - * tm-sun386i.h (ASM_IDENTIFY_GCC): If profiling, put a NOP after - gcc_compiled. - -Tue Aug 7 23:51:38 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * toplev.c (main): Handle -W options like -f options. - This supports -Wnounused, and such like. - (warn_uninitialized): New variable, controls those warnings. - Set it for -Wuninitialized, and for -W. - -Tue Aug 7 13:24:58 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * genextract.c (walk_rtx): Fix typo in MATCH_PARALLEL case. - - * explow.c (allocate_dynamic_stack_space): Pass size of allocated stack - to gen_probe. - -Tue Aug 7 12:19:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * pyr.md (extendsfdf2, truncsfdf2, float*, fix*): Use `&'. - -Tue Aug 7 07:13:54 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * jump.c (find_cross_jump): Include a USE or CLOBBER in cross jump - but don't count it against minimum size. - Never return when cross-jump hasn't actually been done. - -Mon Aug 6 18:50:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * varasm.c: Include regs.h. - (decode_reg_name): Remove extern for reg_names; it is in regs.h. - * Makefile.in (varasm.o): Depends on regs.h. - -Mon Aug 6 12:46:07 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (grokdeclarator): Don't warn if initialized fcn is extern. - (start_decl): Don't warn at all for initialized extern. - - * final.c (final_start_function): Handle PROFILE_BEFORE_PROLOGUE. - (profile_function): New subroutine. - - * tm-i386sco.h: New file. - * config.gcc (i386-sco): New alternative. - - * gcc.c (ENDFILE_SPEC): New macro. - (do_spec_1): Handle %E. - (link_spec): Use %E. - - * xm-i386.h (alloca): Define without arg. - - * Makefile.in (stage*): Use RANLIB_TEST. - (LIMITS_H): New variable. - (USER_H): Use that. - * make-i386sco: New file. - -Sun Aug 5 13:11:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * rtl.h: Delete all machine mode defns; include machmode.h instead. - * tree.h: Likewise. - * machmode.h: New file. - * stor-layout.c: No longer include rtl.h. - * Makefile.in: (RTL_H, TREE_H): Add machmode.h. - (stor-layout.o): No longer depends on RTL_H. - - * c-common.c (binary_op_error, shorten_compare): Should no longer - have been static when moved here. - -Sun Aug 5 12:57:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stor-layout.c (layout_record, layout_union): Test value of - PCC_BITFIELD_TYPE_MATTERS for being nonzero, if it is defined. - * tm-*.h: Define with value 1. - * tm-vax.h (PCC_BITFIELD_TYPE_MATTERS): Depends on -mvaxc-alignment. - - * proto.h: New file. - * Makefile.in (USER_H): Add that file. - -Sun Aug 5 00:04:08 1990 Michael Tiemann (tiemann at cygnus.com) - - * cplus-decl2.c (grokfield): It is no longer legal to specify - the initializer for a static const member in the class - declaration. Dealing with default initializers is basically - impossible. - - * cplus-init.c (build_delete): Don't wrap `addr' in a SAVE_EXPR - until it is in fact an address. This allows us to call - destructors on the return values of function calls. - - * cplus-typeck.c (commontype): Fixed bug in OFFSET_TYPE case which - led to infinite recursion (since we did not reduce the types - before we recursed). - - * cplus-lex.c (check_newline): Make `#pragma implementation' more - forgiving. - - * cplus-init.c (expand_aggr_init): Changed Jan 20th change so that - we test whether TYPE has a constructor defined, and we do not test - at all whether INIT was from a GNU constructor expression or not. - - * cplus-typeck.c (build_modify_expr_1): Don't return - `error_mark_node' unless there really was an error. If there is - no work to do, return `integer_zero_node'. - - * cplus-class.c (propagate_basetype_offsets): Count the space - between baseclasses, not just the space they occupy. - - * cplus-typeck.c (commontype): Don't drop the exceptions that are - raised by functions and methods. - - * cplus-cvt.c (convert_to_real): Fix if/else level problem in - case where EXPR is of aggregate type. - - * cplus-decl.c (finish_decl): Emit a line-number note to give - users a chance to set a breakpoint before the initialization of an - object takes place. - - * cplus-class.c (build_method_call): If the function we get is not - directly from the object we have, call `convert_pointer_to' if the - object uses multiple inheritance or virtual baseclasses. - - * cplus-typeck.c (build_binary_op_nodefault): Don't call - `convert_to_pointer' with an argument that might be - the integer zero. - - * cplus-method.c (hack_identifier): Look for DECL_REFERENCE_SLOT - in RESULT_DECLs as well. - - * cplus-init.c (build_vec_delete): Don't forget to deallocate the - container if requested. Really use AUTO_DELETE and - AUTO_DELETE_VEC with the same interpretation as `build_delete' - gives to its AUTO_DELETE parameter. - -Sat Aug 4 22:08:44 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * jump.c (find_cross_jump): Use prev_nonnone_insn. - Don't cross-jump into the middle of a USE-CALL_INSN-CLOBBER - block; doing so can confuse reorg.c. - - * optabs.c (expand_binop, expand_binop, expand_twoval_binop): - If predicate doesn't match, ensure that operand is in a pseudo - register. Current code assumes that any register will suffice, - but an insn may want to reject certain hard registers. - (expand_unop, emit_unop_insn, emit_cmp_insn): Likewise. - -Sat Aug 4 15:29:09 1990 Michael Tiemann (rms at sugar-bombs.ai.mit.edu) - - * function.c (assign_parms): For parms passed by reference, - make the memory object's mode agree with the parm's original - type mode. - * calls.c (expand_call): Fixed braino in building argument - reference when FUNCTION_ARG_PASS_BY_REFERENCE is defined. - - * varasm.c (assemble_variable): Hack our way around the problem - that static class members look like initialized variables for the - purposes of establishing FIRST_GLOBAL_OBJECT_NAME. - - * cplus-lex.c (reinit_parse_for_method): Give error message for - common mistake of forgetting the function body. - - * cplus-typeck.c (build_component_ref): Make better error message - when field is not found. - - * cplus-class.c (finish_struct): TYPE_GETS_*_INIT_REF comes from - members as well. - - * cplus-typeck.c (c_expand_return): Give warning about returning - non-lvalues that come from functional casts. - - * cplus-search.c (get_base_distance): Changed to follow leftmost - path only when PARENT == TYPE_MAIN_VARIANT (PARENT). - - * cplus-class.c (modify_vtable_entries): Call get_base_distance - with 0 path_ptr, since we do not appear to use the path computed. - -Fri Aug 3 07:37:30 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * final.c (leaf_function_p): Delete line advertently retained - after change of July 29. - - * reorg.c (optimize_skip, try_hoist_target): Don't invert jump - unless can_reverse_comparison_p says it is OK. Use invert_jump - to do it. - (fill_simple_delay_slots): Another way flow of control can merge is - for two insns to jump to the same place; try to get insns from there. - (mostly_true_jump): Return 2 for a jump very likely to be true (the - branch back to the start of a loop). - (fill_slots_from_thread): Accept new arg LIKELY. If true, see if can - put increment in delay slot and undo it after the end of the loop. - (fill_eager_delay_slots): Pass new arg to fill_slots_from_thread. - If previous insn is conditional jump that also didn't get a delay - slot, see if swapping targets helps. - -Fri Aug 3 00:18:35 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cccp.c (MAKE_POS): Avoid constant of uncertain signedness. - - * gnulib2.c (__bb_init_func): Add dummy function to prevent warning. - -Thu Aug 2 17:44:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * output.h (current_function_return_rtx): Add new variable. - * function.h (return_rtx): Likewise. - * function.c (push_function_context, pop_function_context): Save - and restore current_function_return_rtx. - (assign_parms, expand_function_start): Set current_function_return_rtx - to what is put in DECL_RTL (DECL_RESULT (current_function_decl)). - * reorg.c: No longer uses tree.h. - (dbr_schedule): Get result RTL from current_function_return_rtx instead - of reading it from current_function_decl. - * Makefile.in (reorg.o): No longer depends on TREE_H. - - * cse.c (remove_invalid_refs): Only invalidate an entry if it - references the actual register, not merely something sharing its - quantity. - (cse_insn): Don't abort if SRC and SRC_EQUIV map to different - hash classes. Merge them instead. - - * romp.md (mulsi3): Emit call to lmul$$ as a regular insn - rather than a CALL_INSN. - (divsi3, modsi3, udivsi3, umodsi3, call_libfcn): Deleted. - (divmodsi4, udivmodsi4): New patterns to call ldiv$$ and uldiv$$ - as a normal insn to allow CSE'ing of MOD with DIV. - -Wed Aug 1 21:56:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-parse.y (yylex): Don't warn about non-decimal unsigned by default - if `u' was specified. Add similar warning for long and long long. - -Tue Jul 31 23:31:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tm-encore.h (FUNCTION_PROFILER): Override, putting `.' in label. - - * xm-vms.h (const): Delete the definition. - -Mon Jul 30 18:33:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-typeck.c (convert_for_assignment): Normally no warning - between char * and unsigned char *, etc. - (convert_arguments): Include arg number in incomplete type warning. - -Mon Jul 30 07:38:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * jump.c (invert_jump): Don't do anything with labels if NLABEL - equals JUMP_LABEL. - (redirect_jump): Don't try to reference LABEL_NUSES if olabel is - zero (meaning this is a return insn). - (redirect_exp): Handle case of converting return to jump to - label. - - * dbxout.c (dbxout_parms): Allow parameter at zero offset from - AP to be represented as (MEM (REG ...)). - * sdbout.c (sdbout_parms): Likewise. - -Sun Jul 29 22:51:00 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * optabs.c (expand_twoval_binop_convert): Deleted. - (expand_twoval_binop): Rework to be handle predicates, modes, and - failures in a manner consistent with expand_binop. - Move code from expand_twoval_binop_convert inline and rework to - no longer hard-wire SImode and to handle failure. - - * config.gcc: Finish change of July 24th to have make_var_file depend - on host machine. - - * jump.c: Now includes insn-flags.h. - (jump_optimize): Try to put a RETURN at the end of the function if - control flows through to it. - JUMP_LABEL can now be zero for a RETURN or conditional RETURN. - Try to convert jump to end of function into (possibly conditional) - RETURN. - Use next_active_insn instead of next_real_insn; these do the same - thing prior to reload, after which USE and CLOBBERs don't matter. - redirect_jump may now fail so don't set CHANGED if it does. - Delete optimization of jump to RETURN; now subsumed by follow_jumps. - Reset INSN_CODE if changing conditional jump to unconditional. - (cond_jump_p): Conditional RETURN is conditional jump. - (follow_jumps): Change argument name to AFTER_RELOAD. - If not after reload, do not chain across a USE or CLOBBER. - Recognize RETURN insns. - (tension_vector_labels): Likewise. - (redirect_jump, redirect_exp): If NLABEL is zero, turn JUMP into a - (possibly conditional) RETURN; use validate_change to see if such an - insn exists. - Now returns non-zero if succeeds, 0 otherwise. - Unconditional RETURN looks like (RETURN), not (SET (PC) (RETURN)). - (thread_jumps): Ignore any type of RETURN insn. - * Makefile.in (jump.o): Depends on insn-flags.h. - * loop.c (strength_reduce): Don't confuse conditional return with - jump to top of loop when LOOP_TOP == 0. - * final.c (leaf_function_p): No longer static; no longer takes an arg. - (final_start_function): Don't pass START to leaf_function_p. - * romp.md (return pattern): Convert to a named pattern. - -Sun Jul 29 16:05:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tm-vms.h (ASM_OUTPUT_EXTERNAL): Check TREE_READONLY. - - * xm-vms.h (alloca): Use built-in alloca. - -Sun Jul 29 06:47:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reorg.c (fill_slots_from_thread): Restore inadvertantly deleted - lines. - -Fri Jul 27 19:53:18 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * Makefile.in (reorg.o): Depends on tree.h, basic-block.h, regs.h, - and output.h - -Fri Jul 27 16:30:03 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * varasm.c (assemble_variable): Handle ASM_OUTPUT_SHARED_COMMON - and ASM_OUTPUT_SHARED_LOCAL. - - * tm-encore.h (SHARED_SECTION_ASM_OP): New macro. - (ASM_OUTPUT_SHARED_COMMON, ASM_OUTPUT_SHARED_LOCAL): New. - All this waiting for papers from pabuhr@watmsg.waterloo.edu. - -Fri Jul 27 16:10:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * make-romp (CC): Set up to allow use of hc. - -Fri Jul 27 15:07:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * combine.c (subst): Handle (ASHIFT 1 x) in (EQ (AND ... y) 0) - only if little-endian. - -Thu Jul 26 23:19:15 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expmed.c (expand_shift): Consistently call protect_from_queue - before doing anything else. - Always put operand1 of extzv into a register because it is SImode - and we assume that this means a register. - -Thu Jul 26 14:18:11 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * varasm.c (assemble_variable): Delete dead code. - DATA_ALIGNMENT takes tree and current alignment and gives new - alignment for a non-automatic variable of that type. - Also apply CONSTANT_ALIGNMENT to the initial value; it now takes - the constant and old alignment and gives the new alignment. - Adjust DECL_ALIGN to the resulting alignment. - Use floor_log2 consistently instead of duplicating its function. - (get_or_assign_label): Use CONSTANT_ALIGNMENT instead of DATA_ALIGNMENT - and pass type instead of decl. - * expr.c (get_pointer_alignment): Rework to: distinguish reliably - between expressions giving the address and those giving the item being - addressed; use the alignment from the type of the object being - pointer to; return 0 if the type is not a pointer; and other - miscellaneous changes. - (string_constant): Skip CONVERT_EXPR and NON_LVALUE_EXPR as well - as NOP_EXPR. - (expand_builtin): Allow get_pointer_alignment to fail, in which case - we call the actual function. - * stmt.c (expand_decl): Set actual alignment obtained into DECL_ALIGN - since it may be better aligned than required and get_pointer_alignment - can take advantage of this. - * tm-gmicro.h, tm-pyr.h, tm.romp-h: Add or replace definitions of - CONSTANT_ALIGNMENT to word-align string constants and - DATA_ALIGNMENT to word-align character arrarys for builtin memory - functions. - - * fold-const.c (rshift_double): Reset carry after each shift of - one bit. - - * vax.md (ashrsi3): If right shift by constant, emit as ASHIFTRT. - (ashrsi3_const): New pattern to match it. - (casel): Delete patterns no longer needed. - * cse.c (cse_insn): Remove unneeded part of change of July 23. - (fold_rtx): Convert shift with negative constant count to shift in - the opposite direction. - * combine.c (subst): Likewise. - - * emit-rtl.c (init_emit_once): Initialize arg_pointer_rtx before - struct pointer and static chain values in case they want to use it. - -Thu Jul 26 12:31:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * final.c (final_scan_insn): Align label table to boundary appropriate - for items of its size. - (get_attr_length, shorten_branches): Allow for label table alignment. - -Wed Jul 25 15:06:44 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * fixincludes: Handle uses of _IO* followed by spaces. - Change redirections for cd when testing that directory exists. - - By Tiemann: - - * emit-rtl.c (next_cc0_user): Handle insns in which cc0 - is set and used in the same insn. - - * final.c (leaf_function_p): Look inside INSNs which contain - a delayed-call sequence. - (final_start_function): Test `only_leaf_regs_used' before - `leaf_function_p', since that is likely to be faster. - (final_scan_insns): Normally we don't have NOTICE_UPDATE_CC - take action when processing the path of an annulled branch, - since that path does not affect the cc's of the fall-through - insns at all. However, we cannot always ignore the effect of - the cc's when processing a delayed annulled branch: when the - delayed annulled branch follows a label and carries a - REG_CC_STATUS note, that note must be processed. - - * genattr.c (main): Generate #defines for annulled branches - which are consistent with documentation. - - * reorg.c: Finish recent rework by modifying code specific to - machines that have annulling branches. - - * c-common.c (merge_component_comparisons): Previous logic did - not handle cases of (A == 1) && (B == 1), (A != 0) && (B != 0), - and (A != 1) || (B != 1). Fixed by expanding the logic out - longhand and letting the compiler do the proper cross-jumping. - - * tm-vms.h (ASM_OUTPUT_EXTERNAL): Use assemble_name. - - * expr.c (expand_expr): For BIND_EXPR, do the init for all vars. - - * stupid.c: Include flags.h. - * genrecog.c (main): Make insn-recog.c include flags.h. - -Sun Jul 22 12:04:43 1990 Michael Tiemann (tiemann at cygnus.com) - - * cplus-except.c (cplus_expand_end_except): If the user gives a - default handler, the exception is considered caught in that - handler. - * cplus-parse.y (except_stmts): Rest of fix went here, in DEFAULT - case. - - * cplus-decl.c (finish_decl): Don't emit cleanups twice. - - * cplus-class.c (finish_struct_bits): Don't call - `fixup_vbase_offsets'. - * cplus-tree.c (fixup_vbase_offsets): #if 0 this function. - - * cplus-cvt.c (build_default_binary_type_conversion): Handle - arguments which are REFERENCE_TYPE. - - * cplus-method.c (prepare_inline): Set DECL_CONTEXT of this - function's parameters. - - * cplus-decl.c (grokfndecl): When adding a new virtual function - entry, RAISES may change a second time. - -Thu Jul 5 10:44:39 1990 Michael Tiemann (tiemann at cygnus.com) - - * cplus-decl2.c (grokfield): Static consts need not be initialized - in the class definition. - -Mon Jul 2 06:12:49 1990 Michael Tiemann (tiemann at cygnus.com) - - * cplus-init.c (resolve_offset_ref): If BASETYPE is not a base - type for the current class, give error and return. - -Sun Jul 1 00:18:47 1990 Michael Tiemann (tiemann at cygnus.com) - - * cplus-decl.c (finish_function): Throw away more code if we have - an inline function from the interface. - - * cplus-class.c (add_virtual_function): Set DECL_VINDEX from the - virtual function which comes from the vtable shared by - CURRENT_CLASS_TYPE, if possibe. - - * cplus-typeck.c (build_binary_op): Call `default_conversion' - after doing type instantiation. - - * cplus-init.c (build_new): New 2.0 interpretation: `new int (10)' - means allocate an int, and initialize it with 10. - - * cplus-init.c (emit_base_init): Completion of fix for virtual - function table initialization. @@ BTW, this may now cause extra - virtual function table initializations. They will all be correct, - but they may also be redundant. GCC's optimizer doesn't know how - to remove even the simplest such redundancy. - -Sat Jun 30 13:54:30 1990 Michael Tiemann (tiemann at cygnus.com) - - * cplus-class.c (finish_base_struct): Store BASETYPE in the - VFIELDS chain (in its TREE_TYPE). - -Fri Jun 29 09:26:17 1990 Michael Tiemann (tiemann at cygnus.com) - - * cplus-class.c (build_vtable,prepare_fresh_vtable): Stash the - type that caused this vtable to be defined in DECL_CONTEXT - * cplus-search.c (bfs_unmark_finished_struct): Work around - DECL_CONTEXT conflict for vtables. @@ NOT A SOLUTION. - - * cplus-lex.c: Extend meaning of `#pragma implementation' - to allow files to `implement' types from general headers. - -Tue Jul 24 22:18:23 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reorg.c: Major rework. Changes includes: - (mark_target_live_regs): Scan code to compute which registers are - live at particular insns. Uses tables created by flow, REG_DEAD - notes, and registers set before they are used. - (emit_delay_sequence): Always write SEQUENCE as INSN. Many routines - changed to reflect this. - (fill_simple_delay_slots): Loop for merge point when target of jump - comes back to fallthrough code. Try to get insns from there. - (fill_eager_delay_slots): Fallthrough and target case merged into new - function fill_slots_from_thread. - - * tm-romp.h, romp.md, out-romp.c, xm-romp.h, make-romp: New files to - support the ROMP microprocessor, used in the IBM PC RT. - - * recog.c (comparison_operator): New function. - - * jump.c (jump_optimize): If putting constant into register, see - if it is already present in the register. - -Tue Jul 24 15:35:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-typeck.c (build_binary_op_nodefault): Allow compare of any - pointer with const void *, etc. - -Tue Jul 24 17:10:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (get_inner_reference): New function. - (expand_assignment): Use it to find out about our target. - (expand_expr, case COMPONENT_REF): Likewise. - (expand_expr, case COND_EXPR): If can do store-flag, convert - X ? A+1 : A to A + (X!=0); fold-const made the former from the latter. - Only create label when we know we will need it. - Simplify unnessarily complex call to safe_from_p. - (expand_expr): Make new variable UNSIGNEDP and use it instead - of TREE_UNSIGNED (type). Also, consistently use existing - variable TYPE instead of TREE_TYPE (exp) and similarly for MODE. - -Tue Jul 24 13:50:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cccp.c (collect_expansion): Error if ## at beg or end. - - * c-decl.c (grokdeclarator): Error for long, etc. with nonarith type. - Error for signed or unsigned with floating type. - Error for initialized parm. - - * config.gcc: Make make_var_file depend on host machine, not target. - -Tue Jul 24 13:40:35 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * varasm.c (decode_reg_name): Make TABLE static for non-GCC compilers. - - * c-typeck.c (type_for_size, type_for_mode): Delete from here. - (binary_op_error, shorten_compare, truthvalue_conversion): Likewise. - * cplus-typeck.c: Delete second copy from here. - * c-common: Move above functions to here. - -Tue Jul 24 12:20:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cccp.c (path_include): Fix typo in var name. - -Mon Jul 23 17:46:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * config.gcc: Remove redundant assignment to tm_file for 88000. - Fix typo when assigning to make_var_file. - - * function.c (optimize_bit_field): Fix typo in change_address call. - -Mon Jul 23 16:59:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * varasm.c (decode_reg_name): Ignore % at beginning of name. - Support extra names defined by ADDITIONAL_REGISTER_NAMES. - * tm-i386.h (ADDITIONAL_REGISTER_NAMES): Define it. - - * dbxout.c (dbxout_init): Handle new macros - ASM_OUTPUT_MAIN_SOURCE_FILENAME and ASM_OUTPUT_MAIN_SOURCE_DIRECTORY. - * sdbout.c (sdbout_filename): Handle ASM_OUTPUT_MAIN_SOURCE_FILENAME. - -Mon Jul 23 16:50:32 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * tm-vax.h (NOTICE_UPDATE_CC): CALL clobbers CC if inside PARALLEL too. - - * vax.md (call_value_pop): Fix typo in argument number. - - * cse.c (cse_insn): Shift's aren't associative if in different - directions, even if same rtx_code. - Try to fold result of associating the operation in case it is now - trivial. - - * jump.c (mark_modified_reg): New function. - (thread_jumps): Look at insns between target of first jump and the - second jump. Mark any registers that they modify and record if they - modify memory. - Don't go past a CODE_LABEL. - If we pass an unconditional jump, follow it. - Use prev_nonnote_insn instead of explicit loop. - (rtx_equal_for_thread_p): Consult recorded information to see if - memory of registers were modified prior to second jump. - * Makefile.in (jump.o): Now needs hard-reg-set.h. - -Sat Jul 21 13:58:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cccp.c (O_RDONLY): Define it if not defined. - - * c-decl.c (finish_decl): No error for nonstatic incomplete array. - -Sat Jul 21 08:24:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * alliant.md (call patterns): Function address must be memory operand. - * convex.md, m68k.md, mips.md, ns32k.md, tahoe.md, vax.md: Likewise. - -Thu Jul 19 16:06:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cccp.c (path_include): New function. - (main): Call that to handle CPATH envvar. - - * varasm.c (assemble_variable): Error if size exceeds 2**32-1. - - * emit-rtl.c (init_emit_once): Pass write_symbols to this function - (init_emit): Not this one. All callers changed. - -Tue Jul 17 21:24:08 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * local-alloc.c (update_equiv_regs): Don't replace a register with - an equivalence if the insn making the equivalence has a source - different from the equivalent value. - -Tue Jul 17 16:47:42 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expr.c (emit_block_move): Allow movstr* to fail. - -Tue Jul 17 15:19:18 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * emit-rtl.c (change_address): Don't call memory_address if reload - is in progress, not just after it has completed. - -Mon Jul 16 00:34:27 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * jump.c (can_reverse_comparison_p): New function. - (jump_optimize): In if (x) ... else x = 0; reverse comparison - if second operand of IF_THEN_ELSE is PC; use new function to - validate the reversal. - (jump_back_p): Use new function to see if safe to reverse comparison. - -Sun Jul 15 17:03:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * jump.c (jump_optimize): Bug in last change; reject uncond jump - where conditional is expected. - - * flow.c (mark_used_regs): Handle autoincrement for *p - followed by q = p+size (neither one dead). - -Sat Jul 14 22:37:45 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * combine.c (subst): Remove (zero_extend (subreg)) around lshiftrt. - Remove (and...) from second arg of shift. - Remove (and...) from around shift. - -Sat Jul 14 21:35:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * local-alloc.c (update_equiv_regs): New function. - (local_alloc): Call it. - (block_alloc): Don't handle REG_EQUIV notes here; now done in - update_equiv_reg. - - * calls.c: Include insn-flags.h. - * Makefile.in (calls.o): Likewise. - -Sat Jul 14 13:28:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (duplicate_decls): Don't set DECL_FRAME_SIZE for builtins. - - * vax.md (SImode bit-field patterns): Use nonmemory_operand. - - * jump.c (jump_optimize): - For if (...) x = 1; else x = 0; x must be integer. - - * gcc.c (default_compilers): Pass -P to cpp. - -Thu Jul 12 23:38:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stor-layout.c (layout_record): Handle BITFIELD_NBYTES_LIMITED. - - * sparc.md (call recognizers): Don't allow address arithmetic. - -Thu Jul 12 21:47:45 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * emit-rtl.c (change_address): If reload has completed, don't call - memory_address. Instead, abort if address is not valid. - -Thu Jul 12 20:41:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * calls.c (emit_call_1): Handle vax, without call and call_value. - -Thu Jul 12 20:39:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (merge_equiv_classes): New function, from record_jump_equiv. - (record_jump_equiv): Use new function. - (gen_lowpart_if_possible): New function, based on gen_lowpart. - (cse_insn): In some cases of (set (subreg (FOO) 0) (BAR)), note - that (subreg BAR) is an equivalent of FOO. - * integrate.c (expand_inline_function): Likewise. - - * combine.c (subst): Check for constant in merge of shift into - ZERO_EXTRACT. - (gen_lowpart_for_combine): Look for SIGN_EXTEND or ZERO_EXTEND: - - * emit-rtl.c (gen_lowpart, gen_highpart): If passed a hard register, - return a new rtx for it in the proper mode, rather than a SUBREG. - -Wed Jul 11 17:05:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (cse_insn): If already have a REG_WAS_0 note, don't make - another one. - Rework some loops on SETs to eliminate duplicate code and clean up - a bit. - - * rtlanal.c (refers_to_regno_p, reg_overlap_mentioned): Allow these - to work on pseudos as well as hard registers. - - * optabs.c (emit_no_conflict_block): Use reg_overlap_mentioned - to see if register is mentioned in insn. - -Wed Jul 11 16:56:01 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * jump.c (jump_optimize): Don't optimize jumps to store-flags - if after register allocation. And don't do it if memref is used. - -Wed Jul 11 16:12:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * emit-rtl.c ({next,prev}_nonnote_insn, prev_label, prev_cc0_setter): - New functions. - ({next,prev}_{real,active}_insn, next_label): Rework to allow - argument of zero; return zero in that case. - (next_active_insn, prev_active_insn): If reload is not yet complete, - do the same thing as next_real_insn and prev_real_insn. - (next_cc0_user): Fix some bugs and typos. - - * rtlanal.c (reg_mentioned_p): Allow searches for labels to work. - -Wed Jul 11 12:25:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (duplicate_decls): In prev fix, use TREE_PUBLIC both times. - -Tue Jul 10 22:54:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * rtl.def (trap): New code. - -Tue Jul 10 17:48:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * tree.c (integer_zerop, integer_onep, integer_all_onesp): Look inside - a NON_LVALUE_EXPR. - (real_zerop, real_onep, simple_cst_equal): Likewise. - -Tue Jul 10 17:05:50 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-parse.y, objc-parse.y, cplus-lex.c (yylex): - Terminate token_buf after integer. - -Mon Jul 9 15:22:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * c-decl.c (duplicate_decls): Correct test for extern followed by - static function declaration. - -Mon Jul 9 14:13:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (grokdeclarator): Move warning and error - about initializer with extern to the same place. Do one or the other. - - * rltanal.c (reg_mentioned_p): Don't look inside a CONST_DOUBLE. - -Sun Jul 8 14:12:21 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * toplev.c (pedwarn, pedwarn_with_file_and_line, pedwarn_with_decl): - New functions. - (flag_pedantic_errors): New variable controls them. - * c-decl.c, c-parse.y, c-typeck.c: Use new functions for many warnings. - * varasm.c: Likewise. - * gcc.c (default_compilers): Pass -pedantic* to cc1, cpp, etc. - * cccp.c (pedwarn): New function. Many calls to `warning' changed. - - * c-common.c (c_expand_expr_stmt): New function. - Error about incomplete type moved here. - * expr.c (expand_expr): Error deleted from here. - * c-parse.y: Use c_expand_expr_stmt where suitable. - - * flow.c (propagate_block): Set following_insn_dead on insn after test. - (mark_used_regs): Test that var; don't call insn_dead_p here. - -Fri Jul 6 13:05:01 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-typeck.c (build_indirect_ref): - No error if result is incomplete array. - - * expmed.c (store_bit_field, extract_bit_field): New arg TOTAL_SIZE. - Don't extract a bigger unit from memory than this. - * expr.c: Callers changed. - (store_field): New arg TOTAL_SIZE; callers changed. - - * out-ns32k.c (print_operand_address): Changes from Ian Dall. - * xm-ns32k.h: Use built in alloca. - * ns32k.md (ashlsi3): Don't forget to return a value. - (movsf): Output floating constants only if GAS_SYNTAX. - (call, call_value): Support JSR_ALWAYS. - Change handling of bsr if GAS_SYNTAX. - (bit test patterns): Use g constraint for op1 and rm for op0. - -Thu Jul 5 21:53:10 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-typeck.c (build_c_cast): Don't do implicit arithmetic conversions. - * fold-const.c (fold): Don't combine two conversions if one is - signed and the other is unsigned. - * integrate.c (copy_parm_decls): Finish making last change. - -Thu Jul 5 18:26:03 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (safe_from_p): If EXP is readonly memory, any memory location - is safe from it. - -Thu Jul 5 15:05:19 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * gnulib2.c (__fixunsdfsi): Change > to >=. - - * c-decl.c (start_struct, start_enum): Set C_TYPE_BEING_DEFINED. - (grokdeclarator): Don't warn of array if elt type being defined. - - * c-typeck.c (build_conditional_expr): Handle ((void *) 0). - Allow 0 versus function pointer. - -Thu Jul 5 08:05:09 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (cse_insn): If machine has post-increment, don't associate - PLUS operations if they are both adding the same constant that is - a power of two. Similarly for post-decrement. - -Wed Jul 4 19:04:20 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * flow.c (mark_used_regs): Don't scan a comparison if the following - insn that uses the cc's is dead. - - * flow.c (propagate_block): If cc-using insn is dead, so is previous. - - * expmed.c (emit_store_flag): New function. - -Wed Jul 4 18:45:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * c-typeck.c (common_type, comptypes, default_conversion): - Use TYPE_READONLY in type to indicate const type; use TREE_READONLY - in decl to indicate object will never change. - (build_unary_op, readonly_warning, build_modify_expr): Likewise. - (c_expand_asm_operands): Likewise. - * cplus-class.c (finish_struct_bits): Likewise. - * cplus-cvt.c (build_type_conversion): Likewise. - * cplus-type2.c (readonly_warning_or_error): Likewise. - * cplus-typeck.c (default_conversion, build_unary_op): Likewise - (build_modify_expr, c_expand_asm_operands): Likewise. - - * cplus-cvt.c (popclass): When making INDIRECT_REF, don't set - TREE_READONLY from TYPE_READONLY. - -Wed Jul 4 15:16:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * jump.c (jump_optimize): Fix bugs in last change. - -Wed Jul 4 07:52:53 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (expand_expr, case COMPONENT_REF): Delete extraneous test - for structure-value stack slot, which no longer exists. - - * reload1.c (bad_spill_regs): Should be static. - - * combine.c (subst, gen_lowpart_for_combine): Propagate - RTX_UNCHANGING_P when making a new MEM. - * c-typeck.c, cplus-typeck.c (build_indirect_ref): ANSI says that - de-reference of pointer-to-const is not readonly so don't set - RTX_UNCHANGING_P. - * explow.c (validize_mem): Use change_address so flags get copied - to new MEM. - * expr.c (convert_move, block_block_{to,from}_reg, emit_move_insn): - Likewise. - (do_tablejump): Set RTX_UNCHANGING_P in MEM accessing address table. - * function.c (optimize_bit_field, instantiate_virtual_regs_1): - Preserve flags when making new MEM. - * loop.c (invariant_p): Memory references to an invariant address - are invariant if RTX_UNCHANGING_P is set. - * recog.c (adj_offsettable_operand): Propagate RTX_UNCHANGING_P - when making new MEM. - * reload.c (find_reloads_toplev): Likewise. - * reload1.c (alter_reg): Stack slot is readonly if pseudo was. - (eliminate_regs): Propagate RTX_UNCHANING_P in new MEM. - * varasm.c (force_const_double_mem): Set RTX_UNCHANGING_P in new MEM. - -Tue Jul 3 21:50:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expmed.c (expand_and): New function. - - * stmt.c (expand_expr_stmt): - If value is volatile, fetch it and then ignore it. - - * expr.c (expand_expr): Error if variable type is incomplete. - - * c-decl.c (grokdeclarator): Don't warn of incomplete array in typedef. - -Tue Jul 3 18:03:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * fold-const.c (fold): Convert "(1 << foo) & bar" to "(bar >> foo) & 1" - In "(a & 1) != 0", can convert to simply "a & 1". - * combine.c (subst): Convert branch on sign bit to signed comparison - with zero (possibly adding a SUBREG). - Convert ZERO_EXTRACT of the low-order bit of a right shift into a - ZERO_EXTRACT of the proper bit. - -Mon Jul 2 12:07:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * jump.c (jump_optimize): Convert conditionals for storing one - value into a store-flags insn. - - * vax.md (call_pop, call_value_pop): New names for call patterns. - Include the popping explicitly in the rtl. - - * jump.c (jump_optimize): Delete case for condjump followed - by unconditional to same label; was special case of another case. - Switch back to next_active_insn or prev_active_insn in a few cases. - - * function.c (init_function_start): Initialize - frame_pointer_needed to zero. - - * i386.md (tstsf): Clobber reg 0 in SImode. - -Sun Jul 1 14:31:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * jump.c: Use next_real_insn instead of next_active_insn. - Likewise for prev_active_insn. USE insns make a difference! - - * function.c (assign_stack_temp): Use largest alignment if BLKmode. - - * stddef.h: Check __SIZE_T also. - - * toplev.c: Include types.h first. - - * i386.md (trunc*2): Don't allow moving symbolic constant to memory. - Use wider move only for symbolic constant. - - * tm-convex.h (LINK_SPEC): Posix link flags. - * tm-convex.h (STARTFILE_SPEC): Posix start files. - * tm-convex[12].h (CPP_SPEC): Posix defines. - * tm-convex[12].h (LIB_SPEC): Posix libraries. - * tm-conv[12]os7.h: New files. - * config.gcc: use tm-conv*os7 if /usr/include/stdlib.h isn't there. - - * xm-convex.h (S_IFMT, S_IFREG): make visible if hidden for posix. - * xm-convex.h (_PROTO): define to keep 8.0 includes from screwing up. - - * tm-convex.h (ASM_OUTPUT_{FLOAT,DOUBLE}, PRINT_OPERAND): - use %e instead of %#g, which is broken or non-posix. - - * tm-convex.h (current_section_is_text): make extern. - * out-convex.c (current_section_is_text): define here. - * tm-convex.h (OVERRIDE_OPTIONS), out-convex.c (override_options): - useless; remove. - * tm-convex.h (CPP_PREDEFINES): remove parsec, long gone from - system includes. - -Sat Jun 30 14:01:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (pending_xref_error): Fix typo in arg order. - - * cccp.c (do_include): Mention non-ex system headers for -M. - Guess the directory. - (check_macro_name): Should not be static. - - * rtl.def (inline_header): Add a vector at the end. - * rtl.h (ORIGINAL_ARG_VECTOR): New macro. - (RTVEC_ELT): New macro. - * emit-rtl.c (gen_inline_header_rtx): New argument for that vector. - * integrate.c (save_for_inline): Copy arg rtls if nec, then make - an arg vector to put in the header. - (expand_inline_function): Look in that vector for the rtl. - (copy_parm_decls): Likewise. - - * c-decl.c (duplicate_decls): Warn if function declared external - and later static. - -Fri Jun 29 13:29:24 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cccp.c (handle_directive): Supply missing *. - -Thu Jun 28 21:39:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * m68k.md (muldf3 for 68881): Generate fscale if appropriate. - * out-m68k.c (floating_exact_log2): New function. - -Wed Jun 27 17:19:36 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (finish_struct): New handling of zero-width bit fields. - Store appropriate data in them like other bit fields. - Don't delete them until after layout. - Don't mess with alignment of following field; set its own. - If PCC_BITFIELD_TYPE_MATTERS, get alignment from type. - * stor-layout.c (layout_record): For zero-width field, if - PCC_BITFIELD_TYPE_MATTERS, alignment does not affect that of structure. - (layout_decl): Don't abort for zero-width if no name. - - * function.c (expand_function_start): - Output ...FUNCTION_BEG note here, after assign_parms. - (init_function_start): Not here. - - * sdbout.c (sdbout_record_type_name): Conditionalize for - SDB_ALLOW_FORWARD_REFERENCES. Don't use typedef names, just tags. - (sdbout_begin_block): Likewise. - (plain_type_1): Likewise. Also move code to output structure size. - (sdbout_symbol): Output the type if not yet output. - Don't output top-level initialized variables yet. - Avoid crash if variable never got any rtl. - Add conditional for SDB_AUTO_NORMALIZE_OFFSET. - (sdbout_toplevel_data, sdbout_queue_anonymous_type): - (sdbout_dequeue_anonymous_type): New functions. - (sdbout_tags): Reverse the list first. - Output enums before other things. - (sdbout_reg_parm): Fake a name if necessary. Use C_REGPARM. - * toplev.c (compile_file): Call sdbout_toplevel_data. - - * c-typeck.c (convert_for_assignment): Disable warnings for pointers - to const and volatile functions. - - * expr.c (expand_expr): Mark variable as used. - -Tue Jun 26 17:05:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tm-sparc.h (LINK_SPEC): Delete spurious `-'. - - * tm-sun3.h (ASM_OUTPUT_FLOAT_OPERAND): Handle minus zero. - (ASM_OUTPUT_DOUBLE_OPERAND): Likewise. - - * stor-layout.c (layout_type): Check TYPE_NO_FORCE_BLK in union fields. - -Tue Jun 26 01:48:57 1990 Michael Tiemann (tiemann at cygnus.com) - - * tree.c (dump_tree_statistics): Dummy function. To be filled in - later when we decide what tree statistics should be measured. - (build): Now ok to take arguments of length 1. `build1' cannot be - used to allocate 's' tree nodes whcih might have length 1. - - * All GNU C++ files updated to 1.37.2 (alpha 2). NOTE: cplus-decl.c - needs to be fixed to not us RTL. I'm leaving this file in its - current state so that the GNU C++ compiler at least compiles. - - * All SPARC files: modified to use registers %f30 and %f31 as - temporaries for holding floating-point zero. Used to use %f0 and - %f1, which made it impossible to compare function return values with - zero. - -Mon Jun 25 16:54:13 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * function.c (init_function_start): New args give file/line for first note. - * c-decl.c (store_parm_decls): Pass them. - * integrate.c (output_inline_function): Pass dummies for them. - * final.c (final_start_function): For sdb, don't output a line number, - just set last_linenum. - - * c-parse.y (hash, is_reserved_word): New keyword __label__. - - * stddef.h: Check _T_SIZE as well as _SIZE_T. - -Sun Jun 24 16:09:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expr.c (expand_expr): Do preserve_temp_slots for TARGET_EXPR. - -Sat Jun 23 09:52:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * genpeep.c (gen_peephole): Ignore USE and CLOBBER insn as well as - NOTE when matching peephole. - -Fri Jun 22 17:40:56 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-typeck.c (process_init_constructor): Set up TREE_PURPOSE - in record constructor elements. - - * cexp.y (exp1): If pedantic, warn about commas. - (tokentab2): Add entries for ++ and --. - (yylex): Error if those are used. - - * c-decl.c (lookup_tag): For wrong kind of type, just set flag. - (shadow_tag): Clear the flag. - (pending_xref_error): Print the error message here if flag set. - * c-parse.y (setspecs): Call that. - - * calls.c (emit_call_1): Use call_pop and call_value_pop insns - to record when the called function pops its args. - -Fri Jun 22 16:43:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * local-alloc.c (wipe_dead_reg): Remove REG_DEAD note for unset reg. - - * tm-sparc.h: Replace FIX_FRAME_POINTER_ADDRESS with - INITIAL_FRAME_POINTER_OFFSET. - - * tm-vax.h (RTX_COSTS): Show shifts are relatively expensive. - -Fri Jun 22 15:05:24 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Makefile.in (GEN): New variable. - (P): New variable. - (cc1, cc1plus, cc1obj): Use $(P). - - * cccp.c (check_macro_name): New subroutine taken from do_define. - (do_define, do_undef): Use this. - (do_undef): Warn if junk follows name. - (handle_directive): Always ignore empty directive. - Warn if \f or \v in directive. Error for malformed directive name. - - * tree.h (BUILT_IN_NEXT_ARG): Define it. - * c-decl.c (init_decl_processing): Declare __builtin_next_arg. - * expr.h (current_function_arg_offset_rtx): Declare it. - * function.c (assign_parms): Set that variable at end. - * expr.c (expand_builtin): Implement __builtin_next_arg. - * stdarg.h (va_start): Use __builtin_next_arg. - - * c-decl.c (grokdeclarator): Check for TRADITIONAL_RETURN_FLOAT. - -Fri Jun 22 07:07:53 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * final.c (final_scan_insn): Put label for jump table in same section - (read-only data) as jump table. - - * loop.c: Allow tm.h to define ..._BENEFIT and COPY_PENALTY. - -Wed Jun 20 13:03:53 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tm-apollo68.h (FUNCTION_ARG_PADDING): Never pad. - (STACK_BOUNDARY): Make it 32. - (CPP_SPEC): Add spaces. Define _APOLLO_SOURCE if not -ansi. - - * c-common.c (check_case_value): New function. - * c-parse.y (stmt, when parsing case): Use that. - Add new rule for case range. - - * reload1.c (reload_inheritance_insn): New variable. - (reg_reloaded_insn): New variable. - (choose_reload_regs): Update those variables. - (emit_reload_insns): Use them to remove deaths from insns - that used input reloads. - (reload_as_needed): Clear reg_reloaded_insn when necessary. - - * m68k.md (ashlsi3, lshlsi3): Use add to self to shift one bit. - - * dbxout.c (STAB_CODE_TYPE): New macro defined as type for stab codes. - Use in place of enum __stab_debug_code. - -Tue Jun 19 22:56:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expr.c (expand_increment): For preincrement, don't load value twice: - use TEMP as input to addition. - -Tue Jun 19 06:53:13 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * explow.c (adjust_stack, anti_adjust_stack): Use expand_binop instead - of gen_{add,sub}2_insn since the latter will abort if the constant is - out of range for the machine. - -Tue Jun 19 00:35:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * local-alloc.c (post_mark_life): Don't decrement DEATH - if it equals BIRTH. Don't ever increment DEATH. - - * varasm.c (output_constructor): Discard non_lvalue_expr, not nop_expr. - Handle missing values. Use field in the tree_list, if any. - (output_addressed_constants): Don't die if value is missing. - * c-typeck.c (process_init_constructor): Handle index and field specs. - * c-parse.y (initlist): Parse them. - -Mon Jun 18 15:58:48 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c, cplus-decl.c (duplicate_decls): - Types don't "match" if one is error. - - * c-parse.y (label_decl): Use new keyword __label__, not colon. - - * c-parse.gperf (__label__): New keyword. - - * mips.md (probe): Make a single insn, just a memref. - -Mon Jun 18 14:27:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * loop.c (loop_optimize): Set max_luid to last luid + 1, as documented. - - * local-alloc.c (qty_clobber): New variable. - (local_alloc): Allocate and initialize it. - (reg_is_set): Set qty_clobber for a clobber of a pseudo used only - in this insn. - (find_free_reg): Pass qty_clobber to post_mark_life. - (post_mark_life): If CLOBBER if non-zero, register isn't live after - its death insn. - - * integrate.c (expand_inline_function): Don't call try_constants on - an insn that sets CC0 until we have processed the next insn. Then - call it on both. This is because the recognizer for these insns - may want to look at the user of CC0. - -Mon Jun 18 13:25:59 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * mips.md (ashlqi3, ashlhi3, one_cmplqi2, one_cmplhi2): Deleted. - (ashlsi3, ashrsi3, lshrsi3, neg*, one_cmplsi2): Simplified. - Don't output comments. Use more specific predicates. - - * mips.md (movsf, movdf): Use L, M codes to avoid #ifdef's. - Also simplify and don't output comments. - (anonymous patterns for those insns): Deleted. - (loading floating constant): New patterns added. - (move qi to si pattern): Deleted; ridiculous. - (movdi, movsi, movhi, movqi): No need to check for moving reg to self. - - * mips.md (nop): Use .set noreorder to placate assembler. - -Sun Jun 17 20:01:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * gcc.c (set_spec): Don't use `name' for both old spec and name of - spec. Use new var old_spec for the former use. - Don't use (char *) 0 for null spec; use a null string instead. - - * jump.c (jump_optimize): Don't special-case deleting an ADDR_DIFF_VEC. - Merge code to detect trivial ADDR_VEC and ADDR_DIFF_VEC. - (mark_jump_label): Don't count the use of a vector table label in - ADDR_DIFF_VEC. - (delete_insn): Can now handle ADDR_DIFF_VEC. - (delete_labelref_insn): New function. - (redirect_tablejump): Call new function to delete insn that references - the jump table. - -Sun Jun 17 01:19:26 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * genemit.c (gen_expand): Don't generate `operands' if size is 0. - - * tm-i860.h (GO_IF_LEGITIMATE_ADDRESS): Displacement must be multiple - of the alignment of the operand. - - * i860.md (signed bit field recognizers): Don't shift by >31 bits. - - * out-i860.c (output_delayed_branch): Pass register properly to - load_opcode. - - * mips.md (general/fp reg move patterns): Use codes L, M, D. - (movdi): Likewise. And don't output useless comments. - Use the assembler temp reg for non-offsettable address. - (movsi, movhi, movqi): Output nothing for move from reg to itself. - Output li to load a constant. Use `move' instead of `add'. - Don't output useless comments. - (load-address pattern): Deleted; handled by addsi3 pattern. - - * mips.md (addsi3, mulsi3): Make both input predicates arith_operand - since they are commutative. - (andsi3, iorsi3, xorsi3): Likewise. - - * tm-mips.h (MOST_SIGNIFICANT_WORD, LEAST_SIGNIFICANT_WORD): New. - - * tm-mips.h (PRINT_OPERAND): New codes D, L, M. - * mips.md (anddi3, iordi3, xordi3): Use earlyclobber to stop overlap. - Use new print code D. - - * mips.md (andsi3, iorsi3, xorsi3): Make predicates more specific. - (andhi3, ..., andqi3, ...): Patterns deleted. - (patterns for nor): New anonymous patterns. - * out-mips.c (uns_arith_operand): New function. - - * mips.md (trunc*, zero_extend*, extend*, fix_trunc*, float*): - Use more specific predicates. - - * mips.md (addhi3, ..., addqi3, ...): Patterns deleted. - (addsi3, subsi3, mulsi3, divsi3): Make predicates more specific. - Delete useless comments from assembler code. - Use more generic op codes rather than special cases such as addiu. - (divmodsi4, udivmodsi4, udivsi3, modsi3, umodsi3): New patterns. - (abssf2, absdf2): New patterns. - -Sun Jun 17 06:56:10 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (COST, rtx_cost, make_regs_eqv): Indicate that hard registers - in fixed_regs are even cheaper than pseudos. - - * function.c (instantiate_virtual_regs_1): If valid, replace PLUS - whose second operand would be zero with its first operand. - -Sun Jun 17 00:17:03 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * sdbout.c (sdbout_symbol): Get right regno for var-length object. - - * combine.c (simplify_set_cc0_and): Strip SUBREGs, but only if - they truncate. Handle ASHIFTRT like LSHIFTRT. - (try_combine): Call simplify_set_cc0_and in all those cases. - (subst): Handle (zero_extract (subreg (lshift (reg )))). - -Sat Jun 16 23:11:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tree.c (get_narrower, get_unwidened): Bit field test was backwards. - -Sat Jun 16 19:07:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * fold-const.c (fold): Fix typo in test for distributing binary - operator over conditional and compound expressions. - - * genoutput.c: Remove vestiges of obsolete and never used - INSN_MACHINE_INFO. - - * rtl.def (MATCH_PARALLEL): Add new RTL code. - * genconfig.c (walk_insn_part): Support MATCH_PARALLEL. - * genemit.c (max_operand_1): Likewise. - (gen_exp): Just write operand for MATCH_PARALLEL. - (gen_expand, gen_split): Support MATCH_PARALLEL. - * genrecog.c (walk_rtx): Add support for MATCH_PARALLEL. - * genoutput.c (scan_operands): Suppport MATCH_PARALLEL - like MATCH_OPERATOR. - * genpeep.c (match_rtx): Add code to support MATCH_PARALLEL. - Don't write unnecessary cast to `rtx'. - * genrecog.c (add_to_sequence): Simplify handling of mode. - Support MATCH_PARALLEL. - - * expr.c (move_block_{to,from}_reg): Support load/store multiple. - * function.c (instantiate_virtual_regs_1): If can't substitute - new pseudo for virtual register, try doing the substitution - globally throughout the entire insn. This lets load/store multiple - insns refer to virtual registers in their addresses. - - * genrecog.c (write_split_tree, write_split_subroutine): Deleted. - (break_out_subroutines, write_subroutine, write_tree): Accept - parameters that indicate whether we are making gen_split or gen_recog. - (main): Pass new parameters to break_out_subroutines and write_tree. - - * final.c (final_scan_insn): Process insns that set CC whenever a - REG_CC_STATUS note is found; not only JUMP_INSNs can use CC. - When scanning REG_CC_STATUS insns, set cc_prev_status from cc_status - each time. - - * recog.c (validate_replace_rtx): New function that tries to - replace all occurrences of an object within an insn and see if the - resulting insn is valid. - -Thu Jun 14 06:58:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * optabs.c (emit_no_conflict_block): Write REG_NO_CONFLICT notes all - all insns in the block that modify the output. Write them on the - final insn even if we don't put a REG_EQUAL note there. - - * stmt.c (expand_return): Only distribute return down a conditional - expression if tail recursion is possible in a branch. - - * expr.c (expand_expr): Remove obsolete reference to when we had - a shared structure-value slot. - - * jump.c (get_label_before, get_label_after, follow_jumps): No longer - static. - * rtl.h: Define them. - -Mon Jun 11 17:35:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * loop.c (INSN_LUID): Check for INSN_UID above the area that we - know about. - (loop_optimize): Cannot use INSN_LUID as lhs. - (scan_loop): If first jump is to label made by loop, we can't - tell if it is in range or not, so reject loop. - Reject loop if SCAN_START was an insn previously made by loop since - we won't know its luid. - Only call loop_reg_used_before if argument has known luid. - Mark partial invariant as global if its insn was made by loop. - (ignore_some_movables): Don't assume all invariants have luids. - (strength_reduce): Use no_labels_between_p instead of - labels_in_range_p. - Don't look at luid of insns for which one doesn't exist. - (valid_initial_value_p): Reject initializations in insns whose - luid we don't know. - - * loop.c (product_cheap_p): Put all our rtl into a separate obstack - and free memory from it. If we use current_obstack, we may free - memory allocated by gen_reg_rtx, which must be preserved. - - * c-common.c (rewrite_for_merged_ref): A non-zero one-bit signed field - is -1, not 1. - * c-typeck.c, cplus-typeck.c (build_binary_op_nodefault): If can't - merge comparisons, don't use result of rewrite_for_merged_ref; - comparisons with zero are more efficient. - - * protoize.c (main): Don't declare as extern. - - * c-aux-info.c (gen_aux_info_record): Don't declare extern. - - * genemit (gen_split): Rework to fix numerous bugs and typos. - - * function.c (assign_parms): Avoid generating (PLUS foo (const_int 0)). - -Wed Jun 6 20:03:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * gencodes.c (main): Count a code number for DEFINE_SPLIT. - - * rtlanal.c (note_store): Pass SUBREG of a hard register to function. - (reg_overlap_mentioned_p): Handle receiving SUBREG of hard register. - * integrate.c (mark_stores): Likewise. - * local-alloc.c (reg_is_set, reg_is_born): Likewise. - * reload1.c (mark_not_eliminable): Likewise. - - * loop.c (move_movables): Don't blow up if moving last real insn - in function. - -Wed Jun 6 19:44:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * gcc.c (default_compilers): Pass -traditional before -f*. - Delete -gg option. - -Sun Jun 3 22:44:12 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (grokdeclarator): Warn about extern with initializer. - -Sun Jun 3 22:32:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * genrecog.c (main): Don't call write_tree with null if no insns - were in file. - -Sat Jun 2 21:49:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (expand_expr, cases ABS_EXPR, MAX_EXPR, MIN_EXPR): Use target - unless zero or safe_from_p rejects it. - (expand_expr, conditional cases): Likewise. - -Sat Jun 2 14:46:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (grokdeclarator): Handle const and volatile with parm - specified as function type. - -Fri Jun 1 16:13:39 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * rtl.def (DEFINE_FUNCTION_UNIT): Change specifications so - it now is one per operation type, rather than one per - function unit. - * genattr.c (write_units): Write out new function names and - function unit table structure. - * genattrtab.c (struct function_unit_op): New structure. - (struct function_unit): Updated for new definition of - DEFINE_FUNCTION_UNIT. - (SIMPLIFY_TEST_EXP): New macro to reduce number of function calls - to simplify_test_exp. Replace all call to the function with - uses of the macro. - (check_attr_test, make_alternative_compare): Show that EQ_ATTR with - attribute of "alternative", MATCH_OPERAND, and comparison cases can't - be simplified. - (expand_units, gen_unit, write_function_unit_info): Support new - meaning of DEFINE_FUNCTION_UNIT. - (simplify_test_expr): Rework AND and IOR cases to reduce rescans. - Once an expression has been simplified, set RTX_UNCHANGING_P so - we won't try simplifying it again. Don't do this if INSN_CODE == -2. - (write_attr_set): Don't make a recursive call if we know that - the test we are writing will always be false. Also clean up a bit. - (main): true_rtx and false_rtx don't need to be simplified. - Write gen_attr_... routines before special routines. - -Fri Jun 1 14:17:48 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tm-sparc.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): - Round frame size to multiple of STACK_BOUNDARY. - -Fri Jun 1 09:38:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * optabs.c (emit_no_conflict_block): Place REG_NO_CONFLICT notes on - insn that contains REG_EQUAL note instead of insn doing computation. - - * cplus-decl2.c, cplus-lex.c: Rename gettime to get_run_time. - Likewise for my_gettime to my_get_run_time. - - * Makefile.in (varasm.o, calls.o, explow.o, integrate.o, loop.o): - These do not depend on insn-codes.h. - * function.c: Explicitly include insn-codes.h to make it clear that it - is needed for the values of the CODE_FOR_... macros. - -Thu May 31 12:59:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * gnulib2.c (__trampoline): New function. - * Makefile.in (LIB2FUNCS): Compile it. - * tm-m68k.h (TRAMPOLINE_ALIGN): Define it. - * function.c (trampoline_address): Handle extra alignment. - * tm-m68k.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): - Redefine to transfer via __trampoline. - (TRANSFER_FROM_TRAMPOLINE): Define it, for gnulib2.c. - - * fold-const.c (fold): Preserve sign on constant when other terms - cancel (after call to split_tree). - -Thu May 31 12:39:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (preexpand_calls): Ignore BLOCK to avoid infinite recursion. - - * function.c (assign_parms): Fix typo getting mode of result. - - * cse.c (cse_basic_block): Don't go past TO if it is target of - followed jump. - -Wed May 30 21:31:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-parse.y (fndef, nested_function, notype_nested_function): - Use YYERROR1 instead of YYERROR. - (YYERROR1): New macro. - * cplus-parse.y, objc-parse.y: Likewise. - -Tue May 29 21:53:19 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * optabs.c (expand_float): Don't use hard reg as intermediate. - - * c-parse.y, objc-parse.y (yylex): Fix typo checking for ERANGE. - * cplus-lex.c (yylex): Copy current code for ERANGE from c-parse.y. - - * toplev.c (get_run_time): Renamed from gettime. - -Mon May 28 15:47:48 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expr.c (emit_push_insn): Don't push by pieces if alignment - forces use of small pushes that do problematical padding. - - * tm-sparc.h (SELECT_SECTION): Use TREE_SIDE_EFFECTS. - (STACK_POINTER_OFFSET): Now 68; does not include REG_PARM_STACK_SPACE. - (REG_PARM_STACK_SPACE): Now takes arg and has value. - (ACCUMULATE_OUTGOING_ARGS): Define this. - (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE, EXIT_IGNORE_STACK): Use - current_function_outgoing_args_size, not ..._pretend_... - (INITIALIZE_TRAMPOLINE): Use size_int. - - * varasm.c (make_decl_rtl, make_function_rtl): Run ENCODE_SEGMENT_INFO - if it is defined. - - * tree.def (BIND_EXPR): Add operand, which holds the BLOCK. - * expr.c (expand_expr): When BIND_EXPR is seen, flag the BLOCK. - * dbxout.c (dbxout_block): Test the flag in the BLOCK. - * sdbout.c (sdbout_block): Likewise. - * symout.c (symout_function): Likewise. - * c-parse.y (stmt expr rule): Corresponding change. - -Sun May 27 20:53:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * caller-save.c (save_call_clobbered_regs): Correctly mark registers - live for multi-word pseudos. - -Sat May 26 13:42:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * sdbout.c (sdb_begin_function_line): Now -1 if not in use. - (sdbout_end_function): Set it to -1. - - * tree.def: Rename EXIT_STMT to EXIT_EXPR and likewise for LOOP_STMT. - Also LET_STMT to BIND_EXPR, and GOTO_STMT, LABEL_STMT, RETURN_STMT - to ..._EXPR. - (struct tree_stmt, struct tree_if_stmt, struct tree_bind_stmt): - (struct tree_case_stmt): Types deleted. - - * tree.c (make_node, copy_node): Treat 's' like 'e' for size of node. - In make_node, make BLOCK and BIND_EXPR savable. - * expr.c (expand_expr): Rename, and use TREE_OPERAND to get body. - * cplus-init.c (build_vec_delete): Likewise, and build appropriately. - * print-tree.c (print_node): No special handling for these and IF_STMT. - * stmt.c (warn_if_unused_value): Likewise. - - * tree.def (BLOCK): New tree code for binding blocks. - * tree.h (BLOCK_VARS, BLOCK_TYPE_TAGS): - (BLOCK_SUBBLOCKS, BLOCK_SUPERCONTEXT): Renamed from STMT_... - (STMT_...): Except for those, all deleted. - (BLOCK_CONTROLLER): Points to corresponding BIND_EXPR, if any. - (BLOCK_CHAIN): New macro. - * tree.c (build_block): Renamed from build_let. - (decl_type_context, decl_function_context): Corresponding change. - * print-tree.c (print_node): Likewise. - * c-decl.c, cplus-decl.c (poplevel): Likewise. - * integrate.c (copy_decl_tree): Likewise. - * function.c (setjmp_protect, uninitialized_vars_warning): - (instantiate_decls_1): Likewise. - * c-parse.y, cplus-parse.y, objc-parse.y (stmt expr rule): Likewise. - * dbxout.c (dbxout_block): Expect only BLOCKs in this tree. - Ignore those with controllers that are not marked used. - * sdbout.c (sdbout_block): Likewise. - * symout.c (symout_function): Likewise. - - * tree.def: Delete IF_STMT, COMPOUND_STMT, WITH_STMT. - * expr.c (expand_expr): Delete handling of IF_STMT. - * tree.c (build_if, build_loop, build_case, build_goto): Deleted. - (build_expr_stmt, build_asm_stmt, build_return, build_exit): Likewise. - (build_compound): Likewise. - * cplus-init.c (build_vec_delete): Use COND_EXPR instead of IF_STMT. - -Sat May 26 13:23:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * calls.c (struct arg_data): Add new fields slot_offset and stack_slot. - (expand_call): Compute both location of start of stack slot and the - place in the stack slot where the first byte of the argument will be - placed. - Use stack_slot when loading a BLKmode object into registers. - When loading into registers, don't check reg_parm_seen, just look - at args[i].reg. - (expand_call, store_one_arg): Save and restore stack slot starting - from beginning of slot, not begining location where arg is stored. - (store_one_arg): After calling emit_push_insn, argument is really - at arg->stack_slot instead of arg->stack because if we want to - load it into registers, we include any padding. - -Sat May 26 01:37:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tree.h (struct tree_type): Rename sep=>minval, sep_unit=>precision. - - * tree.c (init_obstacks, init_tree_codes): init_tree split in two. - * toplev.c (compike_file): Call them. - -Fri May 25 16:40:45 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stor-layout.c (layout_record): Nuke excess set of DECL_FIELD_BITPOS. - * varasm.c (output_constructor): Bitpos is zero for array (field == 0). - -Fri May 25 00:48:45 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * final.c (final_scan_insn): Restore inadvertent deletion in change - of May 24th. - -Fri May 25 00:13:12 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * print-tree.c (print_node): Print some missing fields for decls. - (print_node_brief): Always print value of integer or real constant. - -Thu May 24 21:28:36 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * fold-const.c (real_zerop): Function deleted; was redundant. - - * tree.h (DECL_OFFSET): Macro deleted. - (struct tree_decl): Field deleted. - - * c-typeck.c (build_unary_op): For ADDR_EXPR of COMPONENT_REF, - use DECL_FIELD_BITPOS and handle non-constant values. - * stor-layout.c (layout_record, layout_union): Likewise. - * expr.c (expand_assignment, store_constructor, expand_expr): Likewise. - * dbxout.c (dbxout_type): Likewise. - * sdbout.c (sdbout_one_type): Likewise. - * c-common.c (merge_component_comparisons, make_merged_ref): Likewise. - * print-tree.c (print_node): Likewise. - * varasm.c (decode_addr_const, output_constructor): Likewise. - * objc-actions.c (build_ivar_list_initializer): Likewise. - * cplus-typeck.c (build_component_addr): Likewise. - And preserve TREE_CONSTANT flag. - (unary_complex_lvalue): Likewise. - - * tree.h (DECL_FUNCTION_CODE): Use the frame_size field, not `offset'. - Now meaningful only if function is built in. - (DECL_BUILT_IN): New flag macro. - * c-decl.c (builtin_function): Set the flag. - (pushdecl, duplicate_decls): Use and set it. - * c-typeck.c, cplus-typeck.c (build_function_call): Test it. - * cplus-decl.c (define_function): Set the flag. - (pushdecl, duplicate_decls): Use and set it. - * expr.c (expand_expr, preexpand_calls): Test it. - - * tree.h (DECL_INCOMING_RTL): New macro. - * function.c (assign_parms): Set up that field. - * dbxout.c (dbxout_parms, dbxout_reg_parms): Don't try to use - DECL_OFFSET for a parm; it is not set. Use DECL_INCOMING_RTL. - (PARM_PASSED_IN_MEMORY): New macro. - * sdbout.c (sdbout_parms, sdbout_reg_parms): Likewise. - (PARM_PASSED_IN_MEMORY): New macro. - - * cccp.c (macarg): When popping frame, free via free_ptr, not buf. - -Thu May 24 18:04:06 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * emit-rtl.c (next_cc0_user): New function. - * recog.c (next_insn_tests_no_inequality): Use next_cc0_user. - * rtl.h: Define next_cc0_user. - - * cse.c (cse_insn): Make canon_reg calls in separate loop over the - SETs to avoid problems when MATCH_DUPs are present in an insn - pattern. - Don't canon CLOBBER in PARALLEL. Instead, canon MEM of CLOBBER, - both within a PARALLEL and standalone. Also, call note_mem_clobbered - only for MEM. - -Thu May 24 13:08:25 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * gnulib2.c (__negdi2): Make this inline for other functions. - -Thu May 24 07:15:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * jump.c (no_labels_between_p, prev_real_insn, next_real_insn): - (prev_active_insn, next_active_insn, next_label): Delete from here. - * rtlanal.c (no_labels_between_p): Put here. - * emit-rtl.c (prev_real_insn, next_real_insn, prev_active_insn): - (next_active_insn, next_label): Add to here. - - * c-common.c: Define NULL so NULL_TREE macro will work. - - * cplus-typeck.c (common_parms): Use oballoc and obfree to - avoid external current_obstack. - - * cse.c (fold_cc0, cse_insn): Use HASH macro instead of call to - canon_hash. - (cse_insn): When just recording jump insn, show it doesn't set CC0 - and set it as previous insn. - - * genoutput.c (gen_split): Fix typo in comment. - - * reorg.c: No longer need define next_label and next_real_insn as - extern. - - * toplev.c (rest_of_compilation): Use DELAY_SLOTS instead of - obsolete HAVE_DELAYED_BRANCH; include insn-attr.h. - - * final.c (dbr_sequence_length): Now present #ifdef DELAYED_BRANCHES. - Eliminate references to obsolete DBR_INSN_SLOTS. - (get_attr_length): Support ADJUST_INSN_LENGTH. - (get_attr_length, shorten_branches): Handle a SEQUENCE built for an - insn with filled delay slots. - (final_scan_insn): Avoid unnecessary call to recog_memoized. - Use validate_change instead of assuming replacement of CC0 by - STORE_FLAG_VALUE or const0_rtx is valid. - -Wed May 23 16:32:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * out-m68k.c, out-alliant.c (output_btst): - Use next_insn_tests_no_inequality, not next_insns_test_... - * recog.c (next_insns_test_no_inequality): Function deleted. - -Wed May 23 13:26:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expmed.c (store_bit_field): Don't bother making a SUBREG when we - call ourself recursively; the recursive call will just strip it off. - - * reorg.c: Include insn-attr.h before testing DELAY_SLOTS. - (emit_delay_sequence): Assign new INSN_UID to the SEQUENCE. - Chain insns through the sequence via NEXT_INSN and PREV_INSN. - * emit-rtl.c (next_insn, prev_insn): Go inside a SEQUENCE to - find the next or previous insn. - (make_insn_raw): No longer static. - * rtl.h: Define make_insn_raw, prev_active_insn, next_active_insn, - next_insn, and previous_insn. - - * genattrtab.c (write_eligible_delay): Always use "*delay_type"; - annuling only applies to candidate insn, not insn needing slot. - - * tree.c (init_tree): tree_node_counter doesn't exist any more. - (make_node, copy_node, make_tree_vec, build1): No longer set TREE_UID. - -Wed May 23 00:48:57 1990 Michael Tiemann (tiemann at cygnus.com) - - * genemit.c, genextract.c: Add support for MATCH_OP_DUP and - DEFINE_SPLIT. - - * cplus-init.c (build_delete): TREE_SIDE_EFFECTS can be - nonzero when address to be deleted is a cast of something - with side-effects (like a call). - (build_vec_delete): Simplify code now that `make_node' does the - right thing for _STMT nodes. - -Tue May 22 22:59:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (cse_end_basic_block): Don't crash if NEXT_INSN of - our branch target is zero. - Don't skip scanning first insn after destination label of branch. - - * expr.c (emit_move_insn): Abort if modes differ. - (expand_expr, comparison cases): Use TMODE when convenient. - (expand_expr, case COND): When optimizing (C ? 1 : 0), ensure - we return a result of the correct mode. - - * integrate.c (expand_inline_function): Can't call try_constants for - JUMP_INSN since we may have changed RETURN to jump. - -Tue May 22 22:40:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tree.h (struct tree_common): Delete field `uid'. - (TREE_UID): Macro deleted. - - * c-decl.c (finish_decl): Discard any variable sizes in the decl. - - * calls.c (expand_call): When making reg_notes for const function, - don't test is_const twice, and take account of order of pushing. - -Tue May 22 21:41:48 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reload1.c (eliminate_regs): Ensure we process pseudo that is first - operand of PLUS. - - * expmed.c (store_bit_field): When stripping a SUBREG, adjust the - bit position to correspond to the change in modes. - - * cse.c (rtx_cost): Use COSTS_N_INSNS macro. - - * cse.c (qty_comparison_*): New vars. - (new_basic_block): Initialize qty_comparison_code. - (fold_rtx): If we see a comparison, check if we have seen the - same comparison before. If so, we know the result. - (record_jump_equiv): Save the comparison being passed in the - qty_comparison_* variables for possible later use by fold_rtx. - (cse_insn): If the current insn doesn't reference cc0, but the - previous insn sets it, delete the previous insn; presumably we - used to test it. - (cse_basic_block): Allocate new qty_comparison_* vars. - - * reload1.c (eliminate_regs): Second arg is now mode of enclosing - MEM, if any, rather than simply flag indicating inside MEM. - Use this mode to determine amount that, e.g., PRE_DEC adjusts by. - - * reload1.c (reload): Set regs_ever_live for a register that couldn't - be eliminated. - * final.c (only_leaf_regs_used): Don't do it here. - - * reorg.c: Eliminate obsolete macros *_REORG_FUNCTION. - Entire file is conditional on #ifdef DELAY_SLOTS. - - * Makefile.in: Use reorg.c instead of dbranch.c. - -Tue May 22 20:40:30 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-decl.c (complete_array_type): Get string elt size in bytes. - -Tue May 22 00:42:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * toplev.c (rest_of_compilation): Turn off VERBOSE arg to thread_jumps. - - * objc-parse.y, objc-actions.c: Replaces uses of build with build1 - when being used for 1-operand nodes. - -Mon May 21 23:59:21 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * global-alloc.c (hard_reg_full_preferences): New variable. - (global_alloc): Allocate and initialize it. - (prune_preferences): Include in regs_someone_prefers all words - of multi-word items that have preferences. Don't includes registers - we also prefer unless they are prefered by an allocno that needs - more registers. - (set_preference): Set hard_reg_full_preferences also. - -Mon May 21 21:36:29 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tree.c (make_node): All ..._STMT nodes have side effects, type void. - -Mon May 21 16:03:23 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * integrate.c (expand_inline_function): Set insns_at_start before - processing parameters since it might be needed during that processing. - Set RTX_INTEGRATED_P in all insns emitted, including labels and - barriers. - Ensure COPY is set correctly when replacing RETURN and avoid - duplicate barriers by calling emit_jump_insn instead of emit_jump. - Call note_stores for JUMP_INSNs and CALL_INSNs in case they have - side-effects we care about. - (copy_rtx_and_substitute): Convert (use (subreg FOO)) to (use FOO). - (subst_constants): Don't crash if we see a SUBREG replaced by a - REG or vice versa; we have no work to do in that case. - Fix typo in case MULT. - - * recog.c (constrain_operands): Call reg_fits_class_p with original - mode of OP, not mode of SUBREG_REG (op) when OP is SUBREG. - -Mon May 21 14:25:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expmed.c (extract_bit_field): Use class of TMODE for simple reg case. - - * flags.h (flag_pic): Declare it. - * tree.h (mode_for_size): Declare it. - * c-tree.h (merge_component_comparisons): Declare it. - -Mon May 21 07:27:12 1990 Michael Tiemann (tiemann at cygnus.com) - - * jump.c (thread_jumps): New function to optimize the case where one - conditional jump jumps to another testing the same condition. This - function usefully optimzies code both before common subexpression - elimination (where it "finds" common subexpressions that cse won't - find) and after loop optimization (where the loop optimizer - introduces new conditional jumps after rearranging loops). - (rtx_equal_for_thread_p): cheaply builds equivalences between - register so that jump threading can be effectively run before cse. - - * emit-rtl.c (init_emit_once): Initialize PIC_OFFSET_TABLE_RTX if - PIC_OFFSET_TABLE_REGNUM is defined. - - * tree.c (build,build1,build_nt): Set TREE_RAISES in addition to - TREE_SIDE_EFFECTS. - ({temp,saveable,perm}_tree_cons): Call `tree_cons' with arguments - instead of calling `make_node' directly. Eventually, `tree_cons' - could be faster than `make_node'. - (get_identifier): Use `bcmp' instead of `strcmp', since it's - faster. Also, test the first letter of each string before calling - the string comparison function. - - * toplev.c: Add new flags FLAG_THREAD_JUMPS and FLAG_PIC. The - former gives better common sub-expression elimination while the - latter tells the compiler to emit position-independent code. - (rest_of_compilation): Thread jumps if requested. - - * stor-layout.c (layout_{record,union}): For loop bodies meant only - for FIELD_DECLs, make sure we have a FIELD_DECL before proceeding. - - * stmt.c (expand_end_case): Use ADDR_DIFF_VEC if FLAG_PIC is - nonzero. - @@ NOTE: This would look a lot nicer if CASE_VECTOR_PC_RELATIVE were - an expression (like zero/nonzero) instead of soley a #define. - (fixup_cleanups): If cleanups emitted no code, don't call - `reorder_insns'. - (expand_decl_cleanup): Return 0 in case we are not in a block - (but instead at top-level). - - * stack.h: New GNU C++ file. - - * rtl.c (REG_NOTE_NAMES): Add REG_CC_STATUS and REG_TAIL_CALL. - * rtl.h: Ditto. Also make external declaration of - pic_offset_table_rtx. - * rtl.def: Add the following new RTL codes: DEFINE_SPLIT, - MATCH_OP_DUP, LO_SUM and HIGH. - - * reorg.c: New file. Performs instruction reorganizations - (primarily branch scheduling) after register allocation. - - * local-alloc.c (local_alloc): If defined, execute - ORDER_REGS_FOR_LOCAL_ALLOC. - - * genrecog.c (struct decision): Extended to handle DEFINE_SPLITs. - (write_tree): Split into three subroutines: `write_tree_1' which - does the main work, `write_tree' which does the original job, and - `write_split_tree' which builds the recognizer for insn splitting. - (add_to_sequence): Handle MATCH_OP_DUP. - (main): Bui.Build both insn->insn_code and insn->insn_list - recognizers. - Also, fixed comment at the top of the file. - * genpeep.c (main): Handle DEFINE_SPLIT. - (match_rtx): Handle MATCH_OP_DUP. - * genoutput.c (main): Handle DEFINE_SPLIT. - * genconfig.c (main): Handle DEFINE_SPLIT and MATCH_OP_DUP. - * genattrtab.c (main): Handle DEFINE_SPLIT. - - * fold-const.c (various places): Use `build1' constructor instead of - `build' constructor whenever possible. - - * final.c (final_scan_insn): If we know the status of the condition - codes at a particular JUMP_INSN (by dint of the fact that it has a - REG_CC_STATUS note), set CC_STATUS to reflect that value. - (only_leaf_regs_used): @@ For some reason the frame pointer register - is not marked live, even when it is. If FRAME_POINTER_NEEDED is - nonzero, set REGS_EVER_LIVE[FRAME_POINTER_REGNUM] to 1. - - * expr.c (emit_library_call): Round ARGS_SIZE.CONSTANT up, not down. - Use new macro MAX to accomplish this. - (safe_from_p): Don't check that EXP is nonzero. Instead, make - caller check (only in one place) that argument to `safe_from_p' is - non-zero. - (expand_expr): In COND_EXPR case, make sure that the predicate is - safe from the two conditions. Lossage occured in a construct of the - form (c = c < 0 ? d : -d). - - * explow.c (plus_constant): Handle LO_SUM rtl. - - * c-typeck.c (build_binary_op_nodefault): If optimizing, try merging - component refs and/or comparisons into larger operations. - - * c-common.c (rewrite_for_merged_ref): New function. Canonicallizes - expressions to be recognizable as candidates for merged - COMPONENT_REF operations. - (make_merged_ref): Builds custom FIELD_DECLs for accessing multiple - bits in a byte simultaneously. - (merge_component_comparisons): Optimize COMPONENT_REFs in - expressions that look like (x.p == y.p && x.q == y.q) or - (x.p != y.p || x.q != y.q). Also optimize (x.p == c1 && x.q == c2), - where C1 and C2 are known constants. - - * c-lang.c (print_lang_statistics): Added new hook function. - Currently does nothing for C. - - * c-convert.c: Use `build1' constructor instead of `build' - constructor whenever possible. - - * cplus-typeck.c (build_binary_op_nodefault): Call this function for - better applicability of the merged component ref optimization. - Also, add more recognized cases. - - * cplus-type2.c (merge_component_comparisons): Code improved, and - moved to c-common.c. - - * cplus-parse.y (operator_name): Recognize `operator,'. - (expr): On parsing ',', call `build_x_compound_expr' instead of - `build_compound_expr'. - (various places): Call `note_decl_list_got_semicolon' instead of - `note_decl_got_semicolon' where object in question is a list instead - of a type. - (component_declarator0): Set CURRENT_DECLSPECS from the bitfield - type. - - * cplus-method.c (hack_wrapper): Rename parameter TYPE to CNAME, - since it is a type name we pass in, not a type. - - * cplus-lex.c (opname_tab): Add `operator,'. - (note_decl_list_got_semicolon): Make notation that a list of - declarations should be considered as having "gotten a semicolon". - (extract_interface_info,interface_strcmp): Commented. - - * cplus-init.c (build_delete): Rest of changes to reimplement new - destructor mechanism. - (build_vbase_delete): Fix bug whereby arrays of length 0 and 1 were - not being correctly handled. Also, where elsements were not being - deleted. Use new destrouct calling convention. - (various places): Change TYPE_HAS_CONSTRUCTOR to - TREE_HAS_CONSTRUCTOR where appropriate. - - * cplus-expr.c (cplus_expand_expr): Use `emit_block_move' to copy - data from RETURN_TARGET to CALL_TARGET in case they do not line up - normally. - - * cplus-decl2.c (finish_file): No need to call `build_vbase_delete' - on top-level objects anymore, since destructors now do the right - thing. - - * cplus-decl.c (finish_function): Implement new destructor - mechanism: destroy virtual baseclass objects if (in$charge & 2) is - nonzero. Deallocate if (in$charge & 1) is nonzero. - - * cplus-cvt.c (build_up_reference): Use TREE_HAS_CONSTRUCTOR, not - TYPE_HAS_CONSTRUCTOR on non-TYPE tree nodes. - (build_up_reference): Only build up references between compatible - types. I.e., don't build a char& to an int object. - (convert_to_aggr): Set the TREE_SIDE_EFFECTS bit if the result is a - CALL_EXPR. - - * cplus-class.c (build_vbase_path): Recover from bad parse errors. - (build_method_call): Implement new ctor/dtor semantics to allow - differentiation between tearing an object down and deallocating it. - This also means that ctors and dtors can now aviod going through the - virtual function table mechanism as they construct/destruct their - objects. - - * ALL GNU C++ files: Use new macro IDENTIFIER_TYPE_VALUE to lookup - type value of an identifier. Also implement related macros - IDENTIFIER_HAS_TYPE_VALUE, and IDENTIFIER_TYPEDECL_VALUE. - - * cplus-cadillac.c (cadillac_switch_source): Change Prototype - declaration to non-prototype declaration. - (readable_p): Ditto. - -Sun May 20 20:23:39 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-typeck.c (c_sizeof): For incomplete type, warn and return 0. - (c_sizeof): Similar. - -Sun May 20 17:20:48 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * emit-rtl.c (gen_highpart): Support SUBREG like gen_lowpart. - -Sun May 20 16:59:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-typeck.c (build_c_cast): Warn about pointer-integer casts - where size differs. - - * stor-layout.c (layout_type): Multi-word field doesn't force BLKmode. - - * expmed.c (extract_bit_field): Use mode_for_size for lsb-aligned - fields in regs. No longer knows explicit modes for this. - -Sun May 20 15:12:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * Makefile.in: (reload1.o): Now depends on output.h. - - * calls.c (expand_call): No need to set frame_pointer_needed. - - * emit-rtl.c (gen_rtx): If reference to sp, ap, or fp, use - appropriate already-made rtx (e.g., stack_pointer_rtx). - - * expr.c (expand_builtin, case BUILT_IN_ALLOCA): No need to set - frame_pointer_needed. - - * final.c (final_start_function): No longer round size of frame here. - (final_scan_insn): Call constrain_operands with new operand. - - * flow.c (life_analysis): Change test on whether sp is live or - not to depend on FRAME_POINTER_REQUIRED and -fomit-frame-pointer. - (This code may not be relevant any more.) - - * function.c (push_function_context, pop_function_context): No need - to save and restore frame_pointer_needed. - (assign_{outer_,}stack_local): No need to set frame_pointer_needed. - (assign_parms): Likewise. - (init_function_start): Don't initialize frame_pointer_needed here. - - * function.h (frame_pointer_needed): Deleted. - - * genattrtab.c (write_attr_case): Write call to constrain_operands - with new second argument (reload_completed). - - * global-alloc.c (global_alloc): Don't left fp be allocated if we - already know we can't eliminate it. - (find_reg): Argument LOSERS is now a HARD_REG_SET instead of an array. - Precompute HARD_REG_SETs before loop over registers to speed up - allocation. - (retry_global_alloc): Argument FORBIDDEN_REGS is now a HARD_REG_SET. - (check_frame_pointer_required): Deleted; no longer needed. - - * integrate.c (save_for_inline, output_inline_function): No longer - need to save and restore frame_pointer_needed. - - * local-alloc.c (block_alloc): No longer have to worry that having - a stack variable might cause a frame pointer to be needed when it - might otherwise not be. - (find_free_reg): Don't allocate into registers that may be eliminated - later even if they are not FIXED_REGS. - - * output.h: Define reload_completed. - - * recog.c (constrain_operands): Add new argument, STRICT. If zero - and the constraints could not be matched, try again with a less - strict view (i.e., assume that reload will fix those things that - it can). This allows attribute values to be obtained prior to - reload. - Don't call alter_subreg or assume it has been called. Instead, - look inside SUBREGs. - - * reload.c (find_reloads_address{,_1}): Handle an address that - is a MEM; it may have been produced by register elimination. - (find_reloads_address): sp can also be the base register for a - stack slot. - (form_sum): No longer static. - - * reload1.c: Rewrite code that performs frame pointer elimination. Do - it during reload to ensure that all addresses and operands remain - valid; also generalize to support more than one pair of eliminations. - (reg_equiv_stack_slot, bad_spill_regs): New vars. - (forbidden_regs): Now a HARD_REG_SET. - (struct elim_table): New structure to describe register eliminations. - (reload): Start scanning registers after virtual registers. - Initialize reg_equiv_stack_slot for each register. Compute - reg_equiv_{mem,address} during register scan only if not eliminating - registers. - Compute initial default value of frame_pointer_needed. - Round frame size to BIGGEST_ALIGNMENT. - Create obstack for scratch rtl created by register elmination. - Initialize elimination table and spill registers that we know can't - be eliminated. - On each scan of the insns: Reset all elimination entries to initial - offsets, compute reg_equiv_{mem,address}, and see if any potentially - eliminable register changed status. - Try to eliminate registers from each insn unless we know that none - can be eliminated. - Don't complete groups for spill registers from registers that - shouldn't be used as spill registers. - Call reload_as_needed if register eliminations can be done, even if - no reloads are needed. - (new_spill_reg): Don't allow spilling an eliminable register. - Don't set forbidden_regs here. - Indicate something changed if a register that wasn't ever used before - was made a spill register. - (eliminate_frame_pointer, {alter,fix}_frame_pointer_address): Deleted. - (delete_dead_insn): New function. - (alter_reg): Call it. - Always set reg_equiv_stack_slot; if not eliminating registers, also - set reg_equiv_{mem,address}. - (eliminate_regs, eliminate_regs_in_insn): New functions. - (spill_hard_reg): Add new argument, CANT_ELIMINATE. - Set bit for register being spilled in forbidden_regs. - Use new argument instead of seeing if we are spilling fp. - No longer need to have frame pointer just because a reg needs a - stack slot. - (order_regs_for_reload): Set bad_spill_regs to contain those registers - that can't be used for spill registers. - Consider any eliminable register as bad to use as a spill register. - Rework initialization of potential_reload_regs. - (reload_as_needed): Handle register elimination in a similar manner - as function reload. - (gen_input_reload): When generating a reload for a PLUS, first try to - use a three-operand add insn. If that fails, emit two two-operand - insns. - - * rtl.h (FUNCTION_FLAGS_FRAME_POINTER_NEEDED): Deleted; all others - renumbered. - - * stmt.c (expand_decl): No longer have to set frame_pointer_needed - for variable-sized decl. - - * stupid.c (stupid_find_reg): Don't try to allocate an eliminable - register. - - * tm-vax.h (INITIAL_FRAME_POINTER_OFFSET): Add definition. - - * recog.c (next_insn_tests_no_inequality): If no next insn, return 0. - - * print-tree.c (print_node): Set length for TREE_VEC. - - * calls.c (store_one_arg): Set arg->value to location where argument - was placed (either register or stack). - - * recog.c: Needs flags.h (for flag_pretend_float): - * Makefile.in (recog.o): Likewise. - - * expr.c (convert_move): Add missing RETURN statements. - -Sat May 19 14:26:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (expand_expr, case EXIT_STMT): Return rather than falling - out of switch statement (and into `binop'). - - * cse.c (cse_insn): Allow conditional branches to be turned into - noops when the condition is known false by not calling validate_change. - - * cse.c (fold_rtx): Add LABEL_REF to list of fast RTL codes. - -Sat May 19 12:41:44 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tm-i386gas.h (ASM_OUTPUT_ALIGN): Use log as arg to .align. - (ASM_OUTPUT_ALIGN_CODE): Likewise. - - * gcc.c (default_compilers): For .cc, pass -g* to cc1. - -Sat May 19 06:51:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * tree.c (push_obstacks, pop_obstacks): Put struct obstack_stack - in obstack instead of using xmalloc/free. - (init_tree): Initialize new obstack for {push,pop}_obstacks. - - * tree.c (simple_cst_list_equal): No longer static. - -Fri May 18 19:38:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.h (MUST_PASS_IN_STACK): Refine test for case where padding - requirement prohibits passing in register. - -Fri May 18 18:14:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * fixincludes: Fix CAT macro in memvar.h. - -Fri May 18 16:13:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (do_jump): Don't explicitly copy item being tested from - MEM to REG. If needed, this will be done later. - -Thu May 17 14:33:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * Makefile.in (bootstrap): Pass LANGUAGES to inner makes. - -Thu May 17 13:57:34 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * fixincludes: Handle _CTRL like CTRL. - -Wed May 16 21:09:42 1990 Richard Kenner (kenner at vlsi1.ultra.edu) - - * fold-const (fold): Two conversions in a row are needed if from an - integer type to a pointer type of a different precision. - -Wed May 16 16:09:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * expr.c (expand_expr): Make sure a volatile value is referenced - even if value is ignored. - - * c-typeck.c (truthvalue_conversion): Result COND_EXPR gets type int. - (invert_truthvalue): Simplify COND_EXPR. - -Tue May 15 00:25:03 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * stor-layout.c (layout_record): Do set TYPE_SIZE if size is var. - - * reload.c (push_reload): If insn is an asm, verify that CLASS - is at least possible for the specified mode. - - * c-decl.c (complete_array_type): Compensate for wide string constant. - - * final.c (leaf_function_p): Reject everything if profiling. - - * function.c (optimize_bit_field): Adjust OFFSET if - BITS_BIG_ENDIAN != BYTES_BIG_ENDIAN. - - * expmed.c (store_bit_field, extract_bit_field): Rework the code - to adjust XBITPOS for the size within which to count. - (extract_bit_field): When converting MEM to REG, don't make SUBREG - immediately; fall through and let this happen in the code that - handles original registers of the wrong mode. - -Mon May 14 16:01:13 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * cexp.y (yylex): Ignore carriage return. - * cccp.c (initialize_char_syntax): Likewise. - (newline_fix, name_newline_fix): Likewise. - - * c-common.c: New file. - (combine_strings): Moved here. Fix errors for wide string length. - * c-parse.y, objc-parse.y, cplus-lex.c: Function deleted here. - -Sun May 13 08:08:41 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * integrate.c (subst_constants): Fix typo in case 'E'. - -Sat May 12 17:14:26 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * combine.c (subst): Don't change -(y-x) to x-y for IEEE floats. - Include real.h. - - * cse.c (fold_rtx): Don't simplify float+0, float-0, float*0 - if using IEEE floating point. - Don't simplify float-self even if not IEEE. - * fold-const.c (fold): Likewise. - - * i386.md (trunc**): Use long move if source is constant. - * out-i386.c (PRINT_REG): Handle CODE == 'k'. - - * fixincludes: Use rm -fr to delete before making link. - - * optabs.c (init_optabs): Support MULDI3_LIBCALL, etc. - -Sat May 12 17:04:58 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (find_best_addr): Don't modify constant address MEMs; they - are shared. - -Sat May 12 15:17:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * ns32k.md (signed bitfield extract): Don't output assembler comment. - -Fri May 11 15:23:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * Makefile.in: Don't use $(libsubdir) as a target since it involves - shell `...` constructs. - - * genattr.c (fatal, main): Remove relics of old program name. - * genattrtab.c: Likewise. - - * expr.c (expand_expr, case COND_EXPR): Add missing argument to - operand_equal_p. - - * reload.c (form_sum): Handle case where second operand is - (plus foo (const_int ...)). - - * c-typeck.c (c_sizeof{,_nowarn}, c_alignof): Don't blow up for - ERROR_MARK. - * cplus-typeck.c (c_sizeof{,_nowarn}, c_alignof): Likewise. - - * cplus-typeck.c (c_sizeof{,_nowarn}): Convert from bytes to chars, - since c defines sizeof (char) as 1. - - * loop.c (mark_loop_jump): RETURN, SIGN_EXTEND, and ZERO_EXTEND can - also occur in JUMP_INSN's. - - * reload.c (find_reloads, find_reloads_address): Correct errors where - an arg to find_reloads is "VOIDmode" instead of "0" and vice versa. - (find_reloads_address_1): Likewise. - - * global-alloc.c (global_alloc): Avoid divide-by-zero for allocnos - where all regs have reg_live_length == -2. - -Fri May 11 14:45:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * tm-i860.h (ASM_OUTPUT_CASE_LABEL): Align to multiple of 4. - -Thu May 10 23:43:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * out-i860.c (single_insn_src_p, strict_single_insn_src_p): - Correct conditions for needing multiple instructions. - (output_delayed_branch): Likewise. - -See file ChangeLog.1. - -Local Variables: -mode: indented-text -left-margin: 8 -fill-column: 76 -version-control: never -End: diff --git a/gcc/ChangeLog.3 b/gcc/ChangeLog.3 deleted file mode 100644 index 346311a4267f..000000000000 --- a/gcc/ChangeLog.3 +++ /dev/null @@ -1,8063 +0,0 @@ -Fri Jul 19 18:56:14 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (canon_reg): Allow for recursive call returning 0 (if we had - an EXPR_LIST). - * sched.c (init_aliases_analysis): Ignore REG_EQUAL note when its value - is an EXPR_LIST. - * unroll.c (loop_iterations): Likewise. - - * rs6000.md (andsi3): Fix typo in and-with-cc pattern. - -Fri Jul 19 11:23:22 1991 Tom Wood (wood at dg-rtp.dg.com) - - * toplev.c (set_target_switch): For TARGET_OPTIONS, set the - variable to the variable part of the actual option. - * tm-m88k.h, out-m88k.c: Change the use of m88k_short_data. - - * varasm.c (output_constant_def): Merge get_or_assign_label and - delete it. Ensure that ENCODE_SEGMENT_INFO is evaluated before - SELECT_SECTION. - -Thu Jul 18 19:57:45 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * expr.h (MUST_PASS_IN_STACK_BAD_PADDING): Definitions were backwards. - -Thu Jul 18 17:52:46 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) - - * unroll.c: Fix typos in comments. - (splittable_regs_updates): New static global variable. - Indicates the number of instructions that modify a split biv - remaining during the last iteration of a loop, so that the last one - can be handled specially. - (unroll_loop): Allocate and clear it. - (copy_loop_body): Use it to determine how to rewrite an insn - modifying a split iv. - (find_splittable_regs): When a splittable biv is identified, set it - equal to the number of insn modifying the biv. - (find_splittable_givs): When a splittable giv is identified, set - it to one if this giv is a reg. - - * unroll.c (copy_loop_body): Instead of trying to special case - insns that use start_label, use the label_map to map the start - label to the appropriate label for all insns except those that - must be inverted and redirected. The former code did not handle - tablejumps that used the start_label correctly. - - * integrate.c (copy_rtx_and_substitute): Don't legitimize an - address inside of an ADDRESS rtx. This fails, because this need - not be a validate address, but it is always valid in the context - it appears in. - -Thu Jul 18 08:13:56 1991 Tom Wood (wood at dg-rtp.dg.com) - - * toplev.c (set_target_switch): Support TARGET_OPTIONS for command - options with values. - - * varasm.c (output_constant_def): Set flags with - ENCODE_SEGMENT_INFO for strings and constructors. - * tm-mips.h (ENCODE_SEGMENT_INFO): Must be a VAR_DECL. - - * out-m88k.c, tm-m88k.h, m88k.md: Implement a global pool approach - to short addressing. - - * m88k.md (extendsfdf2, truncdfsf2): Use fsub rather than fadd. - This conforms to IEEE 754 in all rounding modes except round to - negative infinity whereas fadd conforms only in that mode. - -Thu Jul 18 01:01:37 1991 Eric Youngdale (youngdale at v6550c.nrl.navy.mil) - - * make-cc1.com: Add command line to compile reg-stack.c, and add - reg-stack.obj to the list of files passed to the VMS linker. - -Thu Jul 18 00:11:00 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * Makefile.in (enquire.o): Need not depend on gnulib. - (gnulib2): Renamed from gnulib2.portable. - Don't do ranlib. - (gnulib2.portable): Just refers to gnulib2. - (gnulib1.portable): Don't do ranlib. - -Wed Jul 17 11:19:09 1991 Michael Meissner (meissner at geech.gnu.ai.mit.edu) - - * Makefile.in (gcc): Do a -dumpspecs after building gcc so that -B./ - will override any installed specs in /usr/local/lib. - (mostlyclean): Delete *.cpp files which are left if you use - -save-temps. - -Wed Jul 17 06:08:33 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (try_combine): When putting I2 and/or I1 into NEWPAT, - check for a PARALLEL; if so, just put in the relevant SET instead - of making a PARALLEL containing a PARALLEL. - -Tue Jul 16 18:58:51 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (record_value_for_reg): Show we haven't seen the death - of a register once we have seen it modified. - - * reload1.c (reload): If we decide to put a pseudo which used to have - a MEM equiv onto the stack, set SOMETHING_CHANGED and reprocess all - eliminations and pseudos without scanning the insns. - -Tue Jul 16 13:17:14 1991 Michael Meissner (meissner at wookumz.gnu.ai.mit.edu) - - * cplus-decl.c (sigsegv): Make signal handler void for full - prototyping systems. - -Tue Jul 16 12:25:18 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * dbxout.c (dbxout_symbol): Ignore types with no names of any kind. - -Tue Jul 16 07:12:52 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * stmt.c (pushcase, pushcase_range): Return label in *DUPLICATE, - not integer value. - - * rtlanal.c (reg_referenced_p, reg_overlap_mentioned_p): Allow X to - be (cc0) or (pc). - - * combine.c (subst, case SET): Delete code to remove "unnecessary" - SUBREG; code was incorrect and this is done (corrected below) in - simplify_comparison. - (simplify_comparison): Can only remove SUBREG for equality comparisons. - - * expr.c (expand_expr, case COND_EXPR): If condition has side effects, - ensure we evaluate it before evaluating an arm of the COND_EXPR. - -Mon Jul 15 21:59:36 1991 James Van Artsdalen (james at bigtex.cactus.org) - - * rtl.h (FUNCTION_FLAGS_RETURNS_STRUCT): Fix typo in value. - -Mon Jul 15 22:18:40 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * cccp.c (main): Ignore CPATH if -nostdinc. - -Mon Jul 15 22:00:02 1991 Michael Meissner (meissner at churchy.gnu.ai.mit.edu) - - * reload.c (find_reloads): Fix typo (reg_sets_p instead of - reg_set_p). - -Mon Jul 15 21:49:09 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * c-parse.y (stmt): Emit the nop for the start of a loop - only after the line number. - -Mon Jul 15 16:50:51 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edn) - - * rtlanal.c (reg_set_p): If we are passed an insn, only pass the - pattern to note_stores. - - * local-alloc.c (validate_equiv_mem): A CALL_INSN invalidates all - memory. - -Sun Jul 14 06:34:47 1991 Richard Kenner (kenner at vlsi1.ultra.hyu.edu) - - * cse.c (last_jump_equiv_class): New variable. - (record_jump_equiv): Set it. - (cse_insn): Clear it. - (cse_around_loop): Invalidate all entries in last_jump_equiv_class. - (cse_set_around_loop): Ensure our replacement is cheaper. - -Sat Jul 13 17:15:30 1991 James Van Artsdalen (james at bigtex.cactus.org) - - * cplus-decl.c (finish_enum): Fix typo in arguments for finish_decl. - * cplus-class.c (finish_struct): Likewise. - -Fri Jul 12 16:45:02 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * dbxout.c (dbxout_symbol): Don't crash when DECL_NAME is 0. - -Fri Jul 12 15:38:24 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (do_tablejump): Don't write BARRIER between jump and table - if they must remain adjacent. - - * varasm.c (make_decl_rtl): Set REG_USERVAR_P when register name - is specified. - * integrate.c (subst_constants): Don't substitute for a user - variable assigned to a hard register. - - * reload.c (find_reloads): Add new vars no_{input,output}_reloads to - indicate when the corresponding reload type is not permitted; reject - an alternative that would try such a reload. - * rs6000.md (decrement-and-branch): No longer need kludges to - avoid output reloads. - Use '0' instead of 'c' for input 1 in alternative 0. - Allow operand 0 to be in non-general register. - -Fri Jul 12 10:54:39 1991 James Van Artsdalen (james at bigtex.cactus.org) - - * c-decl.c (finish_struct, finish_enum): Fix typo in arguments for - finish_decl. - - * i386.md (bit test patterns): Delete bit tests using implicitly - masked bit number operand: the hardware doesn't work like that. - -Fri Jul 12 09:50:43 1991 Michael Meissner (meissner at spiff.gnu.ai.mit.edu) - - * tm-hp9k2bsd.h (toplevel): Remove RCS HISTORY log. - -Thu Jul 11 00:46:48 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * c-parse.y (yylex): Do try signed int for ANSI nondecimal constants. - - * c-typeck.c (record_format_info): The first time, use xmalloc. - -Wed Jul 10 18:54:26 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * jump.c (jump_optimize): Fix typo in "if (...) x = a; else x = b;" - case: had temp3 instead of temp4. - - * cplus-lex.c (lineno, end_of_file): Move definition to before - first use. - (reinit_parse_for_block): Variable `c' must be int to ensure EOF fits. - * cplus-input.c (getch): Remove extraneous declaration of end_of_file. - - * reload1.c: Include insn-flags.h. - (emit_reload_insns): Handle the case where we reload an entire - address; use "reload_load_address" pattern, if it exists. - Remove explicit SImode reference; should have been Pmode, but - IN can be used instead of rebuilding it. - * Makefile.in (reload1.o): Includes insn-flags.h. - - * reload.c (find_reloads): If replacing an output REG with a MEM, - write a CLOBBER for the REG after the insn. - * reload1.c (eliminate_regs): Add new arg INSN; if nonzero, add a - CLOBBER when replacing a REG in SET_DEST with a MEM. - (reload, eliminate_regs_in_insn): Add new arg to eliminate_regs. - * dwarfout.c (output_bound_representation, location_attribute): - Likewise. - - * reload1.c (reload): If a reg_equiv_memory_loc isn't strictly valid - and isn't sufficiently simple, use a stack slot instead. - (alter_regs): Don't delete reg_equiv_init insns here. - (reload_as_needed): Do it here. - - * stor-layout.c (get_best_mode): Correct test for alignment. - - * loop.c (move_movables): Don't get confused by NOTE insns in gnulib - call sequence. - -Wed Jul 10 18:40:32 1991 Matthew Self (mself at geech.gnu.ai.mit.edu) - - * cccp.c (enum node_type): Added T_WARNING. - - * cccp.c (directive_table): Added #warning. - - * cccp.c (do_warning): Print warning message and continue. - -Wed Jul 10 18:38:28 1991 Matthew Self (mself at geech.gnu.ai.mit.edu) - - * c-parse.y, objc-parse.y (attrib): Pass "format" attribute - through. Takes one identifier and two constants as args. - identifier must be either printf or scanf. - - * c-common.c (decl_attributes): Process "format" attributes. - Call new routine record_format_info(). - - * c-typeck.c (struct function_info): Changed function_ident field; - store identifier node rather than char * to speed lookup. - Renamed arg_num field to format_num. Replaced is_varargs field - with new first_arg_num field. - - * c-typeck.c (check_format): Modified to use new arg_num and - first_arg_num fields. - - * c-typeck.c (record_format_info): New routine. Replaces static - table of functions to check. - - * cplus-typeck.c (record_format_info): New stub routine so c++ - will link. Someone should implement format checking for c++. - - * c-typeck.c (init_format_info_table): New routine to add - entries for ANSI functions to table. - - * c-decl.c (init_decl_processing): Call init_format_info_table(). - - * c-typeck.c (build_function_call): Modified to use dynamic table - rather than static one. Compare identifier nodes rather than - using strcmp(). - - * gcc.texinfo (): Document "format" attribute. - - * c-typeck.c (check_format): Call warning() directly rather than - returning the warning string. This way we can give multiple warnings - by continuing. Several changes to make continuing safe. - - * c-typeck.c (build_function_call): Incorporated changed return - value of check_format(). - - * c-typeck.c (check_format): Check for NULL format string. - -Wed Jul 10 16:40:54 1991 Tom Wood (wood at dg-rtp.dg.com) - - * sdbout.c (sdbout_tags): Delete this and use the TYPE_DECL - representation of tagged types. Types are now output in their - original lexical order. - (sdbout_symbol): Return early (only using sdbout_one_type) when a - tagged type is encountered. - (sdbout_block, sdbout_symbol): Don't use sdbout_tags. - * toplev.c (compile_file): Don't use sdbout_tags. - * varasm.c (assemble_function): Don't use sdbout_tags. - -Wed Jul 10 15:13:33 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * dbxout.c (dbxout_tags): Function deleted. Calls deleted too. - (dbxout_tagged_type): New function. - (dbxout_symbol): Call that. - * toplev.c (compile_file): Call to dbxout_tags deleted. - - * c-parse.y (yylex): Simplify choice of type for integers. - When traditional, all integers are signed unless explicitly unsigned. - -Wed Jul 10 13:35:27 1991 Tom Wood (wood at dg-rtp.dg.com) - - * configure (m88k-svr4): Needs make-m88ksvr4. - * make-m88ksvr4: New file. - -Wed Jul 10 13:18:03 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * c-decl.c (duplicate_decls): Warn if `inline' is not consistent. - - * cccp.c (hack_vms_include_specification): Fix typos. - -Tue Jul 9 22:21:22 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * loop.c (find_and_verify_loops): RETURN insns aren't listed in - loop_number_exit_labels, so don't try to remove JUMP_LABEL of a - RETURN from that list. - - * rtlanal.c (reg_referenced_between_p): New function. - * jump.c (jump_optimize): Use it instead of reg_used_between_p when - checking for "if (...) x = a; else x = b;" case. - -Tue Jul 9 13:03:53 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * expr.c (move_block_to_reg): Don't force_const_mem on non-constant. - -Tue Jul 9 09:13:32 1991 Tom Wood (wood at dg-rtp.dg.com) - - * c-decl.c (finish_struct): Record tagged types as a TYPE_DECL - with a NULL DECL_NAME. - (finish_enum): Ditto. - * cplus-decl.c (finish_enum): Ditto. - * cplus-class.c (finish_struct): Ditto. - - * dbxout.c (dbxout_symbol): Ignore TYPE_DECLs for tagged types. - * cplus-dbxout.c (dbxout_symbol): Ditto. - * sdbout.c (sdbout_symbol): Ditto. - - * toplev.c (compile_file): DECL_NAME may be null. - - * dwarfout.c (output_symbol): Use output_dies_for_tagged_type for - TYPE_DECLs of tagged types. - (dwarfout_output_tagged_type): Deleted. - (output_dies_for_tagged_type): Mark TREE_ASM_WRITTEN early. - -Mon Jul 8 19:36:44 1991 Tom Wood (wood at dg-rtp.dg.com) - - * jump.c (jump_optimize): Check for extra labels when detecting - "if (...) x = a; else x = b;". Include the insn for "x = a;" when - testing for data conflict. - -Mon Jul 8 19:34:14 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * integrate.c (copy_for_inline, case MEM): Must copy a MEM even if - it has a constant address if that address involves a LABEL_REF. - - * rtlanal.c (reg_set_p): Only check for REG_INC notes and a CALL_INSN - if we are passed an insn. - * local-alloc.c (optimize_reg_copy): Remove tests now done in - reg_set_p. - -Mon Jul 8 16:38:49 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * c-parse.y (yylex): Pedantic warning here for `asm'. - No warning for `__asm__'. - (maybe_type_qual, maybeasm, extdef): No warning here. - - * objc-actions.c: Rename OBJC_SELS_R_INTS to OBJC_INT_SELECTORS. - Rename OBJC_UNIQUE_SELS to OBJ_NONUNIQUE_SELECTORS, reversing sense. - Eliminate OBJC_SELS_R_STRUCT_PTRS. - -Mon Jul 8 06:37:00 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * rtlanal.c (reg_{used,set}_between_p): Allow FROM_INSN == TO_INSN; - return 0 in that case. - - * jump.c (mark_jump_label): Fix typo in use of GET_RTX_LENGTH. - - * reload.c (reload_strict_low): Change comment to say that this is - always zero; we don't use it any more. - -Sun Jul 7 22:14:13 1991 Michael Meissner (meissner@churchy.gnu.ai.mit.edu) - - * tm-mips.h (FRAME_POINTER_REQUIRED): Fix typo that required a frame - if alloca was not called, instead of the reverse. - -Sun Jul 7 17:14:17 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * cccp.c (struct file_buf): New field system_header_p. - Everything that pushes on instack now initializes this field. - (finclude): New arg to set that field. Callers changed. - (do_include): Pass that arg as 1 for <...>, else 0. - - * cccp.c (do_include): Warn for first use of #import - except in system header files. - (handle_directive): Support #import if compiling for Next. - - * cccp.c (do_pragma): For #pragma once, warn it is obsolete. - -Sun Jul 7 14:29:04 1991 James Van Artsdalen (james at bigtex.cactus.org) - - * tm-att386.h (NO_DOLLAR_IN_LABEL): Define this here, - * tm-i386sco.h (NO_DOLLAR_IN_LABEL): not here. - -Sun Jul 7 06:20:03 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * rtlanal.c (reg_set_p): Return 1 if REG is found in a REG_INC - note or if INSN is a CALL_INSN and REG is a hard reg. - (reg_set_last): Only return a register or constant; if returning a - register, ensure it isn't modified between the SET we found and INSN. - - * jump.c (jump_optimize): If SMALL_REGISTER_CLASSES, don't make a - store-flag insn if any register involved is a hard reg. - -Sat Jul 6 14:51:15 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * expr.c (expand_assignment): Don't abort for volatile structure field - even if the structure is in a register. - NOTE: This leaves the problem of implementing whatever meaning - a volatile field should actually have. - - * fold-const.c (div_and_round_double): Make lnum and lden unsigned. - Use the small-denominator algorithm only for denom < 2**24. - Fix backward conditionals in ?: operators in general case. - Change i + j to i - 1 + j when indexing num. - -Fri Jul 5 21:36:57 1991 Ken Raeburn (raeburn at watch.com) - - * genpeep.c (match_rtx, case MATCH_OP_DUP): Output semicolon after - "goto" statement. - -Fri Jul 5 09:45:56 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * rs6000.md (andsi3): Bias alternatives so we always prefer constants. - (define_splits of DImode, SFmode, and DFmode): Don't split - unless after reload. - (ashldi3, lshrdi3): Fix bugs in instruction order; use & in - output constraint so can't conflict with operand 2; use '0' - constraint to allow operands 0 and 1 to be the same register. - - * regclass.c (reg_n_sets): Move definition before use. - - * reorg.c (fill_simple_delay_slots): Candidate for delay slot cannot - set anything set between it and the delay insn. - - * jump.c (jump_optimize): In "if (...) x = a; else x = b;", correctly - specify range to check if X is used or set. - Use rtx_equal_p to check for matching X. - -Thu Jul 4 15:55:45 1991 Tom Wood (wood at geech.gnu.ai.mit.edu) - - * cccp.c (default_include): Add /usr/mach/include for MACH systems. - - * configure (m88k-luna): Needs make-m88kluna. - * make-m88kluna: New file. - - * dwarf.h: New file derived from the UNIX International - Programming Languages Special Interest Group DWARF specification. - * dwarfout.c (includes): Include "dwarf.h". - (subscript_data_attribute): Use FMT_CODE to encode array subscripts. - (languagribute): LANG type no longer provided by dwarf.h. - (output_source_file_die): Determine proper language attribute. - -Thu Jul 4 12:14:16 1991 James Van Artsdalen (james at bigtex.cactus.org) - - * cplus-xref.c: define rindex if USG - -Thu Jul 4 12:36:55 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * gcc.c (process_command): Correctly split -L from its arg. - * SWITCHES_NEED_SPACES: New host machine option. - This really ought to be defined now for certain hosts, - but I don't know which ones they are. - -Wed Jul 3 23:31:00 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * tm-m68k.h (ASM_OUTPUT_FLOAT): Check CROSS_COMPILE (there was a typo). - -Wed Jul 3 22:05:55 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (simplify_binary_operation, case MINUS): Fix typo in op number. - - * cse.c (cse_basic_block): Correctly handle the case where TO - was a label with zero uses at the end of the function. - - * combine.c (significant_valid): New variable. - (combine_instructions): Turn significant_valid off until after - we finished computing reg_significant. - (significant_bits): Ignore reg_significant when significant_valid - is zero. - - * rtlanal.c (reg_set_last): Go past CALL_INSN as long as we are not - looking for a hard register. - -Wed Jul 3 21:07:18 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) - - * sched.c (schedule_block): When computing what registers are dead - at the end of the current block, correctly handle REG_DEAD notes - that refer to multi-word hard registers. - - * loop.c (mark_loop_jump): When invalidating loops with multiple - entries, must invalidate every nested loop containing the target - of a loop entry jump, except for those that also contain the jump - itself. - - * loop.c (record_giv): When computing whether a giv is - replaceable, check whether the biv update has a valid luid, and - mark it as not replaceable if not. - - * combine.c (gen_rtx_combine): Call rtx_alloc instead of gen_rtx, - because it is much faster, especially on some RISC machines. - - * fixincludes: Add optional argument which indicates where to put - the fixed include files. Echo the directory name where the - include files will be put. - - * cccp.c (struct default_include): Don't examine - STANDARD_INCLUDE_DIR or /usr/local/include when - NO_STANDARD_INCLUDE_DIR is defined. This is useful when building - cross compilers. - (main): Only send SIGPIPE signal if the SIGPIPE signal exists on - the host. - (rescan, handle_directive, skip_if_group, validate_else, - skip_to_end_of_comment, macarg1, discard_comments): Accept '//' as - a comment in Objective-C as well as C++. The Objective C language - specifies that '//' starts a comment. - - * .gdbinit (ptn): Define new macro to print out the name of a type - node. - - * stab.def: Correct errors in table for values of DSLINE and - BSLINE. Document the conflict between BROWS and BSLINE. Document - the value of the BROWS field. - -Tue Jul 2 23:26:20 1991 Michael Meissner (meissner at pogo.gnu.ai.mit.edu) - - * mips-tfile.c (toplevel): Add a comment explaining the MIPS ECOFF - file format at the start of the file. - -Tue Jul 2 14:00:39 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * c-typeck.c (build_array_ref): Report error here if the "array" - is not an array or pointer. Don't leave this for the PLUS_EXPR. - - * cccp.c: Inlcude containing file names/lines in error messages. - (print_containing_files): New function. - (error*, warning): Call it. - (finclude): Increment input_file_stack_tick when file changes. - - * cccp.c: Include descrip.h. - -Tue Jul 2 07:44:19 1991 Tom Wood (wood at geech.gnu.ai.mit.edu) - - * tm-m88k.h (ASM_OUTPUT_SOURCE_LINE): Define only for SDB. - * tm-m88kdgux.h (AS_BUG_*): Support these for now. - - * c-decl.c (finish_struct): Invoke dwarfout_output_tagged_type - only when producing DWARF debugging info. - * cplus-class.c (finish_struct): Ditto. - -Mon Jul 1 23:03:34 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * toplev.c (compile_file): Close stack_reg_dump_file iff STACK_REGS. - -Mon Jul 1 15:17:57 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (set_significant): Ignore CLOBBERs. - (simplify_and_const_int, case SUBREG): Only ignore paradoxical SUBREGs - if BYTE_LOADS_ZERO_EXTEND. - (record_value_for_reg): Fix typo; had I for REGNO. - -Mon Jul 1 08:28:09 1991 Tom Wood (wood at dg-rtp.dg.com) - - * final.c (output_source_line): Output DWARF line numbers. - - * dwarfout.c (dwarfout_output_tagged_type): New function. - * c-decl.c (finish_struct): Call it. - * cplus-class.c (finish_struct): Call it. - - * dwarfout.c (includes): Need insn-config.h and reload.h. - (location_attribute): Use eliminate_regs for correct expression. - (output_bound_representation): Use SAVE_EXPR_RTL to get rtl and - then use eliminate_regs. - - * reload1.c (reload): When finished, indicate reg_equiv_constant - and reg_equiv_memory_loc are no longer valid. - (eliminate_regs): Don't attempt use of reg_equiv_constant or - reg_equiv_memory_loc if they aren't valid. No longer static. - * reload.h: Declare eliminate_regs. - - * toplev.c (compile_file): Only call dwarfout_file_scope_symbol - for VAR_DECLs. - -Sun Jun 30 15:49:39 1991 Ken Raeburn (raeburn at watch.com) - - * expr.c (expand_builtin, case BUILT_IN_MEMCPY): If alignment test - fails, and function was really BUILT_IN_STRCPY, zero out length - parameter before expanding call. - -Sun Jun 30 18:27:14 1991 Richard Kenner (kenner at vlsi1.ultra.nyu) - - * jump.c (jump_optimize): In "if (...) x = a; else x = b;", don't - move the "x = b;" if the test modifies X or if X is a hard register - and SMALL_REGISTER_CLASSES is defined. - Turn "if (...) x = 1; else {...} if (x) ..." code on when we have cc0. - -Sun Jun 30 13:49:03 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * gnulib2.c (__builtin_saveregs): - For i860, make data structure fit in with va-i860.h. - - * tree.c (gcc_obstack_init): - Support OBSTACK_CHUNK_ALLOC and OBSTACK_CHUNK_FREE. - - * calls.c (prepare_call_address): 3rd arg now address of chain var. - (expand_call): Call changed. - * expr.c (emit_library_call): Call changed. - - * function.c (fix_lexical_addr): In recursive call, pass slot address. - - * Makefile.in (cse.o): Added deps. - - * Makefile.in (GNULIB2_CFLAGS): Use -O2. - - * gnulib1.c, gnulib2.c (abort): Undefine only if defined. - - * genattr.c (main): Fix typo in comment end. - -Sat Jun 29 21:57:28 1991 Torbjorn Granlund (tege at zevs.sics.se) - - * longlong.h (__sparc8__ umul_ppmm): Insert 3 nop:s for wr delay. - * longlong.h (___IBMR2__): Define umul_ppmm, add_ssaaaa, sub_ddmmss.. - * longlong.h (__sparc__): Don't call .umul; expand asm instead. - Don't define __umulsidi3 (i.e. use default definition). - -Sat Jun 29 06:25:19 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * tm-vax.h (CPP_SPEC): New macro. - (LIB_SPEC): Handle -mg. - - * cccp.c (install_builtins): Fix backward test of objc. - - * fold-const.c (size_int): No need to test sign of NUMBER. - - * gcc.c (process_command): Split -L from its arg. - - * gcc.c (S_ISREG): Define if not defined. - (delete_temp_files): Use it. - - * limits.h (UCHAR_MAX, CHAR_MAX, USHRT_MAX): Delete `U'. - (LONG_MAX, ULONG_MAX): Add `L'. - -Fri Jun 28 22:22:58 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * Makefile (realclean): Delete stage1, stage2, stage3. - - * gcc.c (fatal) [HAVE_VFPRINTF]: Do print program name. - -Fri Jun 28 15:34:08 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) - - * out-sparc.c (output_block_move): Correctly handle the case where - the size is not a CONST_INT, and has a value of 0. - - * flags.h (flag_no_inline): Modify comment to match the one in - toplev.c. - - * integrate.c (copy_rtx_and_substitute): When creating new rtx, - make sure all of the new bitfields are copied, e.g. - REG_LOOP_TEST_P, LABEL_OUTPUT_LOOP_P, etc. - - * loop.c (loop_optimize): Call reg_scan after - find_and_verify_loops, because it may change register lifetimes. - (find_and_verify_loops): After moving a block of code outside the - loop, must readjust the loop_number_exit_label and - LABEL_OUTSIDE_LOOP_P data of the modified jump and the moved jump. - toplev.c (rest_of_compilation): Delete reg_scan call before - loop_optimize. - -Fri Jun 28 13:16:37 1991 Michael Meissner (meissner at osf.org) - - * tm-mips.h (toplevel): Add target_flags to externals declared. - (toplevel): Add dslots_number_nops, mips_load_reg{,2}, - mips_fill_delay_slot external declarations for delay slot reorg. - (CC1PLUS_SPEC): By default, pass -fno-gnu-binutils to cc1plus. - (TARGET_FLAGS): Add -mwc8, -mwc16, -mwc32 to set size of wchar_t, - though the switches are not used right now. - (TARGET_FLAGS): Add -msoft-float code from rfg@ncd.com to compile - on systems w/o floating point. - (TARGET_FLAGS): -mdebugf suppresses filling load delay slots. - (HARD_REGNO_OK): Relax constraints, allow anything in GP - registers, anything in even FP registers, int's only in multiply - and divide registers, int/CC in the FPSW register. - (FRAME_POINTER_REQUIRED): Require frame if alloca is called for - now. - (REG_CLASS_FROM_LETTER): Index from an array (mips_char_to_class) - instead of having lots of ?:'s. Also, allow 'd' to signify GP - registers. - (ENCODE_SEGMENT_INFO): Only record things being in small data/bss - if -mgpOPT (-O sets by default), -O, and -G xx where xx > 0. - (FINAL_PRESCAN_INSN): Rework to automatically not fill the - previous instruction's load delay slots with nop's if it is safe. - (ASM_OUTPUT_LABEL): If compiling collect, don't use assemble_name. - (ASM_GLOBALIZE_LABEL): If compiling collect, don't use - assemble_name. - (ASM_OUTPUT_LABELREF_AS_INT): Define this for collect. - (ASM_OUTPUT_INT): If collect, don't use output_addr_const. - - * mips.md (all floating point): If -msoft-float, don't allow any - floating point builtin operations. - (all patterns): Use 'd' constraint to limit things to GP - registers, rather than 'r'. This allows unions of - float/int/double to occupy any registers. - (*extend*): Call mips_move_1word to handle loads, which in turn - sees if we can omit the load nop. - (fix_trunc*): Redo, since register allocator can handle moving to - the appropriate register set. - (movdf_xfer*): Use explicit return's instead of falling through - and having the appropriate value in a register from the previous - call. - (movsf_xfer*): New patterns to accomidate unions of floats and - int's. - (movsi_unaligned): New define_expand to call either movsi_ulw or - movsi_usw. Also, if not a memory operation, use movsi. - (movsi_ulw): Set up to omit load delay nop if we can. - (movsi_usw): Use memory_operand instead of simple_memory_operand. - Also, allow storing 0 to an unaligned location. - (various move patterns): mips_move_1word now takes a third - argument to specify whether a load should sign or zero extend. - (call_value): Use register_operand on return value. - (probe): Turn into define_expand, and set a register to the - contents of memory pointed to by the stack pointer with volatil - set. - - * out-mips.c (toplevel): Add new global variables: - dslots_number_nops, mips_load_reg{,2}, mips_regno_to_class, - mips_char_to_class. - (simple_memory_operand): If not optimizing, no global memory - reference is assumed to be in the GP area. - (mips_fill_delay_slot): New function to tell FINAL_PRESCAN_INSN - the current insn is a load and may need a nop. - (mips_move_1word): Take a third argument to say whether load byte - and load half-word sign extend or zero extend. Change all - callers. If this is a load, call mips_fill_delay_slots to - schedule the nops. Change all return's to setting a variable, and - falling through to the end. - (mips_move_2words): If this is a load, call mips_fill_delay_slots - to schedule the nops. Change all return's to setting a variable, - and falling through to the end. - (function_arg): if -msoft-float, floating point is passed in GP - registers. - (override_options): Initialize mips_char_to_class. - (print_operand): %( and %) no longer do .set nomacro. - (print_operand): %# prints #nop if gas or -mstats. - (print_operand): Check for too many %), %], and %>'s. - (compute_frame_size): Allocate space in stack to hold FP, just in - case we later need a FP and previously thought we could eliminate - it. - (save_restore): Take a string to indicate the 2word load/store to - use, but don't use it at present. Change all callers. Home - varargs registers with sd if we can. - (function_epilogue): Deal with one or more outstanding nop's from - FINAL_PRESCAN_INSN. - (function_epilogue): Revamp -mstats output format. - (function_epilogue): Zero new global variables. - - * make-decrose (toplevel): Sort make variables. - (CLIB): Add -lld library. - (LANGUAGES): Add build of collect-osf and g++. - (ULTRIX_DIR): Change internal work directory location. - (cplus-lex.o): Don't optimize to avoid problem with 1.39 compiler. - (collect-osf): Add rules to build OSF/rose version of collect. - - * make-mips (LANGUAGES): Add build of g++. - - * tm-decrose.h (SIZE_TYPE): Specify to be long unsigned int. - (PTRDIFF_TYPE): Specify to be long int. - (WCHAR_TYPE): Specify to be long unsigned int. - - * sdbout.c (plain_type_1): Add support for unknown tags if - SDB_ALLOW_UNKNOWN_REFERENCES is defined. The MIPS ECOFF support - needs this, but standard COFF typically doesn't allow unknown - references. - - * gcc.texinfo (Debugging Info): Document - SDB_ALLOW_UNKNOWN_REFERENCES and SDB_ALLOW_FORWARD_REFERENCES. - - * collect-osf.c (whole file): New file to provide collect support - on OSF/rose. - -Fri Jun 28 09:20:18 1991 Tom Wood (wood at dg-rtp.dg.com) - - * configure (m88k-luna): New target. - * tm-m88kluna.h: New file for the Omron Luna/88k. - * xm-m88k.h: Don't use USG for the luna88k. - - * tm-m88kdgux.h: DG/UX implements coff and elf. Currently elf is - a strange variant of coff that's non-standard (it uses SDB - debugging info for example). Soon, the DG/UX elf will support - DWARF. These changes provide transitional support for all three. - (DWARF_DEBUGGING_INFO, SDB_DEBUGGING_INFO): Define both. - (VERSION_0300_SYNTAX): True when -msvr4 and -mversion-03.00. - * tm-m88ksvr4.h (ASM_FILE_END, ASM_OUTPUT_DWARF_LINE): Move these - to tm-m88k.h. They are dwarf specific. - * tm-m88k.h (TARGET_SWITCHES): Add -mversion-03.00 and -mdwarf. - (OVERRIDE_OPTIONS): If using version 03.00 syntax, assume DWARF_DEBUG. - - * tm-m88k.h (REG_ALLOC_ORDER): Adapt slightly for using r26-r29. - - * out-m88k.c (m88k_debugger_offset): Don't complain if the base - register is optimized away. - -Thu Jun 27 21:43:36 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * local-alloc.c (memref_referenced_p, memref_used_between_p): - New functions. - (update_equiv_regs): Call memref_used_between_p. - -Thu Jun 27 19:59:36 1991 Ken Raeburn (raeburn at watch.com) - - * print-tree.c (print_node): Changed the various "lang_#" strings to - indicate which of several possible fields are being examined; new - strings are "tree_#", "decl_#", "type_#". - -Thu Jun 27 15:05:43 1991 Michael Meissner (meissner at churchy.gnu.ai.mit.edu) - - * xm-mips.h (ONLY_INT_FIELDS): Define if not compiling with GCC - since the MIPS compiler treats enum bitfields as signed. - -Wed Jun 26 19:48:16 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) - - * sched.c (memrefs_conflict_p): Explicitly handle case where both - X and Y are CONST. - (sched_analyze_2): Do create dependencies for insns with REG_EQUIV - notes. - (sched_note_set): Correctly handle the case where the destination - register is a multi-word hard register. - (attach_deaths): Don't add a REG_DEAD note to an insn with a - REG_UNUSED note that mentions the same register. Correctly handle - the case where the destination register is a multi-word hard - register. - (schedule_block): Also call sched_note_set for CLOBBERs when - computing which registers are dead at the end of the basic block. - Also call sched_note_set for USEs when computing what registers - are still live after a just scheduled insn. - (regno_use_in): New function, subroutine of split_hard_reg_notes. - Searches an rtx for any reference to the given register, and - returns the register rtx used if any. - (split_hard_reg_notes): New function. Handles the case where a - multi-word hard register with a REG_DEAD note gets split. Creates - a new REG_DEAD note for each part of the original hard register - used by the split insns. - (new_insn_dead_notes): Don't add a REG_DEAD note to an insn with a - REG_UNUSED note which mentions the same register. - (update_links): Add call to new function split_hard_reg_notes. - Correctly handle the case when the dest of the original insn was a - multi-word register which was split in the split insns. In this - case, the dest is no longer killed here, so must remove the - REG_DEAD on the last previous insn in this basic block which used - dest, if any such exists. - - * unroll.c (reg_dead_after_loop): Check that a CODE_LABEL which is - the target of a JUMP_INSN has a non-zero PREV_INSN field before - trying to derefence it. Fail if there is no previous insn. - - * loop.c (scan_loop): Fix typo. - * local-alloc.c (optimize_reg_copy): Likewise. - * global-alloc (hard_reg_copy_preferences): Likewise. - * gcc.texinfo (REG_LOOP_TEST_P): Likewise. - * optabs.c (expand_float): Likewise. - * tm-vaxv.h (ASM_OUTPUT_ASCII): Likewise. - - * out-sparc.c (output_move_double): Sign extend CONST_INTs that - feed DImode targets. - * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): Don't accept a LABEL_REF - as a legal address. Also, delete obsolete parts of preceeding - comment. - - * reload1.c (alter_reg): Only try to delete the reg_equiv_init - insn if it hasn't already been deleted by a previous call to - delete_dead_insn. - - * toplev.c (main): Handle -gdbx in addition to -gsdb for - orthogonality. - * gcc.texinfo: Document -gdbx. - -Tue Jun 25 09:57:08 1991 Tom Wood (wood at dg-rtp.dg.com) - - * m88k.md (casesi): Don't emit a barrier; the dispatch code must - adjoin the table. - * tm-m88k.h (DONT_REDUCE_ADDR): Don't use this. - (CONDITIONAL_REGISTER_USAGE): The PIC register is also call-used. - * out-m88k.c (m88k_layout_frame): Save the PIC register. - -Tue Jun 25 07:40:43 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * function.c (expand_function_end): FNDECL should - be CURRENT_FUNCTION_DECL. - - * combine.c (find_split_point): If we see an AND operation as the - first operand of some non-AND operation, use it as a split point. - (subst): Add counter to limit restarts, go to restart more often. - (subst, case AND): If we get (ior (and (X C1) C2)) and can't - restart more than once, rewrite with C1 as small as possible and exit. - - * cse.c (cse_end_of_basic_block): Don't put branch in our path more - than once. - (cse_main): Clear PATH_SIZE when skipping a block. - (cse_basic_block): Use GET_RTX_CLASS. - -Tue Jun 25 07:39:29 1991 Matthew Self (mself at next.com) - - * varasm.c (const_hash, compare_constant_1, record_constant_1): - For ADDR_EXPR's, don't hash address of SYMBOL_REF. Only use - offset and name of symbol. This allows constructors which - contain pointers to identical string literals to be uniqued. - - * loop.c (loop_optimize, init_loop): Moved call to - gcc_obstack_init() from loop_optimize() to init_loop(). - - * reload1.c (reload, init_reload): Moved call to - gcc_obstack_init() from reload() to new function init_reload(). - - * toplev.c (compile_file): Call new function init_reload(). - -Mon Jun 24 16:05:57 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) - - * stmt.c (expand_end_stmt_expr): Fix typo in comment. - - * reload1.c (modes_equiv_for_class_p): Only fail if registers in - CLASS that can hold ALLOCATE_MODE can't also hold OTHER_MODE. Do - not fail for the reverse test. ALLOCATE_MODE is always a larger - or same size mode as OTHER_MODE, and will be the mode that reload - uses when allocating spill registers. Rewrite comments to explain - new behaviour. - (reload): Change call to modes_equiv_for_class_p to match new - semantics. - - * combine.c (simplify_shift_const): When simplifying (ashiftrt - (ashift inner_const_int) const_int), was checking the wrong number of - high order bits of inner_const_int. Also correct typos in comments. - - * c-convert.c (convert_to_integer): Must also check ARG1 for - unsignedness, because ARG0 could be a constant when EXPR is a - MINUS_EXPR. - - * combine.c (try_combine): When splitting, it is not safe to use - I2DEST if it is referenced by NEWPAT. - - * combine.c (distribute_notes): After converting REG_DEAD notes to - REG_UNUSED notes, clear PLACE if it already has a REG_UNUSED note, - to prevent adding a duplicate REG_UNUSED note. - - * gcc.texinfo (SIGNED_CHAR_SPEC): Document. - -Mon Jun 24 10:02:32 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (cse_set_around_loop): Ensure the insn we find in front - of the loop does the set in the proper mode. - - * optabs.c (expand_float): Always do conversions to FMODE in the - signedness of the input. - - * reload.c (find_reloads, find_reloads_toplev): If reg_equiv_address - is not a constant address, copy it in case it is shared. - - * reload1.c (eliminate_regs): Copy reg_equiv_memory_loc in case - it is shared and we make a reload inside it. - - * stupid.c (stupid_mark_refs): Registers that aren't used must die - in the insn after their birth so they conflict with other outputs. - - * vax.md: Replace patterns to convert (and (ashiftxx)) - into (and (rotatexx)) with the patterns that are actually made - by combine. - We can allow offsettable addresses for operand 0 and it is not - early-clobber. - - * out-rs6000.c (secondary_reload_class): Correctly interpret result of - true_regnum. - - * out-rs6000.c (output_toc): Write FP constants in TOC. - * tm-r6000.h (TARGET_FP_IN_TOC): New flag. - (TARGET_SWITCHES): Add -mfp-in-toc and -mno-fp-in-toc. - (TARGET_DEFAULT): -mfp-in-toc is the default. - (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): FP constants may be put in the TOC. - -Mon Jun 24 00:52:44 1991 James Van Artsdalen (james at bigtex.cactus.org) - - * out-i386.c (output_fix_trunc): If the dest operand mentions the - stack pointer, then we must adjust it to account for the temporary - space we allocate on the stack here. - -Sat Jun 22 07:24:33 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (cse_set_around_loop): Fix typo in call to note_mem_written. - - * emit-rtl.c (reorder_insns): Correctly handle case when AFTER is last - insn. - - * expr.c (expand_expr, case COND_EXPR): Correctly handle X ? A : X + 1. - Previous change called invert_truthvalue which can modify EXP; we now - call it a second time to undo its action if do_store_flag fails. - -Sat Jun 22 02:37:59 1991 James Van Artsdalen (james at bigtex.cactus.org) - - * cse.c (cse_set_around_loop): Don't try to initialize an - automatic structure. - - * reg-stack.c (compare_for_stack_reg): If both operands to a - compare are the same stack reg, don't process death on the second. - - * i386.md (all float patterns): Don't allow constants in the - operand predicates. - (all patterns using convert_387_op): Split patterns into one using - FLOAT and another using FLOAT_EXTEND. - -Fri Jun 21 20:37:03 1991 Tom Wood (wood at dg-rtp.dg.com) - - * sched.c (line_note, line_note_head): New vectors for use when - dealing with line-number notes. - (unlink_notes): Put line-number notes in LINE_NOTE for reuse. - (schedule_block): Just before reordering the insns, walk the insns - and record the line-number note in effect for each one. When - reordering is complete, restore the line-number notes as needed. - (schedule_insns): When debugging information is present, allocate - and initialize line_note and line_note_head. After scheduling, - walk the insns to delete redundant line-number notes. - -Fri Jun 21 19:54:29 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) - - * old-sparc.c, out-old-sparc.c, tm-old-sparc.h: Delete obsolete - files. - - * loop.c (loop_number_exit_labels): Expand comment. Mention that - returns are not included because all bivs and givs are pseudos and - hence must be dead after a return. - -Fri Jun 21 07:10:56 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (subst, case PLUS, MINUS): Remove cases for things like - (x-y)+y; now done in simplify_binary_operation. - * cse.c (simplify_unary_operation): Handle (sign_extend (truncate ..)) - as used in casesi patterns. - (simplify_binary_operation, case PLUS, MINUS): Don't do most - simplifications if IEEE floating-point. - Add cases for things like (x-y)+y. - (fold_rtx): Replace PC with LABEL_REF if we are immediately in - front of a jump table. - Move code to apply associative law to after we have folded the - operands. - (fold_rtx, case MEM): Fix errors in checking for index of jump - table being out of range. - For ADDR_DIFF_VEC, return a MINUS or (truncate (minus L1 L2)). - (fold_rtx, case PLUS): If we have (plus X (label_ref L)), see - if X is equivalent to (minus L1 L2). - (cse_insn): Put (minus L1 L2) in `src_const' so it gets in a - REG_EQUAL note and gets put in the hash table. - If we are branching to a jump table, we are really branching to - immediately after the jump table - Remove special-case kludge for ADDR_DIFF_VEC; now handled properly. - - * vax.md (casesi): Make pattern agree with machine instruction; - specifically, index is multiplied by two and the comparison is LEU, - not LE. - - * cse.c (equiv_constant): If X is a one-word SUBREG of a larger - quantity, use `lookup_as_function' to see if it is equivalent - to a CONST_INT. - - * jump.c (squeeze_notes): No longer static. - * loop.c (find_and_verify_loops): Need to call squeeze_notes when - moving block of code (see last change). - - * reload.c (find_reloads): When forcing constant to memory, - set recog_operand to the result of find_reloads_toplev. - - * combine.c (subst, case PLUS): Add (c1 - a) + c2 -> (c1+c2) - a. - (subst, case MINUS): Use simplify_binary_operation rather than - making CONST_INT from subtraction of two INTVAL's to ensure it - gets truncated as appropriate for its mode. - Add (c1 - (c2 - a)) -> (c1-c2) + a. - - * a29k.md (negdf2): Use operand_subword_force, not operand_subword. - (movsf): Use operand_subword, not gen_lowpart. - - * out-rs6000.c (u_short_cint_operand): New function. - (print_operand): Support auto-decrement. - - * tm-rs6000.h (OVERRIDE_OPTIONS): Force profiling off. - (PREFERRED_RELOAD_CLASS): Return NO_REGS for real CONST_DOUBLE. - (HAVE_PRE_DECREMENT): Define this. - (GO_IF_LEGITIMATE_ADDRESS, GO_IF_MODE_DEPENDENT_ADDRESS): - Support PRE_DEC. - - * rs6000.md (zero_extendxx): Use rlinm, not andil so we avoid - clobbering cr0. - (arith-and-record patterns): Correct some bad operand numbers. - Put SImode output as operand 0 to improve register tying. - (andsi): Prefer rlinm over andil and andiu. - (load/store-with-update): Add patterns for these instructions. - (allocate_stack): New, replaces stack probe. - (add-and-compare): New patterns, with define_split. - (subtract-one-and-jump): Allow outputs anywhere; handle with - match_scratch and define_split. - - * stmt.c (expand_end_stmt_expr): If `last_expr_value' is 0, set it - to const0_rtx. - - * regclass.c (reg_n_sets): Move definition to before use. - - * jump.c (find_cross_jump): Don't try to substitute REG_EQUAL - values unless they are constants. - -Fri Jun 21 02:37:59 1991 James Van Artsdalen (james at bigtex.cactus.org) - - * reload1.c (reload): Don't clear after_call for each insn. - -Sun Jun 16 17:28:43 1991 James Van Artsdalen (james at bigtex.cactus.org) - - * reload1.c (reload, reload_as_needed, choose_reload_regs): Enable - code to avoid return register when SMALL_REGISTER_CLASSES defined. - - * final.c (final_scan_insn): Don't look for no-op moves if - processor has STACK_REGS. - - * hard-reg-set.h (GO_IF_HARD_REG_EQUAL): New macro. - - * jump.c (cross_jump_death_matters): New variable. - (find_cross_jump): If processor has STACK_REGS, compare death - notes if they matter. - - * toplev.c (compile_file, rest_of_compilation): Support new - stack-regs conversion pass. - (main, compile_file, rest_of_compilation): Add support for -dk to - dump after stack-regs conversion. - * reg-stack.c: New file. Implements stack-regs conversion pass. - * Makefile.in (reg-stack.o): New file. - - * tm-i386.h (STACK_REGS): New macro. - (all register macros): Define all eight float point registers. - (HARD_REGNO_NREGS): Only one float reg is needed for any mode. - (HARD_REGNO_MODE_OK): Move code here from out-i386.c. - (FIRST_STACK_REG,LAST_STACK_REG): New macros. - (ARG_POINTER_REGNUM): Move to reg 16. - (FP_REGNO_P): Recognize all float regs. - (QI_REG_P): New macro. - (STACK_REG_P,NON_STACK_REG_P,STACK_TOP_P): New macros. - (PRESERVE_DEATH_INFO_REGNO_P): Delete. - (OVERLAPPING_REGNO_P): Delete. - (CONST_OK_FOR_LETTER_P): Recognize constant mask for byte or word. - Recognize constant 0..3 for `lea' shifts. - (CONST_DOUBLE_OK_FOR_LETTER_P): - (PREFERRED_RELOAD_CLASS): Don't put CONST_DOUBLE in float regs. - QImode must go in class Q_REGS. Float regs can't hold MODE_INT. - (MOVE_RATIO): New macro. - (SHIFT_COUNT_TRUNCATED): Delete. Bit opcodes don't truncate. - (RTX_COSTS): New macro. - (CONST_COSTS): Make constants cheaper. - (QI_HIGH_REGISTER_NAMES): Renamed from QI_REGISTER_NAMES_TOP. - (INSN_CLOBBERS_REGNO_P): Delete. - (FP_TOP,RETCOM,POP_ONE_POP,FP_CALL1,FP_CALL): Delete. - - * out-i386.c (fp_pop_level): Delete. - (fp_call_internal, output_asm_insn_double_reg_op, via_memory, - fp_store_sf,fp_pop_sf,fp_store_df,fp_pop_df,fp_pop_int, - fp_push_sf,fp_push_df,output_movsf,output_movdf,output_movf, - top_dead_p,call_top_dead_p,fp_top_dead_p1,mentioned_fp_top): Delete. - (hard_regno_mode_ok): Moved to tm-i386.h. - (qi_high_reg_name): New variable. - (output_op_from_reg, output_to_reg): New function. - (singlemove_string,output_move_const_single): No longer static. - (singlemove_string): Use correct operand number in `push' string. - (standard_80387_constant_p): Use recommended method to extract - float from CONST_DOUBLE. - (PRINT_REG): Add 'h' for "high" register names, 'y' for "st(0)". - (print_operand): Code 'z' prints no size suffix for stack regs. - Print DImode suffix as "ll", not just "l". - (output_fix_trunc): New argument `insn'. Generalize to output to - MEM or REG. Return "char *" like other output routines. - Generalize for SImode or DImode output. - (binary_387_op,convert_387_op,float_op,fix_op,shift_op): New - match_operator predicates. - (output_387_binary_op,output_float_compare): New functions. - - * i386.md (all MODE_FLOAT patterns): Replace with new code to use - all FPU registers. - (all patterns): Use AS2 and AS1 macros where possible, for - eventual support of Intel syntax output. - (tstM): Don't initialize operands unless we need to. - (cmpM): Choose operange order in output for speed on i386. - (logical test patterns): The operands commute. If possible, - SImode tests should use just QImode. - (movstrictM): New patterns. - (movqi): Don't allow a constant of unknown value into Q_REGS. - (`lea' pattern): Move after addsi3. - (addsi3): Do three operand adds with `lea'. - (divsi3,divhi3,udivsi3,udivhi3): Delete in favor of u?divmodM4. - (divqi3,udivqi3): Remove earlyclobber for operand 0. - (andM3): Define three operand ANDs for 255 and 65535 using zero - extend opcode. Also directly do an AND in the second byte of a - register. - (iorM3,xorM3): Do byte ior instead of word where possible. - (xorqi3): Allow operands[2] from MEM. - (ashlsi3): Allow three-operand shift of 0..3 with `lea' opcode. - (lshlM3): Redundant, delete. - (shift & rotate patterns): Print %0 as destination operand. - (bit recognizers): New patterns to set, clear and compliment. - (call insns): Use "%P" code for targets to support Intel syntax. - (movstrsi): Express changes to the operands instead of just - clobbering them. Don't accept non-constant move count, as our - code isn't as efficient as a library call. - -Thu Jun 20 13:51:02 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (cse_insn): If we fold a conditional or computed branch to an - unconditional branch, it is now not in the normal format for an - unconditional branch, and it only has one set, delete it and - re-emit it. - Whenever we make an unconditional branch, set `cse_skip_to_next_block' - and do nothing else. - (cse_basic_block): Increment LABEL_NUSES on TO if it is a label - so it won't go away while we are using it as a stopping point. - If we are done with this block (`cse_skip_to_next_block' nonzero), - pretend we just did the insn before TO. - Decrement LABEL_NUSES of TO if it is a label; if it became zero, - delete it and try to extend the basic block. - - * reload.c (find_reloads): Fix typo in check for no alternatives - found. - - * combine.c (reg_significant, significant_mode): New vars. - (combine_instructions): Allocate and initialize reg_significant. - (set_significant): New function. - (significant_bits, case REG): Use reg_significant, if non-zero - as the significant bits of a register. - - * loop.c (n_times_set): Define -2 to mean that a register is - an candidate to be moved and is a constant. - (scan_loop): Set n_times_set to -1 or -2 as appropriate. - (regs_match_p): No need to check REG_FUNCTION_VALUE_P. - A register and a constant can be equal if the register is known - equivalent to the constant. - (invariant_p): Check n_times_set < 0, not == -1. - - * rtl.h (REG_LOOP_TEST_P): New macro. - * jump.c (duplicate_loop_exit_test): Mark registers used only in - loop exit test. - * cse.c (cse_around_loop, cse_check_loop_start, cse_set_around_loop): - New functions. - (cse_end_of_basic_block): Add new arg to say if we are being called - after loop.c has run; if we are being called after loop.c, we can - ignore NOTE_INSN_LOOP_ENDs. - (cse_main): Accept new AFTER_LOOP arg; pass to cse_end_of_basic_block. - If we are called before loop.c, see if we can cse around to the - start of a loop. - * toplev.c (rest_of_compilation): Tell cse_main if it is being called - before or after loop.c. - - * rtl.h (LABEL_OUTSIDE_LOOP_P): New macro. - * loop.h (uid_loop_num): Renamed from luid_loop_num and now - maps INSN_UID to loop number instead of INSN_LUID. - * loop.c (loop_optimize): Modifications for the above. - (find_and_verify_loop): Change luid_loop_num to uid_loop_num. - Look for blocks of code ending in an unconditional branch out - of the loop surrounded by a conditional branch and try to move - such a block out of the loop. - (mark_loop_jump): Change luid_loop_num to uid_loop_num. - Mark all LABEL_REFs that are outside the current loop, for - branch prediction. - (strength_reduce, check_dbra_loop): Change luid_loop_num to - uid_loop_num. - * unroll.c (unroll_loop, find_splittable_{regs,givs}): Likewise. - (reg_dead_after_loop, final_{biv,giv}_value): Likewise. - - * flow.c (reg_n_sets): Don't define this here. - * regclass.c (reg_n_sets): Define it here. - (reg_scan): Allocate and initialize reg_n_sets. - (reg_scan_mark_refs): Count sets of a register in reg_n_sets. - - * sched.c (reg_known_value_size): New variable. - (canon_rtx): Don't look in reg_known_value outside its allocated space. - (init_alias_analysis): Initialize reg_known_value_size. - - * loop.c ({unknown,fixed}_aggregate_altered): Deleted. - (loop_store_mems): Replaces loop_store_addrs and loop_store_widths. - (loop_optimize): Call init_alias_analysis. - (prescan_loop, note_addr_stored): Save all MEMs stored into, rather - than just those that appear fixed; save MEMs rather than addresses - and widths. - (invariant_p): Use true_dependence to see if a MEM is invariant; - compare it with all MEMs stored during the loop. - - * sched.c (memrefs_conflict_p): If XSIZE or YSIZE is zero - the object conflict if they have the same base, irregardless - of the offsets. - - * reorg.c (dbr_schedule): Reallocate unfilled_firstobj after - freeing memory from the obstack. - - * reload.c (push_reload): Always reload object inside SUBREG if - STRICT_LOW_PART is present. - Always set RELOAD_STRICT_LOW to zero; maybe we should get rid of it. - - * reload.c (make_memloc): Copy the address if it varies to avoid - potential sharing problems. - - * global-alloc.c (hard_reg_copy_preferences): New var. - (global_alloc): Allocate and initialze it. - (prune_preferences): Prune it. - (find_reg): Try preferences in hards_reg_copy_preferences first, - then hard_reg_preferences. - (set_preference): Set bit in hard_reg_copy_references, if appropriate. - - * emit-rtl.c (try_split): If we are splitting a JUMP_INSN, copy - JUMP_LABEL from the old to new insn update the count of that label. - - * cse.c (lookup): Always call exp_equiv_p unless we have a REG. - - * cse.c (insert): If we are making a register equivalent to a - constant that was already equivalent to a constant, update - qty_const_insn. - (cse_insn): Don't do it here. - * cse.c (fold_rtx): Always call simplify_unary_operation. - - * cse.c (record_jump_equiv): Don't get primary elements for OP0 and - OP1 since they might not be valid. - - * loop.c (get_condition): Accept new arg, EARLIEST that is a pointer - to where we place the earliest insn used to form the condition. - Check for comparison with CC0 in main loop, not earlier. - Never return condition involving CC0. - (get_condition_for_loop): Call get_condition with new arg. - * jump.c (jump_optimize): When we make store-flag insn, put new - insns before earliest insn used to form condition and use new - psuedo as target, which we copy into VAR immediately after the insn - that currently sets VAR. - Turn off "if (...) x = 1; else {...} if (x) ..." code; it is not - correct and can't be easily fixed. - (get_label_{before_after}): Use {prev,next}_nonnote_insn. - - * jump.c (jump_optimize): Don't interpret NOOP_MOVES as meaning - "after_reload"; check reload_completed instead. Don't pass NOOP_MOVES - to functions that aren't actually trying to noop moves. - (follow_jumps, tension_vector_labels): Don't accept AFTER_RELOAD arg; - check reload_completed instead. - - * combine.c (try_combine): Don't check that we don't have a - single_set when trying to replace a SET_DEST in a PARALLEL in I2. - (simplify_and_const_int): Always do the AND in the mode passed. - (significant_bits, case DIV and UDIV): Nothing special known - about low-order bits here. - (simplify_shift_const, shift cases): Don't go into infinite loop if - we combine two shifts in the same direction. - - * c-parse.y, cplus-parse.y, objc-parse.y (set_yydebug): Move to - end of file so we don't have a reference to yydebug after its - definition; also delete duplicate declaration. - -Thu Jun 20 09:08:21 1991 Tom Wood (wood at geech.gnu.ai.mit.edu) - - * local-alloc.c (block_alloc): Fixed typo in last edit. - -Wed Jun 19 17:05:52 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) - - * reload.c (push_reload): Verify reload_in[i] exists before using - GET_CODE on it. - - * m88k.md: USE insns must be immediately before CALL_INSNs to work - properly, otherwise sched.c and reorg.c will not associate them will - the CALL. - - * unroll.c (calculate_giv_inc): Accept constant increments - represented as a LO_SUM. - - * flow.c (mark_used_regs): Don't put a REG_DEAD note on insns that - already have a REG_UNUSED note. This makes it consistent with - combine.c. - * combine.c (distribute_notes): If a REG_UNUSED reg is no longer - set by an insn, but is still used by the insn, then must convert - the REG_UNUSED note to a REG_DEAD note. - - * gcc.c (SIGNED_CHAR_SPEC): Put ifndefs around it, so that it can - be overriden by a definition in the tm.h file. - - * cse.c (cse_insn): Add missing third parameter to find_reg_note calls. - - * tm-arm.h (INIT_CUMULATIVE_ARGS): Take LIBNAME as third argument. - - * combine.c (can_combine_p): Remove extra argument in call to - find_reg_note. - - * rtlanal.c (find_regno_note): Verify that the note contains a - REG before checking its REGNO. - - * cse.c (canon_reg): Fix spacing/punctuation error. - * recog.c (constrain_operands): Likewise. - * tree.h: Likewise. - * varasm.c (Assemble function): Likewise. - -Wed Jun 19 13:14:22 1991 Tom Wood (wood at geech.gnu.ai.mit.edu) - - * local-alloc.c (block_alloc): When counting instructions, abort if - a loop is detected. Improperly threaded insns are easy to produce - when working on the scheduler. - -Sat Jun 15 06:13:11 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (simplify_and_const_int, case ASHIFTRT): Avoid infinite - loop if simplify_shift_const doesn't do anything. - -Thu Jun 13 09:05:12 1991 Tom Wood (wood at dg-rtp.dg.com) - - * m88k.md (decrement_and_branch_until_zero): Add this insn. - -Thu Jun 13 07:32:37 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * explow.c (plus_constant): Fix error in last change; CONST case - wasn't handled correctly. - - * tm-m68k.h (CONST_CONSTS): Constants between -7 and -1 are cheap - because of subq. - - * m68k.md (dbra): Operand 0 should have '+' constraint, not '='. - - * expmed.c (store_fixed_bit_field): Clean up some confusion between - targets and results in expand_binop calls. - - * local-alloc.c (optimize_reg_copy): Fix several typos relating to - status updating. - Correctly handle the case where DEST dies before SRC. - Fix some comments that had SRC and DEST backwards. - - * combine.c (can_combine_p): Swap order of args of && to avoid - unnecessary calls to use_crosses_set_p. - (simplify_and_const_int, case SUBREG): Make code agree with comment. - - * emit-rtl.c (operand_subword): Avoid compilation warning. - - * expmed.c (store_fixed_bit_field): Don't use OP0 as SUBTARGET - if it is a MEM and -fforce_mem was specified. - - * expmed.c (emit_store_flag): After scc insns, convert to wider - mode using unsigned conversion if STORE_FLAG_VALUE is positive. - - * expmed.c (init_expmed): Use mode of size BITS_PER_WORD instead - of SImode. - (store_bit_field, extract_bit_field): Replace references to SImode - with MAXMODE. - (store_fixed_bit_field, extract_fixed_bit_field): Don't use explicit - modes; use get_best_mode instead. - (store_split_bit_field, extract_split_bit_field): Use operand_subword - and mode_for_size instead of making SUBREGs and using SImode. - - * stor-layout.c (get_best_mode): Allow LARGEST_MODE to be VOIDmode, - in which case we can use any appropriate mode. - -Wed Jun 12 16:32:37 1991 Michael Tiemann (tiemann at pogo.gnu.ai.mit.edu) - - * cplus-decl.c (init_decl_processing): Compensate for tm-sparc.h - change to WCHAR_TYPE handling. - -Wed Jun 12 10:19:13 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * tm-sparc.h (WCHAR_TYPE): Must be "short unsigned int". - - * combine.c (subst, make_extraction, simplify_shift_const): Don't - change mode of volatile MEM; replaces similar change of June 1st. - * function.c (fixup_var_refs_1, optimize_bit_field): Likewise. - * recog.c (validate_replace_rtx_1): Likewise. - -Tue Jun 11 22:09:28 1991 Michael Tiemann (tiemann at cygint.cygnus.com) - - * expr.c (expand_expr, case COND_EXPR): Expressions of both the form - X ? A + 1 : A and X ? A : A + 1 were being done, but only the former - was being handled correctly. - -Tue Jun 11 12:13:53 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * recog.c (validate_replace_rtx_1): If putting a CONST_INT in a - ZERO_EXTEND or SIGN_EXTEND, try to simplify the operation or fail; - the semantics of the operation require a non-VOIDmode argument. - - * cse.c (delete_dead_from_cse): Don't delete last insn in a libcall. - - * explow.c (allocate_dynamic_stack_space): Don't clobber SIZE when - rounding it. - - * fold-const.c (fold, case COND_EXPR): Ensure we always return an - expression in the correct type. - - * expr.c (emit_push_insn): Don't need to put X in register if it - is constant; operand_subword_force can do so if needed. - - * reload.c (find_reloads): Simplify nested `if' statements. - * recog.c (constrain_operands): Likewise. - - * jump.c (mark_jump_label): Fix typo (extra paren) in last change. - -Tue Jun 11 10:03:08 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu) - - * collect2.c: New file. - - * sched.c (memrefs_conflict_p): Finish removing ASHIFT case. - - * emit-rtl.c (operand_subword): Change test of BITS_PER_WORD < - HOST_BITS_PER_WORD from compile-time to run-time. - * expr.c (emit_push_insn): Ditto. - * recog.c (constrain_operands): Ditto. - * reload.c (find_reloads): Ditto. - - * jump.c (jump_optimize): Add `continue' after deleting INSN in case - where further attempts to optimize the insn are invalid. - (mark_jump_label): Don't crash if NEXT == 0. - -Tue Jun 11 09:14:05 1991 Tom Wood (wood at dg-rtp.dg.com) - - * out-m88k.c (legitimize_operand): New function to convert - CONST_DOUBLE to SFmode when possible. - * m88k.md (cmpdf, adddf3, subdf3, muldf3, divdf3): Use it. - * tm-m88k.h: Declare it. - - * xm-m88k.h (OBSTACK_CHUNK_SIZE): For DG/UX at least, the default - value results in a perfect checkerboard. - -Tue Jun 11 07:23:45 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (expand_expr, case FLOAT_EXPR, FIX_EXPR): Don't try to - do any partial conversions here; expand_fix and expand_float now - handle all modes. - * optabs.c (fixtab, fixtrunctab, floattab): Table now contains - all modes. - (can_fix_p, can_float_p): Use mode as index in tables. - (init_fixtab, init_floattab): Likewise. - Add support for QImode and HImode operations. - (expand_float): Rework to remove dependendence on specific modes. - Can only use REAL_VALUE_LDEXP in certain configurations. - (expand_fix): Likewise. - If can't do operation unsigned, or signed into wider mode, emit a - sequence that compares operand with 2**(N-1) and, if larger, - subtracts 2**(N-1), converts, and adds it back. - Protect from queue and force not memory at start. - * m88k.md (fixuns_truncdfsi2, fixuns_truncsfsi2): Deleted; now done - in expand_fix in optabs.c. - - * combine.c (expand_field_assignment): Convert SET_SRC to mode of - INNER. - (simplify_shift_const, case ASHIFTRT): Don't use undefined initial - value of MASK. - - * explow.c: Include insn-config.h, recog.h, and insn-codes.h. - (allocate_dynamic_stack_space): Rework to be more precise in required - alignment. Must maintain alignment of stack to STACK_BOUNDARY at - all times (it must not be momentarily misaligned) and must align - returned address to BIGGEST_ALIGNMENT. - * Makefile.in (explow.o): Show new includes. - -Tue Jun 11 07:22:54 1991 Matthew Self (mself at next.com) - - * m68k.md: Change incorrect reference to -m68040-fp to -m68040-only. - Fix several spelling errors. - - * m68k.md (fix_trunc*f*i2): New insn's to replace fintrz on the - '040. These emit a sequence of insn's to change the rounding mode - to round-to-zero, perform the truncation, and restore the rounding - mode. - -Mon Jun 10 09:57:31 1991 Michael Tiemann (tiemann at cygint.cygnus.com) - - * c-lang.c (GNU_xref_{begin,end}): Add stub functions for xref info. - - * cplus-decl.c (record_builtin_type): Add support for handling - builtin types' nicknames (e.g. "unsigned long" for "long unsigned - int"). - - * expmed.c (struct algorithm): Change array size from BITS_PER_WORD - to MAX_BITS_PER_WORD. - gcc.texinfo: Document MAX_BITS_PER_WORD. - -Mon Jun 10 07:45:17 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (try_combine): When making an I1 from an I2 that is - a PARALLEL, give the new I1 the same INSN_UID as I2. - - * recog.c (constrain_operands, case 'p'): Pass operand mode - (from match_operand) to strict_memory_address_p. - - * m68k.md (andsi3): bclr does not set the condition codes in the - standard way. - -Sun Jun 9 11:16:24 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reload.c (find_reloads): Swap preferred_class and pref_or_nothing - when we swap commutative operands. - - * combine.c (subst, simplify_shift_const): Treat UDIV and MULT - with a second operand of a constant that is a power of two as the - appropriate shift if it feeds or is fed by a shift. - - * expmed.c (expand_divmod): When searching for the best mode to - perform the computation, take into account the fact that we sometimes - do a shift, not a divide. - - * expmed.c (emit_store_flag): Correctly handle "a = b < 0;" if A - is narrower than B. - Don't check for STORE_FLAG_VALUE equal to just the sign bit of - OP0 if the width of its mode is larger than HOST_BITS_PER_INT. - Use switch rather than if/elseif/elseif. - - * combine.c (simplify_shift_const, shift cases): We were not forming - the mask correctly when VAROP is a LSHIFTRT and narrower than X; - simplify the mask formation by using significant_bits and - simplify_binary_operation. - - * reload.c (make_memloc): Copy RTX_UNCHANGING_P from REG to MEM. - (find_reloads_address, find_reloads_address_1): Don't shortcut - reloading the address in reg_equiv_address; always call - find_reloads_address on it. - - * recog.c (constrain_operands, case 'p'): Validate address if - testing strictly. - - * out-alliant.c, out-m68k.md (output_move_double): Extraction of - parts of CONST_INT was backwards; these machines are words-big-endian. - -Sat Jun 8 12:19:26 1991 Michael Tiemann (tiemann at cygint.cygnus.com) - - * sparc.md: Remove special-case shift insns which load and shift - memory-based operands. Combine now does this for us. Also change - abs patterns so that they consistently print the negation followed - by the mov on a single line. - - * reload1.c (choose_reload_regs): Cast `enum reg_class' values to - `int' when using them as array indicies. - - * gnulib2.c (LONG_TYPE_SIZE): Don't inherit the definition of - LONG_TYPE_SIZE from tm.h, since that may be target_flag-specific. - Instead synthesize the value from `sizeof (long)'. - - * cplus-gc.c (build_m_desc): Figure out whether the i_desc should - constitute a defn of its type or not. Analogous to May 26 change - for instance variables. - -Sat Jun 8 07:11:26 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (simplify_and_const_int): Detect and remove redundant - alignment operation. - (significant_bits, case REG): Realize that the stack pointer might - be aligned. - (significant_bits, case PLUS, MUNUS, MULT, DIV, UDIV): Track low-order - bits of zero as well as high-order zero bits (so we detect alignment - operations). - (record_value_for_reg): If updating a register, try to substitute its - old value into the expression for better tracking of values. - - * a29k.md (fmac/dmac): Delete incorrect patterns. - -Thu Jun 6 19:08:29 1991 Sean Fagan (sef at cygint.cygnus.com) - - * final.c (output_source_line): Say we are on line number 1 if - sdb_begin_function_line is -1, not 0. - -Thu Jun 6 08:01:05 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * stor-layout.c (get_best_mode): Don't assume GET_MODE_SIZE (SImode) - is UNITS_PER_WORD; if SLOW_BYTE_ACCESS defined, try to return the - mode whose size is UNITS_PER_WORD. - - * sparc.md (floatsisf2, floatsidf2): Add missing mode for - operand 1; use const_int_operand as predicate. - - * cse.c (canon_reg): Add arg INSN; if replacing a pseudo with a hard - register or vice versa, use validate_change to ensure the insn - remains valid. - All callers changed; most pass zero since they validate replacement. - (cse_insn): Use validate_change on result of canon_reg when - required. - - * c-common.c (combine_strings): Use WCHAR_BYTES instead of - UNIT_PER_WORD for the size of a wide char. - - * emit-rtl.c (gen_lowpart_common): Always extract integral modes - from integer CONST_INTs and CONST_DOUBLEs. - - * integrate.c (copy_for_inline, copy_rtx_and_substitute): Don't - try to extract a float from a fixed-mode CONST_DOUBLE. - (copy_for_inline, copy_rtx_and_substitute, restore_constants): - Declare target of REAL_VALUE_FROM_CONST_DOUBLE to be REAL_VALUE_TYPE. - - * local-alloc.c (update_equiv_regs): Fix typo in testing - reg_basic_block. - -Wed Jun 5 09:15:09 1991 Ken Raeburn (raeburn at watch.com) - - * Eliminate unneeded binding levels when overloading template class - names: - * cplus-pt.c (overload_template_name): Accept second argument - classlevel, indicating that new decl should be pushed into current - class binding level; otherwise, assume current level is okay to use. - Callers changed. - (undo_template_name_overload): New second argument classlevel - indicates where binding for variable was made. Callers changed. - - * cplus-parse.y (structsp): Call undo_template_name_overload in all - appropriate cases. - - * Get interface/implementation flags set properly on methods in - class templates, and use it: - * cplus-lex.c (store_pending_inline): If inside a class, walk up - through nested classes to top level looking for template parameters. - For class methods, use current interface flag settings rather than - flags for class. - (extract_interface_info): No longer static. - (do_pending_inlines, process_next_inline): Call - extract_interface_info to get interface flags set properly after - changing file names. - * cplus-pt.c (instantiate_class_template): Ditto. - (end_template_instantiation): Ditto. - (do_pending_expansions): If interface/implementation flags of - containing class are set, use them. - * cplus-tree.h (interface_unknown): Added declaration. - -Wed Jun 5 07:36:44 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reload.c (find_reloads_address): Unshare a MEM if its address is - the address of a constant pool location. - - * optabs.c (expand_binop): Fix typos in multi-word addition; had - MODE for SUBMODE. - - * reload1.c (alter_reg): Correctly delete insn that makes a REG - equivalent to a MEM in the case where the MEM is the SET_DEST. - - * a29k.md (negdf2): Add missing alternative in operands 2. - (movdi): Change "i" constraint to "n". - Split for constant integer as input; split cannot fail. - Correct typo in DEFINE_SPLIT (DFmode for DImode). - * out-a29k.c (gen_reg_or_integer_constant_operand): New function. - - * configure: Fix typo in reference to tm-sun3-nfp.h. - -Wed Jun 5 06:56:10 1991 Matthew Self (mself at next.com) - - * c-parse.y, objc-parse.y (attrib): Always pass aligned attribute - through. Return $1 on failure rather than NULL_TREE for consistency. - - * c-common.c (decl_attributes): Warn if requested alignment is not - a power of two. Also warn if decl is not a VAR_DECL or a FIELD_DECL, - since specifying alignment makes no sense for a TYPE_DECL, and is - not implemented for a FUNCTION_DECL. - - * c-parse.y, objc-parse.y (initdcl, notype_initdcl): Call - decl_attributes before finish_decl in order for alignment attribute - to take effect. - - * varasm.c (assemble_variable): Warn if DECL_ALIGN is greater than - MAX_OFILE_ALIGNMENT, if defined. This allows errors to be - detected with formats like a.out which support a maximum alignment - of 4. - - * c-parse.y, objc-parse.y (component_declarator): Call decl_attributes - with correct args. - - * stor-layout.c (layout_record, layout_union): Do not clamp struct - alignment at BIGGEST_ALIGNMENT, since individual fields may have - requested greater alignment than this. This check shouldn't have - done anything anyway. - - * c-parse.y (unary_expr): When alignof is applied to an expression, - call c_alignof_expr so that we can check DECL_ALIGN instead of calling - c_alignof (TYPE_ALIGN (TREE_TYPE (expr))). - - * c-typeck.c (c_alignof_expr): New function to compute alignof for - expr's. Returns DECL_ALIGN for VAR_DECL's and FIELD_DECL's. Also - return 1 after reporting error about applying alignof to bitfields. - - * c-tree.h (c_alignof_expr): Add declaration. - - * varasm.c (assemble_variable): MAX_OFILE_ALIGNMENT defaults to - BIGGEST_ALIGNMENT if not defined in config.h. - -Wed Jun 5 06:55:12 1991 Tom Wood (wood at dg-rtp.dg.com) - - * m88k.md (mov*): Change the interface to emit_move_sequence. - * out-m88k.c (emit_move_sequence): Similar to the sparc version. - - * tm-m88k.h (SIZE_TYPE): Specify as unsigned int. - - * xm-m88k.h (HOST_BITS_PER_LONGLONG): Define. - -Wed Jun 5 01:45:07 1991 Sean Fagan (sef at cygint.cygnus.com) - - * sdbout.c (sdbout_symbol): don't output definition information for - a nested function inside the parent function; this makes COFF - assemblers upset. - -Tue Jun 4 17:35:13 1991 Sean Fagan (sef at cygint.cygnus.com) - - * function.c (trampoline_address): make the RTL_EXPR node temporary, - not momentary, so that the trampoline_list doesn't become garbage. - Fix made by jim wilson (wilson@cygnus.com). - -Tue Jun 4 09:40:59 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (move_block_to_reg): Fix typo in last change. - - * local-alloc.c (update_equiv_regs): Check for reg_n_refs == 2, - not loop_depth * 2. - - * reorg.c (fill_simple_delay_slots): Clear INSN_DELETED_P on insns - placed in current_function_epilogue_delay_list. - - * make-rs6000 (ALLOCA_FLAGS, ALLOCA_FINISH): Add override to - compensate for the fact that the RS/6000 C compiler has no -S. - - * out-rs6000.c (easy_fp_constant): Use operand_subword. - (print_operand): Use INT_P and INT_LOWPART to allow accepting both - CONST_INT and CONST_DOUBLE for integers. - - * rs6000.md (floatsidf2, floatunssidf2): Rework these to emit only - two insns, each of which has DImode or DFmode operands. Then - split the funny DImode insn to generate it. - (fix_truncdfsi2, fixuns_truncdfsi2): Surround our call with - REG_LIBCALL/REG_RETVAL notes. - Use operand_subword. - (movsf, movdf): Correctly handle a pseudo passed during reload. - Use operand_subword. - Split moves involving "easy" FP constants. - (subtract-and-branch): Disable for now, to avoid output reload in jump. - - * tm-rs6000.h (WCHAR_TYPE): Add definition. - (INT_REGNO_P): Fix typo; register 31 is a normal register. - (LEGITIMATE_CONSTANT_P): The only FP constants that are valid are - the "easy" ones. - - * a29k.md (negdf2): Use XOR when not involving accumulator. - Add SCRATCH so we dont use gr122. - Handle case where input and output are same register. - (negsf2): Use SCRATCH. - (DImode operations): Use operand_subword, not gen_{low,high}_part. - (movsf, movdf, movdi): Always split if we can look inside CONST_DOUBLE. - Use operand_subword. - Don't split into separate words in DEFINE_EXPAND. - * out-a29k.c (in_operand): Account for fact that integer CONST_DOUBLE - is VOIDmode. - (extract_subword): Deleted. - (print_operand): Add macros INT_P and INT_LOWPART so we can accept - either CONST_INT or CONST_DOUBLE. - - * romp.md (movdi, movdf, negsf2, negdf2): Use operand_subword and - operand_subword_force, instead of gen_{high,low}part. - Use force_const_mem instead of force_const_double_mem. - - * m88k.md (movdi): Remove 'F' constraint; 'n' now includes integer - CONST_DOUBLE. - (anddi3, iordi3, xordi3): Likewise. - Use operand_subword to extract individual words. - * out-m88k.c (output_load_const_{float,double,dimode}): Use - operand_subword. - - * Makefile.in (emit-rtl.o): Now includes expr.h. - * calls.c (expand_call): Pass mode to move_block_to_reg. - * combine.c (subst, case SUBREG): Simplify SUBREG of hard register - and some SUBREGs of constants. - (gen_lowpart_for_combine): If object is desired mode, always return it. - Use gen_lowpart_common for most cases; just support MEM and - surrounding with a SUBREG here. - * cse.c (insert): CONSTANT_P includes CONST_DOUBLE. - (fold_rtx): Use MODE for GET_MODE (X). - (fold_rtx, case SUBREG): Handle simple cases of folding SUBREGs. - (fold_rtx, case MEM): Use operand_subword and gen_lowpart_if_possible - to get parts of constant instead of gen_lowpart and gen_highpart. - (gen_lowpart_if_possible): Use gen_lowpart_common for most cases. - * expr.c: Include expr.h. - (gen_lowpart_common): New function, from gen_lowpart. - (gen_lowpart): Use gen_lowpart_common for most cases; just handle MEM. - (gen_highpart): Deleted. - (subreg_lowpart_p): Test WORDS_BIG_ENDIAN in `if', not `#if'. - (operand_subword, operand_subword_force): New functions. - * explow.c (plus_constant): Handle adding CONST_INT to CONST_DOUBLE. - Rework to use switch statement. - Remove obsolete OLD_INDEXING code. - (plus_constant_for_output): Use plus_constant for most cases. - (break_out_memory_refs): Refine which constants get broken out. - * expmed.c (store_bit_field, extract_bit_field): Don't use - gen_highpart for multi-word fields; instead, loop and use - operand_subword. We now support fields more than two words long. - (mask_rtx, lshift_value): Just pass high and low words to - immed_double_const; it will mask and choose CONST_INT vs. CONST_DOUBLE. - * expr.c (convert_move): Use operand_subword instead of gen_highpart. - Don't assume GET_MODE_SIZE (DImode) > UNITS_PER_WORD. - (move_block_to_reg): Add MODE arg. - Use operand_subword_force. - (move_block_from_reg): Use operand_subword. - (move_block_from_reg, move_block_to_reg, use_rgs): - Don't assume GET_MODE_SIZE (SImode) == UNITS_PER_WORD. - (emit_move_insn, emit_push_insn): Likewise. - Use operand_subword and operand_subword_force. - (expand_expr, case INTEGER_CST): Just call immed_double_const. - (expand_expr, cases FIX_TRUNC_EXPR, FLOAT_EXPR): Don't assume - GET_MODE_SIZE (SImode) == UNITS_PER_WORD. - (expand_builtin): Likewise. - (do_jump_by_parts_{greater,equality): Likewise. - Use operand_subword_force. - * expr.h (operand_subword): Remove declaration from here. - (validize_mem): Add missing declaration. - * final.c (final_scan_insn): If assembler code string is "#", - try to split insn. - Ignore insns with INSN_DELETED_P set. - (alter_subreg): Remove erroneous code for CONST_DOUBLE. - (output_addr_const): Integer CONST_DOUBLEs are now VOIDmode. - * fold-const.c (add_double): No longer static. - * integrate.c (copy_for_inline, copy_rtx_and_substitute): - Use validize_mem to validate force_const_mem's result. - (subst_constants, case SUBREG): Use operand_subword and - gen_lowpart_common instead of gen_lowpart and gen_highpart. - (restore_constants): Don't assume all CONST_DOUBLEs are floating. - Use validize_mem to validate force_const_mem's result. - * optabs.c (expand_binop,, expand_unop): Don't assume - GET_MODE_SIZE (SImode) == UNITS_PER_WORD. - Use operand_subword_force. - (operand_subword): Deleted from here. New version in emit-rtl.c. - * recog.c (validate_replace_rtx_1): Check for any constant, - not just CONST_INT. - (constrain_operands, case 'm', 'o'): Any constant OK if strict < 0. - (constrain_operands, case 'E'): Must have host and target word sizes - the same. - (constrain_operands, case 's', 'n'): CONST_DOUBLE can be integer. - * reload.c (find_reloads, case 'm', 'o', 'E', 's', 'n'): Likewise. - Don't call force_const_double_mem; use force_const_mem instead. - (find_reloads_toplev): Likewise. - Use gen_lowpart_common to get low part of constant. - * rtl.h (gen_highpart, force_const_double_mem): Deleted. - (gen_lowpart_common, operand_subword, operand_subword_force): - New declarations. - * varasm.c (const_double_chain): Renamed from real_constant_chain. - (immed_double_const): For integer constants, perform any needed - masking and make either CONST_INT or CONST_DOUBLE. - (force_const_double_mem): Deleted; would need a mode arg added - which would make it almost identical to force_const_mem. - * out-vax.c (split_quadword_operands): Use operand_subword instead - of gen_lowpart and gen_highpart. - - * function.c (find_replacement): New function. - (fixup_var_refs_insns): Pass pointer to listhead of (new) - fixup_replacement structures; if any entries were pseudos, copy from - memory to the pseudo. - (fixup_var_refs_1): New arg REPLACEMENTS; provide that arg in - recursive calls. - Use find_replacements to ensure we don't break any MATCH_DUPs. - -Tue Jun 4 05:07:53 1991 Michael Tiemann (tiemann at cygint.cygnus.com) - - * stmt.c (pushcase, pushcase_range): Take new parameter DUPLICATE. - Use this to store existing LABEL_DECL if LABEL is a duplicate. - * c-parse.y, cplus-parse.y, objc-parse.y, stmt.c: All callers - changed. - -Mon Jun 3 17:19:40 1991 Michael Tiemann (tiemann at cygint.cygnus.com) - - * cplus-expr.c (decl_in_memory_p): New function. - * cplus-typeck.c (mark_addressable): Test `decl_in_memory_p' instead - of testing memory_operand, since the DECL_RTL of a decl may be a - (MEM ...) by not a valid memory address. - - * cplus-typeck.c (mark_addressable): When we decide that a static - const variable must go to memory, make sure that its rtl is - allocated from the correct obstack. - - * cplus-decl.c (grokdeclarator): Replace undocumented BREAK_C_TAGS - #define control with comments explaining why or how it is correct - for GNU C++ to break C's notions of what a tag is. - - * cplus-call.c (convert_harshness): Replace undocumented #if - AMBIGUOUS_WORKING control with a comment explaining the actions - where this control used to be. - -Mon Jun 3 15:07:47 1991 Sean Eric Fagan (sef at kithrup) - - * tm-i386.h (TRAMPOLINE_TEMPLATE): Changed a 040 to 0xe0; - this is the proper code for a jmp [%eax] instruction. - -Mon Jun 3 08:07:42 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cccp.c (initialize_builtins): Install __SIZE__TYPE__, - __PTRDIFF_TYPE__, and __WCHAR__TYPE__ as builtins. - -Sun Jun 2 18:18:19 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * flow.c (mark_set_1): Don't set LAST_MEM_SET from a MEM that has any - side-effects (such as auto-inc), not just volatile MEMs. - - * rtlanal.c (reg_referenced_p): New function. - * combine.c (try_combine): Correct test for added_sets_1 to account - for case where I1 and I2 both feed I3. - (distribute_notes): Don't interpret setting a reg as a use of the - reg; use new reg_referenced_p and simplify code. - - * flow.c (propagate_block): Ensure that LOOP_DEPTH is correct at all - insns in a basic block, otherwise reg_n_refs will be set incorrectly. - - * recog.c (validate_replace_rtx_1): Don't change mode of memory - reference that is mode-dependent. - Don't make a MEM with a larger mode than original. - - * combine.c (try_combine): Disable code to check MODES_TIEABLE_P - added May 20th and 22nd; this should not be needed now that - LIMIT_RELOAD_CLASS has been added to reload. - - * flow.c (mark_set_1): Allow for the fact that stack pushes don't have - REG_INC notes. - * local-alloc.c (optimize_reg_copy): Likewise. - Don't change lives of hard registers #ifdef SMALL_REGISTER_CLASSES. - A USE of a register must not be changed. - (validate_equiv_mem): Don't make an equivalence to volatile MEMs. - - * reorg.c (mark_set_resources): #ifdef PUSH_ROUNDING, mark SP as always - set since the insn might have a (pre_dec sp). - -Sun Jun 2 16:03:31 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * Makefile.in (libg_dir): Variable deleted. - (install-gnulib): Don't bother creating libg.a. - - * cccp.c (size_type_string, etc.): Variables deleted. - (special_symbol): Use macros SIZE_TYPE, etc., directly. - -Sat Jun 1 12:54:05 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * Let tm.h specify types for size_t, ptrdiff_t and wchar_t. - (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE): New params. - * cccp.c, c-decl.c: Provide default definitions of the new params. - * cccp.c (__SIZE_TYPE__, __PTRDIFF_TYPE__, __WCHAR_TYPE__): Builtins. - (special_symbol): Implement them based on new params. - * stddef.h (size_t, ptrdiff_t, wchar_t): Declare using those builtins. - * c-tree.h (ptrdiff_type_node): Declare variable. - * c-decl.c (init_decl_processing): Use *_TYPE params - to control setting of sizetype, wchar_type_node and ptrdiff_type_node. - * c-typeck.c (pointer_diff): Take result type from ptrdiff_type_node. - - * configure (target1): Really change / to -. - -Sat Jun 1 02:49:04 1991 Michael Tiemann (tiemann at cygnus.com) - - * cplus-lex.c (extract_interface_info): Now non-static. Called - whenever INPUT_FILENAME changes. - * cplus-pt.c (instantiate_class_template): Call - `extract_interface_info' when switching files. - * cplus-input.c (getch): Ditto. - - * combine.c (subst): Don't change the mode of memory access for - volatile memory. - - * tm-sparc.h (CONST_COSTS): Fix typo in computing cost of - CONST_DOUBLE for DImode integers. - -Fri May 31 16:11:57 1991 Ken Raeburn (raeburn at watch.com) - - * cplus-lex.c (process_next_inline): Set line number and filename if - more inline data is to be processed. - (store_pending_inline): Treat FUNCTION_TYPE like METHOD_TYPE. Use - current_class_type instead of extracting it from method type; the - two should be the same, and the latter doesn't work for statics. - - * cplus-decl.c (start_decl): When constructing templates, use - original name of function rather than "mangled" name. Look for - FUNCTION_DECL, not FUNCTION_TYPE, when deciding how to push the - new decl. - (start_method): Default inlining does not apply to template - expansions. - - * cplus-pt.c (pending_template_expansions): Moved declaration to - start of file. - (tsubst): For FUNCTION_DECL, use original name of source, not - mangled name. - (instantiate_template): Local variables now non-static. Fill in - pending-inline field of new decl, rather than template-info, and - chain into either pending-inlines or pending-template-expansions. - - * cplus-typeck.c (build_x_function_call): If a template is found, - treat it as an overloaded declaration. - -Fri May 31 14:20:45 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * Makefile.in (all.cross): New target. - * configure: If cross-compiling, change `ALL' to use all.cross. - -Fri May 31 11:43:31 1991 Matthew Self (mself at next.com) - - * tm-next.h (EXTRA_SECTION_FUNCTIONS): - Add new constructor and destructor sections. - (MAX_OFILE_ALIGNMENT): Define as 2^15 for Mach-O. - (ASM_OUTPUT_ALIGN): Use .align, not .even. Allow alignments > 2. - (CPP_PREDEFINES): Added -Dm68k since some code expects this. - -Fri May 31 05:41:51 1991 Michael Tiemann (tiemann at cygint.cygnus.com) - - * cplus-class.c (pushclass): New argument value for MODIFY accepted. - * cplus-decl2.c (build_push_scope): Call `pushclass' with MODIFY == 3. - - * cplus-decl.c (finish_function): Set TREE_PUBLIC and TREE_EXTERNAL - bits on functions according to #pragma interface/implementation, - regardless of whether or not the function's inline. This fixes the - bug of needless code replication with -fno-inline. - -Thu May 30 17:39:53 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * expr.c (expand_expr): - Don't lose volatility of fields in COMPONENT_REF. - -Thu May 30 17:36:45 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (count_reg_usage, delete_dead_from_cse): New functions. - * toplev.c (rest_of_compilation): Call delete_dead_from_cse immediately - after the first cse pass. - - * local-alloc.c (validate_equiv_mem_from_store, validate_equiv_mem): - New functions, to find cases where a REG is equivalent to a MEM. - (optimize_reg_copy): New function. - (update_equiv_regs): Call these new functions. - Look for a register used in only one basic block being stored into - memory. - Keep track of loop depth so we can find regs used only once, but - inside a loop. - * reload1.c (reload): Use single_set when looking for an insn - that initializes a register. - If making a REG equivalent to a MEM, the insn with SET_DEST being - the register isn't always the one making the equivalence, since the - equivalence might be occurring due to a store into MEM; in that - case set reg_equiv_init to the latter insn. - -Thu May 30 14:23:01 1991 Ken Raeburn (raeburn at watch.com) - - * Pending expansions processed at end-of-file can be processed out - of order, so freeing the associated data from the obstacks is not - possible. - * cplus-tree.h (struct pending_inline): New field can_free - indicates whether to free the text after processing it. - * cplus-lex.c (do_pending_inline, process_next_inline): If - can_free flag is set, specify inline-text obstack, otherwise null - pointer. - (cons_up_default_function): Clear flag. - (reinit_parse_for_method): Set it. - (store_pending_inline): Clear it when changing obstacks. - (pending_template_obstack): Deleted. References changed to use - permanent_obstack. - - * cplus-lex.c (store_pending_inline): Set DECL_PENDING_INLINE_INFO - value after swapping obstacks, not before. - -Thu May 30 07:23:18 1991 Michael Tiemann (tiemann at cygnus.com) - - * va-sparc.h: Has to be a char * to be compatible with Sun. - i.e., we have to pass a `va_list' to vsprintf. Also, fixed - bug in passing vararg structs. - -Thu May 30 00:32:18 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * configure: Delete Makefile.tem before writing it. - - * stor-layout.c (layout_record): - Ignore PCC_BITFIELD_TYPE_MATTERS for incomplete type. - - * fixincludes (stdtypes.h): Handle wchar_t like the other types. - - * function.c (assign_parms): Don't declare args_so_far register. - -Wed May 29 15:13:05 1991 Ken Raeburn (raeburn at watch.com) - - * cplus-tree.def (TEMPLATE_PARM_IDX): Deleted. - (TEMPLATE_TYPE_PARM): New node type, looks like a type node. - (TEMPLATE_CONST_PARM): New node type, looks like a const node. - - * cplus-tree.h (IDENTIFIER_TYPE_VALUE_PTR): Inlined under gcc. - (TYPE_IDENTIFIER_PTR): Ditto. - (DECL_NESTED_TYPENAME_PTR): Ditto. - (struct lang_type): New bitfield `use_template'. - (CLASSTYPE_USE_TEMPLATE): Accessor macro for above. - (struct lang_decl): New field `template_info'. - (DECL_TEMPLATE_INFO): Accessor macro for above. - (TEMPLATE_EXPANSION_NAME_P): Deleted. - (push_overloaded_decl_top_level): Added declaration. - (TEMPLATE_TYPE_TPARMLIST, TEMPLATE_TYPE_IDX, - TEMPLATE_TYPE_SET_INFO, TEMPLATE_CONST_TPARMLIST, - TEMPLATE_CONST_IDX, TEMPLATE_CONST_SET_INFO): New macros for - accessing fields of TEMPLATE_..._PARM nodes. - (struct pending_inline): New fields for names and values to bind - to them while processing. - (struct template_info): Definition moved here from cplus-pt.c. - (instantiate_template): Added declaration. - (instantiate_class_template): Ditto. - (processing_template_{decl,defn}): New variable declarations. - - * print-tree.c (print_node): Provide missing argument to - print_node for `bitpos' field. Display `virtual' flag, and (for - function and method types) `class' field; these are only used by - C++ that I'm aware of, but are defined in common code, so they - should be displayed here. - - * cplus-parse.y (template_def): Separate set of derivations, for - class and function templates. Template_def is a type of extdef; - extern_lang_string before template_def is not permitted. - (fn_tmpl_end): New nonterminal, anything that signals the end of - the portion of a template that we should parse. - (yyprint): Define only if YYDEBUG. Handle TYPESPEC. - (datadef): Complain at class template override declaration if that - specialization has already been produced by expansion. Template - definitions no longer belong here. - (tmpl.2): Always call instantiate_class_template; let it decide - whether or not to go through with it. - (template_instantiation): Put decl in global scope only if not - already there. - (typespec, scoped_typename): Scoped typename inside template type - should be a scoped_typename, not a typespec. However, a - template_type should be allowed as a typespec. - (structsp): Don't undo template name overload here. Deleted - derivation from template_type. - (named_class_head_sans_basetype): Don't overload template name. - (LC): Do it here. - (notype_declarator): For scoped_id derivations, don't call - build_push_scope if the scoped_id is a SCOPE_REF. - (scoped_id): Moved old typespec-from-template_type rule here. - Call resolve_scope_to_name only if template parms aren't involved. - - * cplus-pt.c (struct template_info): Definition deleted. - (templates, current_template_info): Variables deleted. - (processing_template_{decl,defn}): New variables. - (push_template_decls, pop_template_decls): Accept parmlist and - arglist as separate arguments, instead of deriving both from the - template. If class_level is non-zero, push and pop a level, - making it transparent to tags. Removed some pointless checks from - pop_template_decls that are only needed in push_template_decls, - and some assertions from both. Callers changed. - (uses_template_parms): Return non-zero iff argument refers to any - TEMPLATE_*_PARM nodes. - (tsubst): Walk tree, substituting for template parms, returning - new tree. - (type_unification): Rewritten a bit, to make it work. New - argument nsubsts is pointer to place to record number of - substitutions made when matching. - (unify): Renamed from unify1. Rewritten completely, to work. - Still may need extending for some tree node types. - (do_pending_expansions): At end-of-file, expand any templates not - yet expanded which were actually needed. Needs work to accomodate - latest specs. - (process_template_parm): Simplified slightly. Non-type parms - should be marked read-only; aggregate types are not allowed, since - equality checks don't work. - (end_template_parm_list): Moved to after process_template_parm. - Push a level, and push decls for TEMPLATE_*_PARMs. Set - processing_template_decl flag. - (end_template_decl): For non-class templates, build a - TEMPLATE_DECL and store the regular decl in its result field. - Context and other values get copied over too. Call poplevel to - get rid of the TEMPLATE_*_PARM decls, and call - dont_forget_overload to avoid losing the declaration later. Clear - processing_template_decl flag. Call get_pending_sizes, so later - function compilation doesn't try to evaluate sizes of templates. - (mangle_class_name_for_template): Convert type/non-type check from - switch to if test. Added support for ENUMERAL_TYPE, REAL_TYPE, - and POINTER_TYPE parms. - (instantiate_class_template): Renamed from old - instantiate_template. Don't expand if type size is set, or if - being-defined flag is set, or use-template flag is non-zero. If - other-template parms are used in the parm list, construct a simple - RECORD_TYPE node and return it. Catch case of template declared - but not defined before use. Renamed argument from class to - classname. Set processing_template_defn flag. - (instantiate_template): New routine; constructs new decl node - given TEMPLATE_DECL node and template arg vector. - (end_template_instantiation): Set use-template field to 2 ("did - use template"). Clear processing_template_defn flag. - (reinit_parse_for_template): Get template-info ptr from decl node. - Store template parm vector in it. - (pending_template_expansions): List of templates that may need - expanding later for function or class data definitions. - - * cplus-method.c (build_overload_value): Ensure tree code is - PARM_DECL. Handle ENUMERAL_TYPE like INTEGER_TYPE. For DImode - values, compare against integer_zero_node instead of constructing - another one. Added support for POINTER_TYPEs. If not - REAL_IS_NOT_DOUBLE, support real values as well. - (build_overload_name): Accept TEMPLATE_*_PARM nodes, but generate - a string that should cause some assembler errors. - - * cplus-ptree.c (print_lang_decl): Retrieve template-info from its - new place. - (print_lang_type): For TEMPLATE_TYPE_PARM, print its (short) info - and return. For RECORD_TYPE, print use-template and interface-* - fields. - - * cplus-search.c (push_class_decls): Don't call - push_template_decls; the bindings of template parameter names - should be associated with the template body, not with the class. - Do overload the template name, however. - (pop_class_decls): Don't call pop_template_decls. - - * cplus-call.c (build_method_call): Changed to recognize - constructor of template class. - (build_overload_call): Add in number of template substitutions as - extra cost of a candidate function. For template decls, try - unification and instantiation before evaluating cost of result. - This too is incorrect in terms of the spec, but it's a starting - point for later work. - - * cplus-class.c (finish_struct): If structure is named, undo - overload of its name as a template. - (pushclass): If prev_class_type was a template class, pop it; the - decls are handled wrong and should be re-entered. - - * cplus-decl.c (poplevel): Assert that the current level is not - global. - (push_to_top_level): Include global scope when looking for old - values, because class bindings aren't listed in any other one - place. - (push_overloaded_decl_top_level): New function; like - push_overloaded_decl, but places decl in global binding level. - (dont_forget_overload): New function; removes decl from list of - overloads to be forgotten when scope is exited. - (start_decl): If template parms are used, construct a - TEMPLATE_DECL node referencing the current decl. For function - templates, call push_overloaded_decl; for class template members, - chain them into the class template definition. - (grokdeclarator): Don't try determining size of a - TEMPLATE_CONST_PARM node. For template class-data decls, - construct a phony VAR_DECL node and return it. - - * cplus-decl2.c (grokfield): For static class data, use - build_overload_name result, instead of copying class name, since - the latter could be a human-readable template class name. (If - NEW_OVERLOAD_SCHEME is not defined, do this only if the class has - a template-derived name.) - - * cplus-lex.c (pending_template_obstack): New variable; obstack - for pending-template stuff to be saved to end-of-file. - (init_lex): Initialize it. - (default_def): New variable; used for default definition of copy - constructors and destructors. - (do_pending_inlines): Figure out whether text is in an obstack, - and which one, for calling feed_input. Push template decls if - needed, as specified in pending_inline data. Pass current - pending_inlines pointer back in PRE_PARSED_FUNCTION_DECL instead - of next. - (process_next_inline): Ditto. Pop pending inline data if needed. - (store_pending_inline): New function. Decides which obstack to - store a pending definition on, and which list to chain it into. - (reinit_parse_for_method): Call it. - (reinit_parse_for_block): If character passed in is '=', look for - a semicolon to end the block; don't require a {} block. Don't pad - to 8 bytes on USG, since we aren't feeding input via stdio any - more. Also, use newlines instead of # directives for advancing - line number only a few lines. - (cons_up_default_function): Punt padding for USG stdio, since we - aren't using it any more. Use default_def for definition. Call - store_pending_inline to save it away. - (identifier_type): For TEMPLATE_DECL, DECL_RESULT field non-null - indicates a non-type template, so don't return PTYPENAME. - (yylex): If end-of-file and input isn't redirected, call - do_pending_expansions and maybe start yylex over. Don't check - TEMPLATE_EXPANSION_NAME_P; a proper name transformation system - will eliminate conflicts. Try for SCOPED_TYPENAME with PTYPENAME - too. - -Wed May 29 11:48:34 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * cccp.c (do_include): Check that ->control_macro is non-zero. - - * gcc.c (process_command): Use `error' in last change. - -Wed May 29 11:10:12 1991 Tom Wood (wood at dg-rtp.dg.com) - - * m88k.md (movdi): Accept CONST_INT. - * out-m88k.c (output_load_const_dimode): Accept CONST_INT. - (output_call): Don't use #plt for jsr. - -Wed May 29 00:51:36 1991 Michael Tiemann (tiemann at cygint.cygnus.com) - - * cplus-type2.c (build_functional_cast): Give error if functional - cast is missing argument. - - * cplus-tree.h (interface_unknown): Add a declaration for this - variable. - - * cplus-type2.c (store_init_value): Normally initialized PIC data - must be laid into the text segment and then copied into the data - segment. But cecause of special things we do for ctors and dtors - (the only things that can reference such things), we can leave - vtables in initialized data space. - - * cplus-decl.c (finish_decl): Use #pragma interface knowledge if - available for processing initialized variables of type const. - -Tue May 28 18:39:20 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * sched.c ({true,anti,output}_dependence): Correct MEM_IN_STRUCT_P - code; only avoid conflict if MEM_IN_STRUCT_P ref has varying address. - - * protoize.c (stat): Remove declaration of stat; it is defined - differently (no const in arg 1) on some machines. - - * combine.c (simplify_shift_const): Avoid infinite loops by quitting - when COUNT becomes zero; delete now-unnecessary tests on COUNT. - - * flow.c (last_mem_set): New variable. - (propagate_block): Initialize it. - Show calls can change memory. - (insn_dead_p): Remove unneeded arg STRICT_LOW_OK; don't treat - STRICT_LOW_PART differently than ZERO_EXTRACT. - All callers changed. - If insn stores into the same, nonvolatile, MEM as recorded in - last_mem_set, it is dead. - (mark_set_1): If writing into register mentioned in last_mem_set or - writing into memory, clear last_mem_set. - Record last MEM written. - (find_auto_inc): New function, from mark_used_regs. - Add support for pre-increment and pre-decrement. - (mark_used_regs, case MEM): Clear last_mem_set. - Call find_auto_inc; move code to there. - (mark_used_regs, case SET): Don't call recursively on MEM if it is - SET_DEST, instead call find_auto_inc ourselves. - -Tue May 28 17:29:52 1991 Micheal Tiemann (tiemann at wookumz.gnu.ai.mit.edu) - - * gnulib1.c (__fixsfsi, __cmpsf2, __extendsfdf2): Add declarations - for intify. - - * gcc.c (default_compilers): Accept `.cxx' as a C++ extension. - -Tue May 28 17:05:28 1991 Tom Wood (wood at dg-rtp.dg.com) - - * m88k.md (movstrsi): Pass original MEM expressions. - * out-m88k.c (expand_block_move, block_move_{sequence,no_loop,loop}): - Use original MEM expressions to set RTX_UNCHANGING_P, MEM_VOLATILE_P, - and MEM_IN_STRUCT_P. - - * out-m88k.c (emit_bcnd): Use bxx when optimizing so jump_optimize - will work on more cases. Change this back when jump_optimize uses - get_condition to find the values being compared. - - * m88k.md: Don't use operand0 or operand1. - -Tue May 28 16:00:56 1991 Micheal Tiemann (tiemann at wookumz.gnu.ai.mit.edu) - - * emit-rtl.c (try_split): Make sure `after' exists before checking - to see if it is a BARRIER. - -Tue May 28 15:08:44 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * gcc.c (process_command): Warn if -x follows last input file. - - * cccp.c: Don't include file twice if a #ifndef would make it a no-op. - (struct file_name_list): New field, control_macro. - Initialize it where these structures are created. - (struct if_stack): Likewise. - (do_include): If file already known, check its control macro if any. - Don't include the file if the macro is now defined. - (do_xifdef): Detect case of successful #ifndef at start of file. - (condition_skip): Accept macro name as new arg. Record in if_stack. - (do_endif): Detect being effectively at end of file. - (record_control_macro): New function. Called from do_endif. - - * calls.c (store_one_arg): Set used after calling push_rounding. - - * sparc.md (floating move peepholes): Allow `r' for operand 2. - - * arm.md, tm-arm.h, out-arm.c, xm-arm.h: New files. - * configure (arm): New alternative. - -Tue May 28 11:53:21 1991 Michael Meissner (meissner at osf.org) - - * tm-decstatn.h (CPP_PREDEFINES): Add Ultrix 4.2 support. - - * tm-mips.h (cmp_type, branch_cmp, branch_type): Global variables - and type to record what type of comparison is being done. - (mips_print_operand_punct): New array to specify whether a - character is valid for print_operand as punctuation. - (set_nomacro, set_noat, set_noreorder): New variables to record - whether a .set nomacro, .set noat, or .set noreorder has been - done. - (dslots_{filled,total}_{load,jump}): New global variables to - remember how many delay slots exist and are filled for the -mstats - option. - (CC1_SPEC): Combine %{O:...} %{O*:...} cases. For -G32, pass -G - 32. Add dummy pattern for -save-temps to avoid error message. - (DBX_DEBUGGING_INFO): Define this all the time. - (SDB_ALLOW_FORWARD_REFERENCES): Define this for MIPS ECOFF support. - (SDB_ALLOW_UNKNOWN_REFERENCES): Define this for MIPS ECOFF support. - (TARGET_SWITCHES): Add -mstats to print interesting statistics. - Add -mmemcpy to force memcpy to be called. Add -mdebug[fghij]. - Add -mno- version of switches. - (DATA_ALIGNMENT): Align all char/short arrays/unions/structures, - rather than just char arrays. - (BYTE_LOADS_ZERO_EXTEND): Define this. - (CONST_OK_FOR_LETTER_P): 'N' returns true if power of 2. - (EXTRA_CONSTRAINT): Redefine 'Q' to be 1 word memory references, - 'R' to be multiword memory references. - (struct frame_info): Add initialized field. - (current_frame_info): New global structure to hold frame info. - (INITIAL_FRAME_POINTER_OFFSET): Use current_frame_info. - (INIT_CUMULATIVE_ARGS): Pass LIBNAME to init_cumulative_args. - (DELAY_SLOTS_FOR_EPILOGUE): Define this to fill j $r31 delay slot. - (ELIGIBLE_FOR_EPILOGUE_DELAY): Ditto. - (ENCODE_SEGMENT_INFO): Don't flag references to 0-sized arrays as - being in the small data segment. - (CONST_COSTS): Reword to be more accurate. - (RTX_COSTS): Define this. - (ADDRESS_COST): Define this. - (CLASS_CMP_OP, CLASS_EQUALITY_OP, CLASS_UNS_CMP_OP): New bits for - rtx_classify to classify various comparison operators. - (FINAL_PRESCAN_INSN): Define this to collect info for -mstats. - (NOTICE_UPDATE_CC): Only do CC_STATUS_INIT if the insn is a - comparison. - (EXTRA_CC_MODES): Define new modes CC_EQmode, CC_FPmode, CC_0mode. - (EXTRA_CC_NAMES): Define this. - (SELECT_CC_MODE): Define this. - (PRINT_OPERAND_PUNCT_VALID_P): Redefine this to index into - mips_print_operand_punct. - (DBR_OUTPUT_SEQEND): Reset .set reorder, .set macro as appropriate. - - * out-mips.c (branch_cmp, branch_type): New Global variables - and type to record what type of comparison is being done. - (mips_print_operand_punct): New array to specify whether a - character is valid for print_operand as punctuation. - (set_nomacro, set_noat, set_noreorder): New variables to record - whether a .set nomacro, .set noat, or .set noreorder has been - done. - (dslots_{filled,total}_{load,jump}): New global variables to - remember how many delay slots exist and are filled for the -mstats - option. - (reg_or_0_operand): Rewrite to add support for CONST_DOUBLE. - (mips_const_double_ok): Allow normal FP constants (not Infinity, - Nan, etc) to be used as operands when using the MIPS assembler. - (simple_memory_operand): Combine GP memory references from - gp_memory_operand. Delete gp_memory_operand. - (equality_op): Return true if EQ or NE. - (cmp_op): Return true if comparison operator. - (uns_cmp_op): Return true if unsigned comparison. - (mips_move_1word): New name for mips_move_instructions. Also, loads - of HImode/QImode use unsigned loads, rather than signed loads, so - that BYTE_LOADS_ZERO_EXTEND can be defined. Use %z to get name of - $0, instead of hardwiring it. Explicitly use lui where appropriate. - (mips_move_2words): New name for mips_move_2words_instructions. Use - %z to get name of $0, instead of hardwiring it. - (mips_address_cost): New function to define ADDRESS_COST macro. - (gen_conditional_branch): New function to generate all of the tests - and branches. - (block_move_sequence): New function to generate straight line code - for block moves. - (block_move_call): New function to set up a call to memcpy/bcopy as - appropriate for block moves. - (expand_block_move): New function which is called from the movstrsi - define_expand, to set up block moves. At present, unless -mmemcpy - is used, moves of less than 32 bytes, get straight line code, all - others get a call. - (init_cumulative_args): Take libname as third argument. - (function_arg_partial_nregs): Fix bug, to not return a negative - number when passing small structs in registers. - (compare_collect, compare_restore): Remove these functions, since - they are no longer called. - (override_options): Initialize mips_rtx_classify for all of the - comparison operator bits. Initialize mips_print_operand_punct to - return TRUE for each of the valid punctuation characters used in - print_operand. - (print_operand): %X now prints 32 bit ints in hex format. %z now - prints $0 if the operand is the constant integer 0. %(, %) now turn - on/off both .set noreorder/.set nomacro. %<, %> turns on/off .set - nomacro. %* turns on both .set noreorder and .set nomacro if - filling delay slots. %! turns on .set nomacro if filling delay - slots. - (compute_frame_size, save_restore, function_prologue, - function_epilogue): Change the calling sequence of - compute_frame_size to save everything in a global structure, which - has an initialized field to indicate that compute_frame_size needs - to be called. - (function_prologue): INIT_CUMULATIVE_ARGS now takes 3 args. - (function_epilogue): If current_function_epilogue_delay_list is - non-null, use that to fill the final delay slot. Also, make sure - the various asm .set's are reset properly. Write interesting - statistics out to stderr if -mstats. - (mips_epilogue_delay_slots): New function to return # of delay slots - the epilogue needs. - (null_epilogue): Return true if the function has a null epilogue, - which allows the optimizer to omit jumps to the final j $31 if no - stack was created. - - * mips.md (type attribute): Redo how the type attributes work, and - change some names. - (mode attribute): New attribute to describe the insn's result mode. - (length attribute): New attribute to give insn length in words. - (dslot attribute): New attribute to return whether an insn needs a - delay slot. - (define_delay): Use dslot and length attributes to determine if a - delay slot is needed. - (define_function_unit): Define all of the function units now. - (all patterns): Provide new attribute definitions. - (all memory reference patterns): modify alternatives to use 'Q' for - 1 word instructions, 'R' for multiword instructions. - (unnamed patterns): Provide names for all patterns, so that -dp will - pinpoint exactly which pattern is used. - (*divsi3, *divmodsi4, *modsi3): If optimizing and not -mdebugc, use - the *divmodsi4 patterns, so that the opimizer will only use 1 divide - if doing a = b / c; d = b % c; This replaces the peepholes, which - previously were used for this. If not optimizing, use the normal - div/mod patterns. - (zero_extendqihi2, extendqihi2): Allow zero/sign extending from - memory. - (fixuns_trunc{df,sf}si2): Use generator patterns to generate - appropriate branches. - (movsi_ulw, movsi_usw): New patterns to generate the appropriate - unaligned load/store for use in the block move expansion. - (mov*): Provide all possible combinations of moves. - (movstrsi): New pattern to generate block moves. - (negsi2): Change to a define_expand, which uses minus. - (one_cmpsli2): Change to a define_expand, which use the nor pattern. - (cmp*, b*): Redo comparison/branch completely to save things in - global variables, call the common C code to expand the branch, and - provide match_operators to do the actual branch. - (s*): Provide for the ability to set a register with an integer - comparison, without using a branch. - - * make-decrose (AUX_OUTPUT2): Delete macro, since aux-output.c is - always compiled separately now. - (LANGUAGES): Suppress G++, Objc temporarily. - (cse.o): Rebuild cse if the config files change, to get new cost - functions, no longer rebuild calls/function since the FUNCTION_ARG - macros just call functions in out-mips.c. - (SRCS): Change $(AUX_OUTPUT2_SRC) to aux-output.c. - - * make-mips (AUX_OUTPUT2): Delete macro, since aux-output.c is - always compiler separately now. - (CONFIG2_H): Add rules to rebuild selected modules when the - tm-mips.h file changes. - (mips-tfile): Rules to build mips-tfile. - (mips-tdump): Rules to build mips-tdump. - (LANGUAGES): Suppress G++, Objc temporarily, build mips-tfile. - - * mips-tfile.c (whole file): New file to put the MIPS specific debug - information into the object file, after the assembler has been run. - This is needed because the MIPS assembler provides no method of - setting up the debug information for local variables. This is - enabled by the make-mips Makefile modifier. - - * mips-tdump.c (whole file): New file to dump the contents of the - MIPS ECOFF symbol table in a symbolic format. This is not currently - built by default, but make-mips contains rules to build it. - - * tm-decrose.h (MD_EXEC_PREFIX): Change to use the test prefix - /usr/ccs/gcc-2.00/gcc- instead of the release prefix /usr/ccs/gcc. - (WCHAR_TYPE_SIZE): Define as 16. - (WCHAR_UNSIGNED): Define as 1. - (DBX_DEBUGGING_INFO): Define moved to tm-mips.h. - - -Tue May 28 06:26:44 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expmed.c (store_bit_field, extract_bit_field): If -fforce-mem - specified, copy OP0 into register (and back again, for store). - - * sched.c (memrefs_conflict_p, {true,anti,output}_dependence): Add - missing parens. - - * reload.c (find_reloads): Turn usage of reg_preferred_class back on - now that the code has been refined. - -Mon May 27 12:41:14 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * c-typeck.c (build_binary_op_nodefault): Set converted for shifts, - so op1 is not converted to the result type. - Clean up some warning messages. - - * expr.c (expand_expr): Use temp stack slot for BLKmode SAVE_EXPR. - - * Makefile.in (alloca.o): Use new vars ALLOCA_FLAGS and ALLOCA_FINISH. - -Mon May 27 05:42:20 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * sched.c ({read,true,anti,output}_dependence): Remove unused arg INSN. - All callers changed. - - * combine.c (subst, case PLUS): Fix typo in (plus (plus X C) Y) case. - (subst, case MULT): Distribute MULT over PLUS to try to simplify it. - -Mon May 27 05:15:16 1991 Michael Tiemann (tiemann at cygint.cygnus.com) - - * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): Don't accept a SYMBOL_REF - sum if FLAG_PIC is not 1. This forces the -fPIC to take effect, - even when the optimizer knows how to stitch together HIGH and LO_SUM - combinations. - (PRINT_OPERAND): Move body to out-sparc.c. - * out-sparc.c (print_operand): New function, implementing actions of - old PRINT_OPERAND macro. Comments written for all cases. - (reg_unused_after): Don't do anything special with JUMP_INSNs. Only - do something special with CALL_INSN if REGNO is a call-used reg. - - * cplus-type2.c (store_init_value): Back out 23 Feb change, which - was completely backward. - - * dbxout.c, cplus-dbxout.c (dbxout_parms): Also test that TREE_TYPE - (PARMS) is not ERROR_MARK_NODE. - - * cplus-init.c (build_up_reference): Check FLAGS parameter to see if - we can accept building a reference to a constructor-generated - temporary. - (various places): Change calls to `build_up_reference' that used to - use an explicit `1' to use LOOKUP_PROTECT instead. - (build_offset_ref): Use IDENTIFIER_TYPE_VALUE macro to the the type - associated with CNAME. - - * cplus-class.c (build_vbase_path): Fix 11 May change by only - changing TREE_TYPE (EXPR) if NULL_EXPR. We might build different - vbase paths for the same expr in multiple inheritance - initialization. - - * Makefile.in: Change sed script so it matches '^# ' instead of just - '^#'. This allows processing of md files with #if/#endif controls - in their C function bodies. - - * cplus-tree.c (build_cplus_new): Set TREE_SIDE_EFFECTS on RVAL. - - * stmt.c (warn_if_unused_value): Don't warn about EXIT_EXPRs. - (expand_decl_cleanup): Add missing type declarations for parameters. - - * cplus-call.c, cplus-class.c, cplus-dbxout.c, cplus-edsel.c: Include - stdio.h after cplus-tree.h since the latter references printf. - * cplus-search.c, cplus-xref.c: Likewise. - * cplus-class.c (prev_class_type): Not static; defined in cplus-tree.h. - * cplus-decl.c (builtin_function, auto_function): Don't put & in - front of function name. - * cplus-typeck.c (comptypes,comp_target_types): Likewise. - * cplus-search.c (report_ambiguous_mi_virtuals): Likewise, for arrays. - -Sun May 26 22:47:35 1991 Michael Tiemann (tiemann at cygint.cygnus.com) - - * cplus-decl.c (make_temporary_for_reference): New function. Split - out code from `grok_reference_init' so we could call it in two - places: where it was called before, and when initializing a - reference through a constructor for a temporary. - (grokdeclarator): Give error message instead of aborting if user - gave method qualifiers for function decl. - (start_function): Switch to temporary obstack before computing - destructor and constructor labels, and before building the - function's RESULT_DECL. - - * cplus-decl.c (store_parm_decls): Make a cleanup that controls the - action of the garbage collector. This ensures that the call to - __gc_pop doesn't get skipped in the function issues a return stmt. - * cplus-gc.c (expand_gc_prologue_and_epilogue): Work with new - cleanup model. - - * cplus-gc.c (build_i_desc): Figure out whether the i_desc should - constitute a defn of its type or not. - - * cplus-typeck.c (c_expand_return): Look through TARGET_EXPR as well - as NEW_EXPR for returning addresses of local variables. - - * reload.c (find_reloads): Intialized `goal_alternative_swapped' - where `swapped' is initialized to zero. - -Sun May 26 21:29:26 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * recog.c (const_double_operand): Fix typo. - * reload1.c (choose_reload_regs): Fix typo--swap #endif with }. - - * loop.c (init_loop): Multiply copy_cost by 2. - (general_induction_var): Use rtx_cost directly. - (expr_benefit): Function deleted. - - * m68k.md (andsi3): Generate bclr if appropriate. - - * cccp.c (do_undef): Just a warning, if deleting something unusual. - -Sun May 26 18:51:33 1991 Jim Wilson (wilson at sphagnum.cygnus.com) - - * expr.c (force_operand): When calling recursively, use - a temporary to force evaluation of calls. The C language - allows `f (g (x), g (y))' to be evaluated in different orders - on different hosts, which could lead to different code - generation for different hosts. - - * recog.c (const_double_operand): New function for recognizing - CONST_DOUBLE rtx's. - - * expmed.c (expand_mult_add): Add new parameter TARGET which is a - suggestion of where to store the result; pass it to expand_expr. - * loop.c (emit_iv_add_mult): Pass REG to expand_mult_add call as - target for the result. - - * gmicro.md, old-sparc.md, pyr.md: Delete obsolete UMULT patterns. - - * expmed.c (expand_mult): Convert DImode constants to a CONST_INT - if possible, so that multiplies by these can be optimized by the - existing code. - -Sun May 26 00:59:42 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * gcc.c (process_command): -save-temps is always valid. - - * varasm.c (output_constructor): Don't crash if val == 0. - - * cse.c (refers_to_mem_p): Handle constant addresses. - - * cccp.c (main): Don't store thru last_include if null. - -Sat May 25 06:33:19 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reload.c (find_reloads): Don't assume we have at least two operands - when we check for a simple copy. - - * sched.c (update_reg_known_value): Deleted. - (init_alias_analysis): If have REG_EQUIV note, can always use NOTE's - value irrespective of number of sets. - Take known value from note, not SET_SRC. - (memrefs_conflict_p): Remove gotos. - ASHIFT can't occur in an address. - (true_dependence, anti_dependence, output_dependence): Take into - account the fact that a MEM_IN_STRUCT_P reference cannot conflict - with a non-MEM_IN_STRUCT_P reference at a fixed address. - -Fri May 24 11:34:39 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * Makefile.in (cplus-tab.c): Put back -d option. - -Fri May 24 06:46:07 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * rtl.c (rtx_alloc): Ensure we keep the obstack aligned. - -Fri May 24 00:17:13 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * reload1.c (choose_reload_regs): Try with inheritance, then without. - #if 0 the code to avoid inheritance in certain cases. - -Fri May 24 00:13:40 1991 James Van Artsdalen (james at bigtex.cactus.org) - - * out-i386.c (split_di): Check for CONST_DOUBLE before CONSTANT_P. - - * tm-i386.h (LIMIT_RELOAD_CLASS): new macro. - (PREFERRED_RELOAD_CLASS): a CONST_DOUBLE can appear in narrower - classes than GENERAL_REGS. - - * reload.c (push_reload): Limit reload class even if the SUBREG has - already been stripped. - -Thu May 23 11:08:21 1991 Jim Wilson (wilson at sphagnum.cygnus.com) - - * sched.c (schedule_insns): Don't schedule a block if the only insn is - a CODE_LABEL. - -Thu May 23 07:54:57 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reload1.c (choose_reload_regs): Process reload in first pass if - a subsequent reload requires fewer registers. - Change criteria for processing from being a strict superset to - having an intersecting, non-equal class. - Ignore optional and turned-off reloads in loop to see what is forced - to be allocated in first pass. - - * toplev.c (compile_file): Fix typo in length of string to allocate - for sched2 dump's name. - - * jump.c (find_cross_jump): Don't crash if single_set returns 0. - - * recog.c (general_operand): A SUBREG of a constant is never valid. - - * local-alloc.c (qty_compare, qty_compare_1): Make priority function - the same as in global-alloc: quantities with shorter lives are - allocated first. This can speed up some code by a factor of three. - -Wed May 22 17:40:49 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reload1.c (emit_reload_insns): Fix some minor bugs in making - REG_DEAD notes and recording insn that does store; code sometimes - assumed that each call to gen_move_insn produced at most one insn. - -Wed May 22 16:51:53 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * reload.c (push_reload): Support LIMIT_RELOAD_CLASS. - -Wed May 22 14:14:51 1991 Micheal Tiemann (tiemann at wookumz.gnu.ai.mit.edu) - - * jump.c (jump_optimize): Update the three simplifications that - start with the "if (...) x = 1;" case. Add comments explaining how - to make them more machine independent, and comments explaining how - they might fail in the future. Ifdef out the second case, and add - code explaining why it does not work. - - * rtl.h: Put definition of FUNCTION_FLAGS_USES_CONST_POOL here. - * integrate.c: Remove definition of it here. - - * integrate.h: New fields in struct inline_remap, min_insnno and - max_insnno, which indicate the range of insns covered by insn_map. - * integrate.c (expand_inline_function): Set min_insnno and max_insnno. - -Wed May 22 12:31:53 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * tm-vaxv.h (ASM_OUTPUT_LOCAL): Use data_section. - - * protoize.c (fancy_abort): Define it. - * objc-parse.y (yyprint, set_yydebug): New functions. - - * tree.h (gettags, get_permanent_types, get_temporary_types): - Declare them. - - * Makefile.in (protoize.o, unprotoize.o): - Use the standard flags and include dirs. Don't use -Wall. - * protoize.c (abort): Declaration deleted. - - * cccp.c (main): Ensure `next' field in directory list is initialized. - -Wed May 22 09:27:49 1991 James Van Artsdalen (james at bigtex.cactus.org) - - * expmed.c (synth_mult): Return cost of -1 if shift is too - expensive. - -Wed May 22 07:53:52 1991 Michael Tiemann (tiemann at cygint.cygnus.com) - - * out-sparc.c (output_move_double): More SImode->Pmode fixes. - -Wed May 22 02:43:02 1991 Micheal Tiemann (tiemann at wookumz.gnu.ai.mit.edu) - - * Makefile.in, emit-rtl.c, explow.c, final.c, global-alloc.c, - gnulib2.c, hard-reg-set.h, regclass.c, reload1.c, cccp.c: Fix typos - and indentation. - -Wed May 22 00:14:37 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * combine.c (try_combine): Add to last change; handle subreg - in src as well as in dest of i3. - -Tue May 21 22:32:08 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * m68k.md (dbra): Rewrite pattern so it reflects simplifications that - combine will make. - -Tue May 21 10:44:05 1991 Jim Wilson (wilson at sphagnum.cygnus.com) - - * loop.c (strength_reduce): When a loop-vtop note is encountered, - reset `not_every_iteration'. - -Tue May 21 00:17:31 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * c-decl.c (init_decl_processing): Always use long type for size_t. - - * varasm.c (assemble_variable): Use ASM_DECLARE_OBJECT_NAME. - - * protoize.c: Include config.h. - (chmod, kill): Declarations deleted. - They aren't needed, and can conflict with system headers. - (wait): BSD declaration deleted. - (save_def_or_dec): Add missing fprintf arg. - - * tm-next.h (EXTRA_FORMAT_FUNCTIONS): Fix typo. - - * protoize.c: Use USG and VMS as most files do. - Don't expect BSD to be necessary defined outside this file. - Define getwd using getcwd, not vice-versa, to be like dbxout.c. - * cccp.c, SYSCALLS.c: Use USG and VMS as most files do. - Don't expect BSD to be necessary defined outside this file. - -Mon May 20 16:54:17 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * tm-i386.h, tm-att386.h, tm-bsd386.h, tm-sun386.h (ASM_BYTE_OP): - Renamed from ASM_BYTE. - * varasm.c (ASM_BYTE_OP): Likewise. - - * c-decl.c, cplus-class.c (finish_struct): Typo: - Had PCC_BIT_FIELD_MATTERS which is now PCC_BITFIELD_TYPE_MATTERS. - - * gcc.c (handle_braces): Don't deref input_suffix if null. - -Mon May 20 15:19:27 1991 Michael I Bushnell (mib at geech.gnu.ai.mit.edu) - - * cccp.c (pcfinclude): STRINGDEF struct is now longword aligned. - -Mon May 20 14:26:18 1991 Michael Tiemann (tiemann at cygint.cygnus.com) - - * sparc.md: Remove all arithmetic, logical, and shift patterns for - sub-SImode operands. Also fix some DImode patterns. - - * out-sparc.c (emit_move_sequence): Simplified considerably. - - * rtl.c (rtx_alloc): Inline-code an optimized obstack_alloc. - - * cplus-lex.c (make_{pointer,reference}_declaration): Call - `build_parse_node' instead of `build1' so memory can be freed. - - * cplus-parse.y: Remove unneeded epsilon rules to produce an average - 15% reduction in the number of reductions performed. - - * cplus-parse.y (RETURN_INIT): Use new interface to speed up - grammar. - * cplus-decl.c (store_return_init): Use new interface. - -Mon May 20 11:16:34 1991 Jim Wilson (wilson at sphagnum.cygnus.com) - - * sched.c (schedule_block): A register which dies in a CALL_INSN - does not cross calls. A single insn block must be scheduled, to - ensure that register lifetime info is corrected updated. - -Mon May 20 06:50:37 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (try_combine): Don't combine when I1 and I2 both feed - into I3 and I1 uses the register set in I2. - - * reload.c (find_reloads): Prefer pseudos over other things we may - reload. - -Mon May 20 02:02:15 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * combine.c (try_combine): Test MODES_TIEABLE_P when i3 src is subreg. - - * m68k.md (trunc*): Don't set cc if use wider insn. - -Sun May 19 14:45:46 1991 Ron Guilmette (rfg at ncd.com) - - * Makefile.in (clean): Delete stage1...stage4. - (realclean): Delete cexp.output. - - * fixincludes: Handle BSD43__IO* and BSD43_CTRL like IO* and CTRL. - -Sun May 19 15:00:05 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * reload1.c (count_possible_groups): New function. - (reload): Call it twice. This checks for possible groups - after maybe spilling some single regs. - - * configure (magnum, m3230): Aliases for mips/mips. - - * fixincludes (machine/cpu.h): - Create in proper dir. Fix mips/cpu.h too. - - * reload.c (find_reloads): Turn off usage of reg_preferred_class. - -Sun May 19 09:51:24 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * flow.c (mark_used_regs): Continue putting REG_DEAD notes on - fixed registers. - - * regclass.c (reg_class_record): Don't count classes in which objects - won't fit. - - * reload.c (find_reloads): Pre-compute preferred classes for each - operand; if operand 1 is copied to operand 0, merge the classes. - REJECT is now only 1/3 as costly as LOSERS; ? adds 3 to REJECT so - that it's semantics don't change. - - * expr.c (compare_from_rtx): Do EQ and NE comparisons unsigned since - they are usually cheaper and will cse with comparisons against zero - which are already unsigned. - - * reload1.c (choose_reload_regs): Don't try to access reload_out - for disabled reload (reload_strict_low may not have been cleared). - - * reload1.c (choose_reload_regs): Don't let optional reloads inherit - spill regs until all non-optional reloads have been allocated spill - regs. - We can use find_equiv_reg even if must_reuse, we just can't get a - spill reg that way. - - * expr.c (do_tablejump): When using LABEL_REF in arithmetic, make it - in Pmode instead of VOIDmode. - - * function.c (fixup_var_refs_1): Don't try to make paradoxical - memory SUBREGs; instead keep SUBREG_REG a pseudo and copy between - memory and the pseudo. - (fixup_memory_subreg): Abort if we try making paradoxical SUBREGs. - - * reorg.c (redundant_insn_p): Insns we pass may reference resources - set by INSN; it is sufficient that they not set resources in INSN. - -Sun May 19 08:06:17 1991 Michael Tiemann (tiemann at cygint.cygnus.com) - - * tm-sparc.h (STRUCT_VALUE): Change SImode to Pmode here, and in - other places. - (FIRST_PARM_OFFSET): Change 4 to UNITS_PER_WORD here, and in other - places. - (ROUND_ADVANCE): New macro to compute how far to advance the arg - pointer for a give parameter. - (FUNCTION_ARG): Use PARM_BOUNDARY instead of 32. - (EXTRA_CONSTRAINT): Don't depend on `reload_completed'. - * sparc.md (various places): Change many DImode predicates from - `general_operand' to `register_operand'. - - * jump.c (find_cross_jump): Fixed 18 May change to use - `validate_change' to make sure we get valid, initialized values - regardless of which path we choose. - -Sat May 18 15:07:29 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * cccp.c: Rename FATAL_EXIT_CODE to FAILURE_EXIT_CODE. - - * gnulib1.c: Rename SFVALUE to FLOAT_VALUE_TYPE. - (union flt_or_value): New type. - (*): Use that instead of flt_or_int in most places. - Delete some variables `intify' that aren't needed. - * tm-i386.h: Rename SFVALUE to FLOAT_VALUE_TYPE. - - * stor-layout.c (layout_record): BITFIELD_NBYTES_LIMITED now 1 or 0. - - * rtl.h (struct rtx_def): Drop SHORT_ENUM_BUG; keep ONLY_INT_FIELDS. - - * loop.c (add_cost, copy_cost): - Variables replace old macros *_BENEFIT and COPY_PENALTY. - (init_loop): New function to set the variables. - (expr_benefit): Use rtx_cost. - * toplev.c (compile_file): Call init_loop. - * cse.c (rtx_cost): Treat mult by 2**n as a shift by default. - - * toplev.c (output_file_directive): - Typo in ASM_OUTPUT_MAIN_SOURCE_FILENAME. - - * gnulib2.c [L_trampoline]: Rename function to __trampoline. - Always compile it even if empty. Make it global. - -Sat May 18 14:11:37 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reload.c (find_reloads): Remove unnecessary test when increasing - cost of alternative due to non-preferred register class. - - * reload1.c (choose_reload_regs): Fix typo. - - * tm-rs6000.h: Add hard registers for the 8 CR fields; add classes - CR0_REGS and CR_REGS. - Don't use CC0; add CCUNSmode and CCFPmode. - (FIXED_REGISTERS): r31 (fp) is no longer fixed. - (REG_CLASS_FROM_LETTER): Remove 'd' for GENERAL_REGS; 'r' already - means this. - (CONST_DOUBLE_OK_FOR_LETTER): If we can move a constant in two insns - for DF or one insn for SF, let it match 'G'. - (SECONDARY_RELOAD_CLASS): Define this new macro. - (FUNCTION_ARG): Fix typo in testing nargs_prototype. - (LEGITIMATE_CONSTANT_P): Always return 1. - (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Do not define. - * rs6000.md: Don't use CC0; instead use a pseudo which will be assigned - to CR_REGS or CR0_REGS. Make variants of arithmetic insns that - set only the condition code and that set both the condition code - and a normal result. - Delete "cc" attribute and add "type" attribute. - Define delays for cc-setting insns and for loads. - Replace `d' constraint with `r'. - Delete patterns for HImode and QImode arithmetic operations. - Handle putting "easy" DFmode or SFmode constant into a register. - Rework compare and branches; add scc insns. - Fix up decrement-and-branch insns, but they still won't be used yet. - (call insns): Use pseudo for "lr" in indirect calls. - (movdf, movsf): Explictly handle need to use memory to copy between - general and FP registers. - * out-rs6000.c (next_insn_tests_no_unsigned, unsigned_comparisons_p): - Deleted. - (update_cc): Likewise. - (gen_reg_operand): Tighen up a bit. - (cc_reg_operand, reg_or_u_short_operand, easy_fp_constant): New fns. - (fp_reg_or_mem_operand, mem_or_easy_const_operand): Likewise. - (call_operand): Accept pseudo register. - (branch_comparison_operator, scc_comparison_operator): New functions. - (secondary_reload_class, ccr_bit, must_save_cr): Likewise. - (print_operand, case 'w', 'u'): Support CONST_DOUBLE. - (print_operand, cases 'W', 'f', 'F', 'R', 't', 'T', 'C', 'D'): - New cases. - (print_operand, cases 'j' and 'J'): Now use for bit number in CCR. - (output_{pro,epi}logue): If we call function to save/restore fpr's, - we need to save/restore LR. - Save CR if we modify the call-saved fields. - - * romp.md: Delete HImode and QImode arithmetic operations. - (swapxi): Delete; obsolete and never used. - - * tm-a29k.h (TARGET_SWITCHES): Change -mnodw to -mndw. - Add -m{no-,}reuse-arg-regs. - (SECONDARY_RELOAD_CLASS): Provide a definition for this new macro. - * a29k.md: Delete all HImode and QImode arithmetic operations. - * out-a29k.c (secondary_reload_class): New function. - (incoming_reg): Look at TARGET_NO_REUSE_ARGS. - - * reload1.c (eliminate_regs): Don't remove a PLUS unless inside an - address since it would need to change INSN_CODE and can't do it here. - - * reorg.c (uid_to_ruid, max_uid): New vars. - (mostly_true_jump): Refine prediction slightly. - Use uid_to_ruid map to accurately see if branches are backward. - (relax_delay_slots): Pass condition to mostly_true_jump. - (dbr_schedule): Allocate and build uid_to_ruid map. - -Sat May 18 12:54:45 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * cse.c (insert): "Unchanging" pseudos count as constant. - - * tree.c (make_node): Rewrite end as a switch. - -Sat May 18 03:51:06 1991 Michael Tiemann (tiemann at cygint.cygnus.com) - - * cse.c (FIXED_BASE_PLUS_P): Since this is used when called from - `expand_inline_function', also catch the case where the base - register is VIRTUAL_STACK_VARS_RTX. - (simplify_binary_operation): In EQ and NE case, convert a COMPARE - operand to something we can optimize. - (refers_to_mem_p): Handle the case when `base' is a LO_SUM. - * integrate.c (FIXED_BASE_PLUS_P): Define this to recognize offsets - from the various virtual registers. - (expand_inline_function): Expand exprs using EXPAND_SUM so as to get - stack frame addresses instead of pseudos. This yields much better - cse (at little cost) for GNU C++. Also, test FIXED_BASE_PLUS_P as - an alternative to CONSTANT_P to record a known register value. - * jump.c (find_cross_jump): If we are processing a cross jump and - the insns fail to match, try looking for a REG_EQUAL note that makes - them equivalent insns. If found, keep going. This is important for - merging cleanup codes when one cleanup path gets frame address in a - register when the other path gets the frame address explicitly. - - * cplus-init.c (build_delete): Fixed residual use of 1-based - indexing to use 0-based indexing instead. - - * cplus-decl2.c (grokclassfn): Fix raeburn's May 12 change so that - destructors still have the same name. - - * cplus-decl.c (decls_match): Remove dependence on MERGED. - - * cplus-class.c (build_vbase_path): Fixed bug in computing offsets - for exprs which are FIXED_TYPE_P. - (build_vfn_ref): Change initializer for REF from 0 to NULL_TREE. - - * cplus-decl.c (maybe_build_cleanup): Add LOOKUP_NONVIRTUAL to flags - argument in call to `build_delete' if DECL does not use virtual - baseclasses. If it does, we go through a function call to save - space, unless FLAG_EXPENSIVEO_OPTIMIZATIONS is nonzero. ??Better - approach is to know, in expand_cleanups, to clear `flag_no_inline' - during the cleanup's expansion. - - * cplus-*.c (various places): Add LOOKUP_DESTRUCTOR to all places - where we know we are calling a destructor for a non-null object. - - * stmt.c (fixup_gotos): Run destructors on cleanups that come - from the block being exited, in addition to any inner blocks - for which LABEL is now defined. - (expand_return): Take care of destructors that occur in the - current binding level. - (fixup_cleanups): If we emitted no insns, don't change *BEFORE_JUMP. - - * rtlanal.c: Define `target_flags' here... - * toplev.c: ...not here. This enables us to link gen* programs - which might, through rtlanal.o, pull in references to `target_flags' - that are never used. - - * function.c: Add declaration for `current_function_uses_const_pool'. - * expr.h: Add extern declaration for that variable. - * function.h (struct function): Add a slot named - `uses_const_pool' for `current_function_uses_const_pool'. - * function.c ({push,pop}_function_context): save and restore the - value of `current_function_uses_const_pool'. - * rtl.h (FUNCTION_FLAGS_USES_CONST_POOL): Defined to be 0200. - * integrate.c (initialize_for_inline): - FUNCTION_FLAGS_USES_CONST_POOL now contributes to the value of - `function_flags'. - (output_inline_function): Restore `current_function_uses_const_pool' - from `function_flags'. - (save_for_inline_copying): Only call `save_constants' if - `current_function_uses_const_pool' is nonzero. - (save_for_inline_nocopy): Ditto. - (save_constants): Tweaked to perform its treewalk faster. Notably, - it no longer accepts ptrs to NULL rtl. All callers changed. - * varasm.c (force_const_mem): Set `current_function_uses_const_pool' - if we create a constant pool reference. - - * cplus-parse.y, c-parse.y: Add new function `set_yydebug'. If - YYDEBUG is defined, sets `yydebug' to VALUE. Otherwise, prints - warning that operation is invalid. - * toplev.c (main): Call `set_yydebug' instead of setting `yydebug' - directly. This allows user to turn YYDEBUG off for faster parsing. - - * cse.c (simplify_binary_operation): Eliminate abort when passed - DImode operands. - -Fri May 17 21:56:41 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * hard-reg-set.h (reg_class_superunion): New var. - * regclass.c (init_reg_sets): Compute reg_class_superunion. - (reg_classes_intersect_p): New function. - - * reload.c (find_reloads): Alternative is discouraged if it puts - a pseudo in a register class it doesn't prefer. - - * reload1.c (basic_block_needs): Now an array, per register class. - (reload): Compute separate basic_block_needs for each class. - (spill_hard_reg): If pseudo is only in one block, see if that block - needs a spill register of a class containing the hard reg; leave the - pseudo alone if not. - - * reload1.c (reload_mode, reload_nregs): New vars. - (reload_reg_class_lower): Use them. - (allocate_reload_reg): New function. - (choose_reload_regs): Track size and class of any groups. We - can inherit reloads if we are the size of the largest group or - if our class is disjoint from those needed for groups. - Try all inherits first before all spill register allocations - unless there is a later reload with a smaller class; call - allocate_reload_reg to do the actual allocation. - Use new vars above. - (emit_reload_insns): Delete output reload even if we weren't - storing to memory. - - * reload.h (reload_secondary_reload, reload_secondary_p): New vars. - * reload.c (push_reload): If secondary reload register is needed, - make a secondary reload. - * reload1.c (reload): Reload with reload_secondary_p nonzero is in use. - (choose_reload_regs): Likewise. - (emit_reload_insns): Handle secondary reloads, when needed. - - * reload1.c (reload): Add pass to remove death notes for things that - are no longer registers or don't die if we must preserve death notes. - (emit_reload_insns): Refine REG_DEAD notes to be more accurate; make - notes for secondary reloads. - - * reload1.c (emit_reload_insns): Abort for output reloads for jumps; - we have to implement this at some point. - -Fri May 17 20:08:22 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * protoize.c: Handle ultrix like BSD. - -Fri May 17 15:56:41 1991 Richard Stallman (rms at geech.gnu.ai.mit.edu) - - * Pass library function name to INIT_CUMULATIVE_ARGS. - * calls.c (expand_call): Pass extra arg to INIT_CUMULATIVE_ARGS. - * expr.c (emit_library_call): Likewise. - * function.c (assign_parms): Likewise. - * tm-*.h (INIT_CUMULATIVE_ARGS): Accept the extra arg. - (INIT_CUMULATIVE_INCOMING_ARGS): Likewise, just for symmetry. - -Fri May 17 15:41:22 1991 James Van Artsdalen (james at bigtex.cactus.org) - - * tm-i386v4.h (ASM_OUTPUT_COMMON): Don't attempt alignment on a - three byte boundary. - -Fri May 17 15:25:16 1991 Tom Wood (wood at dg-rtp.dg.com) - - * function.c (assign_stack_local, assign_outer_stack_local): Make - the alignment in bytes. - -Fri May 17 14:31:00 1991 Michael Tiemann (tiemann at cygint.cygnus.com) - - * cplus-class.c (build_vbase_path): Only build a COND_EXPR if - NONNULL is zero. - (resolves_to_fixed_type_p): Check TREE_HAS_CONSTRUCTOR for - CALL_EXPRs and INDIRECT_REFs. - - * cplus-call.c (build_method_call): Add call to `constructor_name' - if BASETYPE changes. - * cplus-init.c (build_new): Add LOOKUP_NONVIRTUAL to FLAGS argument - to `build_method_call'. Constructors are never virtual. Also, set - TREE_HAS_CONSTRUCTOR bit for return value from `build_method_call'. - -Thu May 16 21:36:10 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * rtl.h (CONSTANT_P): Now true for a CONST_DOUBLE. - * combine.c, cse.c, emit-rtl.c, expr.c, integrate.c, loop.c: - Update for new meaning of CONSTANT_P to include CONST_DOUBLE. - * optabs.c, recog.c, reload.c, reload1.c, rtl.h, rtlanal.c: - Likewise. - * romp.md, rs6000.md, out-alliant.c, out-convex.c: Likewise. - * out-gmicro.c, out-i386.c, out-i860.c, out-m68k.c: Likewise. - * out-sparc.c, out-spur.c, out-tahoe.c: Likewise. - - * combine.c (SUBST, SUBST_INT): If INTO equals NEWVAL, don't - record the substitution. - (try_combine, subst, make_compound_operation, simplify_and_const_int): - No longer need check for changes before using SUBST macro. - (simplify_shift_count): Likewise. - - * integrate.c (copy_rtx_and_substitute, case CONST): If what - was originally a constant becomes something that is not a constant - when passed through a recursive call, return it without the CONST. - - * rtl.c (copy_most_rtx): New function. - * rtl.h (copy_most_rtx): Declare it. - * function.c (fixup_var_refs_1, case MEM): If a MEM contains VAR, - ensure the MEM isn't shared by copying it. - - * expmed.c (expand_divmod): If doing MOD, produce divide result - into unique pseudo so that we might CSE the division. - -Thu May 16 12:01:42 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * reload.c (push_reload): Try find_dummy_reload before dead regs. - - * function.c (assign_stack_local*): Use GET_MODE_ALIGNMENT. - Use CEIL_ROUND consistently. - Don't force word alignment even if STRICT_ALIGNMENT (experiment). - -Thu May 16 10:31:04 1991 Jim Wilson (wilson at sphagnum.cygnus.com) - - * unroll.c (unroll_loop): Don't abort if start label does not - immediately follow LOOP_BEG note. This can happen as a result of - jump threading. - * reorg.c (mostly_true_jump): Eliminate repeated test in second loop. - - * sched.c (priority): Abort if find a NOTE in a groups of insns that - must be scheduled together. - (free_pending_lists): New function. Moves every *_LIST rtx on the - pending lists to the free list. - (add_insn_mem_dependence): Get a *_LIST from the free list instead - of creating one if possible. - (sched_analyze_1): Don't move an insn across a call if it uses a - register that is not already live across calls. - (sched_analyze_insn): Likewise. - (sched_analyze_1): When flusing the pending lists, put the *_LIST - rtx on the free list. - (sched_analyze): Likewise. - (schedule_block): Likewise. - (sched_analyze_2): For a cc0 setter/user pair, put a copy of all - dependencies on the first insn onto the second insn. - (sched_analyze_insn): Likewise for call sequences. - (sched_analyze_insn): Handle REG_INC notes just like SETs. - (sched_note_set): Handle hard registers same as psuedo regs. - (attach_deaths): Likewise. Don't add REG_DEAD notes to the frame - pointer, arg pointer or stack pointer. - (schedule_block): Likewise. - (rank_for_schedule): Do not check whether each insn of a sequence - that must be scheduled together is ready. They will only reach here - if they are all already ready. - (schedule_block): After reload, don't need to give special treatment - to insns at function start which set up the function parameters. - Don't treat tail specially if it is part of a group that must be - scheduled together. - When a group of instructions is scheduled together, run the lifetime - analysis code on every instruction in the group from last to first. - A call_insn kills all call_used and global regs except those - explicitly used by the call_insn. - (schedule_insn): Initialize new variables. If USE_C_ALLOCA, free - alloced memory immediately after each schedule_block call, not once - at the end. - - * rtl.c (add_dependence): When adding a dependence that points to an - insn that is part of a sequence that must be scheduled together, - make the dependence point to the last insn of the sequence instead. - -Wed May 15 13:08:32 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (simplify_and_const_int): If we have - (and (OP (lshiftrt X Y) Z) C), for OP of IOR, XOR, and NOT, commute - OP and LSHIFTRT to put AND and LSHIFTRT adjacent to try to form - ZERO_EXTRACT. - - * combine.c (subst, gen_lowpart_for_combine, get_last_value_validate): - Use object's mode instead of VOIDmode when we make - (clobber (const_int 0)) in case someone uses the mode for significant - bits. - * rtlanal.c (side_effects_p): Reject non-VOIDmode CLOBBERs. - - * rtlanal.c (reg_set_p_1): Remove test for `reg_set_reg' being MEM. - (reg_set_p): Abort if passed a MEM. - - * toplev.c (strip_off_ending): Strip trailing ".f". - -Wed May 15 12:54:18 1991 Michael Tiemann (tiemann at cygint.cygnus.com) - - * cplus-typeck.c (build_modify_expr_1): If the TREE_TYPE of the - recursive result is an ARRAY_TYPE, change it to void_type_node so - build_compound_expr doesn't lose when calling default_conversion. - - * cplus-tree.h (lang_type): Remove AS_LIST field from lang_type. - Use TYPE_MAX_VALUE field of type instead. - (TREE_REFERENCE_EXPR): New macro. - - * cplus-parse.y (LC): If we are not in temporary allocation, call - permanent_allocation. This frees up any PARM_DECL nodes that were - allocated since we processed an inline function. NOTE: we still - have to clean up these parms from inline functions that did not go - inline. - - * cplus-decl.c (store_parm_decls): Since we no longer push an extra - binding level if ! PARMS_HAVE_CLEANUPS, test CLEANUP_LABEL to figure - out how far up the binding countours we must look. - (init_decl_processing): If FLAG_NO_INLINE is nonzero, set - FLAG_DEFAULT_INLINE to zero. - - * cplus-class.c (finish_struct_bits): Copy TYPE_MIN_VALUE and - TYPE_MAX_VALUE. These actually hold C++-related data that's moved - up from the lang_type data structure. - - * cplus-*.c: Change REFERENCE_EXPR to CONVERT_EXPR. Set - TREE_REFERENCE_EXPR bit to indicate a CONVERT_EXPR that's really the - address of a C++ reference expression. - -Wed May 15 12:30:26 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * tm-sparc.h (FIXED_REGISTERS): Register 0 is not fixed; it is used - for the condition code, not to represent the fixed %g0. - -Tue May 14 18:59:06 1991 Jim Wilson (wilson at sphagnum.cygnus.com) - - * explow.c (find_next_ref): Start search at first insn after INSN. - - * jump.c (jump_optimize): Update the three simplications that start - with the "if (...) x = 1; else {...} if (x) ..." case, so that when - HAVE_cc0 is not defined, they do not accept TST insns (which could - just be a register to register move). They should only accept insns - with the COMPARE operator. - -Tue May 14 14:51:33 1991 Tom Wood (wood at dg-rtp.dg.com) - - * cse.c (simplify_binary_operation): Don't abort when comparing - two CONST_DOUBLE values. - -Tue May 14 11:35:47 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * c-common.c (decl_attributes): Fix typo in name of attribute. - It should be `aligned'. Also don't crash on unknown attribute. - - * expmed.c (init_expmed): Make a separate object to free back to. - - * hard-reg-set.h (HOST_BITS_PER_LONG_LONG): Provide default definition. - - * toplev.c (main): Implement -gdwarf. - -Tue May 14 06:32:48 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * flow.c (mark_used_regs): Don't make REG_DEAD notes for fixed regs. - - * combine.c (subst): Convert (not (ashift C X)) to (or (rotate ..)) - and similarly for (not (lshiftrt C X)). - (make_field_assignment): Make corresponding change in how we recognize - bitfield assignment of single bit to zero. - - * combine.c (merge_outer_ops): New function. - (simplify_shift_const): Use merge_outer_ops to generalize and - simplify handling of outer_ops. - Try using distributive law followed by invert distributive law - to simplify combinations of logical operations and shifts. - - * emit-rtl.c (gen_highpart): Correct conditional that says when we - can get the bits of a DFmode object; copy from gen_lowpart. - - * cse.c (simplify_binary_operation, case MULT): Simplify zero case. - (simplify_binary_operation, case DIV): In 0/x, return zero in proper - mode. - - * combine.c (simplify_comparison): Can only extend comparison - to wider mode if equality comparison or test of sign bit. - -Tue May 14 03:26:36 1991 Michael Tiemann (tiemann at cygint.cygnus.com) - - * cplus-tree.h (lang_type): Change to use TREE_VEC to hold basetype - info. - (CLASSTYPE_N_BASECLASSES, CLASSTYPE_BASECLASS): Changed accordingly. - Baseclasses are now counted [0..n) instead of [1..n]. - (CLASSTYPE_BASETYPECLASSES): Deleted. - * cplus-*.c (various places): Change code to work with new - representation for basetypes. - - * toplev.c (main): Handle `-gdwarf' as a debug option. - - * cse.c (insert): Treat pseudos marked RTX_UNCHANGING_P as being - const. - -Mon May 13 22:44:18 1991 Jim Wilson (wilson at ok.cygnus.com) - - * mips.md: In the div/mod peepholes, don't apply the peephole if the - first operation overwrites one of its two operands. - -Mon May 13 12:14:51 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * expmed.c (store_bit_field, extract_bit_field): - Set volatile_p while checking predicates. - * recog.h (volatile_p): Declare it. - * explow.c (force_not_mem): Do nothing with BLKmode. - - * SYSCALLS.c (u_int): Don't define on DGUX--already defined. - - * m68k.md (zero_extend*): Don't make the subreg in the template. - Make it explicitly, and handle subregs as operand 0. - - * tm-convex.h (MODES_TIEABLE_P): Fix typos. - - * loop.c (check_dbra_loop): To check for a loop with a `break', use - loop_number_exit_label, not the uid_luid of each label, since loop - unrolling may have created new labels with no uid_luid. - - * expr.c (push_block): Fixed typo in last change. - -Mon May 13 12:07:25 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (subst): If we can't change comparison code, see if - we can instead surround our operation with an XOR. - - * combine.c (make_compound_operation, simplify_and_const_int): - Ensure shift counts are non-negative and in range before using them - to perform shifts. - (simplify_comparison): Likewise. - - * combine.c (try_combine): See if we have previously merged a - compare and arithmetic operation. If so try to take it apart to - allow further combines (such as making a branch-and-decrement). - - * combine.c (try_combine): Don't make VOIDmode register if our split - point is a constant. - - * combine.c (subst): Use COMBINE_RTX_EQUAL_P to see if SET_DEST - is our register; two hard regs might have different rtx. - - * combine.c (subst): Generalize associative law handling to - cases not involving constants. - - * combine.c (expand_compound_operation): If we would return a - (clobber (const_int 0)), return what we were given. - - * combine.c (simplify_shift_const): Clean up by removing fallthrough. - -Mon May 13 10:26:00 1991 James Van Artsdalen (james at bigtex.cactus.org) - - * i386.md (all calls to output_move_double): call return - value to avoid spurious compiler warnings. - Allow REG in all alternatives of operand 0 where possible. - Remove patterns to recognize increment/decrement. - (addsi3, addhi3, addqi3): Do this in here instead. - (floatdidf2): New pattern. - (adddi3, subdi3, negdi2): New patterns. - (umulsi3, umulhi3): Remove obsolete UMULT patterns. - (divM3, udivM3, divmodM4, udivmodM4): Use "r" constraint instead - of "x" or "abc". - (sqrtsf2, sqrtdf2): New patterns. - (ashldi3, ashrdi3, lshldi3, lshrdi3): New patterns - (All shift and rotate patterns): Don't use reg name explicitly in - output string: use %N operand reference. - (ashlM3, lshlM3): Use `add' instead of `shl'/`sal' if possible. - (insv): Fix output constraint. Clarify source. Disable for now - - makes worse code. - (SImode bit test, all Scond patterns): Allow MEM operands too. - (seq, sne): Handle CC_Z_IN_NOT_C. - (jump, indirect_jump, tablejump): Align code on word boundary - after unconditional jumps. - (`loop' patterns): Delete - will never be useful on i386. - (call_pop, call_value_pop): New patterns. - (return): New pattern: Do `return' if simple epilogue. But only if - the real function epilogue isn't next. - (movstrsi): Do word moves, not just bytes, if count is unknown. - (ffsM2): New patterns. - - * out-i386.c (FP_TOP, AT_SP, RET, RETCOM, POP_ONE_FP, - FP_CALL1, FP_CALL): Move to tm-i386.h for use by i386.md. - (output_movf, fp_call_internal, output_fix_trunc, split_di): - No longer static - called from i386.md. - (via_memory): Finish return value change. - (output_move_const_double): Delete unused function. - (simple_386_epilogue): New predicate. - (function_prologue): Allocate frame regardless of whether or not - there is a frame pointer. - Use output_asm_insn instead of fprintf to push registers. - (function_epilogue): Likewise. - If there is a frame pointer, don't necessarily fix %esp just to - pop a reg - use offset from frame pointer. - Fix -fomit-frame-pointer support. - Fix RETURN_POPS_ARGS case where args > 32K bytes. - (print_operand): A LABEL_REF gets an OFFSET_PREFIX too. - (print_operand_address): %esp can only be base reg, never index. - (split_di): New function. - - * tm-i386.h: Remove references to obsolete tm-compaq.h file. - (TARGET_486): New flag. - (TARGET_SWITCHES): New options -m486, -mno486, -m386. - (SMALL_REGISTER_CLASSES): New macro. - (ASM_OUTPUT_LOOP_ALIGN): New macro. - (all reg macros, ARG_POINTER_REGNUM): Create argument pointer, - to be eliminated in favor of %esp or %ebp. - (HARD_REGNO_NREGS, REGNO_REG_CLASS): Use FP_REGNO_P. - (REGISTER_MOVE_COSTS): It is expensive to move between integer and - float registers. - (FP_REGNO_P): Detect only the FP regs. - (all class macros): Delete obsolete classes ABC_REGS & ABCI_REGS. - (REG_CLASS_FROM_LETTER): Add `S' for SIREG, remove `x' for ABCI_REGS. - (CONST_OK_FOR_LETTER_P): Add `J' for DImode shifts. - (FIRST_PARM_OFFSET): Offset now zero. - (ELIMINABLE_REGS, CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET): - Use generalized scheme to eliminate frame and arg pointers. - (INITIAL_FRAME_POINTER_OFFSET): Delete. - (REG_OK_FOR_BASE_P): allow virtual arg pointer. - (FP_TOP, AT_SP, RET, RETCOM, POP_ONE_FP, FP_CALL1, FP_CALL): - Moved here from out-i386.c for use by i386.md. - - * tm-compaq.h: Delete obsolete file. - -Sun May 12 18:38:41 1991 Ken Raeburn (raeburn at watch.com) - - * cplus-decl.c (print_binding_level, print_binding_stack, - print_other_binding_stack): New debugging routines; dump one or - more binding levels to stderr. - - * cplus-decl.c (push_to_top_level): New routine; saves copies of - all class and local bindings, and some other state, and clears the - real values, to effectively move to global scope. - (pop_from_top_level): Restore the saved state. - - * cplus-decl.c (adjust_type_value): No longer static. Abort if - current_binding_level is class binding level; need to investigate - that situation further. - - * cplus-decl.c (finish_function): Check that the binding level being - popped really is a function-parameter binding level. - - * cplus-tree.h (DESTRUCTOR_DECL_PREFIX): Replaces - DESTRUCTOR_DECL_FORMAT; used as a prefix before the class name. - * cplus-decl2.c (grokclassfn): Use it, and call build_overload_name - rather than just copying the class name. - - * cplus-method.c (fndecl_as_string): Use TREE_TYPE rather than - indirecting through type name and the identifier's associated type, - since the latter may have changed. - (build_nested_name): New argument, text_end; callers changed. Call - build_overload_identifier rather than copying class name. - (build_overload_value): Strip non-lvalue nodes for all arguments. - Fixed up the handling of negative DImode values. - (build_overload_identifier): New function. Copy class name (with - length) if non-template, or build a name from template parameters. - (build_overload_name): Call build_overload_identifier for class - names. - - * cplus-parse.y: Added comment about use of $$ for $1. - (template_type_name): Removed useless precedence specificiation. - (template_arg_list): Wrap TREE_LIST nodes around all arguments in - the list. - (template_arg): Call groktypename on type names. For expressions, - specify "UNARY" precedence. - (PRE_PARSED_CLASS_DECL handling): Put a copy of the new class decl - into global scope, to avoid recursive expansion, since we start in a - non-global scope set up for the parameters. - - * cplus-pt.c (coerce_template_parms): New function. Converts - template arguments to appropriate types, returns a vector containing - results. - (mangle_class_name_for_template): Removed nparms argument. - Changed to deal with arglist as vector. No longer call - groktypename. Some initial code added for PARM_DECL (non-type) - parameters; work not completed. - (lookup_template_class): Call coerce_template_parms. Removed some - unused code. - (push_template_decls, pop_template_decls): Fixed to deal with - arglist as vector. More code for non-type parameters. - (instantiate_template): Push to top binding level before pushing any - declarations. - (end_template_instantiation): Pop from top level, then push the new - decl at top level. - - * cplus-tree.h (struct lang_identifier): Renamed field "template" to - "class_template_info"; accessor macros changed. - - * cplus-pt.c (struct template_info): Renamed from "template". - Removed unused fields. - -Sun May 12 17:38:46 1991 Jim Wilson (wilson at cygnus.com) - - * unroll.c (copy_loop_body): Fix typo: had `==' for `='. - -Sun May 12 17:05:07 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * genattrtab.c (gen_attr): Clear has_asm_insn field in new object. - -Sun May 12 04:21:52 1991 Michael Tiemann (tiemann at cygint.cygnus.com) - - * hard-reg-set.h (HARD_CONST): New macro. Converts integer - constants to appropriate type for use with HARD_REG_SET. - ({SET,CLEAR,TEST}_HARD_REG_BIT): Use this macro where appropriate. - (GO_IF_HARD_REG_SUBSET): Ditto. - (HARD_REG_SET): Add new case if FIRST_PSEUDO_REGISTER <= - HOST_BITS_PER_LONGLONG. - * global-alloc.c: Pass HARD_CONST (0) instead of 0 to functions - which are looking for a HARD_REG_SET argument. - * reorg.c (resource_conflicts_p): Change comparison of HARD_REG_SET - value to compare against HARD_CONST. - - * all xm-*.h files: Added HOST_BITS_PER_LONGLONG where - HOST_BITS_PER_LONG was defined. - * tm-sparc.h (REG_CLASS_CONTENTS): Fixed in case we're using long - long HARD_REG_SETs. - - * toplev.c (main): support -gdwarf switch. - - * longlong.h (umulsidi3): SPARC .umul routine returns the value in - WORD_LITTLE_ENDIAN form, so swap. Other word-endian changes for - inline mul routines. - - * gnulib2.c (__divdi3): If C is nonzero, negate whole division - instead of returning negation of quotient. - -Sat May 11 20:06:08 1991 Torbjorn Granlund (tege at krishna.sics.se) - - * expmed.c (outside of functions): New vars: lea_cost, lea_max_mul. - (init_expmed): Initialize lea_cost and lea_max_mul. - (synth_mult): Use them. - -Sat May 11 20:11:41 1991 Michael Tiemann (tiemann at cygint.cygnus.com) - - * cplus-class.c (build_vbase_path): Rewritten and simplified. - * cplus-cvt.c (build_up_reference): Try to get away without building - a NOP_EXPR around the return value of `build_component_addr'. - Ditto for return value from `convert_pointer_to'. - - * cplus-decl.c (void_zero_node): New node. Used in conditional - expressions where one arm must do nothing. - * various places: replace calls that built this node dynamically to - just use the global copy. - * cplus-tree.h (void_zero_node): Declare it globally. - - (maybe_build_cleanup): Don't call `convert_force' on the return - value of `build_unary_op'. We should have license to modify its - type without harm. - * cplus-gc.c (protect_value_from_gc): Same idea for VAR_DECL and - PARM_DECL nodes. - - * toplev.c (f_options): Add choice for -fPIC. - - * varasm.c (assemble_function): If it's a function name that's the - first global name, strip of a leading '*' if there is one. - - * reload.c (find_reloads): Fix comment. - - * stmt.c (expand_return): Call `any_pending_cleanups' with argument. - - * expr.c (expand_expr): In TARGET_EXPR case, If TARGET is null and - DECL already has rtl, use that as the target. - (expand_expr): In BIND_EXPR try using expand_{start,end}_bindings to - catch cleanups...otherwise fixup_cleanups must be modified to deal - with cleanups not in any contours. - -Sat May 11 15:09:42 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * out-i386.c (via_memory): Return a memref to the stack. - (fp_call_internal): Change call to via_memory. - - * expr.c (push_block): New arg BELOW specifies padding direction. - All callers changed. - (emit_push_insn): Pass an interesting value for BELOW. - - * c-parse.y (typespec): Pass the TYPE_DECL for a typedef name. - * c-decl.c (grokdeclarator): Handle TYPE_DECL in declspecs. - -Thu May 9 15:17:44 1991 Tom Wood (wood at dg-rtp.dg.com) - - * m88k.md (zero_extend pattern): Compute correct constant. - -Thu May 9 07:44:20 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (subst): Remove WAS_REPLACED; always check the rtl - for specific cases of interest and don't use TO and FROM when - looking into the rtl. - - * combine.c (subst, case MEM): Call make_compound_operation here - so any ASHIFTs will be MULTs for mode_dependant_address_p calls later. - (subst, case PLUS): Remove cases already done elsewhere. - - * expmed.c (emit_store_flag): Don't let the delete_insns_since call - we do kill insns to do an auto-inc. - - * flow.c (propagate_block): Don't treat global regs as clobbered - over a CALL_INSN even if call-clobbered. - - * stmt.c (expand_end_stmt_expr): Correctly handle the case where an - expression statement is just an auto-inc of a var. - - * sparc.md (fix_trunc[sd]fsi2): Finish change to use MATCH_SCRATCH - by eliminating DEFINE_EXPAND and making DEFINE_INSN a named pattern. - -Wed May 8 13:31:23 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * cccp.c (rescan): Handle symbols before // as before /*. - - * Makefile.in (objc-parse.o): Specify the command. - - * c-parse.y (typespec): Fix previous change. - - * reload1.c (choose_reload_regs): Use spillregs in round robin. - -Wed May 8 11:00:29 1991 Michael Tiemann (tiemann at cygnus.com) - - * cplus-lex.c (tree_node_kinds): Renamed to `tree_node_counts'. - -Wed May 8 05:50:29 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * integrate.c (copy_rtx_and_substitute): Don't round frame size. - - * loop.c: Must include insn-flags.h to get - HAVE_decrement_and_branch_until_zero. - * Makefile.in (loop.o): Likewise. - - * expmed.c (expand_divmod): Use LOG instead of INTVAL (OP1) - once we start generating rtl. - -Wed May 8 05:38:06 1991 Michael Tiemann (tiemann at cygint.cygnus.com) - - * cplus-decl.c (duplicate_decls): Don't crash on duplicate - TEMPLATE_DECLs. - (globalize_nested_type): Handle globalizing types when - CLASS_BINDING_LEVEL goes out of effect. - (init_decl_processing): Comment out decls for ABS, FABS and LABS. - They conflict with libg++ inlines. - - * cplus-decl2.c (build_push_scope): Fix bug in last change. - (finish_file): Make the dummy decl that we tack on to the global - scope a TYPE_DECL instead of a VAR_DECL. Fake global VAR_DECLs are - problematic on some machines (i.e. MIPS). - - * cplus-init.c (init_vfields): Use TREE_TYPE (VFIELDS) to find the - type for which the VFIELD was last distinguished. This picks up - cases where single inheritance overrides base class vtables and the - base class does not get a new vtable for the override. - - * cplus-parse.y (named_class_head_sans_basetype): Handle a - `template_type_name' by itself. This happens with e.g. - friend class Stack. - - * cplus-pt.c (mangle_class_name_for_template): Put ',' between - parameters. - (push_template_decls): Don't crash if ARGLIST is ERROR_MARK_NODE. - - * cplus-class.c (finish_base_struct): Compute MAX_HAS_VIRTUAL by - looking at all the base classes relevant to VFIELDS. - (build_vbase_path): Initialize NONNULL to zero. - -Tue May 7 23:47:42 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * stmt.c (any_pending_cleanups): Don't fail if block_stack is empty. - -Tue May 7 22:46:16 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (simplify_binary_operation; case EQ, NE): Don't assume - the address of a symbol is non-zero. - - * sched.c (schedule_insns): Ensure we free memory used by - schedule_block when using the C alloca. - -Tue May 7 14:13:57 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * reload1.c (mark_reload_reg_in_use): New arg MODE. Mark all the regs. - (choose_reload_regs): Pass that arg; don't loop here. - - * c-parse.y (typespec): Convert a TYPENAME to its meaning. - - * fold-const.c (fold): Don't assume symbolic constant is nonzero. - - * c-typeck.c (c_expand_asm_operands): Convert arrays, fcns to pointers. - -Mon May 6 23:29:21 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * cse.c (cse_insn): Only make a REG_WAS_0 note if the previous - set was to the same register, not just the same quantity; - if previous REG_WAS_0 note, update back pointer. - If setting a register to a constant, update QTY_CONST and - QTY_CONST_INSN so it points to the last set. - In special case for (set REG0 REG1), ensure any REG_WAS_0 notes are - updated correctly. - - * genrecog.c (make_insn_sequence): Don't clobber `i' when it is - still needed. - - * out-vax.c (print_operand_address): Fix bug in last change in handling - (plus (reg) (reg)). - -Mon May 6 16:41:50 1991 Torbjorn Granlund (tege at zevs.sics.se) - - * expmed.c (synth_mult): Make it handle t == 0. Improve comments. - Use (max_cost <= add_cost) instead of (max_cost < add_cost) to - determine if we should fail early (to better prune the search). - Remove loop with n from factor synthesis. Remove -2 bias from m - loop (for clearity). Add code to use load-effective-address - instructions. Use bit-fiddling instead of loop to determine q in - the last synthesis case. - -Mon May 6 11:21:45 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * c-typeck.c (convert_for_assignment): Reword an error message. - - * c-typeck.c (build_conditional_expr): Typo in last change. - - * Makefile.in (enquire, enquire.o): Depend on gnulib. - -Sun May 5 17:28:22 1991 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil) - - * make-cc1.com: Update for GCC 2.0; build insn-attr.h, insn-attrtab.c. - Compile and add obj to linker list: c-aux-info.c, c-common.c, c-lang.c, - aux-output.c, calls.c, dwarfout.c, function.c, reorg.c, sched.c, - sdbout.c, unroll.c, insn-attrtab.c. Remove references to symout.c. - -Sun May 5 15:32:01 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * Makefile.in (rest.encap): Make gnulib before float.h. - - * c-typeck.c (build_conditional_expr): - Don't assume symbolic constant is nonzero. - - * reload1.c (choose_reload_regs): Ignore avoid_return_reg. - (reload_as_needed, reload): Don't bother setting avoid_return_reg. - -Sun May 5 14:30:14 1991 Michael Tiemann (tiemann at cygint.cygnus.com) - - * cplus-class.c (prev_class_type): Declare this to be static. - (build_vbase_path): Test NONNULL to decide whether a COND_EXPR is - actually needed. - (finish_struct): Another sort of hard virtual function to deal with - is one which comes from the non-leftmost baseclass, and who's index - is different between that class and the main derived class. Use new - variable DOING_HARD_VIRTUALS to control when we punt and when we - plow through. - (modify_vtable_entry): If we find at this point that we have a hard - virtual function, just put it on the list PENDING_HARD_VIRTUALS if - DOING_HARD_VIRTUALS is nonzero. - (fixed_type_p): Handle SAVE_EXPR, RTL_EXPR, PLUS_EXPR, MINUS_EXPR, - NOP_EXPR and CONVERT_EXPR. - (pushclass): Fixed comment. Also change test for whether this is - the top-level class scope from an obscure one to an obvious one, and - add comment. - (pushclass,popclass): Now always allocate a binding level. Later - we'll have to rewrite this to actually use it. - - * cplus-gc.c (type_needs_gc_entry): Don't need a GC entry for - ERROR_MARK_NODE. - - * cplus-init.c (build_new): Set TREE_CALLS_NEW on RTL_EXPR. This - gives us a case that `fixed_type_p' can grok. - - * cplus-lex.c (identifier_type): Make this __inline if compiling - with GNU C. - (tree_node_kinds): Renamed to `tree_node_counts'. - - * cplus-parse.y (various places): Take advantage of default rule - `$$ = $1', and where possible, use $$ instead of $1. - Also, back out change for setting `looking_for_typename' to 1 at top - level. - - * cplus-decl2.c (build_push_scope): If the user gives X::foo in X's - scope, don't return a SCOPE_REF. Just return `foo' instead. - - * cplus-decl.c (init_decl_processing): Don't define `alloca' as a - built-in function until libg++ header files agree with its built-in - type. - (finish_decl): Don't crash if TYPE is error_mark_node. - - * fold-const.c (split_tree): When splitting the tree, don't call - convert if the TYPE_MODEs are the smae. This screws up C++ where - conversion of one pointer type to another can cause the pointer's - value to change. - - * tree.c (get_identifier): Speed up `get_identifier' by about a - factor of 2. This becomes noticable with the long names used for - C++ overloading. - (tree_cons): Make this most frequent user of `make_node' perform its - actions inline. - - * calls.c (expand_call): Eliminate many (most) calls to strcmp by - being smarter about when to call it. Also, don't call `push_block' - in the trivial case when it's not needed. - -Sun May 5 08:51:14 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (convert_to_mode): Fix (for the second time) test for when - gen_lowpart should be called. - - * cse.c (find_best_addr): Try to fold address. - (fold_rtx): Do associativity and (not (not ...)) checks here. - (cse_insn): Not here. - - * combine.c (recog_for_combine): New parameter, PNOTES. - When we add a CLOBBER, put a REG_UNUSED note for it in *PNOTES. - (try_combine): Call recog_for_combine with new parameter. - Delete any now-invalid REG_UNUSED notes in OTHER_INSN and add any - required new ones. - Add REG_NOTES to I3 and I2 due to added CLOBBERs. - (remove_death): Call new function, remove_note. - (move_deaths): Don't get confused by a CLOBBER. - (distribute_notes): Don't make duplicate REG_UNUSED notes. - Don't put a REG_DEAD note on an insn when the register is - partially modified, but remains valid. - - * rtlanal.c (remove_note): New function. - - * combine.c (try_combine): When making a PARALLEL that does a compare - and arithmetic, don't simplify the COMPARE. - - * combine.c (try_combine): Validate that I1DEST isn't being - modified invalidly. - - * combine.c (simplify_comparison): In ZERO_EXTRACT case, add missing - test for equality comparison against zero; also invert comparison - condition. - If we can't do a comparison in a narrower mode, but we know that - some wider bits are zero, see if we can do it in a wider more. - - * cse.c (simplify_binary_operation): Remove obsolete code to convert - negative shift counts to the opposite shift. - Don't fold invalid shifts since they may trap (e.g., on Vax). - - * reload1.c (emit_reload_insns): Use rtx_equal_p to see if a result - is already in the desired register. - - * combine.c (find_split_point): Add two more ways to split an insn. - - * combine.c (gen_binary): Put a complex operand first in addition to - putting constants second, just like subst would do. - - * combine.c (significant_bits): Correct computation of significant bits - for division operations. - - * combine.c (apply_distributive_law): Reject complex SUBREGs. - SUBREG distributes over logical and addition operations. - - * combine.c (subst; case AND, IOR, XOR): Add some boolean - arithmetic simplifications. - - * expr.c (do_jump): ADDRESS_EXPR is not always zero, unfortunately. - - * expr.c (do_store_flag): In case where we are testing a single bit, - don't convert to output mode until after we do the shift. - - * optabs.c (expand_binop, expand_unop, expand_fix): Compare - enum insn_code objects against CODE_FOR_nothing instead of 0. - - * romp.md (bit_insv): Use CC0 in standard way; i.e., in NE. - -Sat May 4 20:41:12 1991 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil) - - * c-aux-info.c (gen_aux_info_record): Use getcwd on VMS a la USG. - * dbxout.c: Same here. - * xm-vms.h: Define unlink as remove - (GCC_INCLUDE_DIR): Provide a dummy definition. - -Sat May 4 16:46:48 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * combine.c (can_combine_p, try_combine): Use SMALL_REGISTER_CLASSES - to indicate when it is valid to do combines involving hard registers. - * cse.c (canon_hash): #ifdef SMALL_REGISTER_CLASSES, don't record - hard registers unless they are fp, ap, sp or are fixed. - * loop.c (valid_initial_value_p): #ifdef SMALL_REGISTER_CLASSES, - hard register aren't valid initial values. - * reload1.c (reload): Initialize FORBIDDEN_REGS depending on - whether we have small register classes or not. - - * ns32k.md: Replace const_int with const_int_operand. - Remove HImode extractions. - Remove patterns assigning an AND to CC0. - (andcbxx3): Remove name and eliminate case with NOT as second operand. - (sbitx, cbitx): Remove patterns involving IOR and ASHIFT; add patterns - with ZERO_EXTRACT as destination. - (ibitx): Put ASHIFT as first operand in XOR. - (bitfield compare): Remove comparison of 1 bit field with 1; combine - converts this to comparison with zero. - (and-compare-branch): Fold PLUS or MINUS into constant, like combine - will do. - Remove patterns for reversed cases. - * out-ns32k.c (const_int): Deleted. - - * rtlanal.c (reg_used_between_p, reg_set_between_p): Use GET_RTX_CLASS. - (reg_set_p_1): If we are setting a MEM, don't think we are setting - registers used in its address. - - * m68k.md (cmpsf, cmpdf, tstsf, tstdf for FPA): Use MATCH_SCRATCH. - * sparc.md (memory store patterns): Likewise. - - * function.c (assign_parms): Function is varargs function if the - last parameter is `__builtin_va_alist_' instead of checking the first - parameter. Normally, this is the same, but some functions in MACH - have named parameters before va_alist. - - * combine.c (simplify_comparison): Remove abort on paradoxical SUBREGs - now that we know they can occur. - - * reload.c (decompose): Handle SCRATCH; it can't conflict with - anything. - (find_reloads): All operands can set earlyclobber, not just REG & MEM. - Add support for "X" constraint. - SCRATCH does not match "g" constraint. - -Sat May 4 14:03:16 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * enquire.c (EPROP): Avoid a <= out if bad is set. - - * SYSCALLS.c: Test bsd4_2 along with BSD. - -Fri May 3 14:26:51 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * c-decl.c (pushdecl): Stop looping on type if find error mark. - - * loop.c (invariant_p): An address with a PLUS is not the same as - MEM_IN_STRUCT_P being set. - - * tree.h (TREE_NO_UNUSED_WARNING): New macro. - * stmt.c (warn_if_unused_value): That flag suppresses warnings. - * c-typeck.c (build_unary_op): Set flag when converting postinc. - -Fri May 3 08:09:47 1991 Tom Wood (wood at dg-rtp.dg.com) - - * tm-m88k.h (GO_IF_LEGITIMATE_ADDRESS): Remove workarounds for - register elimination problems. - -Fri May 3 07:14:22 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * a29k.md: Fix typo in dmac pattern. - Make many define_splits that convert DFmode and DImode to one word - at a time to operate only after reload completes to improve reg alloc. - (movdf): Correct typo in mfacc. - (rotlsi3): Count is QImode, not SImode. - - * tm-a29kunix.h (BIGGEST_ALIGNMENT): Change to 64. - - * tm-romp.h (OPTIMIZATION_OPTIONS): Enable insn scheduling. - (register definitions): No longer need dummy register and class; - register numbers for FP register change. - * romp.md: Use MATCH_SCRATCH instead of allocating pseudos - to the dummy register class or base register depending on alternative. - (FP insns): Add missing "=" to constraints in CLOBBERs. - (extendqisi2, extendqihi2): Now DEFINE_EXPAND. - (mc03 peephole): Can do if right shift >= 24 bits. - * out-romp.c (reg_15_operand): Remove special case for FP delay slot. - (romp_sa_size, output_fpop, output_loadsave_fpops, output_fpops): - Change floating-point register numbers. - - * combine.c (simplify_shift_const, case for shifts): Verify that - the host word size is wide enough. - Properly handle (ashift (subreg (ashiftrt ...) ...) ...). - - * out-vax.c (print_operand_address, case PLUS): Handle all addresses - accepted by GO_IF_LEGITIMATE_ADDRESS. - - * explow.c (plus_constant): force_const_mem does not necessarily - return a valid address. - * integrate.c (copy_rtx_and_substitute): Likewise. - - * Makefile.in (local-alloc.o): Includes output.h. - * rtl.def (SCRATCH, MATCH_SCRATCH): New RTL codes. - * regs.h (max_scratch): Add definition. - * genconfig.c (walk_insn_part): Handle MATCH_SCRATCH. - * genextract.c (walk_rtx): Likewise. - * genemit.c (max_operand_1): Likewise. - (gen_exp): Emit a SCRATCH for for MATCH_SCRATCH. - (gen_insn): We can create (clobber (scratch)). - * genoutput.c (scan_operands): Handle MATCH_SCRATCH; - use switch instead of if's. - * genrecog.c (make_insn_sequence): We can created (clobber (scratch)). - (add_to_sequence): Handle MATCH_SCRATCH. - * flow.c (life_analysis): Initialize max_scratch. - (propagate_block): Update max_scratch with count from this block. - (mark_set_1): Make REG_UNUSED note for SCRATCH and count it. - * local-alloc.c: Include output.h. - (qty_scratch_rtx): New variable. - (alloc_qty): Rename INSN_NUMBER to BIRTH since that's what it is. - (alloc_qty_for_scratch): New function. - (local_alloc): Account for quantities needed for SCRATCH. - Allocate and initialize qty_scratch_rtx. - (block_alloc): Allocate quantities for SCRATCH operands. - (requires_inout_p): Add "X" constraint. - * recog.c (scratch_operand): New function. - (constrain_operands): SCRATCH matches a register constraint unless - strict. - Add "X" constraint. - * regclass.c (reg_class_record): Add "X" constraint. - * reload1.c (emit_reload_insns): Add SCRATCH to test for operand that - dies right away; update REG_UNUSED note for SCRATCH. - Never need reload insn for SCRATCH, even if no REG_UNUSED note. - * rtlanal.c (reg_mentioned_p, reg_overlap_mentioned_p, rtx_equal_p): - Support SCRATCH. - (volatile_refs_p, side_effects_p, may_trap_p): Likewise. - (inequality_comparisons_p, replace_regs): Likewise. - - * flow.c (mark_set_1): Don't do anything special with partial - assignments; this is already handled by mark_used_regs and we now - want to make LOG_LINKS for these. - - * combine.c: Includes expr.h. - (expand_field_assignment, make_extraction): New functions. - (get_pos_from_mask, make_field_assignment): Likewise. - (can_combine_p): Remove special case for SUBREG in SET_DEST; call - expand_field_assignment instead. - (try_combine): Remove code to handle STRICT_LOW_PART here. - Call expand_field_assignment on SETs in I3. - (find_split_point): Split up simple cases of bitfield assignments. - (subst, case ZERO_EXTRACT): Remove processing of ZERO_EXTRACT in a - SET_DEST from here. - (subst, case SET): Try to convert this into a field assignment by - calling make_field_assignment. - No need to call make_compound_operation for COMPAREs; - make_compound_operation now returns an rtx and is no longer passed - a pointer. - Remove tests for ZERO_EXTRACT in SET_DEST. - (make_compound_operation): Now returns rtx and is passed rtx, instead - of rtx *. - Call make_extraction. - (simplify_comparison): Call make_compound_operation here and remove any - outermost SUBREGs that aren't doing anything. - - * Makefile.in (combine.o): Includes expr.h. - - * expr.c (convert_to_mode): Correct which cases can use gen_lowpart. - - * final.c (final_scan_insn): Don't set INSN_DELETED_P after writing - insn. - - * genoutput.c (main): Don't include aux-output.c in insn-output.c. - Include stdio.h before output.h. - (output_epilogue): Write definitions for all the predicates - placed in `insn_operand_predicate'. - * output.h: No longer need to define operand-predicate functions. - * configure: (m88k/dg): Only difference between xm-m88k{,dgux}.h was - definition of SEPARATE_AUX_OUTPUT, so we don't need xm-m88kdgux.h. - * xm-m88kdgux.h: Deleted. - Fix typo setting `target' in Makefile. - * Makefile.in (AUX_OUTPUT2): Deleted. - (OBJS): Remove AUX_OUTPUT2 and add aux-output.o. - (aux-output2.o): Now aux-output.o. - (insn-output.o): No longer depends on aux-output.c. - * make-m88kdgux (AUX_OUTPUT2): No longer define. - * tm-m68k.h, tm-romp.h, tm-sparc.h: Define functions in out-*.c and - used by insn-output.c. - * tm-m88k.h: Remove conditionalization for SEPARATE_AUX_OUTPUT; now - always done. - No longer define predicate functions; done by genoutput.c. - * tm-mips.h: No longer define SEPARATE_AUX_OUTPUT. - * out-*.c: Add includes previously present in insn-output.c. - * out-sparc.c (output_fp_move_double): No longer static. - (output_sized_memop): No longer need to define asm_out_file here. - (output_function_epilogue): Correct type; function is void, not char *. - -Fri May 3 01:05:44 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu) - - * sdbout.c (sdbout_one_type): TYPE_FIELDs may contain other kinds of - _DECL nodes than just FIELD_DECL nodes (in GNU C++, at least). - Don't look through such nodes until further mods are made to handle - them better. - -Thu May 2 14:43:48 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * c-decl.c (finish_enum): Don't store enum type as type of value. - - * c-parse.y (YYPRINT, yyprint): New macro and new function. - - * expmed.c (expand_and): Handle both args constant. - - * expr.c (store_field): Avoid refetching from bitfield if possible. - - * math-68881.h (pow): Negate x if negative when taking log. - - * expr.c (emit_move_insn): Fixed typo in `y1 = change_address' call. - Reenable the code to move objects word at a time. - -Thu May 2 12:29:16 1991 Eric Youngdale (youngdale at v6550c.nrl.navy.mil) - - * cccp.c (hack_vms_include_specification): Modified conversion of - unix filenames to VMS filenames, if no VMS device or directory is - present, and a unix style directory name is present, then use the - first unix directory name as the VMS device spec. This is only - used in '#include <...>' type includes, when the include file has - not been found in the standard locations. - -Thu May 2 10:06:47 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu) - - * cplus-decl.c (init_decl_processing): Call init_gc_processing if - -fgc is requested. - * cplus-init.c (build_new): Argument to build_compound_expr must be - a TREE_LIST all the way. The last elt of the chain cannot be an - _EXPR. - -Thu May 2 07:33:50 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * expr.c (expand_expr, case CONVERT_EXPR): Pass bitsize to store_field - instead of size in bytes. - -Wed May 1 13:33:58 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu) - - * version.c: Bumped version number to 1.93. - -Wed May 1 12:26:36 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * gcc.c (link_command_spec): Pass plain -m to ld. - - * c-decl.c (finish_enum): Clean up re-laying out of type. - -Wed May 1 08:04:44 1991 Michael Tiemann (tiemann at cygnus.com) - - * Makefile.in: Handle new cplus-*.c files. - - * cplus-typeck.c (common_base_type): Make this function recursive. - (build_component_ref): Test whether or not a FIELD_DECL, not whether - or not a VAR_DECL||CONST_DECL||TYPE_DECL. - - * cplus-parse.y: Fixed grammar so that template type decls could be - used. Previously, support existed for template decls following - types, but not as types. - * cplus-pt.c ({push,pop}_template_decls): New functions. - (instantiate_template): Call `push_template_decls'. - (end_template_instantiation): Let `poplevel' restore old bindings. - No need to clear out extra stuff. - (pushclass, popclass): Call `{push,pop}_template_decls' if the class - we are pushing or popping has template arguments. These arguments - go at class level. - - * cplus-method.c (build_opfncall): Test TRY_SECOND before testing - possibly uninitialized XARG2. - - * cplus-lex.c (init_lex): Initialize NODE_TABLE, OPNAME_TAB and - ASSIGNOP_TAB to hold zero. Since these come from malloc'd memory, - we cannot trust them to be initialized on startup. - - * cplus-init.c (expand_aggr_init_1): When initializing through a - TARGET_EXPR for objects of the same type (e.g., X a = X (10);) - use EXP's DECL_RTL as the DECL_RTL of the TARGET_EXPR. - - * cplus-decl2.c (finish_file): Handle new flag `-fgnu-binutils'. - When zero, don't use GNU extensions to a.out format. ???Should be - merged into varasm.c. - - * cplus-class.c: Added support for `dossiers'. This support is - implemented by extending the virtual function table and by giving - all C++ objects a virtual function table to hold it's dossier. - * cplus-decl.c (record_builtin_type): New function to construct - dossier information for built-in types. - (output_builtin_tdesc_entries): To keep repeated information under - control, we only output this information for the file that contains - `main'. - (init_decl_processing): Many dossier-related changes. - (init_lex): Recognize new reserved words `headof' and `classof' if - -fgc. - * cplus-parse.y: Grammar now recognizes `headof' and `classof' - expressions. - * cplus-method.c: Added dossier constructors here. - * cplus-tree.h (CLASSTYPE_DOSSIER): New macro: `dossier' is a new - field in lang_type. - * cplus-typeck.c (convert_for_assignment): Handle - `class_star_type_node'. - - * cplus-class.c: New variable current_class_depth. Used to tell - what class nesting level the compiler is at. - * cplus-decl.c (grokdeclarator): Now supports references to decls - that come from nested types. For example, int foo::bar (foo_tag); - where `foo_tag' is a tag that comes from foo. Previously this was - supported only as int foo::bar (foo::foo_tag); - * cplus-decl2.c (build_push_scope): build a SCOPE_REF node while - pushing into the context for the scope. When `grokdeclarator' sees - one of these nodes (distinuished by its TREE_COMPLEXITY being set to - the current_class_depth), it processes the decl and pops the scope. - - * cplus-class.c (build_vbase_path): Trust objects that are - `fixed_type_p'. Also, don't assume an object is non-null unless - flag says this is explicitly so. InterViews creates and may - manipulate (via delete) lots of null objects. - (build_vfn_reference): Use IS_AGGR_TYPE test on type, not in - INSTANCE. - (resolves_to_fixed_type_p): New argument NONNULL is used in case we - know and object to be non-zero. All callers changed. - - * cplus-call.c: New file, from file cplus-class.c. Contains code to - generate method calls. - * cplus-class.h: New file, contains common declarations for - cplus-class.c and cplus-call.c. - - * cplus-class.c (finish_struct_bits): Don't leave last_conversions - uninitialized. - -Tue Apr 30 17:14:00 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * expr.c (expand_expr): - Preserve volatility when changing ARRAY_REF to use a pointer. - - * vax.md (indirect_jump): Use parens around register, not @. - - * fixincludes (machine/cpu.h): Delete superfluous `static'. - - * tm-decstatn.h (CPP_PREDEFINES): Define __mips and __LANGUAGE_C. - - * explow.c (allocate_dynamic_stack_space): Compensate if - STACK_POINTER_OFFSET throws off the alignment. - - * loop.c (strength_reduce): Typos setting not_every_iteration. - -Tue Apr 30 16:10:32 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * vax.md (bicb): Fix typo that caused operand not to be negated. - (jlbs/jlbc): Operand[0] cannot be a constant. - - * rtl.h: Put NOTE_INSN_... codes in order. - (find_regno_note): Add missing definition. - - * reload.c (find_reloads_address): Handle an indexed stack slot that - is made out of range by frame pointer elimination. - -Tue Apr 30 14:09:28 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * toplev.c (compile_file): Output gcc2_compiled, not gcc_compiled. - * tm-tower-as.h (ASM_IDENTIFY_GCC): Likewise. - -Tue Apr 30 13:56:40 1991 Tom Wood (wood at dg-rtp.dg.com) - - * varasm.c (output_addressed_constants): Return and indication of - whether the variable requires link-time relocations. - (assemble_variable, get_or_assign_label): Use this value when - choosing the section. Use the data section for variables and - constants that are otherwise read-only when -fpic is given and - when link-time relocations are required. - * tm-*.h (SELECT_SECTION): Accept a new second parameter RELOC. - -Tue Apr 30 10:24:36 1991 Tom Wood (wood at dg-rtp.dg.com) - - * rtl.h (NOTE_INSN_LOOP_VTOP), rtl.c (note_insn_name): Add a new - note indicating the virtual top of a loop. - * jump.c (duplicate_loop_exit_test): Mark the duplicated exit code - in the loop as the virtual top of the converted loop. - (squeeze_notes): Move loop-vtop notes as well. - * loop.c (scan_loop): When a loop-vtop note is encountered, reset - `maybe_never' and `call_passed'. - (strength_reduce): Similarly, reset `not_every_iteration'. - -Tue Apr 30 08:15:50 1991 Michael Meissner (meissner at osf.org) - - * expr.c (do_store_flag): Move the join label after setting the - target value to 0, rather than before, which generates code that - always stores 0 into the target if the machine does not have a - builtin scc operation. - -Tue Apr 30 06:26:36 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * reload1.c (reload): When making reg_equiv_mem and reg_equiv_address - from reg_equiv_memory_loc, clear the one we aren't setting; it might - have been previously set. - - * final.c (final_scan_insn): Correctly handle when the first insn in a - SEQUENCE is a JUMP_INSN that forces restoration of a comparison - previously thought unnecessary. - - * fold-const.c (fold, case PLUS_EXPR): If we have 2 * real_cst, - fold into a new constant instead of making real_cst + real_cst. - -Mon Apr 29 23:09:17 1991 Ken Raeburn (raeburn at watch.com) - - * cplus-decl.c (output_builtin_tdesc_entries): Corrected - declaration of permanent_obstack. - (init_decl_processing): Record declaration of int with name "int" - rather than null. - (finish_decl): Fix typo in comment. - - * cplus-class.c (finish_struct): Made error message for union - member requiring constructor/destructor a little tidier. - (resolve_scope_to_name): Look at fields of current type as well as - tags, in case of local typedefs. - (build_method_call): Permit explicit call of destructor in class - that doesn't have one. (That's what the ARM says....) - - * cplus-decl.c (set_nested_typename): New function, extracted from - within pushtag. Extended to deal with null classname. - (pushtag): Call it. - (pushdecl): For a TYPE_DECL, ensure that the nested typename gets - set. - (pushdecl_class_level): Ditto. - (constructor_name): Test various assertions. - (hack_incomplete_structures): If type is a class template, punt. - - * cplus-input.c (getch): Renamed from get_character. Callers - changed. - cplus-lex.c (old getch): Deleted. - - * cplus-lex.c (save_pending_input, restore_pending_input): New - functions for saving and restoring lexer state. - (process_next_inline): Restore lexer state after each function. - cplus-pt.c (end_template_instantiation): Ditto. - cplus-input.c (struct input_source, getch, feed_input): Preserve - putback_char and lexer state. - - * cplus-input.c (getch): Return magic cookie on end of saved input - for lexer to recognize. - cplus-lex.c (yylex): Turn it into END_OF_SAVED_INPUT. - (process_next_inline): Require it after inline function body. - - * cplus-lex.c (do_pending_inlines): Don't save away current - file/line-no info; character input processing should do that. - (yyungetc): Turn conditional abort into assertion test. - (note_list_got_semicolon): Since variable "type" is available, use - it rather than recompute. - (identifier_type): Now static. - (yylex): Warn about conflicts with class template expansion names. - - * cplus-parse.y (temporary_scope): New variable. - (object and scoped_id actions): Set it to current type. - (many other actions): Clear it. - (scoped_typename): Now derivable also from scoped_id and TYPENAME. - cplus-lex.c (yylex): If temporary_scope is set, use it to - determine type of current token being examined, instead of looking - always in the global scope. (Can't properly do nested template - classes otherwise.) - - * cplus-ptree.c (print_lang_decl): Print out template-info, - original-name, decl-main-variant, and pending-inline-info nodes if - not null. - - * cplus-pt.c (mangle_class_name_for_template): For negative - numbers, use "m" prefix rather than printf's "-". - (overload_template_name): Test more assertions. Use - SET_IDENTIFIER_TYPE_VALUE macro. - (lookup_template_class): Assert template decl node is non-null. - Push to permanent obstacks for new allocations. - (instantiate_template): Return new class type in a list. - - * cplus-pt.c (undo_template_name_overload): Clear type local - definition of template name. - (end_template_instantiation): Call it. - cplus-parse.y (structsp actions): Ditto. - (named_class_head_sans_basetype): Don't call - overload_template_name here. - (named_class_head): Call xref_tag, to define a tag, before calling - it here. - - * cplus-parse.y (tmpl.1, tmpl.2): Delete type declarations, since - they have no values. - (yyprint, YYPRINT): New function and macro to work with debugging - code added to bison. - (datadef -> template_header... actions): Assign yychar, rather - than calling yyungetc and yylex. Require trailing semicolon. - (fn.def1 -> PRE_PARSED_FUNCTION_DECL action): Preserve all of - terminal value, instead of just TREE_PURPOSE. - (tmpl.1 action): Do instantiation only if '{' or ':' not found. - (template_instantiation): Call overload_template_name right away. - (primary -> .scope new '(' typename ')' '[' ...): Detect and warn - about this construct, which appears to be recognizeable, though - disallowed by the ARM. - (primary -> delete[]): Return error_mark_node. - (primary -> obj TYPESPEC::~TYPESPEC()): Catch, parse as valid. - Returned value not determined yet. - (typespec): No longer derived from PTYPENAME. - (LC): Added missing semicolon at end of rule. - (stmt): A PTYPENAME can also be used as a label name. - -Mon Apr 29 22:18:47 1991 James Van Artsdalen (james at bigtex.cactus.org) - - * tm-att386.h (ASM_OUTPUT_LOCAL): Align static local variables. - -Mon Apr 29 15:20:35 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * fold-const.c (fold): Don't assume an address is nonzero. - * cse.c (fold_rtx): Likewise. - - * stmt.c (warn_if_unused_value): No warning for cast of cast of modify. - - * Makefile.in (USER_H): Remove float.h. - -Mon Apr 29 13:46:48 1991 Jim Wilson (wilson at cygnus.com) - - * loop.c (scan_loop): When see a REG_EQUAL note, check for both - the move_insn and the REG_RETVAL case, since they can occur together. - (move_movables): For the move_insn case, handle library calls just - like the older normal case code below, that is, skip to the end of a - library call when when see a REG_LIBCALL note, and delete an entire - library call if when see a REG_RETVAL note. - -Mon Apr 29 12:58:19 1991 Jim Wilson (wilson at cygnus.com) - - * sched.c: (schedule_block): Rewrite code that computes which - registers are live at the end of the block. Compute this from - basic_block_live_at_start info of current block, instead of from - all reachable blocks. Previous code failed if one of the - reachable blocks consisted of dead code. - (sched_note_set): Set bb_live_regs when DEATH is false. - - * sched.c: Update copyright. Correct various problems with - indentation and white space. - (canon_rtx): Delete obsolete code handling INSN_LIST rtx. Add - code to recurse on the operands of a PLUS rtx. - (find_symbolic_term): New function. Recursively search an rtx for - a SYMBOL_REF or a LABEL_REF and return pointer to one if found. - (memrefs_conflict_p): No longer needs to call canon_rtx on - operands of a plus. Now handles case of two addresses with - different base addresses. - (schedule_block): Don't set INSN_DELETED_P bit of ignored notes. - Verify that REG_DEAD notes have a register value. - (sched_analyze_1): Ifdef out obsolete code which calculates cc0 - dependencies. - (sched_analyze): Likewise. - (schedule_block): Likewise. - (launch_links): Delete obsolete code for handling SPARC 'orcc' insns. - -Mon Apr 29 12:09:32 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) - - * configure: Allow spaces between options and their args. - -Mon Apr 29 06:35:09 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * jump.c (jump_optimize): Don't emit jump to next insn; this would - cause jump_optimize to loop. - (jump_optimize, duplicate_loop_end_test, do_cross_jump): Never put - insn in jump_chain if its INSN_UID is too large. - (redirect_tablejump): Likewise. - -Sun Apr 28 08:00:01 1991 Michael Tiemann (tiemann at cygnus.com) - - * cplus-decl.c (init_decl_processing): Merge changes in builtin - function handling to match the way that c-decl.c now works. - Also add global variables to support that change. - (define_function): Ditto. - - * cplus-decl2.c: Add flags for gc and xref. - * cplus-tree.h (DECL_GC_OFFEST): New macro for gc. - * cplus-tree.h: Rearrange CLASSTYPE_ASSOC and CLASSTYPE_BASETYPES so - that the former now uses TYPE_LANG_SPECIFIC storage, and the latter - uses TYPE_BASETYPES. - * cplus-tree.h: Change overload names of new and delete to `nw' and - `dl'. Formerly, `new' was being seen as `ne', the encoding for `not - equal'. - - * cplus-xref.c: New file. Adds support for generating - cross-reference information such as a class browser or program - analyzer would use. - - * cplus-gc.c: New file. Add support for garbage collection. - * cplus-decl.c (finish_decl): Tie decls to their places in the - garbage collector. - * cplus-init.c (build_new): Added hooks for gc. - * cplus-typeck.c (convert_arguments): protect arguments from the - garbage collector if -fgc. - (build_modify_expr): More gc-related changes. - -Fri Apr 26 07:31:26 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * integrate.c (expand_inline_function): Add missing increment of I. - -Thu Apr 25 11:07:11 1991 Tom Wood (wood at dg-rtp.dg.com) - - * m88k.md (various patterns): Use nonimmediate_operand in place of - reg_or_nonsymb_mem_operand and constraint `m' in place of `Q'. - * tm-m88k.h (EXTRA_CONSTRAINT): Only needed for a call address. - * out-m88k.c: reg_or_nonsymb_mem_operand and symbolic_memory_p are - now unused. - - * m88k.md (symbolic store patterns): These patterns are all - unnecessary and are deleted. - * out-m88k.c (emit_move_sequence): Eliminate the case that - generated a CLOBBER. This was intended to use the symbolic store - patterns, but isn't needed. - (symbolic_memory_operand): Delete, no longer used. - (output_prologue): Don't check for suspicious register elimination - changes. - * tm-m88k.h (GO_IF_LEGITIMATE_ADDRESS): Treat the frame pointer - like the argument pointer as both may change to REG+SMALLINT. - -Tue Apr 23 15:08:03 1991 Jim Wilson (wilson at cygnus.com) - - * out-sparc.c (output_scc_insn): Clean up and expand comments. - Don't assume that JUMP_LABEL fields are always valid, they aren't - when compiling without optimization. - -Mon Apr 22 13:56:43 1991 Michael Tiemann (tiemann at cygnus.com) - - * cplus-class.c (prepare_fresh_vtable): Thoroughly update virtual - function tables that come from baseclasses to contain the latest - overrides from derived classes. This was done (in a different way) - for virtual baseclasses, but left undone for non-virtual - baseclasses. - (finish_struct_bits): Use assoc lists instead of class basetype list - to walk through the classes base classes. This gives us more - relavant classes to check against. - * cplus-init.c (init_vfields): New function to recursively walk - objects and make sure their vfields are initialized. - * cplus-init.c (emit_base_init): Call `init_vfields' from top level. - - * cplus-tree.h (TYPE_IDENTIFIER): New macro, gives the - IDENTIFIER_NODE for a given aggr TYPE. - * cplus-class.c (add_method): Use TYPE_IDENTIFIER. - * cplus-cvt.c (various places): Ditto. - - * cplus-class.c (finish_struct): Add TYPE_DECLs to the list of a - class's members that come from the types implicitly declared tags. - - * cplus-decl.c (grokdeclarator): If a function is declared `static - inline', don't give it global visibility, regardless of what #pragma - interface/implementation suggests. - - * cplus-decl.c (finish_function): ??? Questionable change for PIC: - don't let constructors and destructors that manipulate vtables go - inline, since this somehow reduces page sharing. Really??? - - * cplus-except.c (init_exception_processing): Use `pushdecl' to - install global info that this function sets up. That way later - decls can override this info (such as with an inline function). - - * cplus-init.c (build_vec_delete): Set TREE_SIDE_EFFECTS of - controller. Otherwise the loop won't execute. - - * cplus-method.c (prepare_inline): Rewritten and simplified. - (do_inline_method_hair): Ditto. - - * cplus-tree.c (lang_output_debug_info): Only output nested type if - we would also output enclosing type. - - * cplus-typekc.c (c_expand_return): Use pseudo for intermediate - return value if necessary. GCC can't read the function return - registers in an inline functino when the return value is being - ignored. - -Mon Apr 22 14:36:01 1991 Jim Wilson (wilson at cygnus.com) - - * sched.c (init_alias_analysis): Handle REG_EQUIV notes just like - REG_EQUAL notes. - - * sched.c (sched_analyze_2): Don't recurse on constant rtx's. - This is necessary so that the cc0_rtx in CONST_DOUBLEs won't be seen. - (sched_analyze): Call sched_analyze_insn for JUMP_INSNS also, so - that cc0 users will get an automatic dependence on their previous - insn. - (launch_links): Ifdef out special treatment of insns which set the - condition codes. This is obsolete, and was SPARC specific anyways. - (new_sometimes_live): Clarify code that aborts if regno is greater - than max_regno. - (schedule_block): If the last insn sets cc0, then it must always - be left in place. - (new_insn_dead_notes): New function. Determines whether a SET or - CLOBBER in an insn created by splitting needs a REG_DEAD or - REG_UNUSED note added. - (update_links): Ignore REG_EQUIV and REG_EQUAL notes on insns that - have more than one set. Generalize flow analysis of the sets in - the new insns so that it can handle new insns which have multiple - sets or new clobbers. - -Mon Apr 22 08:15:50 1991 Michael Meissner (meissner at osf.org) - - * gcc.c (input_suffix): New global var; holds current file's suffix. - (handle_braces): Substitute X in %{.S:X} if the current file has - suffix .S. Similarly, substitute X in %{!.S:X} if the current file - does not have suffix .S. - (validate_switches): Ignore .S part in %{.S:X} construct. - -Sat Apr 20 14:41:17 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu) - - * final.c (leaf_function_p): Define this in any event. - -Sat Apr 20 10:45:43 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * loop.c (check_dbra_loop): Use GET_RTX_CLASS when appropriate. - Check for setting biv with single_set rather than only allowing a SET. - If a loop has a `break', we can't reverse it. - - * cse.c (cse_insn): Fold inside operands of a CALL (mostly to find the - best address form to use). - - * cse.c (simplify_unary_operation): Convert (neg (neg ..)) to NEG. - Similarly for NOT. - (simplify_binary_operation): Simplify things like (-a) + b. - Convert UDIV with divisor a constant power of two into LSHIFTRT. - Similarly for UMOD. - Only fold shifts of a zero by a value into zero if the value has - no side effects. - Remove code to handle negative shift counts. - - * tm-a29k.h (OPTIMIZATION_OPTIONS): Allow insn scheduling to be - enabled, now that it works for the 29k. - - * tm-rs6000.h (LINK_SPEC): Add "-bhalt:4" to LINK_SPEC (don't ask!). - -Fri Apr 19 13:18:52 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * explow.c (memory_address): Test `cse_not_expected' instead of - `optimize' so that we don't make new pseudos after flow is run. - - * genflags.c (gen_insn): If extra condition is more than one line, - use \'s to make proper multi-line macro definition. - -Thu Apr 18 13:40:01 1991 Jim Wilson (wilson at cygnus.com) - - * loop.c (check_dbra_loop): Reenable no_use_except_for_counting code - which was mistakenly ifdefed out as buggy. The actual bug was in - strength_reduce, and has already been fixed. - -Thu Apr 18 09:47:25 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) - - * loop.c (record_giv): Allow for the case where regno_last_uid - of DEST_REG has been moved or deleted. - - * rtlanal.c (replace_regs): Add missing argument in recursive call. - - * recog.c (nonmemory_operand): Only call general_operand for - a SUBREG if it is a MEM, just like register_operand. - - * local-alloc.c (block_alloc): Handle case where the last insn of - a REG_NO_CONFLICT block requires some CLOBBERs, but is a single SET. - - * out-romp.c, out-rs6000.c (next_insn_tests_no_unsigned): If a - REG_UNUSED note for (cc0) is present on INSN, return 1. - - * jump.c (delete_jump): If the previous insn sets cc0 but we can't - delete it for some reason, add a REG_UNUSED note for cc0 in that insn. - - * out-a29k.c: Rename input_operand to in_operand and output_operand - to out_operand to avoid conflict with output_operand in final.c. - * a29k.md: Likewise. - (call patterns): Don't put SYMBOL_REF in MEM for recursive call; - it might not be recursive if inlined; let cse do it later. - * tm-a29k.h (RTX_COST, ADDRESS_COST): All addresses have the same - cost, but MEM is expensive. - -Tue Apr 16 16:01:47 1991 Michael Meissner (meissner at osf.org) - - * configure: Add osfrose, osf, and mips/dec-osfrose. - - * out-mips.c (toplevel): Include necessary include files so - out-mips.c can be compiled separately. - (g_switch_value): New variable to hold -G xx value. - (g_switch_set): New variable to indicate if -G xx used. - (current_function_file): New variable to hold last .file. - (file_in_function_warning): New variable to hold if we've warned the - user that ECOFF can't switch files within a function. - (mips_rtx_classify): New array to classify an insn. - (mips_reg_names): New array to hold the register names. - REGISTER_NAMES initializes all elements to point into here, and - override_options resets the names if -mrnames is used. - (mips_sw_reg_names): New array to hold the alternate register names. - (mips_regno_to_class): New array to map hard register number to - register class. - (uns_arith_operand): Rewrite so call to register_operand is done - last, not first. - (arith_operand): ditto. - (arith32_operand): ditto. - (large_int): New function to return true if int constant will take 2 - instructions to load into a register. - (reg_or_0_operand): New function to return true if a register or - constant 0 is the operand for use in store patterns. - (md_register_operand): New function to return true if either the hi - or lo register is used. - (mips_const_double_ok): New function to return true if a - CONST_DOUBLE can be used as a constant in a RTL expression. At - present, only DImode constants and 0.0 is allowed. - (simple_memory_operand): New function to return true if a memory - reference is a simple register + small offset. - (gp_memory_operand): New function to return true if a memory - reference uses the global pointer. - (mips_move_instructions): New function to handle all data movement - of one word or less. - (mips_move_2words_instructions): New function to handle all data - movement of two words. - (init_cumulative_args): Remove print_tree debug call. - (function_arg_partial_nregs): Fix bug in passing structures where - the wrong field was used. - (print_options): Enable this function, body was in #if 0. - (override_options): Spell function name with two r's. Change how - the -G xx and -mGx options are handled. If neither passed use the - appropriate default. If -mgas make sure debug format is DBX, and if - not -mgas, use SDB debug format. If -mrnames and -mgas, give an - error message, otherwise set up mips_reg_names. Set up the - mips_rtx_classify array. - (print_options): New function instead of a long macro. Add %C to - print part of the opcode for a branch condition, %N to print the - inverted branch condition, %( to do .set noreorder, %) to do .set - reorder, %[ to do .set noat, %] to do .set at, %& to do .set - noreorder if filling delay slots, and %# to print nop if delay slot - not filled. - (print_operand_address): New function instead of a long macro. - (compute_frame_size): New function to abstract all the frame related - information like frame size, saved registers, etc. - (save_restore): Common function between the prologue and epilogue to - save/restore the registers in the proper order. Make $31 saved at - function pc +4. - (function_prologue): Call compute_frame_size and save_restore. Make - sure the appropriate .file is done before any statement in the - prologue since the MIPS ECOFF requires this. - (function_epilogue): Call compute_frame_size and save_restore. - - * tm-decstatn.h (CPP_PREDEFINES): Define the appropriate macros. - (*_SPEC): Move the DECstation related specs here from tm-mips.h. - - * tm-decrose.h (new file): File to support OSF/1 with OSF/rose - object format. - - * tm-mips-sysv.h (CPP_PREDEFINES): Define the appropriate macros. - (*_SPEC): Move the DECstation related specs here from tm-mips.h. - - * tm-mips-bsd.h (CPP_PREDEFINES): Define the appropriate macros. - (*_SPEC): Move the DECstation related specs here from tm-mips.h. - - * tm-mips-news.h (CPP_PREDEFINES): Define the appropriate macros. - (*_SPEC): Move the DECstation related specs here from tm-mips.h. - - * tm-iris.h (CPP_PREDEFINES): Define the appropriate macros. - (*_SPEC): Move the DECstation related specs here from tm-mips.h. - (SET_FILE_NUMBER): Define, so that .file number is always 1. - (LABEL_AFTER_LOC): Define, so that a label appears after .loc. - (STACK_ARGS_ADJUST): Iris frames require 32 bytes at the top of the - call frame instead of the normal MIPS 16. - - * mips.md (all): Add first cut at attributes to identify insn type. - (all): Where appropriate, use @ form for alternates, instead of - using C code. - (define_delay): Put arithmetic and one word stores in call, jump, - branch delay slots. - (define_function_unit): Add functional unit definitions for memory - and integer multiply/divide. - (anonymous add/subtract insn): Remove support for reg + large offset - that omitting the frame pointer caused in 1.xx to see if it is - needed anymore. - (mulsi3): Add clobbers for the hi/lo registers. Add a define_split - and an anonymous define_insn to separate the mult instruction from - the mflo. - (divmodsi4): Add clobbers for the hi/lo registers. - (udivmodsi4): Add clobbers for the hi/lo registers. - (divsi3): Add clobbers for the hi/lo registers. Restrict divides - and modulus to register / register. - (modsi3): ditto. - (udivsi3): ditto. - (ymodsi3): ditto. - (divide peepholes): Add two peepholes to catch divide followed by - modulus of the same values. - (anddi3): Remove pattern, use default behavior. - (iordi3): Remove pattern, use default behavior. - (xordi3): Remove pattern, use default behavior. - (truncsiqi2): Remove pattern, use default behavior. - (truncsihi2): Remove pattern, use default behavior. - (trunchiqi2): Remove pattern, use default behavior. - (truncdfsf2): Remove asm comment. - (extendhisi2): Add a define_split for shift case. - (extendqisi2): Add a define_split for shift case. - (extendqihi2): Add a define_split for shift case. - (movdi): Turn into a define_expand to guarantee that memory <-> - memory moves go through a register. - (movsi): ditto. - (movhi): ditto. - (movqi): ditto. - (movsf): ditto. - (movdf): ditto. - (movdi_internal): new define_insn. Add fp registers to the - alternatives. Call mips_move_2words_instructions to do the actual - movement. Require memory addresses to be offsetable. - (movdf_internal): ditto. - (movsi_internal): new define_insn. Add storing 0 to memory - directly using $0. Add transfer to/from multiply/divide registers, - and to the fp status register. Call mips_move_instructions to do - the actual work. - (movhi_internal): ditto. - (movqi_internal): ditto. - (movsf_internal): ditto. - (jump): Add %& to turn on .set noreorder if filling delay slot. - (tablejump): Ditto. - (call): Ditto. - (call_value): Ditto. - (indirect_jump): New required pattern, add %& for delay slot. - (nop): Use %( %) to turn on/off .set noreorder. - (probe): Use %[ %] to turn on/off .set noat. - - * tm-mips.h (abort): Define abort to be fancy_abort for now. - (toplevel): Move all extern's to the start of the file, rather than - scattered throughout. - (OPTIMIZATION_OPTIONS): New macro, -O sets -fomit-frame-pointer, and - -fdelayed-branch. -O2 sets -fstrength-reduce, -fcse-follow-jumps, - -fexpensive-optimizations, -fthread-jumps, -frerun-cse-after-loop. - -O3 sets -finline-functions. - (*_SPEC): Move most of the target specific spec's to the appropriate - file, rather than defining them in tm-mips.h. Defaults are for MIPS - RISC-OS with default system. - (CPP_SPEC): If preprocessing .S files, define LANGUAGE_ASSEMBLY - instead of LANGUAGE_C. - (MIPS_VERSION): Add meissner version number. - (MIPS_DEBUGGING_INFO): Define this for the future. - (TARGET_*): reorder which bit means what. Add bits so we can tell - whether any of the -mG[012] options were used. Redefine some debug - switches. - (BYTES_BIG_ENDIAN): Always define to 0/1 now. - (WORDS_BIG_ENDIAN): Always define to 0/1 now. - (MAX_PARM_BOUNDARY): Delete, since it's no longer used. - (BIGGEST_FIELD_ALIGNMENT): Define to be 64. - (CONSTANT_ALIGNMENT): New macro, make sure strings are aligned. - (DATA_ALIGNMENT): New macro, make sure byte arrays are aligned. - (FIRST_PSEUDO_REGISTER): Bump to 67, add hi, lo, fcr31. - (FIXED_REGISTERS): Add initializations for hi, lo, and fcr31. - (CALL_USED_REGISTERS): Add initializations for hi, lo, and fcr31. - (MD_REG_P): New macro to return if hi/lo register. - (ST_REG_P): New macro to return if fp control register. - (HARD_REGNO_NREGS): Return 4 for single precision complex. - (MODES_TIEABLE_P): Add complex float type support. - (FRAME_POINTER_REQUIRED): Make this always 0. - (NO_RECURSIVE_FUNCTION_CSE): New macro, define as 1. - (enum reg_class): Add class for the hi register, lo register, either - hi or lo registers, status registers. - (REG_CLASS_NAMES): Support new register classes. - (REG_CLASS_CONTENTS): ditto. - (REG_CLASS_FROM_LETTER): ditto. - (REGNO_REG_CLASS): Use an array to map register # -> class. - (CONST_OK_FOR_LETTER_P): Add `L' for constants which have bottom 16 - bits all zero, and `M' which require two instructions to load. - (CONST_DOUBLE_OK_FOR_LETTER_P): Use `CONST_DOUBLE_HIGH' and - `CONST_DOUBLE_LOW'. - (EXTRA_CONSTRAINT): New macro, `Q' for gp memory references, and `R' - for reg + small offset references. - (struct mips_frame_info): New structure to hold all frame related - information, calculated by compute_frame_size. - (INITIAL_FRAME_POINTER_OFFSET): New macro, use compute_frame_size to - calculate where the frame should go. - (ACCUMULATE_OUTGOING_ARGS): New macro, define so stack pushes are - folded into the frame. - (REG_PARM_STACK_SPACE): Redefine to take an argument and return 16. - (OUTGOING_REG_PARM_STACK_SPACE): New macro, define to say we must - allocate stack space for arguments passed in registers. - (TARGET_FLOAT_FORMAT): New macro, define as IEEE_FLOAT_FORMAT. - (FUNCTION_ARG_BOUNDARY): New macro to determine argument padding - requirements. - (MIPS_STACK_ALIGN): New name for AL_ADJUST_ALIGN macro. - (FIX_FRAME_POINTER_ADDRESS): Delete, no longer used. - (FUNCTION_PROFILER): No longer have to switch between different - register names, override_options now sets up reg_names correctly. - (TRAMPOLINE_TEMPLATE): New macro, define as a dummy. - (TRAMPOLINE_SIZE): ditto. - (INITIALIZE_TRAMPOLINE): ditto. - (INDIRECTABLE_ADDRESS): Delete, fold into GO_IF_LEGITIMATE_ADDRESS. - (GO_IF_LEGITIMATE_ADDRESS): If -mdebuga, don't allow