| 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 |
|