diff options
author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1997-08-15 05:15:07 +0000 |
---|---|---|
committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1997-08-15 05:15:07 +0000 |
commit | 16673e78bf537f5893fa913ff7c063926ba0d4aa (patch) | |
tree | 981890e4a5ba0eb07721e6ed6b143929a95cfd42 /gcc/ChangeLog.1 | |
parent | 7bbab92e23edf01cf740046a335c0f259715a017 (diff) | |
download | gcc-16673e78bf537f5893fa913ff7c063926ba0d4aa.tar.gz |
Remove old (pre gcc-2.7.2) ChangeLog files.
Remove pre-built into files.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@14799 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ChangeLog.1')
-rw-r--r-- | gcc/ChangeLog.1 | 9207 |
1 files changed, 0 insertions, 9207 deletions
diff --git a/gcc/ChangeLog.1 b/gcc/ChangeLog.1 deleted file mode 100644 index b0f29ab6c01..00000000000 --- 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 .. <const>) 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 <foo> (and <foo> (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 <foo>)). - 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 <X> <c1>) <c1>) can be (sign_extend <X>) - (lshiftrt (*shift <X> <c1>) <c1>) can be (zero_extend (subreg <X>)) - Do (lshift <X> (sign_extend <Y>)) on non-regs using gen_lowpart. - Eliminate AND in (lshift (and <X> <C1>) <C2>). - Use gen_lowpart in (lshift:m1 (zero_extend:m2 <X>) <C>). - 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 <varargs.h>, now that -I. is used. - * tree.c, expr.c, emit-rtl.c: Change #include commands. - * Makefile (install): Install gvarargs.h under name varargs.h. - * gcc.c: Include gvarargs.h, not system's varargs.h. - - * Makefile: Use -I$(srcdir) before -I$(srcdir)/config. - * config/tm.h: Deleted; didn't work if config was a symlink. - - * cse.c (cse_insn): Record location of inner_dest - so it can be replaced properly if a new MEM rtx is made. - -Fri Jun 16 14:17:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * make-cc1.com: Compile and link rtlanal.c. - - * c-typeck.c (build_array_ref): Call fold on the array ref. - * fold-const.c (fold): Simplify array ref of string constant. - - * stmt.c (expand_asm_operands): Fix error message. - - * Makefile (gnulib2): Remove old members before compiling new. - Fix stupid errors. - * gnulib2.c (__cmpdi2, __ucmpdi2): Typos in names of interface unions. - - * genconfig.c (main): Don't write MAX_CLOBBERS_PER_INSN; obsolete. - Add 3 to MAX_RECOG_OPERANDS. - - * cse.c (fold_cc0): Extra arg specifies machine mode. - Callers changed. - (cse_insn): Record original mode of each src for this purpose. - -Thu Jun 15 12:35:18 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * gnulib2.c (_cmpdi2, _ucmpdi2): Moved here from gnulib.c. - Use long long for argument type. - - * rtlanal.c (may_trap_p): Moved here from loop.c. - Return 1 for division by explicit zero. - - * reload1.c (eliminate_frame_pointer, alter_frame_pointer_addresses): - Rerecognize insns which are changed by this. - - * i386.md (call_value): Don't return prematurely. - - * alliant.md (movqi): Handle moving Aregs to mem and vice versa. - (bftst -> btst): Restrict to bitpos less than 8 - so operand may be non-offsettable. - (nop): New pattern. - (return): Was disabled; now deleted. - * tm-alliant.h (PRINT_OPERAND_PUNCT_VALID_P): Define it. - * out-alliant.c (output_btst): Same change as in out-m68k.c - - * alliant.md, out-alliant.c: Offsetable -> offsettable. - - * c-parse.y (rule for stmt_exprs): Make the LET_STMT volatile. - - * c-decl.c (duplicate_decls): Don't save inline function data - from previous definition if a new *definition* is seen. - - * integrate.c (access_parm_map): Handle subregs and constants. - - * stmt.c (expand_return): Don't crash if DECL_RTL (DECL_RESULT()) is 0. - - * tm-tahoe.h (LONGJMP_RESTORE_FROM_STACK): Define it. - - * tm-mips.h (CONSTANT_P): Deleted; duplicates rtl.h. - -Fri Jun 9 01:39:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * Makefile (float.h): Avoid using $(MAKE). - - * Don't cram two things into STMT_BODY of a LET_STMT. - * tree.h (struct bind_stmt): New field, subblocks. - (STMT_SUBBLOCKS): New macro to access it. - * print-tree.c (walk): Print new field. - * tree.c (build_let_stmt): Store the old BODY arg into subblocks field. - * c-parse.y (stmt expr rule): Put rtl expr alone into body field. - * dbxout.c (dbxout_block): Recurse on subblocks, not body. - * sdbout.c, symout.c: Likewise. - * integrate.c (copy_decl_tree): Likewise. - * stmt.c (setjmp_protect, uninitialized_vars_warning): Likewise. - * expr.c (expand_expr): For LET_STMT, simply use its body. - - * machmode.def: Add sixth arg to each entry. - * tree.h, rtl.h, rtl.c: Add arg to DEF_MACHMODE. - * rtl.h (GET_WIDER_MODE): New macro; table in rtl.c. - * expr.c (expand_expr): Use that for widening multiply. - - * stmt.c (fixup_var_refs_1): When converting MEM to QImode for - bit field, adjust the address if possible to make bitpos - less than 8. - * m68k.md (bftst -> btst): Restrict to bitpos less than 8 - so operand may be non-offsettable. - - * cccp.c (do_line): Accept and pass on 3rd arg for enter or leave file. - - * out-m68k.c (output_btst): Handle COUNT bigger than size of unit. - - * cccp.c (CHECK_DEPTH): Macro to detect instack overflow. - (finclude, macroexpand, expand_to_temp_buffer): Use that. - - * cccp.c (rescan): Don't check for disabled macro if traditional. - (macroexpand): Don't disable macro if traditional. - - * sdbout.c (sdbout_one_type): Take out last change; assembler barfs. - - * c-parse.y (maybe_attribute): Eliminate #-syntaxes. - Make ATTRIBUTE the name for __attribute. - - * c-parse.gperf: Add __attribute{,__} and __signed{,__}. - * c-parse.y: Install results of that change. - - * Fix bug in sizeof ({...}). - * c-decl.c (poplevel): Set TREE_USED. Return the LET_STMT. - * c-parse.y (stmt-expr rule): Put the RTL_EXPR in the LET_STMT, - clear its TREE_USED, and use it as the result. - * expr.c (expand_expr): Allow LET_STMT as an expr. - Set its TREE_USED and expand the TREE_VALUE of its body. - * dbxout.c (dbxout_block): Ignore LET_STMT if TREE_USED not set. - * sdbout.c, symout.c: Likewise. - -Thu Jun 8 00:06:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * c-parse.y (yylex): Extend ERANGE-inhibitor for 0.0 - to 0.0e0 as well. - - * flow.c (life_analysis): Prevent allocation of regs live at setjmp - on certain machines. Controlled by LONGJMP_RESTORE_FROM_STACK. - Sets reg_live_length to -1. - * local-alloc.c (block_alloc): Be prepared for that. - * tm-vax.h (LONGJMP_RESTORE_FROM_STACK): Define it. - - * gnulib2.c (all interfaces): Declare args and values as long long, - and split them using unions. - - * loop.c (check_dbra_loop): Don't reverse loop if there are two - refs to varying addresses. Consider foo[i] = foo[i-1]. - (count_nonfixed_refs): Subroutine to count them. - - * cexp.y: Distinguish signed and unsigned. - An integer value is now represented by a struct. - All rules for arithmetic changed. - (yylex): Adapt to change in yylval data type. - - * limits.h (LONG_MIN): Make sure it's a signed long. - - * sdbout.c (sdbout_one_type): Output types of fields first, - if they are structs. Don't go through pointers. - (sdbout_field_types): Subroutine for that - -Wed Jun 7 13:00:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * fixincludes: Switch to /usr/include before doing vuid_event.h. - Use $2 as output directory for sed. - - * tm-i386.h (FUNCTION_PROFILER): Put counter address in %edx. - * tm-i386v.h (LIB_SPEC): Use -L/usr/lib/libp if profiling. - - * expr.c (expand_increment): Typo testing for BImode component. - - * convex changes from csmith: - * tm-convex.h: use EXTRA_SECTIONS to do .bss. - out-convex.c: set_section, align_section are now unused. - * convex.md: add pattern to pick an A-reg destination for sums - whose source involves a dedicated A reg (frame or arg pointer) - * convex.md: immediate and, or, xor instructions store a 32-bit - result. Fix instructions that assumed it was 64. - - * mips.md (probe): New pattern to create stack space. - - * Makefile (float.h): Ignore errors from hard-params. - Specify ./ to run it. - -Tue Jun 6 15:45:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) - - * out-tahoe.c: Rename `offsetable' to `offsettable'. - - * tahoe.md (nop): New pattern. - - * i386.md (umul...): Constrain operand 1 as `0', not `a'. - `a' sometimes wanted two a-regs for operands 0 and 1. - - * cccp.c: Forward-declare some structs. - - * c-decl.c: Rearrange fcn fwd decls and struct decls. - - * expr.c: Move some fcn fwd decls after structs their args use. - * genpeep.c, genextract.c: Likewise. - - * loop.c: Forward-declare some structs. - - * stmt.c: Move decls of structs before those of static functions. - - * loop.c (strength_reduce): Delete extra arg to check_eliminate_biv. - - * integrate.c (expand_inline_function): Supply missing arg - to convert_to_mode. - - * gcc.c (handle_braces): Supply missing arg to do_spec_1. - - * explow.c (lookup_static_chain): Accept a context arg. - - * expmed.c (store_split_bit_field): Pass ALIGN arg - to extract_fixed_bit_field. - - * expr.c (expand_assignment): Convert TYPE_ALIGN to bytes. - (store_constructor, expand_expr): Likewise. - - * 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. |