|
|
1.1 ! root 1: Thu May 10 22:48:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2: ! 3: * rtl.def (DEFINE_DELAY): Change description to describe annulling. ! 4: ! 5: * genattr.c (main): Write out definitions for annulling, if present. ! 6: ! 7: * genattrab.c (expand_delays): Build internal attributes for ! 8: which insns can be annulled in a delay slot. ! 9: (gen_delay): Validate number of elements in DEFINE_DELAY list. ! 10: (write_eligible_delay): Write out routines for validating annulled ! 11: insns as well as those in normal delay slot. ! 12: (main): Call write_eligible_delays to output annulling information, ! 13: if it exists for this machine. ! 14: ! 15: * out-m68k.c (not_sp_operand): New function. ! 16: * m68k.md (andsi3): Don't allow sp as ourput to avoid reload ! 17: inefficiency. ! 18: ! 19: * calls.c (struct arg_data): Delete field STORED; add fields ! 20: PASS_ON_STACK and SAVE_AREA. ! 21: (prepare_call_address): Static chain value can't have QUEUED. ! 22: (expand_call): Rework to support additional calling sequence options. ! 23: ! 24: Major changes include: ! 25: Call FUNCTION_ARG_PASS_BY_REFERENCE to determine whether an ! 26: object should be passed by invisible reference. ! 27: Handle arguments passed both on stack and in a register; this can be ! 28: used to allow arguments that are hard to compute directly into ! 29: registers to be passed. ! 30: Support option (ACCUMULATE_OUTGOING_ARGS) where the largest amount ! 31: of stack for outgoing arguments is computer and pushed during the ! 32: function prologue. Stack space usage is tracked and any location ! 33: that would need to be reused will be saved and restored. ! 34: If preallocating arg block, compute address where each arg will be ! 35: placed and pass it as target to expand_expr. ! 36: ! 37: Other changes: ! 38: Use virtual regs to see if structure value address isn't stable. ! 39: If inlined, return TARGET if TARGET and TEMP are equivalent. ! 40: UNNAMED_ARGS_IN_REGISTERS is redundant with the NAMED parameter to ! 41: FUNCTION_ARG and has been deleted. ! 42: Use virtual_outgoing_stack_rtx instead of FIRST_PARM_CALLER_OFFSET. ! 43: Use locate_and_pad_parm to compute any needed padding for argument. ! 44: If REG_PARM_STACK_SPACE is defined, allocate backing stack locations ! 45: for args passed in registers; these are not included in the length ! 46: of stack space required unless OUTGOING_REG_PARM_STACK_SPACE is also ! 47: defined. ! 48: When precomputing register parameters, can stop computation when we ! 49: obtain any rtx, not necessarily a register. ! 50: No longer need code to protect data written below bottom of stack; ! 51: this is taken care of by preexpanding calls in argument. ! 52: target_for_arg no longer needed; its function is performed by ! 53: store_one_arg. ! 54: Always copy function return result to our target since they cannot ! 55: possibly be the same. ! 56: (target_for_arg): No longer used. ! 57: (store_one_arg): Save and restore in-use argument list location. ! 58: Support args passed both in register and on stack. ! 59: No need for explicit code for preallocated area; now pass location ! 60: as target to expand_expr; only copy if result in different place. ! 61: Put sequence point after expanding one value. ! 62: ! 63: * cse.c (struct write_data): Add bit to indicate stack pointer changed. ! 64: (canon_hash): Allow recording of stack pointer. ! 65: (cse_insn): Indicate stack pointer invalidated by subroutine calls. ! 66: Pass stack push and pop operations to note_mem_written. ! 67: Process stack pointer assignment as normal operation. ! 68: Finish change of April 7th that excludes ap and fp from being marked ! 69: as clobbered by calls. Also exclude sp; if it is clobbered by a ! 70: call, an explicit CLOBBER will be written. ! 71: (note_mem_written): Look for adjustment of stack pointer. ! 72: (invalidate_from_clobbers): Invalidate stack pointer, if required. ! 73: ! 74: * emit-rtl.c (gen_inline_header_rtx): Add field for outgoing args size. ! 75: (copy_rtx_if_shared): Check for any virtual register instead of frame ! 76: or argument pointer. ! 77: (init_emit): Start normal pseudos after virtual pseudos. ! 78: Copy the unique virtual regs into regno_reg_rtx. ! 79: (init_emit_once): Incoming and outgoing static chain can be the same; ! 80: inlining of nested functions won't need the distinction. ! 81: Create unique copies of virtual registers. ! 82: ! 83: * explow.c (memory_address): Don't worry about refs to fp or ap; ! 84: force_reg knows how to handle them correctly. ! 85: (fix_lexical_addr): Moved to function.c ! 86: (adjust_stack, anti_adjust_stack): Do nothing for adjustment of zero. ! 87: (allocate_dynamic_stack_space): New function copied from ! 88: expand_builtin. Handle STACK_POINTER_OFFSET via ! 89: virtual_stack_dynamic_rtx. When STACK_POINTER_OFFSET is defined, ! 90: perform alignment by always reserving a multiple of STACK_BOUNDARY ! 91: stack bits. This avoids concern about whether sp itself or the top of ! 92: stack needs to be aligned; if we start with an aligned stack, we keep ! 93: it aligned. ! 94: (round_push): Use ADD and AND rather than DIV and MULT. ! 95: ! 96: * expr.c (init_expr): Initialize some more vars. ! 97: (push_block): Use virtual_outgoing_args_rtx so don't need ! 98: STACK_POINTER_OFFSET here. ! 99: Merge extra and size more efficiently; no need to call force_operand ! 100: since memory_address is called. ! 101: (emit_push_insn): Pass type for FUNCTION_ARG_PADDING. ! 102: Use REG_PARM_STACK_SPACE instead of FIRST_PARM_CALLER_OFFSET. ! 103: To see if must copy address, check if it is a virtual register that ! 104: will be mapped to sp; only need check if not accumulating space ! 105: space for outgoing parms. ! 106: Ignore EXTRA if argument block has already been allocated. ! 107: (emit_library_call): Major rework to support calling sequences similar ! 108: to expand_call in calls.c, but only support a very small subset of ! 109: the conventions; abort if something outside our subset occurs. ! 110: Abort if incorrect mode is passed; we can't convert here since we don't ! 111: know the signedness. ! 112: (store_field): Check for virtual registers instead of hard registers ! 113: when seeing if stable. ! 114: (safe_from_p): Location in outgoing stack area is known to be safe. ! 115: (expand_builtin, BUILT_IN_ALLOCA): Use allocate_dynamic_stack_space. ! 116: ! 117: * expr.h: Define current_function_outgoing_args_size and ! 118: locate_and_pad_parm; delete definition of get_structure_value_addr. ! 119: (ARGS_SIZE_RTX): Always return a valid operand. ! 120: (ARGS_SIZE_TREE): New macro. ! 121: (FUNCTION_ARG_PADDING): Accept MODE and TYPE like other ! 122: FUNCTION_ARG_... macros. ! 123: (FUNCTION_ARG_BOUNDARY): Provide default for new macro. ! 124: (MUST_PASS_IN_STACK): New macro. ! 125: (allocate_dynamic_stack_space): New function. ! 126: * tm-3b1.h, tm-3b1g.h, tm-apollo68.h, tm-crds.h, tm-mot3300.h: ! 127: Change definition of FUNCTION_ARG_PADDING to use TYPE instead of SIZE. ! 128: ! 129: * function.c (current_function_outgoing_args_size): New var. ! 130: (arg_pointer_save_area, virtuals_instantiated): Likewise. ! 131: (invalid_stack_slot): No longer used. ! 132: (push_function_context, pop_function_context): Save and restore ! 133: outgoing args size and arg pointer save area. ! 134: No longer save or restore invalid_stack_slot. ! 135: (pop_function_context): Set up variables whose value is constant ! 136: throughout rtl generation. ! 137: (get_frame_size): No longer adjust by STARTING_FRAME_OFFSET. ! 138: (assign_stack_local): Use virtual_stack_vars_rtx instead of fp ! 139: until virtuals have been instantiated, then use fp. ! 140: Remove reference to obsolete invalid_stack_slot. ! 141: Can no longer be called with size == 0. ! 142: (assign_outer_stack_loc): Use virtual_stack_vars_rtx instead of fp. ! 143: Remove references to obsolete invalid_stack_slot. ! 144: Push to obstack of containing function when allocating rtx. ! 145: (put_var_into_stack): Only switch obstacks around making of ! 146: queue entry. ! 147: Replace call to parm_stack_loc with reference to info in proper ! 148: function. ! 149: (fixup_stack_1): Handle any virtual register instead of handling ! 150: just fp. ! 151: (instantiate_virtual_regs, instantiate_virtual_regs_1): New functions. ! 152: (use_variable, use_variable_after): Check for virtual register ! 153: instead of checking against ap and fp. ! 154: (parm_stack_loc): Function deleted. ! 155: (assign_parms): No longer need internal_arg_pointer. ! 156: Accept SECOND_TIME argument that suppresses rtl generation and ! 157: assignments to DECL_RTL. Used by integrate.c to recompute vars. ! 158: Don't use FIRST_PARM_OFFSET here; use virtual_incoming_args_rtx. ! 159: Replace test for nonstable incoming arg pointer. ! 160: If structure value address is treated as the first argument, add ! 161: it into the list of arguments; this means we can have a RESULT_DECL ! 162: in with the PARM_DECL's. ! 163: DECL_OFFSET is no longer needed by integrate.c. ! 164: Handle args passed by invisible reference. ! 165: Support new macro, SETUP_INCOMING_VARARGS, to save all registers used ! 166: for args including and beyond those for the current arg. Used for ! 167: non-ANSI varargs. ! 168: Pass locate_and_pad_parm data it needs to handle reg->stack boundary ! 169: if register parameters have assigned stack space. ! 170: If we received the function's incoming structure pointer as a ! 171: normal argument, update DECL_RTL of DECL_RESULT. ! 172: Round total argument size if required; similarly, always use at ! 173: least REG_PARM_STACK_SPACE bytes if defined. ! 174: (locate_and_pad_parm): Do not need PARM. ! 175: Major rework to do much of the job of aligning and padding stack ! 176: location. Now a void function wich is passed pointers to struct ! 177: args_size vars that are set to the argument position, size, and ! 178: initial offset. ! 179: Accept flag denoting if a parm was passed in a register and also ! 180: the current function declaration. ! 181: If register parameters are assigned stack locations and there is a ! 182: minimum required size for the area assigned to register parameters, ! 183: pad the stack position when a parameter not assigned to a register ! 184: is encountered. ! 185: Remove redundant code in MAX_PARM_BOUNDARY case. ! 186: (lookup_static_chain): Use virtual_stack_vars_rtx instead of fp. ! 187: (fix_lexical_addr): Move from explow.c. ! 188: If referencing variable that lives in the incoming argument area ! 189: of its parent and a separate ap is required, allocate a save area in ! 190: the parent for it and use it here. If no separate ap is require, ! 191: compute offset between ap and fp. ! 192: (trampoline_address): No need to push obstacks here. ! 193: (init_function_start): Initialize new vars; delete obsolete vars. ! 194: (expand_function_start): Don't need to handle case where incoming ! 195: structure return address is passed as hidden parameter here; now done ! 196: completely in assign_parms. ! 197: (expand_function_end): Save ap if a save area was made for it. ! 198: Set REG_FUNCTION_VALUE_P when copying address of returned ! 199: structure. ! 200: Be consistent in use of FUNCTION_... macros vs. hard_function_value. ! 201: ! 202: * function.h (outgoing_args_size, arg_pointer_save_area): New fields. ! 203: (invalid_stack_slot): Obsolete, deleted. ! 204: ! 205: * integrate.c: Major rework and simplification. ! 206: Split up vars into two classes. Those used for expand_inline_function ! 207: and children are now part of struct inline_remap. Most of the others ! 208: are for save_for_inline and its children. ! 209: (function_cannot_inline_p): The only type of arguments that will ! 210: cause us to reject inlining are variable-sized arguments; also ! 211: reject functions that return variable-sized objects. ! 212: For now, don't inline a nested function. We'll support this shortly. ! 213: Use current_function_returns_pcc_struct instead of duplicating test. ! 214: (save_for_inline): No need to set TREE_VOLATILE for parms. ! 215: Save outgoing args size in header. ! 216: Use unique copy of virtual reg rtx's. ! 217: Handle any required fixups for INSN_LIST forward-references. ! 218: Don't bother resetting dead static vars when we are done. ! 219: Need not save current_function_pretend_args_size. ! 220: (copy_for_inline): First copy all insns, then all REG_NOTES to avoid ! 221: problems with forward references. ! 222: (struct inline_remap): Move all previously-static vars used by ! 223: expand_inline_function and children into this structure. This avoids ! 224: potential problems due to recursive calls to expand_inline_function. ! 225: (expand_inline_function and children): Allocate a struct inline_remap ! 226: and pass to all children. ! 227: (expand_inline_function): Rework parameter handling by looking at ! 228: DECL_RTL and using it to determine what types of mappings need to be ! 229: done. Support objects passed by invisible reference. Put any ! 230: constant memory addresses into const_equiv_map. parm_map is no longer ! 231: used. ! 232: Likewise for the return value: consult DECL_RTL (DECL_RESULT)). ! 233: Don't allocate space for called function's frame until referenced. ! 234: No longer need special handling for insn following CALL. ! 235: Ignore USE whose argument has REG_FUNCTION_VALUE_P true. ! 236: Ignore setting function register if we don't have a mapping for it ! 237: (e.g., we are ignoring the result of the call). ! 238: Look at new SET_SRC for constant equivalences. Some new ones may ! 239: have resulted from constant folding. ! 240: Pass both new and old rtx to try_constants. ! 241: Discard NOTE_INSN_DELETED notes. ! 242: Copy insns first, then REG_NOTES, to avoid problems with forward refs. ! 243: (copy_parm_decls): Compute new address of parameter using the ! 244: constant equivalence map, which will contain the remapping of ! 245: the frame and argument pointer. ! 246: (copy_decl_tree): Likewise. ! 247: (copy_rtx_and_substitute): Handle references to frame and argument ! 248: pointers by allocating a space equal to the size of the frame and ! 249: incoming arguments, respectively, and setting a pseudo to point to ! 250: the start of each area. Set up an equivalence in CONST_EQUIV_MAP ! 251: between fp or ap and the actual address. Return the pseudo. ! 252: Don't need to deal with possibility of (SUBREG (CONST_INT)) since ! 253: we are only replacing register with other registers here. ! 254: No longer need to special-case PLUS and MEM; subst_constants will do ! 255: this work. ! 256: Update detection of sets of ap and fp. ! 257: (try_constants, subst_constants): Accept old and new rtx. They will ! 258: be isomorphic, with only register numbers changed. Use old rtx to ! 259: look up register in CONST_EQUIV_MAP and new rtx for substitution. ! 260: Correctly handle SUBREG of CONST_INT and CONST_DOUBLE. ! 261: Fix typos in handling of PLUS. ! 262: (access_parm_map, copy_address): Delete functions. ! 263: (try_fold_cc0): Handle both compare and test. ! 264: (fold_out_cnst_cc0): Rework to simplify and remove dubious cases. ! 265: (output_inline_function): Call assign_parms to perform any needed ! 266: setups. ! 267: Need not restore pretend arg size (will be computed by assign_parms). ! 268: Restore outgoing argument size. ! 269: ! 270: * output.h (current_function_outgoing_args_size): New var. ! 271: ! 272: * rtl.h (OUTGOING_ARGS_SIZE): New field in INLINE_HEADER. ! 273: (PRETEND_ARGS_SIZE): No longer needed. ! 274: (virtual_..., VIRTUAL_...): Define virtual register numbers and rtx. ! 275: ! 276: * rtlanal.c (rtx_equal_p): Update comment on use of ! 277: REG_FUNCTION_VALUE_P. ! 278: ! 279: * stmt.c (expand_goto): Just restore fp; non-local goto handler ! 280: will restore ap if needed. ! 281: (expand_return): Don't use STARTING_FRAME_OFFSET here. ! 282: (expand_end_bindings): Adjust fp in nonlocal-goto handler. If needed, ! 283: reload ap from its save area in the frame; allocate save area if none. ! 284: (expand_decl): Use new function allocate_dynamic_stack_space. ! 285: ! 286: * toplev.c (rest_of_compilation): Instantiate virtual registers. ! 287: Clear rtx_equal_function_value_matters immediately after possibly ! 288: saving current routine for inlining. ! 289: ! 290: * stupid.c (stupid_life_analysis): Don't try to allocate virtual ! 291: registers (which don't exist any more). ! 292: ! 293: Thu May 10 13:59:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 294: ! 295: * reload1.c (modes_equiv_for_class_p): Don't compare HARD_REGNO_NREGS. ! 296: ! 297: * combine.c (subst): Simplify ! 298: (sign_extend:M (subreg:N (ashiftrt:M (sign_extend:M (any:N ...))))). ! 299: ! 300: * fixincludes: Verify that a link leads back to /usr/include ! 301: by checking name of dir it arrives in. If so, use rest of dirname ! 302: as target for new link. ! 303: ! 304: * Makefile.in (tmpgnulib): Put dummy entry in loop with LIBFUNCS_EXTRA ! 305: so loop is never null. Then ignore that entry when it comes up. ! 306: ! 307: * gcc.c (default_compilers): Add explicit suffix to arg of -dumpbase. ! 308: ! 309: Tue May 8 13:54:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 310: ! 311: * tm-ultrix.h: New file. ! 312: ! 313: Mon May 7 18:47:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 314: ! 315: * i386.md (test... recognizers): Output symbolic constant first. ! 316: ! 317: Sun May 6 22:51:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 318: ! 319: * function.c (fixup_memory_subreg): Make a sequence if -fforce-addr. ! 320: ! 321: * fixincludes: When going to directory of link name, don't lose ! 322: if name has no directory. ! 323: Move the code to fix netinet/ip.h; was in the middle of something. ! 324: ! 325: * Makefile.in (tmpgnulib): Test LIBFUNCS_EXTRA for nonempty. ! 326: ! 327: Sun May 6 08:29:27 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 328: ! 329: * Makefile.in (LIBFUNCS): Remove extraneous "\". ! 330: ! 331: * Makefile.in (stamp-gnulib2): Move "-" to proper line. ! 332: ! 333: * gnulib2.c (clear_cache): Ignore routine unless INSN_CACHE_SIZE ! 334: is defined (avoids cpp-detected divide-by-zero). ! 335: ! 336: * expr.c (safe_from_p): Don't blow up when passed a null tree. ! 337: ! 338: * varasm.c (get_pool_size): New function to return constant pool size. ! 339: ! 340: Fri May 4 16:11:54 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 341: ! 342: * expr.c (safe_from_p): If EXP has some rtx, just check it. ! 343: Handle TREE_LIST, RTL_EXPR, and WITH_CLEANUP_EXPR. ! 344: Note that CALL clobbers memory and hard registers. ! 345: Look at enclosed object for SUBREG, but SUBREG of a hard reg is unsafe. ! 346: ! 347: * expr.c (store_constructor): Now that safe_from_p has been applied ! 348: to the target, need not avoid hard register targets. ! 349: Abort if called with neither ARRAY_TYPE or RECORD_TYPE. ! 350: ! 351: * reload.c (find_equiv_reg): Handle goal of (plus (sp) (const)). ! 352: ! 353: * Makefile.in (STAGESTUFF): Include hard-params. ! 354: ! 355: Fri May 4 15:33:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 356: ! 357: * gcc.c (add_prefix): New arg WARN. Record in prefix_list. ! 358: (main): Calls changed. Pass nonzero for -B prefixes. ! 359: Later, call unused_prefix_warning. ! 360: (unused_prefix_warning): Warn about prefixes never used. ! 361: ! 362: Thu May 3 16:56:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 363: ! 364: * print-tree.c (print_node): Align the `align' line with the others. ! 365: ! 366: * expmed.c (store_bit_field): Maximum size for loading mem struct ! 367: into reg comes from the mode of the value to be stored. ! 368: Alignment is no restriction if it matches BIGGEST_ALIGNMENT. ! 369: Always do the real work in SImode if couldn't use MEM. ! 370: (extract_bit_field): Likewise. ! 371: ! 372: * combine.c (subst): Handle (sign_extend:M (subreg (sign_extract:M))) ! 373: on big-endian machine like corresponding zero_extend case. ! 374: ! 375: * combine.c (try_combine): Use rtl_equal_p instead of == when ! 376: testing for sources and destinations that match. ! 377: ! 378: * pyr.md (bitw recognizer): Set CC_NO_OVERFLOW. ! 379: ! 380: Thu May 3 13:03:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 381: ! 382: * expr.c (expand_expr, case COND_EXPR): Can always use original ! 383: target if specified. ! 384: In "X ? A + B : A" case, use safe_from_p to see if target conflicts ! 385: with B. ! 386: ! 387: * cse.c (cse_insn): Don't rewrite (set REG0 REG1) if REG1 is a hard ! 388: register even if is REG0 cheaper. ! 389: ! 390: Thu May 3 12:04:19 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 391: ! 392: * reload1.c (reload): Handle multiple size groups for one class. ! 393: ! 394: * stdarg.h: Typo in conditional. ! 395: ! 396: Wed May 2 16:34:25 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 397: ! 398: * tm-sun3.h (CC1_SPEC): Ignore -target. ! 399: (WORD_SWITCH_TAKES_ARG): Define it. ! 400: * tm-sparc.h (CC1_SPEC): Ignore -target and -dalign. ! 401: (WORD_SWITCH_TAKES_ARG): Define it. ! 402: ! 403: Wed May 2 09:38:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 404: ! 405: * cse.c (cse_insn): Always replace registers with oldest equivalent, ! 406: including the case when the destination is present in the source. ! 407: ! 408: Tue May 1 15:55:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 409: ! 410: * gnulib2.c (__adddi3, __subdi3): New, simpler algorithm. ! 411: ! 412: Tue May 1 14:48:03 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 413: ! 414: * Makefile.in: Insert "else true;" in *_ALLOCA macros. ! 415: ! 416: * stor-layout.c (mode_for_size): No longer static. ! 417: Accept LIMIT parameter to limit mode to MAX_FIXED_MODE_SIZE. ! 418: (layout_decl, layout_type): Pass appropriate limit parameter to ! 419: mode_for_size. ! 420: ! 421: Tue May 1 13:09:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 422: ! 423: * stmt.c (assign_parms): Don't make entry_parm and stack_parm valid. ! 424: Leave them explicit stack slots. ! 425: * explow.c (validize_mem): Copy it, don't alter it. ! 426: ! 427: * out-m68k.c (standard_68881_constant_p): Handle HOST_WORDS_BIG_ENDIAN. ! 428: ! 429: * integrate.c (save_for_inline): Copy reg notes after all insns. ! 430: ! 431: * combine.c (subst): When checking reg_last_set, verify nonzero. ! 432: ! 433: * gcc.c (default_compilers): Use %b, not %i, after -dumpbase. ! 434: ! 435: * stor-layout.c (make_unsigned_type): Change like make_signed_type. ! 436: ! 437: Tue May 1 07:36:21 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 438: ! 439: * tm-m68k.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Allocate space ! 440: for local variables even if no frame pointer; adjust size to account ! 441: for place where old frame pointer would have been placed. ! 442: (INITAL_FRAME_POINTER_OFFSET): Add frame size instead of subtracting ! 443: it and perform adjustment described above. ! 444: ! 445: * expr.c (validate_subtarget): Deleted. ! 446: (expand_expr): Replace calls to validate_subtarget with safe_from_p. ! 447: ! 448: Mon Apr 30 01:39:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 449: ! 450: * Makefile.in (install-headers): Simplify loop by cd'ing to srcdir. ! 451: ! 452: * stor-layout.c (layout_type): Get alignment of all scalar types ! 453: from the mode. ! 454: (make_signed_type): Get rid of ptr_size_node, function_size_node. ! 455: * tm-*.h (POINTER_BOUNDARY): Deleted. ! 456: ! 457: * c-typeck.c (build_unary_op): For ADDR_EXPR of COMPONENT_REF, ! 458: mark the PLUS_EXPR constant if appropriate. ! 459: (parser_build_binary_op): Record C_SET_EXP_ORIGINAL_CODE here. ! 460: (build_binary_op): Not here. ! 461: ! 462: * fold-const.c (size_int): Make arg unsigned. ! 463: ! 464: * varasm.c (output_addressed_constants): Fixed typo. ! 465: ! 466: * cccp.c (macarg1): `\' not special outside strings. ! 467: ! 468: * c-typeck.c (build_unary_op): In increment ops, ! 469: typo checking for ptr to void/function. ! 470: Check original type for this and for amount of increment. ! 471: ! 472: Sat Apr 28 16:43:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 473: ! 474: * c-typeck.c (build_indirect_ref): Error if target is incomplete type. ! 475: ! 476: Fri Apr 27 13:56:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 477: ! 478: * reload1.c (order_regs_for_reload): Count multi-word pseudos right. ! 479: ! 480: Thu Apr 26 17:52:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 481: ! 482: * cccp.c (handle_directive): Don't pass directive through if no_output. ! 483: ! 484: * c-parse.y (yylex): Large hex constants are signed if -traditional. ! 485: ! 486: Tue Apr 24 13:57:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 487: ! 488: * i860.md, m88k.md: Add missing = in some output constraints. ! 489: ! 490: * tm-ns32k.h (POINTER_BOUNDARY): Now 32. ! 491: ! 492: * out-*.c (output_move_double): Use split_double. ! 493: * final.c (split_double): New function, handles byte-order differences. ! 494: ! 495: * stmt.c (expand_decl): Check size for integer, not "constant". ! 496: * stor-layout.c (layout_decl, layout_type): Likewise. ! 497: * c-decl.c (finish_decl): Likewise. ! 498: * c-typeck.c (digest_init): Likewise. ! 499: * varasm.c (assemble_variable, output_constructor): Likewise. ! 500: (decode_addr_const): Distinguish getting rtl by code alone. ! 501: (output_addressed_constants): No need to abort. ! 502: In ADDR_EXPR case, check TREE_CODE_CLASS. ! 503: ! 504: * c-tree.h (C_DECLARED_LABEL_FLAG): New flag. ! 505: * c-parse.y (label declarations): Set it. ! 506: * c-decl.c (pop_label_level, lookup_label): Use it. ! 507: ! 508: * expr.c (string_constant): Accept variable offsets. ! 509: (expand_expr): Check for explicit integers, not constants, in sizes. ! 510: (safe_from_p): No need to check TREE_CONSTANT. ! 511: ! 512: * Makefile.in (prefix): Now replaces /usr/local instead of adding on. ! 513: ! 514: Mon Apr 23 02:01:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 515: ! 516: * cplus-tree.h (DECL_FRIENDLIST): Use DECL_INITIAL. ! 517: ! 518: * expr.c (expand_assignment): Use expr_size to compute size. ! 519: ! 520: Sun Apr 22 21:53:55 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 521: ! 522: * expr.c (expand_assignment, expand_expr): Check for COMPONENT_REF ! 523: before testing DECL_BIT_FIELD. ! 524: ! 525: * stor-layout.c (convert_units): Deleted. All calls eliminated. ! 526: ! 527: * TREE_CONSTANT renamed from TREE_LITERAL. ! 528: * TYPE_READONLY split off from TREE_READONLY. ! 529: * TREE_SIDE_EFFECTS renamed from TREE_VOLATILE. ! 530: * TYPE_VOLATILE split off from TREE_VOLATILE/TREE_THIS_VOLATILE. ! 531: ! 532: Sun Apr 22 15:26:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 533: ! 534: * loop.c (strength_reduce): Avoid problems in biv elimination by not ! 535: being forced to use giv's that have complex new_reg values while the ! 536: underlying giv is marked maybe_dead; clear maybe_dead in this case. ! 537: ! 538: * loop.c: Make verification of loops take linear, not quadratic, time. ! 539: (verify_loop, can_jump_in_range_p): Deleted. ! 540: (prescan_loop): New function, contents are from old verify_loop. ! 541: (scan_loop): Call prescan_loop. ! 542: (find_and_verify_loops, mark_loop_jump): New functions. ! 543: (loop_optimize): Allocate new tables and call find_and_verify_loops ! 544: once instead of calling verify_loop for each loop. ! 545: Use data from find_and_verify_loops instead of scanning all insns. ! 546: ! 547: * expr.c (safe_from_p): New function. ! 548: (validate_subtarget): Use safe_from_p. ! 549: (expand_expr, case CONSTRUCTOR): Likewise. ! 550: ! 551: * expr.c (store_expr): Handle cases where EXP is a compound ! 552: or conditional expression specially to avoid unnecessary temporaries. ! 553: ! 554: Sun Apr 22 00:15:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 555: ! 556: * tree.h (struct tree_type): Delete size_unit. ! 557: (struct tree_decl): Delete size_unit and voffset_unit. ! 558: Reduce lang_flags to save 1 word. ! 559: ! 560: * function.c (init_function_start): Don't use DECL_RESULT_TYPE. ! 561: * integrate.c (expand_inline_function): Likewise. ! 562: * c-decl.c (start_function, duplicate_decls): Likewise. ! 563: * tree.h (struct tree_decl): Delete voffset. ! 564: (DECL_RESULT_TYPE): Deleted. ! 565: ! 566: * objc-actions.c (encode_field_decl, objc_copy_list): ! 567: Switch to DECL_FRAME_SIZE. ! 568: * cplus-class.c (finish_struct): Likewise. ! 569: * cplus-decl2.c (grokbitfield): Switch to DECL_BIT_FIELD. ! 570: * c-parse.y, cplus-parse.y, objc-parse.y: Likewise. ! 571: ! 572: * tree.h (TYPE_NO_FORCE_BLK): New flag in types. ! 573: * stor-layout.c (layout_type): Use it. ! 574: * tree.h (DECL_TOO_LATE): New flag. ! 575: * stmt.c (expand_end_bindings, expand_goto_internal): Use it. ! 576: * tree.h (TREE_PACKED): Deleted. ! 577: ! 578: * cplus-typeck.c (unary_complex_lvalue): Confusing use of ! 579: DECL_SIZE_UNIT; not clear what to do. ! 580: * cplus-tree.c (layout_vbasetypes): Likewise. ! 581: * cplus-class.c (modify_vtable_entry): Likewise. ! 582: ! 583: * cplus-parse.y (YYDEBUG): Force it on. ! 584: (print_parse_statistics, init_parse): No-op if not YYDEBUG. ! 585: ! 586: * fold-const.c (fold): REAL_INFINITY affects reals, not ints. ! 587: ! 588: * protoize.c (edit_fn_declaration): Make arg volatile to stop warning. ! 589: ! 590: Sat Apr 21 03:04:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 591: ! 592: * expmed.c (store_bit_fields): Adjust for elimination of BImode. ! 593: ! 594: * c-parse.y (simple_if, stmt): Store stmt_count in proper place, ! 595: which is slot 1 of the if. ! 596: (simple_if, lineno_stmt, stmt): Output the note at beginning of ! 597: stmt, not in lineno_stmt. Use emit_line_note. ! 598: (simple_if): Set if_stmt_*, then use lineno_stmt directly. ! 599: (lineno_stmt): Before most uses, call skip_white_space. ! 600: (finput): Move to top of file. ! 601: ! 602: * cplus-class.c (build_instantiated_decl): Fix typo. ! 603: ! 604: * cplus-tree.h (C_TYPE_FIELDS_READONLY): Use lang_flag_1. ! 605: (TYPE_HAS_CONSTRUCTOR, TYPE_HAS_DESTRUCTOR, TYPE_NEEDS_CONSTRUCTOR): ! 606: (TYPE_NEEDS_DESTRUCTOR): Advance each to next lang_flag. ! 607: * tree.h (TREE_LANG_FLAG_5, TREE_LANG_FLAG_6): Define them. ! 608: ! 609: * config.gcc: Delete ./Makefile.in iff not in the source dir. ! 610: ! 611: * Makefile.in (for-bootstrap): New target. ! 612: ! 613: * dbxout.c (dbxout_finish_symbol, dbxout_type, dbxout_prepare_symbol): ! 614: Add temporary conditionals on WINNING_GDB. ! 615: ! 616: * print-tree.c (print_node): Print the TYPE_SYMTAB_ADDRESS. ! 617: ! 618: * Makefile.in (protoize.o, unprotoize.o, SYSCALLS.c.X): ! 619: Include from or look in dir $(srcdir). ! 620: ! 621: Fri Apr 20 16:30:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 622: ! 623: * varasm.c (output_constructor): Backward test for bit-field. ! 624: ! 625: * Makefile.in (stamp-*): Delete .c or .h from these names. ! 626: ! 627: Fri Apr 20 15:56:21 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 628: ! 629: * cplus-typeck.c (compparms, comp_target_parms, build_modify_expr_1): ! 630: (build_modify_expr): Clean parens in complicated if. ! 631: * cplus-decl.c (finish_decl, grokdeclarator): Likewise. ! 632: ! 633: Fri Apr 20 14:42:36 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 634: ! 635: * tm-3b1.h (ASM_SPEC, PRINT_OPERAND_ADDRESS): Support 68020, 68881. ! 636: Useful even though this isn't one. ! 637: (ASM_OUTPUT_OPCODE): Convert fbne to fbneq. Don't change ftst. ! 638: (REGISTER_NAMES): Define it. Fpreg names not same as hp. ! 639: ! 640: * stor-layout.c (mode_for_size): Don't check MAX_FIXED_MODE_SIZE. ! 641: (layout_type): Check it here when appropriate. ! 642: ! 643: * loop.c (strength_reduce): Clean parens in complicated if. ! 644: ! 645: * fold-const.c (mul_double, const_binop): Add parens around shifts. ! 646: ! 647: Thu Apr 19 03:03:39 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 648: ! 649: * machmode.def: Delete unused modes. ! 650: ! 651: * stor-layout.c (mode_for_size): Accepts mode class as arg. ! 652: Calls changed. ! 653: (layout_type): Can now use mode_for_size for floating types. ! 654: ! 655: * stor-layout.c (layout_type): Get mode of function type from size. ! 656: * c-decl.c, cplus-decl.c (grokdeclarator): Don't worry about ! 657: mode of a function type. ! 658: * calls.c (prepare_call_address): No values contain static chains. ! 659: ! 660: * tree.h (struct tree_decl, struct tree_common): Rename the flag bits. ! 661: * cplus-tree.h: References here changed. ! 662: ! 663: * tree.h (DECL_BIT_FIELD): New macro, with new flag. ! 664: * print-tree.c: Print it. ! 665: * stor-layout.c (layout_decl): Use on input instead of TREE_PACKED. ! 666: Clear it if field happens to be aligned. ! 667: * expr.c, tree.c, varasm.c, symout.c, objc-actions.c, c-typeck.c: ! 668: Use this to distinguish bit-fields. ! 669: * c-decl.c, cplus-class.c (finish_struct): Set this for bit-fields. ! 670: ! 671: * c-typeck.c (build_binary_op): Make NON_LVALUE_EXPR, not NOP_EXPR. ! 672: ! 673: * out-sparc.c (find_addr_reg): Avoid using frame pointer. ! 674: ! 675: * config.gcc: Delete all formfeeds from Makefile. ! 676: ! 677: * stor-layout.c (layout_decl): Delete `bitsize'. ! 678: (layout_record): Test size for CONST_INT, not TREE_LITERAL. ! 679: (layout_type): Simplify array case. ! 680: ! 681: * fold-const.c (size_binop): Division not special case. ! 682: ! 683: Wed Apr 18 16:05:23 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 684: ! 685: * c-typeck.c (datatype): Function deleted. ! 686: (build_binary_op_nodefault, pointer_int_sum, pointer_diff): ! 687: Don't use it. ! 688: * cplus-typeck.c (build_binary_op_nodefault, pointer_int_sum): ! 689: (pointer_diff): Likewise. ! 690: (convert_for_assignment): Likewise. Took some work. ! 691: (datatype): Function deleted. ! 692: ! 693: * c-typeck.c (common_type): Renamed from commontype. ! 694: (function_types_compatible_p): New function. ! 695: (compparms): Deleted. ! 696: (self_promoting_args_p): Renamed from compparms1. ! 697: * cplus-typeck.c (common_type, self_promoting_args_p): Likewise. ! 698: * c-typeck.c (build_function_call): Eliminate local value_type. ! 699: ! 700: * c-typeck.c (parser_build_binary_op): Detect +/- within boolean. ! 701: ! 702: * c-typeck.c (convert_arguments): Renamed from actualparameterlist. ! 703: Push results on front, and reverse at end. ! 704: * cplus-typeck.c: Likewise. All calls changed. ! 705: ! 706: * tree.h (STMT_BIND_SIZE): Deleted. ! 707: (struct tree_bind_stmt): Deleted that slot. ! 708: * tree.c (build_let_stmt): Don't set it. ! 709: ! 710: * print-tree.c (print_node): Call print_lang_identifier. ! 711: * c-decl.c, cplus-ptree.c (print_lang_identifier): New function. ! 712: ! 713: * gnulib2.c (__clear_cache): New function. ! 714: ! 715: Tue Apr 17 16:57:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 716: ! 717: * cplus-tree.c (build_member_type): Use TYPE_HASH, not TREE_UID. ! 718: (TYPE_HASH): Use the address. Delete the duplicate definition. ! 719: ! 720: * c-typeck.c (build_unary_op): Bug in pedantic warning about ++. ! 721: ! 722: * tree.h (TYPE_SEP, TYPE_SEP_UNIT): Deleted. ! 723: * stor-layout.c (layout_type): Don't set them. ! 724: (mode_for_size): New name for agg_mode; code cleaned up. ! 725: * c-tree.h (C_TYPE_FIELDS_READONLY): Use TREE_LANG_FLAG_1. ! 726: ! 727: * fold-const.c (size_int, size_binop): New names for build_int ! 728: and genop, moved here. All callers changed. ! 729: (const_binop): New name for combine, and now static. ! 730: * stmt.c (expand_end_case, group_case_nodes, node_has_low_bound): ! 731: (node_has_high_bound): Don't call `combine' directly. ! 732: ! 733: * tree.h (DECL_VOFFSET, DECL_VOFFSET_UNIT): Deleted. ! 734: * tree.c (staticp): Don't use DECL_VOFFSET. ! 735: * stor-layout.c (layout_*): Don't use it or set it. ! 736: (layout_record): Simplify: Keep all sizes in units of 1. ! 737: ! 738: * tree.c (debug_tree, print_node, print_node_brief, indent_to): ! 739: New functions to print a tree. ! 740: * c-decl.c (print_lang_decl, print_lang_type): Define as no-op. ! 741: * cplus-ptree.c (print_lang_type): Complete rewrite. ! 742: Most other functions deleted. ! 743: * tree.c (print_node): Call print_lang_* unconditionally. ! 744: ! 745: * tree.c (TYPE_HASH): Now use the address. ! 746: ! 747: Mon Apr 16 16:27:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 748: ! 749: * final.c: Check LEAF_REGISTERS, not LEAF_REGS. ! 750: ! 751: * real.h (*_FLOAT_FORMAT): Change enums to macros. ! 752: (REAL_INFINITY): Define it if IEEE format. ! 753: ! 754: * c-decl.c (c_decode_options): Handle -Wconversion here. ! 755: * toplev.c (main): Not here. ! 756: ! 757: * tm-*.h (INITIAL_FRAME_POINTER_OFFSET): Count get_frame_size. ! 758: ! 759: Mon Apr 16 15:05:49 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 760: ! 761: * loop.c (eliminate_biv): Build COMPARE with VOIDmode, not mode ! 762: of operands. ! 763: ! 764: Mon Apr 16 14:55:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 765: ! 766: * jump.c: Include real.h. ! 767: ! 768: Sun Apr 15 20:30:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 769: ! 770: * c-typeck.c (pedantic_lvalue_warning): New function. ! 771: (build_component_ref): Handle COMPOUND_VALUE and COND_EXPR by moving ! 772: reference inside it and calling pedantic_lvalue_warning. ! 773: (build_unary_op): Incrementing a cast-expression is warning, not ! 774: error; call new pedantic_lvalue_warning. ! 775: (unary_complex_lvalue): Use of compound or conditional expression as ! 776: lvalue is warning, not error. ! 777: (build_modify_expr): Likewise. ! 778: * cplus-typeck.c: Likewise. ! 779: ! 780: Sun Apr 15 12:27:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 781: ! 782: * cse.c (fold_rtx, fold_cc0): Check TARGET_FLOAT_FORMAT, ! 783: not FLOAT_NOT_IEEE. ! 784: * jump.c (jump_back_p): Likewise. FLOAT_NOT_IEEE is now gone. ! 785: ! 786: * cccp.c (collect_expansion): Handle warn_stringify. ! 787: (main): Set it for -Wtraditional. ! 788: ! 789: * function.c (init_function_start): ! 790: Set current_function_returns_pointer here. ! 791: (expand_function_start): Not here. ! 792: ! 793: * expr.c (emit_library_call): Precompute reg and partial of all parms, ! 794: to do it in proper order. ! 795: ! 796: * final.c (final_scan_insn): Typo in deleting obvious no-ops. ! 797: ! 798: * expr.c (emit_push_insn): Change #if to ordinary if. ! 799: ! 800: Sat Apr 14 13:20:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 801: ! 802: * expr.c (do_jump): In COMPONENT_REF, check TYPE is nonzero. ! 803: ! 804: * tm-i386.h (ASM_OUTPUT_ADDR_DIFF_ELT): Delete spurious `abort ()'. ! 805: ! 806: * emit-rtl.c (reverse_comparison): New function. ! 807: (get_last_insn_anywhere): New function. ! 808: * i386.md (ble, blt): New define_expands. ! 809: ! 810: * Makefile.in (LANGUAGES): New parameter chooses languages to build. ! 811: (native): Use that. ! 812: (c, c++, objc): Targets for use in LANGUAGES. ! 813: ! 814: * Makefile.in (install): Split up. ! 815: (install-cross, install-headers, install-gnulib, install-proto): ! 816: (install-man, $(libsubdir)): New targets. ! 817: ! 818: * Makefile.in (native): New target, split from start.encap. ! 819: (tmpgnulib): Split out from gnulib.portable. ! 820: (gnulib.convert): Makes tmpgnulib, then converts. ! 821: (LIBCONVERT): New parameter. ! 822: (GCC_FOR_TARGET): New parameter. ! 823: (hard-params.o, hard-params, stamp-gnulib2): Use that. ! 824: ! 825: * cse.c (fold_cc0): Compare equivalence classes of non-constants. ! 826: Waiting for papers from Steven McCanne. ! 827: ! 828: Fri Apr 13 14:12:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 829: ! 830: * stor-layout.c (layout_type): If record is BLKmode because not ! 831: aligned, set TREE_PACKED. Don't force BLKmode due to field ! 832: with TREE_PACKED. ! 833: ! 834: * cse.c (fold_rtx): Use dconst1, not atof. ! 835: * varasm.c (output_constant): Likewise. ! 836: ! 837: * c-parse.y (yylex): Handle SIGFPE in atof. ! 838: ! 839: * tm-tti68k.h: New file. ! 840: ! 841: * toplev.c, flags.h (flag_pretend_float): New flag. ! 842: ! 843: * regclass.c (reg_class_record): Handle `E' constraint, for float ! 844: constants but only if can examine their bits. ! 845: * reload.c (find_reloads): Likewise. ! 846: * recog.c (constrain_operands): Likewise. ! 847: * out-m68k.c (output_move_double): Abort on float constant ! 848: if can't examine the bits. ! 849: (standard_68881_constant_p): Fail if can't examine the bits. ! 850: (standard_sun_fpa_constant_p): Likewise. ! 851: ! 852: * m68k.md (DFmode move recognizers): Use `E', not `F'. ! 853: * tm-m68k.h (PREFERRED_RELOAD_CLASS): Handle float constants. ! 854: ! 855: * tm-next.h (ASM_OUTPUT_FLOAT, ASM_OUTPUT_FLOAT_OPERAND): ! 856: (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_DOUBLE_OPERAND): Use REAL_VALUE_ISINF. ! 857: * tm-sun3.h, tm-sparc.h: Likewise. ! 858: ! 859: * xm-vax.h (HOST_FLOAT_FORMAT): Define it. ! 860: * tm-vax.h (TARGET_FLOAT_FORMAT): Define it. ! 861: ! 862: * real.h (enum float_format): Define codes for formats. ! 863: (HOST_FLOAT_FORMAT, TARGET_FLOAT_FORMAT): New macros, defaulted here. ! 864: (REAL_IS_NOT_DOUBLE, REAL_VALUE_TYPE): Override if formats differ. ! 865: (REAL_VALUE_ISINF): New macro. ! 866: * xm-vax.h (isinf): Define as macro. ! 867: ! 868: * Makefile.in (LIBFUNCS_EXTRA): New variable. ! 869: (gnulib.portable): Compile those files. ! 870: ! 871: * Makefile.in (AUX_OUTPUT2): New variable. ! 872: (OBJS): Use it. ! 873: (aux-output2.o): New target. ! 874: ! 875: * Makefile.in (RANLIB, RANLIB_TEST): New variables. ! 876: ! 877: * Makefile.in (AR_FLAGS, OLDAR_FLAGS): New variables. ! 878: (gnulib.portable, stamp-gnulib2): Use them. ! 879: ! 880: * i386.md: Add patterns for `bt' insns. ! 881: ! 882: Fri Apr 13 12:54:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 883: ! 884: * c-decl.c (builtin_function): Now returns decl that was made. ! 885: ! 886: * config.gcc: Support both -host= and +host=. ! 887: ! 888: Thu Apr 12 22:39:10 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 889: ! 890: * Changes from Data General. ! 891: ! 892: * syms.h: New file. ! 893: * sdbout.c: Include that if not USG. ! 894: ! 895: * tree.h (enum built_in_function): Added BUILT_IN_STRCPY and ! 896: BUILT_IN_STRCMP. ! 897: * c-decl.c (init_decl_processing): Create additional pointer and ! 898: function types. Declare strcpy, strcmp, memcpy, memcmp built-in. ! 899: * expr.c (expand_builtin): Support strcpy, strcmp, memcpy, memcmp. ! 900: If special handler breaks out of switch, do library call. ! 901: By default, print error message and do library call. ! 902: (get_pointer_alignment, string_constant): New functions. ! 903: ! 904: * dbranch.c: Put entire contents in conditional on HAVE_DELAYED_BRANCH. ! 905: (init_flags, enote): Clear and set memr. ! 906: (enote): Don't move a store across a fetch. ! 907: (insn_eligible_p): Check enote before volatility and dependencies. ! 908: Check for volatility if memw or memr. ! 909: (loads_from_mem_p): New function. ! 910: ! 911: * Makefile.in (dbranch.o): New target. ! 912: (OBJS): Add dbranch.o. ! 913: ! 914: Thu Apr 12 22:39:10 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 915: ! 916: * calls.c (expand_call): Count args in order written, with argpos. ! 917: ! 918: Thu Apr 12 22:01:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 919: ! 920: * expmed.c (synth_mult): Ensure OPS is always valid in returned alg. ! 921: ! 922: * local-alloc.c (block_alloc): If we have an operand that is an ! 923: address, look inside it for registers to combine with. ! 924: ! 925: * reload.c (combine_reloads): If the output reload is for an ! 926: earlyclobber operand, can't combine it. ! 927: Try to use a register that dies in an insn for a single output reload ! 928: if the insn has only one output. ! 929: ! 930: Thu Apr 12 21:27:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 931: ! 932: * c-decl.c (duplicate_decls): Preserve DECL_INITIAL from old ! 933: function def to new one. ! 934: ! 935: Thu Apr 12 07:55:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 936: ! 937: * expr.c (expand_assignment): Order of source and destination to ! 938: bcopy/memcpy was reversed. ! 939: ! 940: Wed Apr 11 17:29:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 941: ! 942: * tm-i386.h (ABC_REGS): New register class. ! 943: (REG_CLASS_CONTENTS, REG_CLASS_NAMES, enum reg_class): Changed. ! 944: * i386.md (divsi3, etc.): Exclude register d from constraints. ! 945: ! 946: * c-parse.y (save_filename, save_lineno): New nonterminals ! 947: to record text location at start of statement. ! 948: (lineno_stmt): New nonterminal, outputs line note before statement. ! 949: (lineno_decl): Likewise for decl, to avoid conflicts. ! 950: (stmt): Don't emit line notes at start of statement. ! 951: (simple_if): Collect file and line using save_filename, save_lineno. ! 952: ! 953: * Changes from Data General. ! 954: ! 955: * cccp.c (main, do_include): Implement -H to print header names. ! 956: ! 957: * c-parse.y (component_decl_list): Parse even if final `;' missing. ! 958: ! 959: Wed Apr 11 16:49:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 960: ! 961: * gcc.c: Fix miscellaneous typos. ! 962: ! 963: Wed Apr 11 12:59:57 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 964: ! 965: * config.gcc: Typos in setting pass1done, testing it, ! 966: and calling sed for usage msg. ! 967: ! 968: * cccp.c (macroexpand): Count Newline Space as part of whitespace ! 969: sequence when stringifying. ! 970: ! 971: * expmed.c (expand_mult): Handle synth_mult returning no operations. ! 972: ! 973: Tue Apr 10 21:08:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 974: ! 975: * cccp.c (do_line): No error if string follows number without space. ! 976: ! 977: Tue Apr 10 20:52:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 978: ! 979: * recog.c (apply_change_group): Return a zero if rejected changes. ! 980: ! 981: * loop.c (update_giv_derive): If a giv is only set conditionally, it ! 982: may only derive other givs in its own basic block. ! 983: ! 984: Tue Apr 10 13:09:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 985: ! 986: * tm-ctix.h: New file. Waiting for papers from Ronald Cole. ! 987: [email protected]. ! 988: ! 989: * cse.c (rtx_cost): Use new macro RTX_COSTS. ! 990: (COSTS_N_INSNS): New macro for use in RTX_COSTS. ! 991: ! 992: * config.gcc: Fix typos in conditionals and case. Also usage message. ! 993: Missing backslashes in `echo | tee'. ! 994: Unset various vars after pass 1. ! 995: ! 996: * c-typeck.c (build_c_cast): Complain if function type specified. ! 997: ! 998: * expmed.c (synth_mult): Accept max_cost as arg and cut off there. ! 999: Pass it along recursively, making it smaller. ! 1000: Eliminate quadratic loop, thus postponing powers of 2. ! 1001: Costs are now signed. Initialize best_alg->cost from max_cost ! 1002: and change to -1 only before returning. ! 1003: (expand_mult): Pass cost of multiply as max cost. ! 1004: Use synth_mult only if optimizing. ! 1005: In alg_compound case, sign was backward. ! 1006: Use TEM as target for force_operand there, to get better output. ! 1007: ! 1008: Tue Apr 10 07:09:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1009: ! 1010: * expr.c (expand_expr, case COND_EXPR): Add missing argument to ! 1011: operand_equal_p. ! 1012: Check for (X ? unop A : A) in addition to (X ? A + B : A). ! 1013: ! 1014: * Makefile.in (protoize, unprotoize): Compile with GCC, not just link. ! 1015: ! 1016: * fold-const.c (fold): Fix typo in converting conditional to COND. ! 1017: ! 1018: * expr.c (expand_expr): Treat (A ? 1 : 0) as A when A is a comparison. ! 1019: (do_jump): Special-case (A ? 1 : 0) and (A ? 0 : 1). ! 1020: ! 1021: * expr.c (store_expr): Fix typo in checking mode of target. ! 1022: ! 1023: Mon Apr 9 18:33:55 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1024: ! 1025: * integrate.c (expand_inline_function): Clear out parm_copies. ! 1026: ! 1027: Mon Apr 9 18:00:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1028: ! 1029: * tree.def: SAVE_EXPR now has three operands. ! 1030: * tree.h: Add new field SAVE_EXPR_CONTEXT; SAVE_EXPR_RTL remains last. ! 1031: * tree.c (save_expr): Set context to current function. ! 1032: (decl_function_context): Context is in SAVE_EXPR_CONTEXT if SAVE_EXPR. ! 1033: * calls.c (expand_call): Call make_tree to build an RTL_EXPR instead ! 1034: of explicitly making SAVE_EXPR. ! 1035: * cplus-typeck.c (c_expand_return): Use make_tree instead of SAVE_EXPR. ! 1036: * c-parse.y, objc-parse.y: Don't call mark_addressable here. ! 1037: * expr.c (expand_expr, ..._DECL cases): If non-local, make addressable. ! 1038: (expand_expr, case SAVE_EXPR): If defined in containing function, put ! 1039: put into stack. ! 1040: * function.c (put_var_into_stack): Use SAVE_EXPR_RTL for SAVE_EXPR. ! 1041: * print-tree.c (dump): SAVE_EXPR_RTL is now third operand. ! 1042: * stmt.c (expand_asm_operands): Call save_expr instead of making ! 1043: tree node directly. ! 1044: ! 1045: Mon Apr 9 00:08:15 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1046: ! 1047: * Makefile.in (install): Turn off x bit on SYSCALLS.c.X. ! 1048: ! 1049: * i860.md (cmpeqsf, etc.): Change opcode name to pfeq.ss, etc. ! 1050: ! 1051: * tm-m68k.h (PRINT_OPERAND_PRINT_FLOAT): Delete spurious backslash. ! 1052: ! 1053: * c-decl.c (store_parm_decls): Don't do storedecls in prototype case. ! 1054: That was discarding the enumerators already pushdecl'd. ! 1055: ! 1056: * gcc.c (exec_prefix, startfile_prefix): Record prefix search paths. ! 1057: (find_a_file): New function to search a path. ! 1058: (find_exec_file): Deleted; find_a_file used instead. ! 1059: (find_file): Just call find_a_file. ! 1060: (add_prefix): Add name to a prefix path. ! 1061: (process_command): Call that. ! 1062: ! 1063: * gcc.c (spec_list): Generalize asm_spec, etc., to arbitrary names. ! 1064: (set_spec): New function. Set the old specific vars and spec list. ! 1065: (do_spec_1): Handle `%(' and `%[' for general specs. ! 1066: ! 1067: * ns32k.md (ashlhi3): Use %0, not %1. ! 1068: ! 1069: * cplus-tree.h (TREE_ANON_UNION_ELEM, DECL_ANON_UNION_ELEM): ! 1070: regdecl_attr is now in decl, not common. ! 1071: (TREE_PARMLIST): Use external_attr. ! 1072: (TREE_VIA_PUBLIC): Use static_attr. ! 1073: ! 1074: Sun Apr 8 23:43:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1075: ! 1076: * fold-const (fold): Two conversions in a row are needed if from a ! 1077: pointer type to an integer type of a different precision. ! 1078: ! 1079: * flow.c (mark_used_regs): When replacing addition with register ! 1080: in auto-increment creation, mark that insn must be re-recognized. ! 1081: ! 1082: Sun Apr 8 13:56:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1083: ! 1084: * tm-m68k.h (ASM_OUTPUT_FLOAT): Defn depends on CROSS_COMPILER. ! 1085: (PRINT_OPERAND): Depends on CROSS_COMPILER and HOST_WORDS_BIG_ENDIAN. ! 1086: (PRINT_OPERAND_EXTRACT_FLOAT, PRINT_OPERAND_PRINT_FLOAT): ! 1087: These new subroutines contain the code that depends. ! 1088: ! 1089: * xm-m68k.h, xm-mips.h, xm-pyr.h, xm-tahoe.h (HOST_WORDS_BIG_ENDIAN): ! 1090: New macro, defined in these files. ! 1091: ! 1092: * config.gcc: Define macro CROSS_COMPILE if making cross-compiler. ! 1093: * Makefile.in (INTERNAL_CFLAGS): Include CROSS. ! 1094: ! 1095: * config.gcc: Decode -host argument. Set $host and $target. ! 1096: Rename vars for files to link to, to tm_file, xm_file, etc. ! 1097: Let $host override xm_file value. ! 1098: Mention $host in messages and config.status if diff from $target. ! 1099: Check for errors in args at beginning of processing. ! 1100: ! 1101: * expmed.c (expand_shift): Make no insns if count is 0. ! 1102: ! 1103: * cse.c (rtx_cost): Increase default cost of mult and div. ! 1104: ! 1105: * expmed.c (synth_mult): New function. Finds best way to multiply ! 1106: by given constant, and the cost. ! 1107: (expand_mult): Use that. ! 1108: (init_expmed): Init new vars add_cost, shift_cost, mult_cost, ! 1109: and negate_cost. mult_is_cheap has been deleted. ! 1110: ! 1111: * expmed.c (store_bit_field): Don't use insv if unit for copying ! 1112: mem to reg won't hold the entire field. ! 1113: ! 1114: Sun Apr 8 12:54:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1115: ! 1116: * expr.c (expand_expr, case COND_EXPR): Add OK_DEFER_POP to path with ! 1117: only OK_DEFER_POP. ! 1118: ! 1119: Sun Apr 8 12:50:54 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1120: ! 1121: * i386.md (insv): Use SImode for operand 0. ! 1122: ! 1123: Sat Apr 7 15:24:56 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1124: ! 1125: * emit-rtl.c (gen_lowpart, gen_highpart): When checking mode class, ! 1126: check for not MODE_FLOAT. ! 1127: * cse.c (fold_rtx): Likewise when avoiding x-x -> 0 for IEEE float. ! 1128: * jump.c (jump_back_p): Likewise. ! 1129: * optabs.c (emit_cmp_insn): Likewise, comparing result of libcall. ! 1130: * expr.c (move_block_to_reg, emit_push_insn): Likewise, ! 1131: when putting floats in memory. ! 1132: ! 1133: * machmode.def (PSImode, PDImode): Class is now MODE_PARTIAL_INT. ! 1134: * expr.c (convert_to_mode): Don't treat them as ints. ! 1135: ! 1136: * fixincludes: When making directory links, assume any relative path ! 1137: is within /usr/include. ! 1138: ! 1139: Sat Apr 7 14:56:27 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1140: ! 1141: * function.c (assign_stack_local, assign_outer_stack_local): ! 1142: Don't use division for rounding to avoid problems with negative ! 1143: dividends; use logical operations instead. ! 1144: No need to ever align stricter than BIGGEST_ALIGNMENT. ! 1145: ! 1146: Sat Apr 7 14:38:36 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1147: ! 1148: * expr.c (expand_expr, case CONSTRUCTOR:): Finish Jan 12 change ! 1149: in store_expr by calling store_constructor if target is a temp. ! 1150: ! 1151: * cse.c (cse_insn): For regs invalidated by calls, go back to ! 1152: checking for fp and ap explicitly, not fixed_regs. ! 1153: ! 1154: Sat Apr 7 14:06:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1155: ! 1156: * recog.h: Define num_validated_changes and cancel_changes. ! 1157: * recog.c (validate_change, apply_change_group, cancel_changes): ! 1158: Support changes both within an insn and within a MEM. ! 1159: ! 1160: Sat Apr 7 00:45:49 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1161: ! 1162: * sparc.md (addcc and subcc patterns): Set CC_NO_OVERFLOW. ! 1163: ! 1164: Fri Apr 6 15:20:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1165: ! 1166: * cccp.c (lookup_import): Return -1 for not found to agree with ! 1167: the open system call. Use -2 for duplicate. ! 1168: (do_include): -2 now means duplicate; previously, -1 meant not found ! 1169: from open and duplicate from lookup_import. ! 1170: ! 1171: Fri Apr 6 00:06:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1172: ! 1173: * c-decl.c (poplevel): Use DECL_INITIAL to detect undef label. ! 1174: ! 1175: * sparc.md (peephole for returning sum): Use more restrictive preds. ! 1176: ! 1177: * reload1.c (choose_reload_regs): When testing reload reg ! 1178: for HARD_REGNO_MODE_OK, use SImode instead of VOIDmode. ! 1179: ! 1180: Thu Apr 5 14:00:41 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1181: ! 1182: * cccp.c (main, include_defaults): Use STANDARD_INCLUDE_DIR ! 1183: instead of /usr/include. ! 1184: * Makefile.in (cccp.o): Specify STANDARD_INCLUDE_DIR. ! 1185: ! 1186: * varasm.c (assemble_variable): No sdb output for initialized global. ! 1187: * toplev.c (compile_file): Output it here, at end of run. ! 1188: ! 1189: * stdarg.h (va_start): Round initial pointer value down ! 1190: to double boundary. This is to eliminate big-endian adjustment. ! 1191: ! 1192: * fixincludes: Delete netinet/ip.h and sundev/vuid_event.h ! 1193: if no changes are needed. ! 1194: ! 1195: * c-typeck.c (build_c_cast): Reject array types for result. ! 1196: * cplus-typeck.c (build_c_cast): Likewise. ! 1197: ! 1198: * tm-*.h (ASM_OUTPUT_SKIP): Print size as unsigned. ! 1199: (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Likewise. ! 1200: ! 1201: * fold-const.c (fold): Simplify double truncation, double extension, ! 1202: or extension followed by truncation. ! 1203: ! 1204: * fixincludes: Don't ignore errors when making dirs. ! 1205: But check whether dir already exists. ! 1206: ! 1207: * cse.c (fold_rtx): Don't simplify real*0, because of nans. ! 1208: ! 1209: * real.h (dconst0, dconst1, dconstm1): Declare them. ! 1210: * tree.c (real_zerop, real_onep): New functions. ! 1211: * fold-const.c (fold): Check for trivial +, -, * with reals. ! 1212: Also use dconst0 instead of computing with REAL_VALUE_ATOF. ! 1213: ! 1214: Tue Apr 3 22:52:26 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1215: ! 1216: * m68k.md (32-bit bit fields): Special patterns added. ! 1217: (push byte and adjust stack by 2): New peephole. ! 1218: These from Bruce Robertson. ! 1219: ! 1220: * c-decl.c (grokdeclarator): Complain if fn defn has `typedef' etc. ! 1221: ! 1222: Tue Apr 3 21:39:54 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1223: ! 1224: * expr.c (preexpand_calls): Reinsert check to not expand calls ! 1225: already preexpanded. ! 1226: ! 1227: Mon Apr 2 07:05:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1228: ! 1229: * c-typeck.c (digest_init): Don't blow up on null list. ! 1230: ! 1231: * Makefile.in (cc1obj): Link OBJC_OBJS instead of C_OBJS. ! 1232: * objc-actions.c: Correct compilation errors. ! 1233: * objc-parse.y: Likewise. ! 1234: ! 1235: Mon Apr 2 03:33:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1236: ! 1237: * objc-actions.h: Define the objc tree codes. ! 1238: Declare doing_objc_thang. ! 1239: ! 1240: Fri Mar 30 17:28:30 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1241: ! 1242: * sdbout.c (PUT_SDB_EPILOGUE_END): Write out assembler name for ! 1243: function (i.e., usually include leading "_"). ! 1244: ! 1245: * sdbout.c (PUT_SDB_...): Use new macro SDB_DELIM; it defaults to ";". ! 1246: ! 1247: Fri Mar 30 15:25:20 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1248: ! 1249: * jump.c (prev_active_insn, next_active_insn): New functions. ! 1250: These skip USEs and CLOBBERs. ! 1251: (jump_optimize): Use them instead of ..._real_insn ! 1252: for the simple optimizations. ! 1253: ! 1254: * integrate.c (expand_inline_function): Always index const_equiv_map ! 1255: with regno from current function. And set up the map only after ! 1256: creating all the pseudos we will need for the parms. ! 1257: This requires intermediate tables parm_equivs and parm_copies. ! 1258: Make const_equiv_map big enough to handle all the pseudos we ! 1259: expect to make. Record actual size, and don't look in it ! 1260: for regnos too large. ! 1261: (subst_constants, const_equiv): Don't access const_equiv_map ! 1262: if regno is too large. ! 1263: ! 1264: * function.c (trampoline_address): Push and pop obstacks around ! 1265: call to assign_outer_stack_local. ! 1266: ! 1267: * function.c (push_function_context, pop_function_context): ! 1268: Save and restore max_parm_reg and parm_reg_stack_loc. ! 1269: * function.h (struct function): Make slots. ! 1270: ! 1271: * c-decl.c (c_build_type_variant): New function. ! 1272: (grokdeclarator): Call that, for ARRAY_TYPE only, in fields and vars. ! 1273: * c-decl.c, c-typeck.c: All calls to build_type_variant use that now. ! 1274: ! 1275: * emit-rtl.c (reinstate_emit_status): Unused function deleted. ! 1276: ! 1277: Thu Mar 29 15:35:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1278: ! 1279: * tree.c (rtl_in_current_obstack): New function. ! 1280: * toplev.c (rest_of_compilation): Call that. ! 1281: This makes it true that rtl is allocated in current_obstack ! 1282: during optimization. ! 1283: ! 1284: * reload1.c (eliminate_frame_pointer): Scan equivalent addresses ! 1285: of pseudo-regs, and eliminate frame-pointer there too. ! 1286: (reload): Don't do this here. ! 1287: ! 1288: * c-decl.c (build_enumerator): Return pair of decl and value. ! 1289: (finish_enum): Go through the list replacing decls with names. ! 1290: ! 1291: * function.c (fixup_var_refs): Eliminate all but first arg. ! 1292: Use current sequence_stack, insn chain and rtl_expr_chain. ! 1293: (put_var_into_stack): Don't pass those args. ! 1294: If var is nonlocal, don't do it now; put it on fixup_var_refs_queue. ! 1295: (pop_function_context): Do fixup_var_refs on vars queued up. ! 1296: ! 1297: * tree.c (function_maybepermanent_obstack): Make a separate ! 1298: saveable obstack for each nested function level. ! 1299: (init_tree): Init this variable. ! 1300: (save_tree_status, restore_tree_status): Save and restore it. ! 1301: Create and free a new obstack for the purpose. ! 1302: (temporary_allocation, resume_temporary_allocation): Use this var. ! 1303: (preserve_data, preserve_initializer): Use this var. ! 1304: (make_node): Use this var for PARM_DECL nodes. ! 1305: ! 1306: * tree.c (push_obstacks): New name for push_obstack. ! 1307: Additional arg specifies saveable_obstack. All calls changed. ! 1308: (pop_obstacks): New name for pop_obstack. All calls changed. ! 1309: ! 1310: * config.gcc: Add `3300'. ! 1311: (genix): Fix typo in name of makevar file. ! 1312: * tm-mot3300.h, xm-mot3300.h: New files. ! 1313: * math-3300.h: New file. ! 1314: ! 1315: * output.h: Fix typo in SDB_DEBUGGING_INFO. ! 1316: ! 1317: * tm-sun386i.h (LINK_SPEC): Moved here, and -static handled. ! 1318: * xm-sun386i.h: Moved from here. ! 1319: * tm-alliant.h (LINK_SPEC): Moved here, from xm-alliant.h. ! 1320: ! 1321: * tm-convex.h, tm-i860.h, tm-spur.h, tm-vax.h, tm-tahoe.h, tm-pyr.h: ! 1322: Delete FIX_FRAME_POINTER_ADDRESS. ! 1323: ! 1324: * tm-sparc.h, tm-m88k.h: Turn off FIX_FRAME_POINTER_ADDRESS. ! 1325: INITIAL_FRAME_POINTER_OFFSET could be written later. ! 1326: ! 1327: * tm-m68k.h, tm-ns32k.h, tm-alliant.h, tm-i386.h, tm-mips.h: ! 1328: Define INITIAL_FRAME_POINTER_OFFSET. ! 1329: ! 1330: * toplev.c (compile_file): Remove .m and .cc suffixes, like .c. ! 1331: ! 1332: * final.c (end_final): For basic block profiling, don't output ! 1333: source file name. Instead, append ".d", and remove ".c". ! 1334: * gnulib2.c (__bb_init_func): New name for __bb_init_function. ! 1335: Conditionalize on mc68000, not m68k. ! 1336: Fix other typos. ! 1337: ! 1338: Wed Mar 28 16:07:15 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1339: ! 1340: * c-decl.c, cplus-decl.c (duplicate_decls): Preserve DECL_FRAME_SIZE ! 1341: from definition past subsequent declarations. ! 1342: ! 1343: * c-decl.c (xref_tag): If global_binding_level, make nodes permanent. ! 1344: ! 1345: * expmed.c (init_expmed): Set up mult_is_very_cheap. ! 1346: (expand_mult): Never use shifts if mult_is_very_cheap. ! 1347: ! 1348: * expr.c (store_expr): When copying through new temporary, ! 1349: allocate temporary first and use as target. ! 1350: ! 1351: * tm-m68k.h (HARD_REGNO_MODE_OK): Abort on VOIDmode. ! 1352: ! 1353: * reload1.c (fix_frame_pointer_address): New function. ! 1354: (alter_frame_pointer_addresses): New arg INSN. Calls changed. ! 1355: Use that function instead of macro FIX_FRAME_POINTER_ADDRESS ! 1356: which is now obsolete. ! 1357: (eliminate_frame_pointer): Use macro INITIAL_FRAME_POINTER_OFFSET ! 1358: to initialize depth. Abort if that macro is missing. ! 1359: ! 1360: * expmed.c (store_bit_field): If loading MEM into a reg, use the ! 1361: mode of the MEM if that is not BLKmode. ! 1362: (extract_bit_field): Likewise. ! 1363: ! 1364: * tm-mips.h (STRUCTURE_SIZE_BOUNDARY): Changed from 16 to 8. ! 1365: ! 1366: * calls.c (expand_call): Handle STACK_BOUNDARY when using push insns. ! 1367: ! 1368: * function.c (assign_parms): Note how PUSH_ROUNDING affects stack ! 1369: parm size. ! 1370: ! 1371: Tue Mar 27 19:40:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1372: ! 1373: * c-decl.c (poplevel): Output inline nested functions if needed. ! 1374: * cplus-decl.c: Likewise. ! 1375: ! 1376: * i386.md (insv): New pattern added for the moment. ! 1377: ! 1378: Tue Mar 27 17:47:35 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1379: ! 1380: * function.c (lookup_outer_static_chain): Deleted, no longer used. ! 1381: (trampoline_address): RTL for trampoline, rather than its address, is ! 1382: stored in trampoline list. ! 1383: Just add entry to list; don't fill in the trampoline here. ! 1384: (expand_function_end): Fill in any required trampolines here. ! 1385: (expand_function_start): Move tail recursion entry to after ! 1386: creation of display list; size computations come next. ! 1387: ! 1388: Tue Mar 27 14:09:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1389: ! 1390: * m68k.md (movsi, movhi, movstricthi, movqi, movstrictqi): ! 1391: Avoid both clr and st on volatile mem, but only on 68000. ! 1392: (SImode store 0 recognizer): Likewise. ! 1393: ! 1394: * stor-layout.c (agg_mode): Don't consider PSImode, etc. ! 1395: ! 1396: Mon Mar 26 21:12:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1397: ! 1398: * local-alloc.c (combine_regs): Only set suggested bit for first ! 1399: register if multi-word quantity. ! 1400: (find_free_reg): Look at suggested regs for first in set, then use ! 1401: all available for subsequent regs. ! 1402: ! 1403: Mon Mar 26 15:01:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1404: ! 1405: * c-decl.c (start_enum): Don't lay out the type. ! 1406: (finish_enum): Always lay it out, and always set the precision. ! 1407: Change the type of the enumerators if int is too narrow. ! 1408: ! 1409: * tm-m68k.h (NOTICE_UPDATE_CC): addq and subq do update cc's ! 1410: even if destination is an address register. ! 1411: ! 1412: * c-parse.y, objc-parse.y (check_newline): Call HANDLE_PRAGMA if def. ! 1413: * out-next.c: New file. ! 1414: (handle_pragma): New function. ! 1415: * tm-next.h (HANDLE_PRAGMA): Define it. ! 1416: ! 1417: * Makefile.in (GNULIB2): New variable. ! 1418: (gnulib2): Use it. ! 1419: (gnulib2.portable): New name for old rule. ! 1420: (install-headers): Split out part of install rule. ! 1421: (INSTALL_HEADERS): New variable. ! 1422: ! 1423: * make-next: New file. ! 1424: ! 1425: * function.c (assign_parms): Get type from proper place. ! 1426: internal_arg_pointer is now an arg. Compute arg_pointer_copied ! 1427: from that. Fix typos. ! 1428: (expand_function_start): Compute internal_arg_pointer here. ! 1429: Fix typos handling incoming struct value address. ! 1430: ! 1431: * cccp.c (do_include): Ignore null strings found in stackp. ! 1432: ! 1433: * cccp.c (discard_comments): Handle backslash-newline. ! 1434: ! 1435: Mon Mar 26 07:18:58 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1436: ! 1437: * function.h (temp_slot, temp_slot_level): Now saved by function.c. ! 1438: * function.c (struct temp_slot): Move from stmt.c. ! 1439: (push_function_context, pop_function_context): Save/restore temp slots. ! 1440: (assign_parms): Pass type to locate_and_pad_parms. ! 1441: (locate_and_pad_parms): Accept TYPE. ! 1442: Don't need STACK_OFFSET. ! 1443: (expand_function_start): Pass type to locate_and_pad_parms. ! 1444: (init_function_start): Initialize temp_slot info. ! 1445: * stmt.c (temp_slot, init_stmt_for_function, save_stmt_status, ! 1446: restore_stmt_status): Delete temp_slot stuff from here. ! 1447: ! 1448: Sun Mar 25 20:21:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1449: ! 1450: * expr.c (emit_move_insn): Turn memory address checking back on, ! 1451: but allow push_operand for x. ! 1452: ! 1453: * ns32k.md (movstrsi): If UTEK_ASM, output $0 operand in movsd. ! 1454: (movsi): Handle UTEK_ASM like GNX_V3. ! 1455: * out-ns32k.c (print_operand_address): Add UTEK_ASM conditionals. ! 1456: * tm-merlin.h: New file. ! 1457: ! 1458: * tm-ns32k.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): ! 1459: Use save and restore insns if no frame pointer. ! 1460: ! 1461: * cccp.c (handle_directive): Discard backslash-newline within <...>. ! 1462: ! 1463: Sat Mar 24 13:23:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1464: ! 1465: * gcc.c (default_compilers): Add entry for .m files, for Objective C. ! 1466: Always pass some -lang... option to cpp. ! 1467: ! 1468: * cccp.c (do_include): Support #import as well as #include. ! 1469: (lookup_import, add_import, import_hash): New functions. ! 1470: (main): Handle options -lang-c++ and -lang-objc and -lang-c. ! 1471: Set variables cplusplus and objc. ! 1472: (enum node_type, directive_table): Add #import. ! 1473: (handle_directive): Treat #import as undefined unless objc is nonzero. ! 1474: (initialize_builtins): If objc, define __OBJC__. ! 1475: ! 1476: * Makefile.in (lang-objc, cc1obj): New targets. ! 1477: (objc-parse.o, objc-parse.c, objc-actions.o): New targets. ! 1478: (C_OBJS): Add c-lang.o. ! 1479: ! 1480: * objc.gperf: New file. ! 1481: * objc-parse.y, objc-actions.c, objc-actions.h: New files. ! 1482: ! 1483: * c-lang.c: New file. ! 1484: * c-decl.c (c_decode_option): New name for lang_decode_option. ! 1485: Used from c-lang.c and objc-actions.c. ! 1486: ! 1487: * toplev.c (compile_file): Call lang_init and lang_finish. ! 1488: * c-lang.c, objc-actions.c, cplus-decl.c: Define those functions. ! 1489: ! 1490: * c-typeck.c (comptypes): Call maybe_objc_comptypes for record types. ! 1491: * c-lang.c, objc-actions.c (maybe_objc_comptypes): New functions. ! 1492: ! 1493: * c-decl.c (implicitly_declare, finish_decl, finish_struct): ! 1494: Call maybe_objc_check_decl before rest_of_decl_compilation. ! 1495: * c-lang.c, objc-actions.c (maybe_objc_check_decl): New functions. ! 1496: ! 1497: * function.c (assign_stack_local): Align each slot only as needed. ! 1498: Normally don't round size up, just align first. ! 1499: New argument ALIGN specifies alignment, or 0 for that of MODE. ! 1500: All callers changed. ! 1501: (assign_outer_stack_local): Likewise. ! 1502: * final.c (final_start_function): Round frame size to STACK_BOUNDARY. ! 1503: ! 1504: * function.c (assign_stack_temp, preserve_temp_slots): ! 1505: (free_temp_slots): Moved from stmt.c. ! 1506: ! 1507: * stmt.c (expand_decl): Use convert_units to avoid overflow. ! 1508: ! 1509: Fri Mar 23 00:52:34 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1510: ! 1511: * c-decl.c (grokdeclarator): Warn if array element is incomplete. ! 1512: ! 1513: * varasm.c (assemble_variable): Use convert_units to compute ! 1514: size in bytes. ! 1515: (output_constructor): Likewise, for non-bit fields. ! 1516: ! 1517: * c-typeck.c (check_format, my_strchr): New functions. ! 1518: (build_function_call): Call check_format. ! 1519: * c-decl.c (lang_decode_options): Handle -Wformat. ! 1520: * c-tree.h (warn_format): New flag. ! 1521: ! 1522: * xm-hp9k320.h (USE_C_ALLOCA): Define if not compiling with GCC. ! 1523: ! 1524: Thu Mar 22 23:35:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1525: ! 1526: * c-decl.c (get_parm_info): Void parm is special only if no name. ! 1527: ! 1528: * loop.c (may_not_optimize): Static var replaces local `may_not_move'. ! 1529: (strength_reduce): Don't accept those regs as givs. ! 1530: ! 1531: Thu Mar 22 06:45:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1532: ! 1533: * integrate.c (expand_inline_function): Compute delta to frame ! 1534: from the address at which it was allocated. ! 1535: ! 1536: Wed Mar 21 17:36:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1537: ! 1538: * recog.c: Increase number of changes saved for validate_change. ! 1539: (validate_change): If INSN == 0 and in group, add to group; if not, ! 1540: always OK. ! 1541: (apply_change_group): If INSN == 0, change is always OK. ! 1542: ! 1543: * cse.c (cse_basic_block): If extending block, don't call ! 1544: cse_end_of_basic_block with null insn if we got to end of function. ! 1545: ! 1546: Wed Mar 21 14:08:35 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1547: ! 1548: * calls.c (expand_call): Don't reuse pending_stack_adjust for argblock ! 1549: if inhibit_defer_pop. ! 1550: ! 1551: * expr.c (push_block): New argument EXTRA. All callers changed. ! 1552: (emit_push_insn): Use that for the padding when using push_block. ! 1553: ! 1554: * tm-sparc.h (FUNCTION_ARG, FUNCTION_INCOMING_ARG): ! 1555: Only word-aligned BLKmodes can go in registers. ! 1556: (FUNCTION_ARG_PARTIAL_NREGS): Likewise. ! 1557: * tm-spur.h (FUNCTION_ARG, FUNCTION_INCOMING_ARG): Likewise. ! 1558: * expr.c (expand_call): If encounter a stack parm before offset ! 1559: gets up to zero, make it zero. ! 1560: * function.c (assign_parms): Likewise. ! 1561: ! 1562: * ns32k.md (stack adjust insn): Don't use cmpd or cmpqd on Sequent. ! 1563: * tm-sequent.h (SEQUENT_ADJUST_STACK): Define this. ! 1564: ! 1565: * make-hp9k320g (AR): Define it. ! 1566: * Makefile.in (gnulib): Use OLDAR. ! 1567: (OLDAR): New variable. ! 1568: ! 1569: * make-iris: New file. ! 1570: ! 1571: * xm-iris.h: Undef alloca before defining it. ! 1572: ! 1573: * Makefile.in (stage1, ...): Always copy gnulib, never link. ! 1574: ! 1575: * cccp.c (main): Use -d...M... as option for macro dump. ! 1576: * gcc.c (default_compilers): Pass -d* to cpp. ! 1577: ! 1578: Tue Mar 20 01:41:49 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1579: ! 1580: * c-parse.y (datadef): Error message fix. ! 1581: * cplus-parse.y: Likewise. ! 1582: ! 1583: Mon Mar 19 15:26:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1584: ! 1585: * integrate.c (expand_inline_function): Save static chain value. ! 1586: (copy_rtx_and_substitute): Substitute it where called function ! 1587: copies its static chain. ! 1588: * emit-rtl.c (init_emit_once): Make static_chain_incoming_rtx ! 1589: distinct. ! 1590: ! 1591: * function.c (current_function_contains_functions): New variable. ! 1592: (init_function_start): Initialize it. ! 1593: (pop_function_context): Set it to 1. ! 1594: * integrate.c (function_cannot_inline_p): ! 1595: Don't inline fn with nested fns. ! 1596: ! 1597: * integrate.c (copy_rtx_and_substitute): Don't replace fp ! 1598: as destination of assignment. ! 1599: ! 1600: * assert.h (__assert) [not __GNUC__]: Rename arg to avoid stringify. ! 1601: ! 1602: * function.c (expand_function_start): If struct_value_incoming_rtx ! 1603: is 0, get the address from first parm reg or first stack slot. ! 1604: (assign_parms): In that case, skip the space it occupies. ! 1605: ! 1606: * calls.c (expand_call): If STRUCT_VALUE is 0, pass address as parm ! 1607: even if that means using a register. ! 1608: ! 1609: Mon Mar 19 07:43:46 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1610: ! 1611: * integrate.c (function_cannot_inline_p): Check for non-ANSI varargs ! 1612: as well as ANSI varargs. ! 1613: Allow inlining of functions with large frames now that we can share ! 1614: them between inlined functions. ! 1615: (expand_inline_function): Save static vars in case we were called ! 1616: recursively. ! 1617: Make sure we don't free temporary stack slot used for argument. ! 1618: ! 1619: * tree.def: Add new code types '<', '1', and '2' for comparison, ! 1620: unary arith, and binary arith, resp. Change some 'e' types to those. ! 1621: * expr.c (init_comparisons): Delete fn. ! 1622: (expand_expr): Handle X ? A binop B : A with copy and conditional op. ! 1623: In X ? A : B, if A and B both simply, do with only one jump. ! 1624: Remove existing test for things like x = y | (a == b). ! 1625: (preexpand_calls): Handle new code types for expressions. ! 1626: * optabs.c (init_optabs): No longer call init_comparisons. ! 1627: * fold-const.c (operand_equal_p): No longer static. ! 1628: Ignore NON_LVALUE_EXPR. ! 1629: Only require constants if new operand ONLY_CONST is non-zero. ! 1630: (fold): Treat tree code types '<', '1', and '2' as 'e'. ! 1631: Handle cases where an arithmetic operation is applied to a compound, ! 1632: conditional, or comparison operation by distributing the arithmetic ! 1633: operation inside the compound, conditional, or comparison operation. ! 1634: Update calls to operand_equal_p. ! 1635: Convert A ? B : B to (A, B). ! 1636: * expmed.c (make_tree): No longer static. ! 1637: * tree.h: Define new macro TREE_CODE_CLASS. ! 1638: Define extern make_tree. ! 1639: * print-tree.c (prtypeinfo): New new macro TREE_CODE_CLASS. ! 1640: (dump): Use new macro and treat types '<', '1', and '2' as 'e'. ! 1641: * cplus-lex.c (init_lex): Likewise. ! 1642: * tree.c (make_node, copy_node): Ditto. ! 1643: ! 1644: Mon Mar 19 00:05:50 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1645: ! 1646: * gcc.c (main): Trap SIGPIPE. ! 1647: ! 1648: Sat Mar 17 13:09:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1649: ! 1650: * jump.c (jump_optimize): Also delete no-op insns to store bit fields. ! 1651: ! 1652: * sparc.md (patterns for addcc, subcc, andcc, andncc, orcc, orncc): ! 1653: (and xorcc, xorncc): Use arith32_operand as predicate. ! 1654: ! 1655: Fri Mar 16 15:19:21 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1656: ! 1657: * tm-vms.h (NO_DOLLAR_IN_LABEL): Define this. ! 1658: ! 1659: * function.c (assign_parms): Use INIT_CUMULATIVE_INCOMING_ARGS ! 1660: if that is defined. ! 1661: ! 1662: * c-decl.c (duplicate_decls): `static' always prevails, for functions. ! 1663: * cplus-decl.c (duplicate_decls): Likewise. ! 1664: ! 1665: * sparc.md (patterns for andncc, orncc, xorncc): ! 1666: Delete `%' from constraint. ! 1667: (patterns for addcc, andcc, orcc, xorcc): Use symmetrical predicates. ! 1668: (peephole for returning sum): Likewise. ! 1669: ! 1670: Thu Mar 15 22:02:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1671: ! 1672: * expmed.c (expand_mult_add): Handle either x or mult having VOIDmode. ! 1673: Always pass both args to type_for_mode. ! 1674: ! 1675: * expmed.c (extract_bit_field, store_bit_field): ! 1676: When changing mode of a reg to SImode, also do big-endian correction. ! 1677: Consistently use BYTES_BIG_ENDIAN to decide how bits are numbered. ! 1678: Fix stray ref to CODE_FOR_extzv in case for extv. ! 1679: ! 1680: * c-typeck.c (build_unary_op): Allow function type args to `!', ! 1681: since they convert to pointers. ! 1682: * cplus-typeck.c (build_unary_op): Likewise. ! 1683: ! 1684: Thu Mar 15 06:30:21 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1685: ! 1686: * expr.c (convert_to_mode): Don't copy constant to register. ! 1687: Use GET_MODE_CLASS instead of integer_mode_p. ! 1688: (integer_mode_p): Delete obsolete fn (only use above). ! 1689: ! 1690: * loop.c (product_cheap_p): Don't crash if no insns need to multiply; ! 1691: that case is cheap. ! 1692: ! 1693: Thu Mar 15 02:11:34 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1694: ! 1695: * regclass.c (init_reg_sets_1): Set n_non_fixed_regs. ! 1696: * loop.c (scan_loop, strength_reduce): Set threshold from num of regs. ! 1697: ! 1698: Wed Mar 14 19:31:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1699: ! 1700: * integrate.c (function_cannot_inline_p): Allow BLKmode parms. ! 1701: Allow address of aggregate parm. ! 1702: (expand_inline_function): Create and maintain const_equiv_map ! 1703: and const_age_map. Increment const_age at basic blocks. ! 1704: Don't substitute constant values for parm regs; ! 1705: instead, call try_constants for each insn copied. ! 1706: When structure_value_addr in't 0, check aggregate_value_p too. ! 1707: Round size of parm_map up. ! 1708: Don't init inline_fp_rtx unless it is used. ! 1709: Don't use emit_move_insn when copying a SET insn. ! 1710: (copy_rtx_and_substitute): Handle inline_target being used when 0. ! 1711: Don't build a SUBREG of a CONST_INT. ! 1712: For PLUS of constant, do plus_constant whether mem address or not. ! 1713: Set up inline_fp_rtx if we need it. ! 1714: Clear RTX_UNCHANGING_P in all MEMs. ! 1715: (try_constants, subst_constants): New functions. ! 1716: (access_parm_map): No big-endian offset for BLKmode parms. ! 1717: Do change_address if mode doesn't match. ! 1718: (const_equiv): New function. ! 1719: (try_fold_cc0): Use that function. ! 1720: In "small win" case, extract CODE_LABEL out of LABEL_REF for emit_jump. ! 1721: (output_inline_function): Set return_label to 0. ! 1722: ! 1723: * recog.c (cancel_changes, num_validated_changes): New functions. ! 1724: ! 1725: Tue Mar 13 17:30:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1726: ! 1727: * recog.c (constrain_operands): Define `V' constraint. ! 1728: ! 1729: Tue Mar 13 17:10:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1730: ! 1731: * cplus-lex.c (operator_name_string, init_lex): Cast enums to ints ! 1732: to avoid errors from some C compilers. ! 1733: ! 1734: * cplus-init.c (expand_aggr_vbase_init): Make declarations consistent. ! 1735: ! 1736: Sun Mar 11 18:37:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1737: ! 1738: * ns32k.md (movsi): Flush spurious arg to abort. ! 1739: ! 1740: * Makefile.in (gnulib.portable, stamp-gnulib2): Ignore error in ranlib. ! 1741: ! 1742: Sat Mar 10 19:38:36 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1743: ! 1744: * function.h: Add new fields temp_slots and temp_slot_level. ! 1745: * stmt.c (struct temp_slot): New structure. ! 1746: (init_stmt_for_function): Initialize temp slot info. ! 1747: (save_stmt_status, restore_stmt_status): Save and restore temp slots. ! 1748: (expand_asm_operands): Remove redundant assignment to LAST_EXPR_TYPE. ! 1749: Free any temporaries made. ! 1750: (assign_stack_temp, preserve_temp_slots, free_temp_slots): New fns. ! 1751: (expand_expr_stmt): If last expression had a value (i.e., in ({..}) ! 1752: grouping), maybe preserve temporaries. ! 1753: (expand_return, tail_recursion_args): Free any temporaries allocated. ! 1754: (expand_start_bindings): Push temporary stack level. ! 1755: (expand_end_bindings): Pop temporary stack level. ! 1756: (expand_decl): Use kept temporary slots for automatic variables. ! 1757: Free temporary slots after computing size. ! 1758: (expand_decl_init, expand_cleanups, expand_end_case): Free any ! 1759: allocated temporaries. ! 1760: * calls.c (expand_call): Use assign_stack_temp instead of ! 1761: get_structure_value_addr. ! 1762: Make a new temporary level while expanding a call and free ! 1763: temporaries as soon as we know they aren't going to be reused. ! 1764: (store_one_arg): Free any temporary slots made for arg being stored. ! 1765: * function.c (get_structure_value_addr): Delete fn. ! 1766: (init_function_start): No longer initialize structure value addr. ! 1767: * integrate.c (expand_inline_function): Use temporary slot for ! 1768: inlined function's frame. ! 1769: Free temporaries needed while evaluating arguments. ! 1770: * expr.c (expand_assignment, do_jumps): Free temps no longer needed. ! 1771: (store_expr): Don't check for structure value addr. ! 1772: (save_noncopied_parts, expand_expr): Call assign_stack_temp ! 1773: instead of assign_stack_local. ! 1774: (preexpand_calls): No longer special-case fns returning structures. ! 1775: * c-typeck.c (c_expand_asm_operands): Free any temporaries made. ! 1776: * cplus-typeck.c (c_expand_asm_operands): Ditto. ! 1777: * cplus-decl2.c (finish_file): Ditto. ! 1778: * cplus-init.c (expand_aggr_init_1): Ditto. ! 1779: * cplus-type2.c (make_merged_ref): Preserve result and free ! 1780: other temporaries. ! 1781: * cplus-parse.y (stmt): Free any temporaries in EXCEPT clause. ! 1782: ! 1783: Sat Mar 10 16:07:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1784: ! 1785: * loop.c (other_reg_use_p): New name for only_reg_use_p. ! 1786: Return 0 if IN == EXPR. ! 1787: (check_eliminate_biv): Re-invert the test using other_reg_use_p. ! 1788: ! 1789: Fri Mar 9 18:34:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1790: ! 1791: * optabs.c (init_optabs): Handle PSImode insns. ! 1792: ! 1793: Fri Mar 9 18:24:11 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1794: ! 1795: * local-alloc.c (local_alloc): Clear qty_phys_sugg and _has_sugg ! 1796: when doing loop, not just when doing bzero. ! 1797: Add new vars qty_phys_copy_sugg and _has_copy_sugg. ! 1798: (block_alloc): Rework detection of possible tied registers to use ! 1799: extracted insn operands rather than trying to parse operands from ! 1800: RTL description. ! 1801: Don't tie registers if output has earlyclobber. ! 1802: For REG_NO_CONFLICT, check commutativity of expression in REG_EQUAL, ! 1803: rather than of operation of attached insn. ! 1804: If insn is a simple copy, pass that info to combine_regs. ! 1805: (combine_regs): For multi-word items, mark all registers actually ! 1806: used as preferred. ! 1807: If the insn is a simple copy, record hard reg suggestions in ! 1808: qty_phys_copy_sugg instead of qty_phys_sugg. ! 1809: (find_free_reg): Correctly check for all registers used. ! 1810: If qty_phys_has_copy_sugg is non-zero, use that register set. If ! 1811: none of them couldn't be allocated, try the other suggest set if ! 1812: it exists. ! 1813: ! 1814: Thu Mar 8 02:17:50 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1815: ! 1816: * jump.c (jump_optimize): Detect tablejumps that always go to ! 1817: the same place, and change to unconditional jumps. ! 1818: ! 1819: * fold-const.c (fold): Simplify comparison of integer value with self. ! 1820: ! 1821: * rtl.h (FUNCTION_FLAGS...): Additional flag bits for saving ! 1822: current_function_returns_pointer, and several others. ! 1823: (FUNCTION_PRETEND_ARGS_SIZE): New component in inline header. ! 1824: * integrate.c (save_for_inline): Record these flags. ! 1825: (output_inline_function): Get them out again. ! 1826: Also restore current_function_args_size and ..._pretend_... ! 1827: ! 1828: * ns32k.md (movsi, movdi): Handle floating point registers. ! 1829: ! 1830: * dbxout.c (dbxout_prepare_symbol): New function, output N_SOL stab. ! 1831: (dbxout_symbol, dbxout_parms, dbxout_reg_parms): Call it. ! 1832: * final.c (output_source_file): New function. ! 1833: ! 1834: * reload.c (find_reloads_toplev): Do BYTES_BIG_ENDIAN offset ! 1835: only within a word. ! 1836: ! 1837: * stdarg.h: Use _VA_LIST_ as macro to indicate already loaded. ! 1838: ! 1839: * fixincludes: Supply missing semicolon in netinet/ip.h. ! 1840: ! 1841: * tm-alliant.h (FUNCTION_PROLOGUE): Use `linkl' on 68020. ! 1842: ! 1843: * regclass.c (init_reg_sets): For subunion, keep largest candidate. ! 1844: ! 1845: Wed Mar 7 00:37:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1846: ! 1847: * emit-rtl.c (in_sequence_p): New function. ! 1848: ! 1849: * expr.c (expand_builtin): For BUILT_IN_SAVEREGS, insert after ! 1850: the initial NOTE insn. ! 1851: ! 1852: * dbxout.c (dbxout_finish_symbol): New argument is a decl or 0. ! 1853: Output line number in desc field. ! 1854: All callers changed to pass the argument. ! 1855: ! 1856: * tree.h (TREE_PUBLIC): Move back to tree_common. ! 1857: ! 1858: * dbxout.c (dbxout_init): Output working dir in a N_SO symbol. ! 1859: ! 1860: * expr.c (emit_library_call): Handle PUSH_ROUNDING. ! 1861: ! 1862: * explow.c (break_out_memory_refs): Use same mode as the MEM has. ! 1863: ! 1864: * out-mips.c (output_load_immediate): Let the assembler do the work. ! 1865: ! 1866: Tue Mar 6 22:20:49 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1867: ! 1868: * cccp.c (macroexpand): Fix bug in scanning strings for stringify. ! 1869: ! 1870: * stmt.c (expand_goto_internal): Adjust stack after cleanups. ! 1871: (expand_end_bindings, fixup_cleanups): Likewise. ! 1872: ! 1873: * tm-alliant.h (STATIC_CHAIN_REGNUM): Use 10. ! 1874: ! 1875: Tue Mar 6 15:23:11 1990 Jim Kingdon (kingdon at pogo.ai.mit.edu) ! 1876: ! 1877: * config.gcc: Accept srcdir & vint with either '-' or '+'. ! 1878: ! 1879: * c-parse.y (hash, is_reserved_word): Use __inline so it can ! 1880: be compiled with `gcc -traditional'. ! 1881: ! 1882: Tue Mar 6 14:52:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1883: ! 1884: * c-parse.y (compstmt): Don't return null tree for empty group. This ! 1885: will cause the compiler to dump core on a ({}) construct. ! 1886: * cplus-parse.y (compstmt): Ditto. ! 1887: ! 1888: Tue Mar 6 14:33:42 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1889: ! 1890: * tree.h (TREE_STATIC): Move back to common. ! 1891: ! 1892: Tue Mar 6 06:04:30 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1893: ! 1894: * function.h (expr_stmts_for_value): New field. ! 1895: * stmt.c (init_stmt_for_function): Initialize vars for expression ! 1896: statements. ! 1897: (save_stmt_status, restore_stmt_status): Save and restore value of ! 1898: expr_stmts_for_value. ! 1899: ! 1900: * cse.c (record_jump_equiv): Ensure previous insn is an INSN before ! 1901: testing it (it might be a NOTE). ! 1902: ! 1903: Tue Mar 6 00:26:20 1990 Richard Stallman (rms at geech) ! 1904: ! 1905: * tm-ns32k.h (NOTICE_UPDATE_CC): Use abort in case ! 1906: that shouldn't happen. ! 1907: ! 1908: Mon Mar 5 23:11:57 1990 Richard Stallman (rms at geech) ! 1909: ! 1910: * Makefile.in (cplus-tab.h): Say expect 12 reduce/reduce conflicts. ! 1911: ! 1912: * genoutput.c (output_prologue): Include insn-attr.h. ! 1913: ! 1914: * pyr.md (addsi3, mulsi3, umulsi3, andsi3, iorsi3, xorsi3): ! 1915: Make input arg predicates symmetrical. ! 1916: (adddi3, anddi3, iordi3, xordi3): Likewise. ! 1917: (addsi3): Use immediate subtract if suitable. ! 1918: ! 1919: Sat Mar 3 21:08:25 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1920: ! 1921: * expr.c (move_block_to_reg, emit_push_insn): Don't treat double 0.0 ! 1922: as two words of zero. ! 1923: Handle DImode constants as two integers. ! 1924: Support CONST_INT (currently only called with const0_rtx). ! 1925: ! 1926: * expr.c (convert_move): Can only use slt if STORE_FLAG_VALUE == -1. ! 1927: ! 1928: Sat Mar 3 15:03:00 1990 Richard Stallman (rms at geech) ! 1929: ! 1930: * function.c (setjmp_protect_args, setjmp_args_warning): New functions. ! 1931: * toplev.c (rest_of_compilation): Call setjmp_args_warning. ! 1932: * c-decl.c (finish_function): Call setjmp_protect_args. ! 1933: ! 1934: * flow.c (regno_clobbered_at_setjmp): Argument registers ! 1935: are in effect set at start of function. ! 1936: ! 1937: * tm-sparc.h (ASM_OUTPUT_DOUBLE): Replace missing line. ! 1938: ! 1939: * print-tree.c (prtypeinfo): Don't check DECL-only ! 1940: flags for other nodes. ! 1941: ! 1942: * toplev.c: Eliminate `#ifdef 0'. ! 1943: ! 1944: * dbxout.c (print_int_cst_octal): New function. ! 1945: (dbxout_type): Use that for long long types. ! 1946: ! 1947: * Makefile.in (start.encap, rest.encap): Split all.internal. ! 1948: ! 1949: * tahoe.md: Adjust formatting. ! 1950: ! 1951: * tahoe.md (ashlsi3, lshlsi3): Don't clobber a const_int. ! 1952: Instead, use %s to convert shift count to multiplier. ! 1953: * tm-tahoe.h (PRINT_OPERAND): Handle %s. ! 1954: ! 1955: * tm-tahoe.h (CONST_COSTS): Specify cost of MULT. ! 1956: ! 1957: Fri Mar 2 01:00:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1958: ! 1959: * cse.c (rtx_cost): By default, multiply and divide are expensive. ! 1960: ! 1961: * expmed.c (expand_mult_add): Use type_for_mode. ! 1962: Allow ADD to have a different mode. ! 1963: * c-typeck.c (type_for_mode): New function. ! 1964: (get_floating_type): Function deleted. ! 1965: * cplus-typeck.c: Likewise. ! 1966: ! 1967: * jump.c (jump_optimize): Simplify `if (x) goto foo; else goto foo;'. ! 1968: ! 1969: Thu Mar 1 17:41:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1970: ! 1971: * out-mips.c (tree_code_name): Declaration deleted. ! 1972: ! 1973: * stmt.c (expand_expr_stmt): No "no side effects" warning for (void)0. ! 1974: ! 1975: * assert.h (__assert): Don't call abort; use 0 as value. ! 1976: * gnulib2.c (__eprintf): Call abort here. ! 1977: ! 1978: * c-decl.c (pushdecl): Don't warn if shadowing error_mark_node. ! 1979: ! 1980: * optabs.c: Use GET_MODE_WIDER_MODE instead of INC_MODE. ! 1981: ! 1982: * machmode.def: Set up next-wider-mode for floating modes. ! 1983: ! 1984: Wed Feb 28 18:58:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1985: ! 1986: * stmt.c (expand_goto_internal): Add missing stack adjust. ! 1987: (expand_fixup): Don't do stack adjust if fixup isn't for current pos. ! 1988: ! 1989: * stmt.c (expand_start_stmt_expr, expand_end_stmt_expr): No need to ! 1990: save result from start_sequence in RTL_EXPR. ! 1991: ! 1992: * stmt.c (expand_end_loop): Correctly see if NOTE_INSN_LOOP_CONT ! 1993: was written. ! 1994: ! 1995: * stmt.c (expand_decl): Omit move to OLDADDR if it would be noop. ! 1996: ! 1997: * expr.c (expand_expr): Don't use variable TYPE in subblocks that ! 1998: hides TYPE at function level. ! 1999: ! 2000: * expr.c (force_operand): Always generate PLUS for constant. ! 2001: Use negate_rtx to negate constant. ! 2002: ! 2003: * expr.c (expand_expr): Ensure that type is not wider than ! 2004: HOST_BITS_PER_INT when assuming that constant is entirely in ! 2005: TREE_INT_CST_LOW. ! 2006: Simplify EXPAND_SUM code for PLUS_EXPR and MINUS_EXPR. ! 2007: Call preexpand_calls at binop instead of all places that branch to it. ! 2008: ! 2009: * expmed.c (expand_shift): Skip widening try for rotates; avoid ! 2010: passing UNSIGNEDP == -1 to expand_binop. ! 2011: ! 2012: * expr.c (expand_builtin): Use a sequence instead of reorder_insns. ! 2013: ! 2014: * tree.c (save_expr): Ignore NON_LVALUE_EXPRs. ! 2015: Mark as TREE_VOLATILE so won't be inadvertently deleted. ! 2016: (build): Special-case LENGTH == 1 also. ! 2017: ! 2018: Wed Feb 28 12:57:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2019: ! 2020: * expr.c (convert_move): Handle conversions to and from PSImode. ! 2021: ! 2022: * stor-layout.c (layout_type): For integer types, don't consider ! 2023: PSImode, etc. ! 2024: ! 2025: * expmed.c (init_expmed): Typo: test was backwards. ! 2026: ! 2027: * Makefile (install): When installing $${eachfile}, use basename. ! 2028: ! 2029: Tue Feb 27 14:48:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2030: ! 2031: * tree.h (struct tree_common): Delete certain attributes. ! 2032: external, public, static, nonlocal, regdecl, inline. ! 2033: (struct tree_decl): Insert them here. ! 2034: ! 2035: * combine.c (try_combine): Avoid generating nested SUBREGs for ! 2036: operands when handling case where I2 or I1 is a SUBREG assignment. ! 2037: Never combine with an insn that sets a register to itself if it has ! 2038: a REG_EQUAL note. ! 2039: (subst): Correct errors in changing (minus (x) (c)) to (plus (x) (-c)). ! 2040: Recompute CODE before second switch. ! 2041: Case NOT: in second switch failed to set undobuf.storage. ! 2042: (gen_lowpart_for_combine): Don't allow multi-word modes; do allow ! 2043: null conversions. ! 2044: ! 2045: Tue Feb 27 07:13:17 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2046: ! 2047: * combine.c (try_combine): Don't combine when doing so would ! 2048: replace destination that is being modified, as opposed to replaced. ! 2049: ! 2050: * function.c (fixup_var_refs_1): Rework to correctly support ! 2051: bit-field insns that don't allow memory operands. ! 2052: Correctly detect insns that simply copy a variable to or from a ! 2053: register. ! 2054: (optimize_bit_field): Use a sequence rather than reorder_insns. ! 2055: * Makefile.in (function.o): Update dependancies. ! 2056: ! 2057: * recog.h: Delete obsolete insn_machine_info. ! 2058: ! 2059: * function.c (assign_parms): Use move_block_from_regs to place ! 2060: first part of parameter partially in registers into memory. ! 2061: ! 2062: Mon Feb 26 19:02:56 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2063: ! 2064: * fixincludes: Find only .h files when looking for headers. ! 2065: ! 2066: * function.c (expand_function_start): Save arg ptr reg ! 2067: if there are nonlocally-referenced parms. ! 2068: ! 2069: Fri Feb 23 13:21:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2070: ! 2071: * c-parse.y (readescape): For x, avoid overflow when shifting in if. ! 2072: ! 2073: Thu Feb 22 19:14:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2074: ! 2075: * fixincludes: Delete directories before creating them. ! 2076: When making internal symbolic directory links, chase ! 2077: chain of existing links to the end. ! 2078: ! 2079: * dbxout.c (dbxout_type): Always use main variant (until ! 2080: there is code to report the distinctions usefully). ! 2081: ! 2082: Wed Feb 21 13:20:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2083: ! 2084: * math-68881.h (hypot): New function. ! 2085: ! 2086: * optabs.c (expand_binop): Swap operands if that makes modes match. ! 2087: ! 2088: * expr.c (expand_expr): For ARRAY_EXPR, when converting to ! 2089: multiplication and addition, use type of index for product. ! 2090: ! 2091: * gcc.c (LIB_SPEC): Link with -lg if -g specified. ! 2092: * tm-isi68.h, tm-next.h, tm-sparc.h, tm-sun3.h, tm-sun386i.h: Likewise. ! 2093: * tm-mips.h (LIB_SPEC): Override to avoid using -lg. ! 2094: ! 2095: * toplev.c (main): Warn for -g if not supported. ! 2096: ! 2097: * c-decl.c (grokdeclarator): Do pedantic checks for const functions ! 2098: where function decls and variant function types are made. ! 2099: ! 2100: Mon Feb 19 20:06:48 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2101: ! 2102: * optabs.c: Restore Feb 13 change. ! 2103: ! 2104: * varasm.c (readonly_data_section): New fn. ! 2105: (assemble_variable, get_or_assign_label, output_constant_pool): ! 2106: Use new fn instead of text_section. ! 2107: * final.c (end_final): Write profiling table to read-only section. ! 2108: (get_attr_length, shorten_branches): Address vectores take no space ! 2109: if not in text section. ! 2110: Vectors are in operand 0 for ADDR_VEC but 1 for ADDR_DIFF_VEC. ! 2111: (final_scan_insn): Merge cases for ADDR_VEC and ADDR_DIFF_VEC. ! 2112: Put vector tables in read-only section. ! 2113: ! 2114: Sun Feb 18 13:58:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2115: ! 2116: * gnulib2.c (__shtab): New vector. ! 2117: * Makefile.in (LIB2FUNCS): Add that member. ! 2118: ! 2119: * *tahoe*: New versions of these files. ! 2120: ! 2121: * optabs.c: File was deleted. Copied last backup. ! 2122: Feb 13 change lost. ! 2123: ! 2124: * tm-sparc.h (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT): Handle nans. ! 2125: Don't output more digits than the numbers have. ! 2126: * tm-sun3.h (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT): Likewise. ! 2127: (ASM_OUTPUT_DOUBLE_OPERAND): Don't output excess digits. ! 2128: ! 2129: * m68k.md (movqi): Don't use clrb or st if dest is volatile. ! 2130: ! 2131: * expmed.c (expand_mult): Don't use sum of shifts if mult is cheaper. ! 2132: (init_expmed): Set mult_is_cheap based on rtx_cost. ! 2133: * toplev.c (compile_file): Call init_expmed. ! 2134: * cse.c (rtx_cost): Not static. ! 2135: ! 2136: * tm-mips.h (ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_INTERNAL_LABEL): ! 2137: Start name with $. ! 2138: ! 2139: * tm-alliant.h, tm-convex.h, tm-hp9k3bsd.h, tm-news.h, tm-seq386.h: ! 2140: * tm-sequent.h, tm-spur.h, tm-sun2.h, tm-tahoe.h, tm-vax.h: ! 2141: (LIB_SPEC): Put in -lc with appropriate alternatives. ! 2142: ! 2143: * toplev.c (rest_of_compilation): ! 2144: Clear rtx_equal_function_value_matters just before final. ! 2145: ! 2146: * cccp.c (rescan): If don't find paren after macro, back up over space. ! 2147: ! 2148: Sat Feb 17 20:58:21 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2149: ! 2150: * tm-hp9k320.h (CPP_SPEC): Remove _INCLUDE__STDC__. ! 2151: ! 2152: Wed Feb 14 09:06:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2153: ! 2154: * loop.c (struct movable): Add SET_DEST and SET_EQUAL fields. ! 2155: (single_set): New fn. ! 2156: (scan_loop, force_movables, move_movables, consec_set_invariant_p): ! 2157: Use new fn to look for insns that contain a single set. ! 2158: Use new fields in struct movable. ! 2159: (scan_loop, strength_reduce): Pass number of registers to ! 2160: strength_reduce. ! 2161: (libcall_benefit): New fn. ! 2162: (scan_loop, strength_reduce, consec_sets_giv): Use it. ! 2163: (skip_consec_insns): Correctly count insns to be skipped when ! 2164: NOTEs are present. ! 2165: (combine_movables): In some cases, combine regs that load CONST_INTs ! 2166: even if the modes of the destination differ. This requires starting ! 2167: the inner loop from the start of the movable list. ! 2168: Use find_reg_note to search for notes. ! 2169: Don't choose a use of an equivalence instead of the insn that sets ! 2170: the register directly (hence setting up the equivalence). ! 2171: Set DONE for the matched movable to ensure it isn't duplicated. ! 2172: (replace_call_address): No longer used. ! 2173: (move_movables): When moving a LIBCALL block where the address of ! 2174: the fn is in a register, emit an insn to move the actual address ! 2175: in case the original move was CSE'ed out of the block. ! 2176: Emit AND insn via expand_binop instead of explicit RTL. ! 2177: Search for matching from start of list, not from movable being matched. ! 2178: If mode of combined movables differ, use SUBREG to replace narrower. ! 2179: (replace_regs): Don't replace register if it is the destination. ! 2180: (count_nonfixed_reads): Mem ref is fixed if addres is loop invariant. ! 2181: (can_jump_into_range_p): Speed up common cases. ! 2182: (count_loop_regs_set): Do same thing for parts of PARALLEL as when ! 2183: they occur standalone. ! 2184: (struct induction): Delete fields forces, forces2, and consec. ! 2185: Store dest and src reg rtx instead of register number. ! 2186: Add new fields always, cant_derive, combined_with, maybe_dead, and ! 2187: derive_adjustment. ! 2188: (struct iv_class): Add new fields initial_test, init_set, incremented. ! 2189: (all strength reduction routines): Use single_set and use new ! 2190: struct induction fields; forces is no longer used. ! 2191: (record_biv): New fn. ! 2192: (strength_reduce): Use it. ! 2193: (record_initial, valid_initial_value_p): New fns. ! 2194: (strength_reduce): Scan for bivs in loop order. ! 2195: Refine handling of maybe_never. ! 2196: A reg isn't a biv if it is never incremented. ! 2197: Use note_stores and record_initial to correctly note all changes ! 2198: to a biv's register prior to the start of the loop. ! 2199: We may know biv's initial value if it was tested NE before the loop. ! 2200: Use new valid_initial_value_p. ! 2201: Ensure giv's insn is the last in a LIBCALL block or if consec. ! 2202: Don't set maybe_never on jump back to top of loop. ! 2203: Don't delete any insns setting givs; flow will eliminate them as ! 2204: dead. Ditto for biv updates when biv can be eliminated. ! 2205: If giv's last use is in a computation of another giv, mark that it ! 2206: might be dead. ! 2207: Make two passes over givs. In first pass, handle non-matched ! 2208: givs. In second pass, handle the matched givs. ! 2209: (only_reg_use_p): Now static. ! 2210: (delete_insn_forces): Fn deleted; no longer used. ! 2211: (update_giv_derive): New fn. ! 2212: (strength_reduce): Call it for every insn and label. ! 2213: (record_giv): If giv never used, ignore it. ! 2214: (basic_induction_var): Always set *MULT_VAL to something. ! 2215: A set of a biv from an invariant MEM is allowed. ! 2216: (simplify_giv_expr, expr_cost): New fns. ! 2217: (general_induction_var): Rewrite to use them. More types of ! 2218: expressions are now recognized as givs. ! 2219: Use results produced by update_giv_derive to ensure that giv derivation ! 2220: works correctly when spanning biv update. ! 2221: (consec_sets_giv): Can allocate temporary induction struct on stack. ! 2222: Skip insns that set irrelevant items between two updates to giv. ! 2223: (gen_iv_mult, emit_iv_init_code): Replace with emit_iv_add_mult. ! 2224: (update_reg_last_use): New fn. ! 2225: (emit_iv_add_mult): Call it for all operands. ! 2226: (express_from, combine_givs_p, combine_givs): New fns. ! 2227: (strength_reduce): Call them to combine givs. ! 2228: (product_cheap_p): Rewrite to handle more cases. ! 2229: Free any memory allocated. ! 2230: (get_condition): New fn. ! 2231: (strength_reduce, check_dbra_loop): Use it. ! 2232: (check_dbra_loop): Use emit_move_insn instead of writing explicit SET. ! 2233: Use emit_cmp_insn/emit_jump_insn to write out replacement test. ! 2234: (check_eliminate_biv): Use single_set. ! 2235: Refine test for insns that use biv only to calculate giv. ! 2236: Return non-zero if can eliminate biv; don't set eliminable. ! 2237: (can_eliminate_biv_p): Remove some duplicate code and allow ! 2238: all constants in some cases where only CONST_INT was allowed. ! 2239: Don't replace biv with giv that might be dead. ! 2240: (eliminate_biv): Compute whether to put an invariant before insn ! 2241: in which the biv is being eliminated or at the start of loop. ! 2242: Allow more types of constants. ! 2243: Don't replace biv with giv that might be dead. ! 2244: Use validate_change when substituting into insn. ! 2245: (strength_reduce): Change calls to check_eliminate_biv and ! 2246: eliminate_biv. Call the former again after maybe_dead has possibly ! 2247: been set on some givs. ! 2248: ! 2249: Tue Feb 13 19:58:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2250: ! 2251: * tree.c (function_obstack): New variable. ! 2252: (init_allocation): Init it to temporary_obstack. ! 2253: (save_tree_status): Save it, make new obstack for it. ! 2254: (restore_tree_status): Free new obstack, restore old. ! 2255: (temporary_allocation, resume_temporary_allocation): Use that one. ! 2256: * function.h (struct function): Slot for saved function_obstack. ! 2257: * tree.c (push_obstack, pop_obstack): New functions. ! 2258: These implement a stack for obstack selection. ! 2259: * function.c (put_var_into_stack): If var is nonlocal, ! 2260: switch to obstacks of the function it is in. ! 2261: ! 2262: Tue Feb 13 17:52:15 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2263: ! 2264: * optabs.c (emit_no_conflict_block): During reload, don't do ! 2265: any encapsulation or add notes. ! 2266: Allow single insn or no insns in sequence. ! 2267: ! 2268: Tue Feb 13 12:51:45 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2269: ! 2270: * stor-layout.c (build_int): Increase limits of cache size. ! 2271: ! 2272: * sdbout.c (sdbout_symbol): Force output of symbol's type. ! 2273: ! 2274: Tue Feb 13 08:28:37 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2275: ! 2276: * toplev.c (rest_of_compilation): Don't skip compilation of function ! 2277: if TREE_INLINE but no saved insns (e.g., if not -O). ! 2278: ! 2279: * rtlanal.c (replace_rtx): New function. ! 2280: * rtl.h: Define it. ! 2281: ! 2282: Tue Feb 13 00:02:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2283: ! 2284: * c-decl.c (finish_struct): Lay out any existing array types ! 2285: of newly completed struct. ! 2286: (layout_array_type): New subroutine. ! 2287: ! 2288: Mon Feb 12 11:33:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2289: ! 2290: * function.c (assign_parms): If not -O, keep all parms in memory. ! 2291: ! 2292: * expr.c (clear_pending_stack_adjust): Ignore TREE_INLINE if not -O. ! 2293: ! 2294: * out-i386.c (output_fix_trunc): New function. ! 2295: (fp_pop_int): Re-enabled. Handle more modes, individually. ! 2296: (print_operand): Handle %D. ! 2297: * i386.md (fix_truncdfdi2, fixuns_truncdfdi2): New patterns. ! 2298: These changes from James Van Artsdalen. ! 2299: ! 2300: * gnulib2.c (__builtin_vec_delete): Use __builtin_delete, not free. ! 2301: ! 2302: * sdbout.c (sdbout_field_types): Do look through pointer types. ! 2303: ! 2304: Sat Feb 10 19:31:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2305: ! 2306: * sdbout.c (plain_type_1): Don't output tag until known. ! 2307: (sdbout_one_type): Don't record tag in KNOWN_TYPE_TAG until end. ! 2308: Reenable output of member types before original structure. ! 2309: ! 2310: * expr.c (expand_expr): Convert post-inc to pre-inc if result ignored. ! 2311: ! 2312: Sat Feb 10 14:35:03 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2313: ! 2314: * ns32k.md (movsf): Convert double constant to float. ! 2315: ! 2316: Fri Feb 9 00:02:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2317: ! 2318: * c-decl.c (duplicate_decls): Don't lose alignment of OLDDECL. ! 2319: ! 2320: * cccp.c (handle_directive): Keep comments by copying them explicitly. ! 2321: ! 2322: * cccp.c (rescan): When scanning for open-paren after macro name, ! 2323: discard comments if appropriate. ! 2324: ! 2325: Fri Feb 9 18:26:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2326: ! 2327: * cse.c (cse_insn): Suppress infinite loop when associating ! 2328: operations in cases where a reg, R, is equal to "R OP const1" and ! 2329: we are looking at "R OP const2" for some associative operator OP. ! 2330: ! 2331: Thu Feb 8 14:19:41 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2332: ! 2333: * c-decl.c (build_enumerator): Pedantic warning if value not an int. ! 2334: Access default value after checking for constant specified, ! 2335: as it should no longer be possible to have NON_LVALUE_EXPR ! 2336: in the default. ! 2337: ! 2338: * c-typeck.c (default_conversion): Don't truncate wide enums. ! 2339: ! 2340: * tm-hp9k320.h (CPP_SPEC): Define _INCLUDE__STDC__ if not traditional. ! 2341: * tm-hp9k310.h (CPP_SPEC): Likewise. ! 2342: ! 2343: Wed Feb 7 12:59:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2344: ! 2345: * emit-rtl.c (emit_insns_before): New fn. ! 2346: (init_emit_once): Add uses of new macros to support static chain ! 2347: passed in memory. ! 2348: * calls.c (prepare_call_address): Rework to set static chain for ! 2349: languages that have EPmode function addresses and for nested ! 2350: functions in C. ! 2351: Emit USE insn for static_chain_rtx into list of USE insns to be ! 2352: placed later. ! 2353: (emit_call_1): USE_INSNS is now a list of insns, not a SEQUENCE. ! 2354: (expand_call): Remove gratuitous forcing of FUNEXP to Pmode (it ! 2355: might have been EPmode). ! 2356: Make USE_INSNS a list, rather than a SEQUENCE. ! 2357: Use prepare_call_address to emit load into static chain. ! 2358: * expr.c (emit_library_call): Update call to prepare_call_address. ! 2359: * function.c (expand_function_start): Use incoming static chain rtx ! 2360: instead of outgoing form (was correct in one place, wrong in one). ! 2361: * stmt.c (expand_goto): Set static_chain rtx after stack pointer ! 2362: in case it uses the stack pointer. ! 2363: Only write one USE for stack_pointer_rtx. ! 2364: ! 2365: Tue Feb 6 17:26:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2366: ! 2367: * jump.c (jump_optimize): Suppress optimization of `if (...) x = 1; ! 2368: else {...} if (x) ...', when a label is present between the ! 2369: assignment to X and the unconditional jump. ! 2370: ! 2371: Mon Feb 5 23:22:30 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2372: ! 2373: * combine.c (try_combine): If I2 or I1 is a PARALLEL, ignore only ! 2374: CLOBBER parts when combining. Previously used to ignore USE parts ! 2375: also but the latter can indicate that the insn needs some setup that ! 2376: isn't shown in its rtl. ! 2377: ! 2378: Mon Feb 5 13:32:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2379: ! 2380: * vax.md (addhi3, addqi3): Fix typo checking for dec insn. ! 2381: ! 2382: * cccp.c (struct file_buf): New field `nominal_fname' is name spec'd ! 2383: in #line command; `fname' is name of actual input file. ! 2384: Many functions now use or set this field as well or instead. ! 2385: ! 2386: * c-decl.c (grokdeclarator): Fix missing paren. ! 2387: ! 2388: Sun Feb 4 12:37:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2389: ! 2390: * tm-3b1g.h: New file. ! 2391: * config.gcc (3b1g, 3b1-gas): New alternative. ! 2392: ! 2393: * loop.c (move_movables): Skip USE insns when checking for ! 2394: the insn that loads the address of a library function. ! 2395: ! 2396: * combine.c (combine_instructions): Compute total_distrib_*. ! 2397: ! 2398: * final.c (final): Do basic block profiling at end of function. ! 2399: (final, final_scan_insn): Run CC_STATUS_INIT after block profiling. ! 2400: (final_scan_insn): Detect cond jumps that use PARALLEL. ! 2401: ! 2402: Sun Feb 4 00:04:22 1990 Richard Kenner (rms at sugar-bombs.ai.mit.edu) ! 2403: ! 2404: * function.c (assign_stack_local): Use plus_constant to avoid ! 2405: PLUS when offset is zero. ! 2406: (assign_outer_stack_local): Ditto. ! 2407: ! 2408: Sun Feb 4 00:04:22 1990 Ron Guilmette (rms at sugar-bombs.ai.mit.edu) ! 2409: ! 2410: * explow.c (fix_lexical_addr): Fix typo. ! 2411: ! 2412: * tree.c (build_type_variant): Special handling for protoize. ! 2413: ! 2414: * protoize.c: New file. ! 2415: ! 2416: * toplev.c (flag_gen_aux_info): Define it. ! 2417: (f_options): Recognize the flag. ! 2418: (compile_file): Open and close the aux_info file. ! 2419: ! 2420: * flags.h (flag_gen_aux_info): Declare it. ! 2421: ! 2422: * c-typeck.c (comptypes): Handle equivalent variant types for protoize. ! 2423: ! 2424: * c-decl.c (implicitly_declare): Call gen_aux_info_record. ! 2425: (start_decl, store_parm_decls): Likewise. ! 2426: (pushdecl): For protoize, distinguish different names for same type. ! 2427: (grokdeclarator): For protoize, don't always get main variant. ! 2428: (finish_function): Take the main variant here. ! 2429: ! 2430: * c-aux-info.c, SYSCALLS.c: New files. ! 2431: ! 2432: * Makefile.in (proto, protoize, unprotoize): New targets. ! 2433: (protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize): More new. ! 2434: (c-aux-info.o): Also new. ! 2435: (STAGESTUFF): Add protoize, unprotoize. ! 2436: (install): Install protoize, unprotoize and SYSCALLS.c.X. ! 2437: ! 2438: Sat Feb 3 17:09:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2439: ! 2440: * c-typeck.c (digest_init): Allow conversion of array exp to pointer. ! 2441: Constructors with types are simply expressions, so don't treat as ! 2442: initializers. ! 2443: ! 2444: * Makefile.in (uninstall): New target. ! 2445: ! 2446: * Makefile.in (include/README): Target deleted. ! 2447: (include): Deleted. ! 2448: (INSTALL): Create include dir here. ! 2449: ! 2450: * Makefile.in (all.internal): Enable compiling cc1plus. ! 2451: (lang-cplus): New target. ! 2452: (*.o): Add some missing dependencies. ! 2453: (STAGESTUFF): Add cc1plus. ! 2454: ! 2455: Fri Feb 2 18:21:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2456: ! 2457: * tree.c (decl_function_context): Don't abort when passed ERROR_MARK. ! 2458: ! 2459: Fri Feb 2 17:04:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2460: ! 2461: * integrate.c (copy_for_inline): Use real width of rtunion in bcopy. ! 2462: * emit-rtl.c (copy_rtx_if_shared): Likewise. ! 2463: ! 2464: * assert.h (assert) [__STDC__]: Use comma operator to avoid warning. ! 2465: ! 2466: * c-decl.c (grokdeclarator): Traditionally change return type float ! 2467: to double. ! 2468: ! 2469: * cse.c (predecide_loop_entry): Give up unless simple jump enters loop. ! 2470: ! 2471: Thu Feb 1 19:32:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2472: ! 2473: * c-parse.y (yylex, skip_white_space): CR is not whitespace. ! 2474: ! 2475: Thu Feb 1 17:18:33 1990 Richard Kenner (kenner at sugar-bombs.ai.mit.edu) ! 2476: ! 2477: * tm-m68k.h (PREFERRED_RELOAD_CLASS): Never return DATA_REGS for ! 2478: ADDR_REGS, even for QImode. ! 2479: ! 2480: * cse.c (cse_insn): If source equivalent is not in table, but ! 2481: source is, put equivalent in same class as source. But do not ! 2482: do this if the destination has a STRICT_LOW_PART. ! 2483: (cse_main): Call init_recog instead of init_recog_no_volatile. ! 2484: ! 2485: Thu Feb 1 17:18:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2486: ! 2487: * Makefile.in (cplus-tab.c, cplus-tab.h): Renamed from cplus-parse.*. ! 2488: (TAGS, realclean): Renamed these files. ! 2489: (cplus-decl2.o, cplus-type2.o, cplus-search.o): New targets. ! 2490: (cplus-except.o, cplus-expr.o): New targets. ! 2491: (new-method.o): Target deleted. ! 2492: (CPLUS_OBJS): Add and delete object files. ! 2493: (CPLUS_TREE_H): Change header names. ! 2494: (INTERNAL_CFLAGS): Set the MERGED flag. ! 2495: ! 2496: * calls.c (expand_call): Flush junk in assign of CONTEXT. ! 2497: ! 2498: * expr.c (expand_expr): LOOP_STMT is just an infinite loop. ! 2499: Handle EXIT_STMT. ! 2500: * tree.def (EXIT_STMT): Change meaning: exit if expression is true. ! 2501: * stmt.c (warn_if_unused_value): Do nothing for EXIT_STMT. ! 2502: ! 2503: Thu Feb 1 14:10:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2504: ! 2505: * optabs.c (emit_no_conflict_block): Accept optional expression ! 2506: to be placed in REG_EQUAL note on last insn emitted. ! 2507: Just emit insns if TARGET is not a register. ! 2508: (expand_binop, expand_unop): Change calls. ! 2509: ! 2510: Thu Feb 1 01:03:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2511: ! 2512: * tree.def (NON_LVALUE_EXPR): New tree code. ! 2513: * fold-const.c (non_lvalue): No longer static. ! 2514: Make NON_LVALUE_EXPR. Do nothing if arg certainly not lvalue. ! 2515: * c-typeck.c (build_c_cast): Call non_lvalue. ! 2516: (default_conversion, build_function_call, actualparameterlist): ! 2517: (build_binary_op_nodefault, truthvalue_conversion, build_modify_expr): ! 2518: (convert_for_assignment, digest_init): Strip NON_LVALUE_EXPR from args. ! 2519: (build_unary_op, build_modify_expr): No longer need to check for ! 2520: NOP_EXPR that indicates not an lvalue. ! 2521: (build_compound_expr, build_c_cast): Don't strip NON_LVALUE_EXPR ! 2522: * expr.c (expand_expr, do_jump): Handle NON_LVALUE_EXPR. ! 2523: * c-decl.c (build_enumerator, grokdeclarator): Strip them. ! 2524: * c-parse.y (case label): Strip them. ! 2525: ! 2526: * limits.h (INT_MIN): Define so it has type `int', not unsigned. ! 2527: (CHAR_MIN, SCHAR_MIN, SHRT_MIN): Put arens around value. ! 2528: ! 2529: * reload1.c (inc_for_reload): Forget reg_last_reload_reg ! 2530: for the reg being inc'd. ! 2531: ! 2532: Wed Jan 31 17:37:53 1990 Michael Tiemann (rms at sugar-bombs.ai.mit.edu) ! 2533: ! 2534: * cplus-*: New files. ! 2535: ! 2536: * tree.def (TARGET_EXPR): New name for NEW_EXPR. ! 2537: * tree.c (simple_cst_equal): Change NEW_EXPR to TARGET_EXPR. ! 2538: ! 2539: * stmt.c (estimate_case_costs): Check all nodes against ASCII range. ! 2540: ! 2541: * stmt.c (warn_if_unused_value): Delete obsolete node types. ! 2542: ! 2543: * recog.c (validate_change): Fix one-off bug testing recog_memoized. ! 2544: ! 2545: * local-alloc.c (local_alloc): Initialize qty_phys_reg. ! 2546: ! 2547: * fold-const.c (non_lvalue): Propagate TREE_LITERAL, TREE_VOLATILE. ! 2548: ! 2549: * expr.c (expand_expr): Delete DELETE_EXPR. ! 2550: Call lang_expand_expr for any unknown tree code. ! 2551: Handle IF_STMT, LOOP_STMT, LET_STMT for real. ! 2552: ! 2553: * dbxout.c (dbxout_type): Output args for method type. ! 2554: Treat OFFSET_TYPE as int if not using GDB extensions. ! 2555: ! 2556: Wed Jan 31 17:32:35 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2557: ! 2558: * stmt.c (node_has_high_bound, node_has_low_bound): ! 2559: Use integer_one_node, not new node. ! 2560: ! 2561: * expr.c (do_jump): In comparisons against zero, used unsigned, rather ! 2562: than signed, extensions, as that is more likely to be the faster one. ! 2563: ! 2564: Wed Jan 31 14:09:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2565: ! 2566: * toplev.c (rest_of_compilation): Ignore TREE_INLINE if not -O. ! 2567: ! 2568: * out-mips.c (mips_prologue): Handle big stack frames > 2**16. ! 2569: ! 2570: * tree.h (struct tree_type): Rename `max' field to `maxval'. ! 2571: (TYPE_MAX_VALUE, TYPE_OFFSET_BASETYPE, TYPE_METHOD_BASETYPE): ! 2572: Use new name. ! 2573: ! 2574: * reload1.c (reload): Reject fixed regs when spilling large groups. ! 2575: ! 2576: * c-decl.c (start_function): ! 2577: Optionally warn if non-proto defn without previous prototype. ! 2578: ! 2579: * Makefile.in: New rule to make .../include subdir. ! 2580: New rule to run fixincludes into it. ! 2581: Rule `install' depends on them. ! 2582: ! 2583: * assert.h (assert) [no NDEBUG]: Split into versions with/out __STDC__ ! 2584: (_assert) [__STDC__]: Pass expression and file separately to _eprintf. ! 2585: (_assert) [not __STDC__]: Likewise, but implemented differently. ! 2586: * gnulib2.c (__eprintf): Handle 3 args plus format string. ! 2587: ! 2588: * tm-i386.h (STACK_BOUNDARY): Define it. ! 2589: ! 2590: Tue Jan 30 16:24:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2591: ! 2592: * Makefile.in (install): Fix typo in name of varargs file. ! 2593: ! 2594: * combine.c (try_combine): Don't allow combine to violate machine's ! 2595: alignment restriction. ! 2596: ! 2597: Sun Jan 28 03:53:28 1990 Michael Tiemann (tiemann at rio) ! 2598: ! 2599: * stmt.c (warn_if_unused_value): Don't warn for LOOP_STMT, IF_STMT, ! 2600: or LET_STMT. ! 2601: ! 2602: * toplev.c (compile_file): Code to mention symbol that was not ! 2603: written to asm file is now #if 0'd out. What good is it telling the ! 2604: debugger about a symbol it cannot see? ! 2605: ! 2606: * dbxout.c (dbxout_type): Change METHOD_TYPE print character from ! 2607: '@' to '#'. Also, don't try to output CONST_DECLs. GDB doesn't ! 2608: understand them, and they don't have DECL_OFFSETs. ! 2609: ! 2610: * sparc.md (floatsidf2): Changed constraint from "rfm" to "rm" for ! 2611: second operand. ! 2612: ! 2613: * toplev.c (lang_expand_expr): New variable is pointer-to-function ! 2614: which expands language-specific tree codes. Its default is ! 2615: `fancy_abort'. ! 2616: ! 2617: Sat Jan 27 10:18:44 1990 Michael Tiemann (tiemann at rio) ! 2618: ! 2619: * gcc.c (main): Initialize COMPILERS before calling ! 2620: `validate_all_switches'. ! 2621: ! 2622: * tree.c (decl_{type,function}_context): Handle LET_STMT. ! 2623: ! 2624: * stmt.c (expand_decl_cleanup): New function. ! 2625: ! 2626: * stmt.c (expand_decl): No longer takes CLEANUP parameter. ! 2627: All callers changed. ! 2628: ! 2629: * tree.c (build_{loop,if,goto,compound}, etc): Turn these tree ! 2630: constructors back on. ! 2631: ! 2632: * tree.def: Delete DELETE_EXPR, PUSH_EXPR, POP_EXPR. ! 2633: ! 2634: * c-typeck.c (max): New macro. ! 2635: ! 2636: * c-decl.c (maybe_build_cleanup): New function. ! 2637: ! 2638: * tree.c ({value,purpose}_member): New functions. Returns first ! 2639: element of LIST that matches respective components with ELEM. ! 2640: ! 2641: * varasm.c (first_global_object_name): Variable defined. ! 2642: ! 2643: Sat Jan 27 23:31:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2644: ! 2645: * reload1.c (reload): Reject fixed regs when completing group of 2. ! 2646: ! 2647: Fri Jan 26 17:28:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2648: ! 2649: * expr.c (do_jump): Don't use CONST0_RTX when value to be tested is ! 2650: CONST_INT. ! 2651: ! 2652: Fri Jan 26 13:39:01 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2653: ! 2654: * gcc.c (main): Warn about bad switches at beginning, not at end. ! 2655: ! 2656: Thu Jan 25 22:03:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2657: ! 2658: * loop.c (general_induction_var): Reject widening multiply. ! 2659: ! 2660: * cccp.c (grow_outbuf): Always return 0. ! 2661: ! 2662: Thu Jan 25 07:04:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2663: ! 2664: * combine.c (subst): Correctly reference length in ! 2665: (zero_extract (zero_extend ... )) combinations. ! 2666: ! 2667: * c-decl.c: Define warn_traditional. ! 2668: (build_enumerator): Remove NOP_EXPRs from default value also. ! 2669: ! 2670: * fold-const.c (fold): Strip NOP_EXPRs when looking for constants. ! 2671: ! 2672: Thu Jan 25 01:57:34 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2673: ! 2674: * Makefile.in (install): Clear execute bit for nonexecutable files. ! 2675: ! 2676: * i860.md (andsi3): Truncate xop2 constant to 16 bits. ! 2677: ! 2678: Wed Jan 24 22:32:47 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2679: ! 2680: * genemit.c (main): Include output.h in insn-emit.c. ! 2681: * genpeep.c (main): Similar. ! 2682: * genrecog.c (main): Ditto. ! 2683: * Makefile.in (insn-emit.h, insn-peep.h, insn-recog.h): Add dependancy. ! 2684: ! 2685: Wed Jan 24 20:13:08 1990 Richard Stallman (rms at albert.ai.mit.edu) ! 2686: ! 2687: * cccp.c (do_define): Report error for duplicate macro args. ! 2688: ! 2689: Mon Jan 22 07:52:28 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2690: ! 2691: * reload1.c (alter_reg): Rework change of January 7th to allow ! 2692: for no previous insn and clear equivalence information of correct ! 2693: pseudo. ! 2694: ! 2695: Mon Jan 22 01:22:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2696: ! 2697: * fold-const.c (fold): Don't simplify non-lvalue to an lvalue. ! 2698: (non_lvalue): New fn; makes a NOP_EXPR with readonly flag. ! 2699: * c-typeck.c (build_unary_op, build_modify_expr): Reject such. ! 2700: ! 2701: Sun Jan 21 20:53:49 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2702: ! 2703: * c-typeck.c (lvalue_p): Don't call language_lvalue_valid. ! 2704: Don't bother with looking for NEW_EXPR or REFERENCE_TYPE. ! 2705: (language_lvalue_valid): Deleted. ! 2706: ! 2707: Sat Jan 20 19:50:15 1990 Michael Tiemann (mtiemann at apple-gunkies.ai.mit.edu) ! 2708: ! 2709: * expr.c (expand_expr): Implemented language-independent expansion ! 2710: for NEW_EXPR. ! 2711: ! 2712: Thu Jan 18 14:29:10 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2713: ! 2714: * cccp.c (rescan): Set beg_of_line when string ends at newline. ! 2715: (skip_quoted_string): Don't swallow newline that ends a string. ! 2716: (handle_directive): No need to back up here. ! 2717: Pass LIMIT as second arg to skip_quoted_string. ! 2718: ! 2719: Thu Jan 18 12:50:09 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2720: ! 2721: * emit-rtl.c (gen_lowpart): Verify CONST_DOUBLE is integer mode. ! 2722: (gen_highpart): Add support for CONST_INT and CONST_DOUBLE. ! 2723: ! 2724: * recog.c (general_operand): Don't allow nested SUBREGs. ! 2725: (nonmemory_operand, memory_operand, register_operand): Ditto. ! 2726: ! 2727: * emit-rtl.c (gen_reg_rtx): Don't allow creation of pseudos ! 2728: during or after reload. ! 2729: ! 2730: Thu Jan 18 11:41:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2731: ! 2732: * c-typeck.c (actualparameterlist): -Wconversion warns if ! 2733: representation or width is changed. ! 2734: ! 2735: Thu Jan 18 01:09:47 1990 Michael Tiemann (mtiemann at apple-gunkies.ai.mit.edu) ! 2736: ! 2737: * dbxout.c (various places): Don't assume that DECL_NAME of a ! 2738: PARM_DECL is non-zero. It might be empty for anonymous parms. ! 2739: ! 2740: Thu Jan 18 00:06:58 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2741: ! 2742: * local-alloc.c (local_alloc): qty_phys_sugg is now an array of ! 2743: HARD_REG_SETs. Initialize new variable qty_phys_has_sugg. ! 2744: (block_alloc): Don't test for nonlocal gotos here. ! 2745: Test qty_phys_has_sugg instead of qty_phys_sugg to see if ! 2746: quantity needs early allocation. ! 2747: (qty_compare, qty_compare_1): No longer consider whether a quantity ! 2748: has a hard register suggestion as part of its priority. ! 2749: (combine_regs): We now record multiple hard register suggestions ! 2750: in qty_phys_sugg. ! 2751: (find_free_reg): Test here for nonlocal gotos. ! 2752: Support new meaning of qty_phys_sugg by restricting to those ! 2753: registers if just_try_suggested. ! 2754: Check for no registers available prior to looping over registers. ! 2755: ! 2756: * global-alloc.c (prune_preferences): New fn. ! 2757: (global_alloc): No longer keep a single vector of which registers ! 2758: someone prefers; instead keep this record one per allocation number. ! 2759: Record registers not saved over calls as already used for register ! 2760: allocation purposes, so we can feel free to allocate them with no ! 2761: cost. ! 2762: Call new fn to prune preferences and build list of registers ! 2763: preferred by earlier allocnos. ! 2764: find_reg no longer gets preference information as argument. ! 2765: (find_reg): Don't take preferred registers as argument; get the ! 2766: info from global variables. ! 2767: (set_preference): Remove regs_someone_prefers. ! 2768: (dump_conflicts): Print register preferences in dump file. ! 2769: ! 2770: Wed Jan 17 16:00:59 1990 Michael Tiemann (mtiemann at apple-gunkies.ai.mit.edu) ! 2771: ! 2772: * tree.c (decl_function_context): New function, returns the ! 2773: innermost DECL_CONTEXT of FNDECL when that context is a ! 2774: FUNCTION_DECL. ! 2775: * tree.c (decl_type_context): New function, returns the ! 2776: innermost DECL_CONTEXT of FNDECL when that context is a ! 2777: TYPE_DECL. ! 2778: * All callers changed to use `decl_function_context' when handling ! 2779: nested functions. ! 2780: * All C++ callers changed to use `decl_type_context' when handling ! 2781: member functions. ! 2782: ! 2783: * expr.c (fixed_type_p): New function says whether the compiler ! 2784: guarantees that it knows the true type of an object. ! 2785: * expr.c (expand_expr): Call that function for INIT_EXPR and ! 2786: MODIFY_EXPR. Also, for MODIFY_EXPR, check both RHS and LHS. ! 2787: ! 2788: * tree.h (DECL_ARG_TYPE): Use INITIAL, not ARGUMENTS slot in ! 2789: `tree_decl. Now reserving ARGUMENTS slot for VAR_DECL and ! 2790: PARM_DECL for language-specific features. ! 2791: ! 2792: * tree.c (build_decl): Don't set DECL_PRINT_NAME by default. ! 2793: ! 2794: * assert.h: Assume that undefined __GNUC__ implies `assert' must ! 2795: rely on printf. ! 2796: ! 2797: Wed Jan 17 15:31:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2798: ! 2799: * cccp.c (rescan): If traditional, end preproc number after expt sign. ! 2800: ! 2801: Wed Jan 17 15:18:25 1990 Michael Tiemann (mtiemann at apple-gunkies.ai.mit.edu) ! 2802: ! 2803: * stmt.c: Extended struct nesting to hold exception handling ! 2804: contours. New functions: ! 2805: ! 2806: expand_start_try, expand_end_try, in_try_block ! 2807: expand_start_except, expand_end_except, in_except_block ! 2808: expand_start_catch, expand_end_catch, expand_catch_default ! 2809: expand_raise, expand_escape_except, in_exception_handler ! 2810: ! 2811: Wed Jan 17 13:48:01 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2812: ! 2813: * cccp.c (main): Typo, had `includes' for `include'. ! 2814: Always increment p. ! 2815: ! 2816: * reload1.c (alter_reg): Delete spurious `break'. ! 2817: ! 2818: * local-alloc.c (block_alloc): Delete ref to undef var first_time. ! 2819: ! 2820: Wed Jan 17 13:35:47 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu) ! 2821: ! 2822: * toplev.c: Unmerge all changes of Bryan Boreham--no papers (yet). ! 2823: ! 2824: Wed Jan 17 12:33:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2825: ! 2826: * stor-layout.c (layout_type): Struct requires BLKmode if any field ! 2827: crosses a word boundary. ! 2828: ! 2829: Wed Jan 17 12:04:18 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu) ! 2830: ! 2831: * stor-layout.c (layout_type): Unterminate comment terminated. ! 2832: ! 2833: * tree.c (lvalue_p,lvalue_or_else): Remove these functions from this ! 2834: file. ! 2835: * c-typeck.c (lvalue_p,lvalue_or_else): Put them in this file. ! 2836: ! 2837: Wed Jan 17 00:46:24 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2838: ! 2839: * c-decl.c (pushdecl): Delete garbage accidentally added before. ! 2840: ! 2841: * tree.c (set_identifier_size): SIZE is size in bytes. ! 2842: * tree.c (get_identifier): If `set_identifier_size' has not been ! 2843: called, abort. ! 2844: * c-decl.c (init_decl_processing): Don't call `set_identifier_size' ! 2845: from here. ! 2846: * c-parse.y (init_lex): Call `set_identifier_size' from here. ! 2847: ! 2848: * varasm.c (force_const_mem): Save DESC's label on the ! 2849: saveable_obstack. (Note, saveable is misspelled.) ! 2850: ! 2851: * listing: New file. ! 2852: ! 2853: Tue Jan 16 20:43:55 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2854: ! 2855: * c-typeck.c (convert_sequence): Put in #if 0. ! 2856: ! 2857: Tue Jan 16 17:25:43 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu) ! 2858: ! 2859: * toplev.c: Merged Bryan Boreham's undumping code. ! 2860: ! 2861: * print-tree.c (dump): Handle TREE_VEC. ! 2862: ! 2863: * varasm.c (output_constant_pool): When done, set FIRST_POOL, ! 2864: LAST_POOL to zero. ! 2865: ! 2866: * varasm.c (first_global_object_name): New variable. Records the ! 2867: name of the first global declaration (variable or function) whichi ! 2868: is written to the assembly file. ! 2869: ! 2870: * tree.h (tree_code_name): Add declaration. ! 2871: ! 2872: Tue Jan 16 17:06:29 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2873: ! 2874: * local-alloc.c (block_alloc): Make an initial pass to try to ! 2875: allocate registers that have suggested hard registers. ! 2876: (find_free_reg): Add new argument to only try suggested hard register. ! 2877: ! 2878: Tue Jan 16 15:54:06 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu) ! 2879: ! 2880: * tree.h (tree_vec): Added. ! 2881: ! 2882: * tree.def (IDENTIFIER_NODE): Default length is 2. ! 2883: * tree.def (TREE_VEC): Define it. ! 2884: * tree.def ({NEW_,DELETE_,REFERENCE_}EXPR): fixed comments. ! 2885: ! 2886: * tree.c (preserve_initializer): New function. Like ! 2887: `preserve_data', but saves nodes on momentary_obstack as well. ! 2888: * tree.c (make_tree_vec): New function. Allocates a TREE_VEC node. ! 2889: * tree.c (copy_node): Support added for TREE_VEC. ! 2890: * tree.c (build_parse_node): New function. Builds tree node on ! 2891: TEMP_DECL_OBSTACK. ! 2892: ! 2893: Tue Jan 16 15:23:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2894: ! 2895: * expr.h: Eliminate definitions of andcb_optab and expand_bit_and. ! 2896: * expmed.c (expand_bit_and): Eliminate function. ! 2897: (store_fixed_bit_field, extract_fixed_bit_field, expand_divmod): ! 2898: Replace expand_bit_and with call to expand_binop. ! 2899: * expr.c (expand_expr): Handle TRUTH_AND_EXPR and BIT_AND_EXPR ! 2900: as normal binary operations. ! 2901: (do_store_flag): Replace expand_bit_and with expand_binop. ! 2902: * optabs.c (expand_binop, init_optabs): Eliminate andcb_optab. ! 2903: ! 2904: * expmed.c (expand_shift): Don't use extzv for rotate. ! 2905: If all three tries at a shift operation failed, delete the ! 2906: insns made during the last try. ! 2907: Handle failure of extzv operation. ! 2908: Call protect_from_queue before convert_to_mode for op1. ! 2909: ! 2910: Tue Jan 16 10:38:28 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu) ! 2911: ! 2912: * tree.c: Added temp_decl_obstack for building declarators without ! 2913: needing to use permanent_obstack at top level. ! 2914: * tree.c (init_tree): Init temp_decl_obstack. ! 2915: * tree.c (permanent_allocation): Free nodes allocated on ! 2916: temp_decl_obstack. ! 2917: * tree.c (build_decl_list,decl_tree_cons): New functions. Like ! 2918: `build_tree_list' and `tree_cons', but for building on ! 2919: temp_decl_obstack. ! 2920: * tree.c (build1): New function. Builds tree node for unary tree ! 2921: node kinds; doesn't use varargs. ! 2922: * tree.c (simple_cst_equal): Interface changed to return 1 if ! 2923: arguments are equal, 0 if not, and -1 if arguments were not ! 2924: understood by the function. ! 2925: * tree.c (build_{method,offset}_type): TYPE_*_BASETYPE is the ! 2926: TYPE_MAIN_VARIANT of BASETYPE. ! 2927: ! 2928: Mon Jan 15 01:50:51 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2929: ! 2930: * cexp.y (exp): Accept unary +. ! 2931: ! 2932: * Makefile.in (hard-params): Compile with GCC. ! 2933: (hard-params.o): Likewise, and depend on the GCC executables. ! 2934: ! 2935: * tm-sparc.h (CONST_COSTS): Give 1, not 0, for immed consts. ! 2936: ! 2937: Sun Jan 14 14:38:10 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu) ! 2938: ! 2939: * stmt.c (estimate_case_costs): New function. Case code no longer ! 2940: assumes that all case values are equally likely for all types. In ! 2941: particular, when the type of argument for the switch statement does ! 2942: not look like it is not ASCII text, we assume that it might be, and ! 2943: assign a weight to its value based on frequency distribution of ! 2944: characters in ASCII text. ! 2945: * stmt.c (balanace_case_nodes): If case values look like ASCII text, ! 2946: then use the cost table. Otherwise, do not. Using the cost table ! 2947: means that the otherwise almost-balanced binary tree may be skewed ! 2948: in hopes of picking up common values more quickly than just ! 2949: log(n). This is done at the direct expense of the less common ! 2950: values, which will be reached at more than log(n). ! 2951: * stmt.c (emit_case_nodes): If using COST_TABLE and the most likely ! 2952: case value is on one side of the tree or another, hand-pick boundary ! 2953: tests so that condition codes can be reused (if possible). ! 2954: * stmt.c (expand_end_cast): If optimizing, and the type of ! 2955: ORIG_INDEX is not an enumeral type, then call `estimate_case_costs.' ! 2956: ! 2957: Sun Jan 14 12:18:49 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2958: ! 2959: * fold-const.c (lshift_double, rshift_double, lrotate_double): ! 2960: (rrotate_double): Don't shift more than width of operand. ! 2961: ! 2962: Fri Jan 12 12:17:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2963: ! 2964: * recog.c (next_insns_test_no_inequality): Return 1 at end of rtl. ! 2965: ! 2966: * expr.c (store_expr): No special handling for constructor ! 2967: unless value is going in struct value block. ! 2968: ! 2969: * stor-layout.c (layout_type): Use common nodes for sizes of ptrs, fns. ! 2970: (make_signed_type, make_unsigned_type): Create those nodes. ! 2971: (layout_record): Just ignore VAR_DECL if not static. ! 2972: ! 2973: Thu Jan 11 14:09:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2974: ! 2975: * c-decl.c (lang_decode_option): Decode -Wtraditional. ! 2976: * c-decl.c (implicitly_declare): Warn if extern decl previously seen. ! 2977: * c-typeck.c (c_expand_start_case): Warn if switch exp is long. ! 2978: ! 2979: * c-typeck.c (actualparameterlist): Optionally warn on truncation. ! 2980: * toplev.c (main): Handle -Wconversion. ! 2981: ! 2982: * cccp.c (skip_if_group): Skip strings even if -traditional. ! 2983: (handle_directive): Likewise, when handling copy_command. ! 2984: ! 2985: Thu Jan 11 14:15:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2986: ! 2987: * cse.c (cse_insn): Only check for REG_EQUAL notes and make ! 2988: REG_EQUAL notes instead of REG_EQUIV notes. ! 2989: * explow.c (force_reg): Make REG_EQUAL note instead of REG_EQUIV ! 2990: note. Check for and reuse old note if present. ! 2991: * local-alloc.c (block_alloc): Convert REG_EQUAL to REG_EQUIV for ! 2992: constant when register is only set once. ! 2993: * loop.c (combine_movables, move_movables): Check for REG_EQUAL notes ! 2994: instead of REG_EQUIV notes. ! 2995: * optabs.c (expand_binop): Correct typo in writing REG_EQUAL note. ! 2996: (emit_no_conflict_block): Suppress REG_NO_CONFLICT notes for ! 2997: non-registers. ! 2998: ! 2999: Thu Jan 11 14:09:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3000: ! 3001: * i860.md (movsf): Ensure F to f is reloaded via r. ! 3002: ! 3003: * expr.c (expand_increment): Don't call stabilize. ! 3004: ! 3005: Wed Jan 10 15:03:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3006: ! 3007: * c-decl.c (duplicate_decls): If old fn decl follows new ellipsis decl, ! 3008: warn only if pedantic. ! 3009: ! 3010: * loop.c (loop_skip_over): Do nothing if don't find expected compare. ! 3011: ! 3012: Tue Jan 9 21:31:46 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3013: ! 3014: * jump.c (jump_optimize): Don't delete USE and CLOBBER insns. ! 3015: The later call to find_equiv_reg can malfunction if CLOBBERs are ! 3016: deleted. ! 3017: ! 3018: Mon Jan 8 17:48:20 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3019: ! 3020: * gcc.c (link_command_spec): Always check gnulib both first and last. ! 3021: ! 3022: Mon Jan 8 17:07:25 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3023: ! 3024: * optabs.c (expand_unop): Perform multi-word logical negation one ! 3025: word at a time. ! 3026: (expand_binop, expand_unop): Insert REG_EQUAL note on last insn of ! 3027: multi-insn sequence. ! 3028: Use TARGET_PIECE instead of TARGET in multi-word logical operations. ! 3029: (emit_no_conflict_block): New fn. ! 3030: (expand_binop, expand_unop): Call it. ! 3031: (gen_add2_insn, gen_sub2_insn): Abort if operands do not match those ! 3032: of the predicates for the appropriate generators. ! 3033: ! 3034: * expr.h: Fix typo and define emit_no_conflict_block. ! 3035: ! 3036: Mon Jan 8 15:33:19 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3037: ! 3038: * rtl.h (REG_UNSET): Fix the code. ! 3039: * rtl.c (reg_note_name): Add REG_UNSET. ! 3040: ! 3041: * c-decl.c (struct binding_level): parm_flag now 2 for def, 1 for decl. ! 3042: (declare_parm_level): New parm distinguishes them. All calls changed. ! 3043: (pushdecl): Don't warn about shadowing with parm name in fn decl. ! 3044: ! 3045: Mon Jan 8 15:15:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3046: ! 3047: * cse.c (cse_basic_block): Allow NOTEs between LOOP_BEG and jump to ! 3048: end test. ! 3049: (predecide_loop_entry): Accept JUMP_INSN rather than LOOP_BEG NOTE. ! 3050: ! 3051: * reload1.c (gen_input_reload): When adding constant to register, ! 3052: move the constant into the output, then add the register, rather than ! 3053: the other way around. ! 3054: ! 3055: Mon Jan 8 12:20:26 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3056: ! 3057: * c-parse.y (components): Don't allow to be empty. ! 3058: (component_decl): Special cases if empty, to call shadow_tag. ! 3059: Recognize the semicolon here. ! 3060: (component_decl_list): No semicolon here. ! 3061: ! 3062: * c-decl.c (shadow_tag): Print warning if nameless structure defined. ! 3063: ! 3064: Sun Jan 7 19:09:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3065: ! 3066: * varasm.c (output_constant): Use size of machine mode ! 3067: to choose how to output the constant. ! 3068: ! 3069: * varasm.c (immed_real_const_1): Detect 1 as well as 0. ! 3070: ! 3071: * reload1.c (reload): When deleting reg_equiv_init insn, ! 3072: also delete the prev insn if it is no longer needed. ! 3073: ! 3074: * real.h (REAL_VALUE_FROM_CONST_DOUBLE, CONST_DOUBLE_FROM_REAL_VALUE): ! 3075: New macros. ! 3076: ! 3077: * reload.c (find_reloads_address_1): Preserve original X value ! 3078: in case we replace it with new memory reference. ! 3079: ! 3080: * optabs.c (expand_binop): Handle case of no previous insns. ! 3081: ! 3082: * jump.c (jump_back_p): Check for floating point if not IEEE. ! 3083: ! 3084: * global-alloc.c (dump_global_regs): Break the line occasionally. ! 3085: ! 3086: * flow.c (mark_used_regs): Recognize post-decrement properly. ! 3087: It looks like (plus REG -CONST), not (minus REG CONST). ! 3088: Also, patch out old insn as a note in the usual way. ! 3089: ! 3090: * calls.c (emit_call_1): Arg to RETURN_POPS_ARGS is FUNTYPE itself. ! 3091: ! 3092: * expr.c (STACK_PUSH_CODE): New macro, which config.h can override. ! 3093: (gen_push_operand): Use it. ! 3094: (emit_push_insn): Reverse padding if pushing is post-increment. ! 3095: (expand_expr): For MINUS, sign-extend negated value. ! 3096: ! 3097: * emit-rtl.c (init_emit_once): Initialize new variables ! 3098: fconst1_rtx, dconst1_rtx, dconst0, dconst1, dconstm1. ! 3099: ! 3100: * cse.c (fold_rtx): For COMPARE and MINUS, test for floating zero arg. ! 3101: Also handle equal floating args if FLOAT_NOT_IEEE. ! 3102: For NEG, eliminate silly temp var. ! 3103: For MULT and DIV, handle more cases with floating point. ! 3104: Change division by floating constant into multiplication. ! 3105: ! 3106: * config.gcc: Add i386-mach. ! 3107: * xm-i386.h: Use built-in alloca if compiling with GCC. ! 3108: ! 3109: * Makefile.in (c-parse.tab.o): Delete -o switch. ! 3110: (cexp.o): Put in explicit command. ! 3111: ! 3112: * combine.c (record_dead_and_set_regs): Ignore stack pushes. ! 3113: ! 3114: Sat Jan 6 15:33:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3115: ! 3116: * out-mips.c (function_arg, function_arg_advance): ! 3117: Define typedef for CUMULATIVE_ARGS, and use it here. ! 3118: ! 3119: * c-parse.y (yylex): Put 0 at end of wide string. ! 3120: ! 3121: * tm-mips.h (CC1_SPEC): Don't distort meaning of -O. ! 3122: ! 3123: Fri Jan 5 12:12:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3124: ! 3125: * optabs.c, expr.h: All use of umul_optab deleted. ! 3126: * gnulib.c (__umulsi3): Deleted. ! 3127: ! 3128: * gcc.c (link_command_spec): If LIBS_COMPILED_WITH_GCC, gnulib is last. ! 3129: ! 3130: * Makefile.in (INTERNAL_CFLAGS): New parameter. ! 3131: (ALL_CFLAGS): New variable, replaces CFLAGS when compiling. ! 3132: (HOST_CFLAGS): Define from ALL_CFLAGS. ! 3133: ! 3134: * Makefile.in (insn-*.o, cccp.o, others): Use CPPFLAGS. ! 3135: ! 3136: * Makefile.in (gnulib): Add null command. ! 3137: ! 3138: Fri Jan 5 08:11:20 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3139: ! 3140: * combine.c (subst): When applying De`Morgan's law, compute NOT ! 3141: of constant. ! 3142: ! 3143: * integrate.c (save_constants, restore_constants): Clean up fns ! 3144: by passing in a pointer to an rtx so that insns can be modified ! 3145: in place. ! 3146: (save_for_inline): Change call to save_constants. ! 3147: Apply save_constants to REG_NOTES. ! 3148: (expand_inline_function): Use emit_move_insn instead of generating ! 3149: an explicit SET. ! 3150: Apply copy_rtx_and_substitute to REG_NOTES. ! 3151: (output_inline_function): Change call to restore_constants. ! 3152: Apply restore_constants to REG_NOTES. ! 3153: ! 3154: Thu Jan 4 23:58:59 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3155: ! 3156: * Makefile (c-parse.tab.o): Add explicit compilation cmd. ! 3157: ! 3158: Thu Jan 4 22:48:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3159: ! 3160: * cse.c (insert_regs, insert, use_related_value): Don't assume REG is ! 3161: first in class. ! 3162: (HASH): Handle register with HASHREG macro for speed. ! 3163: (insert): No longer need equivalence_only. ! 3164: Use COST macro. ! 3165: (use_related_value): No longer need to check for valid address. ! 3166: (find_best_addr): New function. ! 3167: (fold_rtx): Remove copyflag argument and replace with insn. ! 3168: Check for common cases before making recursive call. ! 3169: Call validate_change to ensure change is valid, but always return ! 3170: simplified expression. ! 3171: Replace operand with folded operand, or constant operand, whichever ! 3172: is cheaper and is valid. ! 3173: Call find_best_addr for MEMs. ! 3174: (fold_cc0): Add insn operand to pass to calls to fold_rtx. ! 3175: (cse_insn): Rework to enumerate all possible equivalences and replace ! 3176: source with cheapest valid. ! 3177: Simplify associative operations with constants where an operand is ! 3178: equivalent to the same operation with another constant. ! 3179: Use validate_change for all changes. ! 3180: ! 3181: Thu Jan 4 17:58:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3182: ! 3183: * stmt.c (expand_end_loop): Put NOTE_INSN_LOOP_CONT at top by default. ! 3184: ! 3185: * c-typeck.c (actualparameterlist): ! 3186: Convert parmnum to origin-1 to print. ! 3187: ! 3188: * Makefile.in (USER_H): Add float.h. ! 3189: ! 3190: Wed Jan 3 00:27:53 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3191: ! 3192: * gnulib.c (__extendsfdf2): Delete unused var. ! 3193: ! 3194: * reload1.c (alter_reg): Undo big-endian conversion from ! 3195: assign_stack_local. ! 3196: ! 3197: * calls.c (store_one_arg): Round size up for move_block_to_reg. ! 3198: (expand_call): Round up when emitting USE insns. ! 3199: * function.c (assign_parms): Round size up for move_block_from_reg. ! 3200: ! 3201: * Makefile (install): Use nested foreach-loop to expand va*.h. ! 3202: ! 3203: Tue Jan 2 16:01:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3204: ! 3205: * mips.md (call_value): Ignore calls to __builtin_saveregs. ! 3206: ! 3207: * tm-mips.h (STARTING_FRAME_OFFSET): Change from -8 to 0. ! 3208: (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Use new fns in out-mips.c. ! 3209: * out-mips.c (prologue_looks, mips_prologue, mips_epilogue): New. ! 3210: ! 3211: * gnulib2.c: Everything except arithmetic support moved from gnulib.c. ! 3212: * Makefile.in (LIB2FUNCS, LIBFUNCS): Likewise. ! 3213: ! 3214: Sun Dec 31 20:10:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3215: ! 3216: * tree.h (struct tree_common): Declare `code' as char, not int. ! 3217: ! 3218: Thu Dec 28 13:49:43 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3219: ! 3220: * Makefile.in (includes): Set variable LIB. Run from `./'. ! 3221: ! 3222: Wed Dec 27 18:54:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3223: ! 3224: * reload1.c (eliminate_frame_pointer): Special case for reg = reg2+fp. ! 3225: ! 3226: * loop.c (can_eliminate_biv_p, eliminate_biv): If add_val non zero, ! 3227: it must be a constant or register. ! 3228: ! 3229: Wed Dec 27 18:11:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3230: ! 3231: * i860.md (load DF constant to reg): Typo: extra percent sign. ! 3232: (floatsidf2): Two words of a double were backwards. ! 3233: ! 3234: Mon Dec 25 16:32:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3235: ! 3236: * emit-rtl.c (emit_note_before): New function. ! 3237: * stmt.c (expand_end_loop): Output NOTE_INSN_LOOP_CONT if none. ! 3238: ** Above change turned off. ! 3239: ! 3240: Mon Dec 25 00:02:31 1989 Torbj|rn Granlund (tege at zevs.sics.se) ! 3241: ! 3242: * tm-pyr.h (CONST_COSTS): Define more optimal costs. ! 3243: ! 3244: * tm-pyr.h (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Should not be defined. ! 3245: The cvtdw instruction causes a trap for floating point values ! 3246: that are out-of-range for a signed int. ! 3247: ! 3248: * tm-pyr.h (CONST_DOUBLE_OK_FOR_LETTER_P): Don't accept any ! 3249: special constraint chars, since we don't use any. ! 3250: ! 3251: * tm-pyr.h (CONSTANT_ALIGNMENT): Correct comment. ! 3252: ! 3253: * out-pyr.c (weird_memory_memory): Flush decl of unused variables. ! 3254: ! 3255: * out-pyr.c (has_direct_base): Don't accept 0 as a base, if there ! 3256: is a register displacement. This is a workaround of a bug in ! 3257: /bin/as. (/bin/as changes things like "cmpw 8(reg),0(reg)" into ! 3258: "cmpw 8(reg),(reg)", which is invalid assembler.) ! 3259: ! 3260: Sun Dec 24 12:01:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3261: ! 3262: * c-decl.c (finish_struct): Ok to define nameless union in parms. ! 3263: * c-typeck.c (compparms): Allow union vs its member's type, ! 3264: but only if same size & union is nameless. ! 3265: (comptypes): In that case, for a parm, prefer the member's type. ! 3266: (actualparameterlist): Nameless union parm casts all its memb types. ! 3267: ! 3268: * integrate.c (copy_decl_tree, copy_parm_decls): Set TREE_INLINE. ! 3269: * c-decl.c (pushdecl): No shadow-warning if TREE_INLINE is set. ! 3270: ! 3271: * dbxout.c (current_sym_code): Declare as enum; avoid warnings. ! 3272: ! 3273: Sat Dec 23 10:54:22 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3274: ! 3275: * combine.c (subst): Under NOT, move it inside AND and IOR. ! 3276: Under XOR, move NOT out. ! 3277: ! 3278: * toplev.c (set_target_switch): Handle multiple entries for one name. ! 3279: ! 3280: * ns32k.md (adjust stack): Distinguish processor subtype at run-time. ! 3281: (extract byte from register): Likewise. ! 3282: * tm-ns32k.h (TARGET_32532, TARGET_32332): New target options. ! 3283: * tm-encore.h, tm-sequent.h (TARGET_DEFAULT): Default them. ! 3284: ! 3285: Fri Dec 22 20:33:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3286: ! 3287: * Makefile.in (all): Move above where make-MACHINE is inserted. ! 3288: (all.internal): Definition of `all' indirects through this. ! 3289: (GNULIB): Variable allows rule for gnulib to be redirected. ! 3290: (gnulib.portable): Name for the standard rule for gnulib. ! 3291: ! 3292: * tm-mips.h (ASM_OUTPUT_SOURCE_FILENAME): New macro. ! 3293: (REG_CLASS_SUBUNION, REG_CLASS_SUBCLASSES, REG_CLASS_SUPERCLASSES): ! 3294: Obsolete macros deleted. ! 3295: ! 3296: Thu Dec 21 16:20:00 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3297: ! 3298: * fold-const.c (fold): Bug taking assignments out of conversions: ! 3299: Use language-independent method. ! 3300: ! 3301: * reload1.c (alter_reg): ! 3302: Always do big-endian correction on slot address. ! 3303: ! 3304: * i386.md (float push recognizers): Don't pop fpreg if not dead. ! 3305: ! 3306: Wed Dec 20 10:54:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3307: ! 3308: * assert.h: Cast value to void. ! 3309: ! 3310: Tue Dec 19 09:42:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3311: ! 3312: * gcc.c (link_command_spec): Put %l first. ! 3313: ! 3314: Tue Dec 19 08:59:43 1989 Richard Kenner (rms at sugar-bombs.ai.mit.edu) ! 3315: ! 3316: * genattrtab.c (get_attr_value): Initialize has_asm_insn field when ! 3317: making a new attr_value. ! 3318: ! 3319: Sun Dec 17 12:06:37 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3320: ! 3321: * c-typeck.c (digest_init, process_init_constructor, store_init_value): ! 3322: Give error for each invalid element seen in an initializer. ! 3323: New arguments say whether context wants error messages. ! 3324: * c-parse.y (cast_expr): Pass new args. ! 3325: * Unfortunately, this doesn't do the job, since the whole initializer ! 3326: is parsed before any is digested. ! 3327: ! 3328: * c-decl.c (duplicate_decls): Source loc of definition is ! 3329: more important than that of declaration. ! 3330: ! 3331: * cccp.c (include_defaults): On unos, also search /include. ! 3332: ! 3333: * m68k.md (movsi, movhi, store-0 recognizer): Conditional for CRDS. ! 3334: (mulhi3, mulhisi3, umulhi3, umulhisi3): Add % and CRDS conditional. ! 3335: (zero-extend recognizers): Put % before period in clr insns. ! 3336: (divide and modulus recognizers): Likewise for and, ext, swap and div. ! 3337: (dbra recognizers): Likewise for sub and clr insns. ! 3338: (tablejump recognizer): Conditional for CRDS. ! 3339: * tm-crds.h, xm-crds.h: New files. ! 3340: ! 3341: * gcc.c (read_specs): Don't include trailing newline in data ! 3342: read from specs file. ! 3343: (skip_whitespace): Empty line is a delimiter in specs data. ! 3344: ! 3345: * cccp.c (grow_outbuf): Change value back to int. ! 3346: ! 3347: * cse.c (cse_end_of_basic_block): Fix unterminated comment. ! 3348: ! 3349: * cccp.c (main): Add `.C' as known suffix for deps output. ! 3350: ! 3351: * expr.c (do_jump): Cast vector length to int in case will subtract. ! 3352: ! 3353: * tm-att386.h (ASM_OUTPUT_LOCAL): Revert last change: put it data seg. ! 3354: ! 3355: * reload.c (decompose): Make a separate case for SUBREG. ! 3356: ! 3357: * Makefile.in (HOST_RTLANAL): Define like HOST_RTL. ! 3358: (genattrtab): Use that to get at rtlanal.o. ! 3359: ($(HOST_PREFIX_1)rtlanal.o): New rule for cross-compilation. ! 3360: (STAGESTUFF): Typo in stamp-attrtab.c. ! 3361: ! 3362: * tm-hp9k320.h (CPP_PREDEFINES): Add __hp9000s300, _HPUX_SOURCE. ! 3363: ! 3364: * stupid.c (reg_order): Make it int, in case reg # is large. ! 3365: (stupid_reg_compare, stupid_life_analysis): Implement this. ! 3366: ! 3367: * gnulib2.c (__floatdidf): Define WORD_SIZE. ! 3368: ! 3369: * flow.c (find_basic_blocks): Don't clobber stack if no basic ! 3370: blocks. ! 3371: ! 3372: Sat Dec 16 12:38:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3373: ! 3374: * loop.c (can_eliminate_biv_p, eliminate_biv): Check in case ! 3375: neither side of a compare is the biv by itself. ! 3376: (check_eliminate_biv): Test of only_reg_use_p was backwards. ! 3377: (general_induction_var): If V is 0 and G is not, ! 3378: combine additive terms with plus_constant, provided ! 3379: either one of them is an integer. ! 3380: Check both operands of a sum for being givs in their own right. ! 3381: (strength_reduce): When eliminating a biv, don't mung insns that use ! 3382: it via a giv that will be handled later. ! 3383: (loop_skip_over): Duplicate an endtest that takes several insns. ! 3384: ! 3385: * loop.c (strength_reduce): When writing insn to init a biv, ! 3386: update life range of reg used to init it. ! 3387: ! 3388: * combine.c (try_combine): Do combine (y = x, x = y). ! 3389: ! 3390: * loop.c (strength_reduce): When finding initial value of a biv, ! 3391: notice assignments to subregs of it, etc. ! 3392: ! 3393: * m68k.md (all shift patterns): Require register_operand for ops 0, 1. ! 3394: ! 3395: * reload1.c (alter_reg): ! 3396: Don't set spill_stack_slot_width if from_reg is -1. ! 3397: ! 3398: * cse.c (cse_main): Delete local redef of flag_cse_follow_jumps. ! 3399: ! 3400: * reload1.c (new_spill_reg): Fatal error if fixed reg is spilled. ! 3401: (order_regs_for_reload): Make sure all the regs are in spill_regs. ! 3402: ! 3403: * mips.md (movsf): Fix wrong opcode moving genreg to fpreg. ! 3404: ! 3405: * toplev.c: Undef FFS after including param.h. ! 3406: ! 3407: * final.c (final_scan_insn): Delete label reinsert_compare. ! 3408: ! 3409: * expmed.c (store_bit_field): Move var value1 inside HAVE_insv. ! 3410: (extract_bit_field): Similar for bitsize_rtx, bitpos_rtx. ! 3411: ! 3412: * c-typeck.c (pointer_diff): Delete unused var. ! 3413: * expr.c (emit_push_insn): Likewise. ! 3414: * gcc.c (execute): Likewise. ! 3415: * genrecog.c (try_merge_2): ! 3416: * loop.c (skip_consec_insns, scan_loop): ! 3417: * recog.c (asm_noperands, memory_operand): ! 3418: * function.c (expand_function_end): ! 3419: * stmt.c (emit_jump_if_reachable): ! 3420: * toplev.c (error_for_asm): ! 3421: * varasm.c (assemble_string): ! 3422: ! 3423: * integrate.c (fp_addr_p): Var deleted. ! 3424: ! 3425: * regclass.c (regclass_init): Now returns void. ! 3426: * emit-rtl.c (emit_insns): Likewise. ! 3427: * stmt.c (emit_nop): Likewise. ! 3428: * out-sparc.c (output_eager_then_insn): Likewise. ! 3429: ! 3430: * reload1.c (reload_reg_reaches_end_p, reload_reg_free_before_p): ! 3431: (reload_reg_free_p): Abort if switch drops through. ! 3432: ! 3433: * cccp.c: Supply a return type for every function (usually void). ! 3434: (grow_outbuf): Now returns void. ! 3435: (line_for_error): Abort if the loop terminates. ! 3436: * gcc.c: Supply a return type for every function (usually void). ! 3437: ! 3438: * jump.c (jump_optimize): Leave block-beg, block-end notes ! 3439: in old context when swapping two ranges of insns. ! 3440: (squeeze_block_notes): New function. ! 3441: ! 3442: * calls.c (expand_call): Compute valreg from pointer type ! 3443: in case of pcc struct return. ! 3444: ! 3445: * gnulib2.c (__builtin_saveregs): Use __ names for machine types. ! 3446: ! 3447: * fold-const.c (fold): ! 3448: Move constant out of assignment, within conversion. ! 3449: ! 3450: Fri Dec 15 00:42:31 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3451: ! 3452: * varasm.c (assemble_variable): Use new macro DATA_ALIGNMENT if def. ! 3453: (get_or_assign_label): Use this instead of CONSTANT_ALIGNMENT. ! 3454: ! 3455: * integrate.c (save_constant, restore_constant): Handle naked ! 3456: constant-pool SYMBOL_REF. ! 3457: (copy_for_inline, copy_rtx_and_substitute): Ditto. ! 3458: ! 3459: * integrate.c (expand_inline_function): ! 3460: Put caller's line number after inline stuff. ! 3461: Put callee's line number before parm manipulation. ! 3462: ! 3463: * tree.c (make_node): Have a DECL_SOURCE_FILE in every decl. ! 3464: ! 3465: * m68k.md (fpa float and float-trunc): Accept general_operand. ! 3466: ! 3467: * calls.c (expand_call): Do INIT_CUMULATIVE_ARGS just once. ! 3468: ! 3469: * calls.c (expand_call): If struct ret addr is passed as parm, ! 3470: count it in structure_value_addr_parm. ! 3471: ! 3472: * If local-alloc assumes a reg does not conflict, ! 3473: don't use it as dummy reload. ! 3474: * local-alloc.c (wipe_dead_reg): Add REG_UNSET note. ! 3475: * reload.c (find_dummy_reload): Check for that note. ! 3476: ! 3477: * jump.c (jump_optimize): Realize that more things can follow ! 3478: the NOTE_INSN_FUNCTION_END note. Change in two places, ! 3479: for optimized and one for unoptimized. ! 3480: ! 3481: Thu Dec 14 23:40:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3482: ! 3483: * Makefile.in (install, libsubdir): Change $(machine) to $(target). ! 3484: ! 3485: Tue Dec 5 07:35:57 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3486: ! 3487: * rtl.h: Declare emit_jump_insn_before and emit_jump_insn_after. ! 3488: ! 3489: * reload.c (reg_class_subset_p): Delete duplicate copy. ! 3490: local-alloc.c (reg_class_subset_p): Move from here. ! 3491: regclass.c (reg_class_subset_p): Move to here. ! 3492: ! 3493: * combine.c (try_combine): Fix placement and content of LAST_CALL_CUID ! 3494: test to elminate memory faults. ! 3495: ! 3496: * final.c (asm_insn_count): New fn. ! 3497: (get_length_attr, shorten_branches): Rework length ! 3498: computation of insns with INSN_CODE == -1. Call above fn to more ! 3499: accurately obtain length of ASM insn. ! 3500: ! 3501: * genattrtab.c (check_attr_value): Allow CONST_INT to specify ! 3502: numeric values for attributes. Also, prevent memory faults ! 3503: on errors when ATTR is null. ! 3504: (make_canonical): Convert CONST_INT to appropriate CONST_STRING. ! 3505: (write_attr_case): Correctly check for ASM insns. ! 3506: (make_numeric_value): Generalize to all positive integers. ! 3507: ! 3508: * jump.c (jump_optimize): Set JUMP_LABEL on jump added ! 3509: in "{ ... x = 1;} if (x)" optimization and add to jump_chain. ! 3510: ! 3511: * local-alloc.c (no_conflict_p): Tighten up code to prevent ! 3512: memory faults. ! 3513: ! 3514: * reload.c (find_reloads): Fix typo in EXTRA_CONSTRAINT call. ! 3515: ! 3516: Tue Nov 28 11:20:47 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) ! 3517: ! 3518: * expr.c (save_noncopied_parts): Rename stack_loc as target. ! 3519: Make the stack slot address correct. ! 3520: ! 3521: Mon Nov 27 15:39:40 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3522: ! 3523: * math-convex.h: New file. ! 3524: ! 3525: * c-decl.c (grokdeclarator): Don't test size of error_mark_node ! 3526: as type of a field. ! 3527: ! 3528: Sun Nov 26 12:36:01 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) ! 3529: ! 3530: * tm-mips.h (CONST_OK_FOR_LETTER_P): Delete extra paren. ! 3531: ! 3532: Fri Nov 24 12:36:29 1989 Chris Smith (csmith at mozart) ! 3533: ! 3534: * tm-convex.h (OVERRIDE_OPTIONS): remove target=host default. ! 3535: * out-convex.c (override_options): remove. ! 3536: ! 3537: * tm-convex.h (*_TYPE_SIZE): define type sizes as the usual values. ! 3538: * convex.md (movstrictsi): new, for field insertion in DImode regs. ! 3539: ! 3540: * tm-convex.h (LEGITIMATE_CONSTANT_P): allow all CONST_DOUBLES. ! 3541: (PREFERRED_RELOAD_CLASS): reload nonimmediates from memory (NO_REGS). ! 3542: * convex.md (movdi, movdf): use 'G' to handle nonimmediates. ! 3543: (anddi3, iordi3, xordi3): allow immediates if high word is identity. ! 3544: ! 3545: * convex.md (tstdi): Finally figure out how to allocate a temp reg ! 3546: in a way that won't get optimized away; remove hardwired use of s1. ! 3547: ! 3548: * convex.md (cmpqi): don't sign extend to SImode because operands ! 3549: might be unsigned. Must compare bytes in registers instead. ! 3550: ! 3551: * convex.md (movtf): new. ! 3552: ! 3553: * convex.md (ash*, lsh*): rewrite to use shift vs. shiftrt. ! 3554: Better code because no need to sign or zero extend when going left. ! 3555: (shift, mask & test peephole): test next_insn_tests_no_inequality. ! 3556: (similar with lshiftrt): New peephole. ! 3557: ! 3558: * tm-convex.h: add g++ defines FASCIST_ASSEMBLER, VTABLE_USES_MASK. ! 3559: ! 3560: Sun Nov 26 11:39:13 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) ! 3561: ! 3562: * reload.c (decompose): Handle SUBREGs. ! 3563: ! 3564: Wed Nov 22 11:26:00 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3565: ! 3566: * pyr.md (mode conversion peepholes): Set CC_NO_OVERFLOW. ! 3567: * out-pyr.c (consecutive_operands): Don't expect wrap from reg15 to 16. ! 3568: ! 3569: * make-pyr: Find the alloca which comes with the system. ! 3570: ! 3571: * tm-mips.h (CONST_OK_FOR_LETTER_P): Define `K'. ! 3572: (SMALL_INT): Range is 16 bits, not 17. ! 3573: (SMALL_INT_UNSIGNED): New macro. ! 3574: * mips.md (andsi3, iorsi3, xorsi3): Use `K', not `I'. ! 3575: ! 3576: * mips.md (negsi2): Accept general_operand as input. ! 3577: ! 3578: * stor-layout.c (build_int): Defend against negative arguments. ! 3579: ! 3580: * varasm.c (MAX_HASH_TABLE): Change to a prime. ! 3581: ! 3582: Tue Nov 21 10:58:28 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3583: ! 3584: * mips.md (one_cmpl*): Accept general_operand as input. ! 3585: ! 3586: Mon Nov 20 11:18:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3587: ! 3588: * optabs.c (emit_cmp_insn): New arg, COMPARISON. ! 3589: (emit_float_lib_cmp): New subroutine, handles soft-float comoare ! 3590: of floating point values. Chooses ibrary fn from COMPARISON. ! 3591: * expr.c, expmed.c, stmt.c, optabs.c: All calls changed. ! 3592: * gnulib.c (__eqdf2, __nedf2, __gtdf2, etc.): New functions. ! 3593: (__eqsf2, __nesf2, __gtsf2, etc.): New functions. ! 3594: ! 3595: * cse.c (fold_rtx): Simulate negative shift counts. ! 3596: ! 3597: Sun Nov 19 14:36:18 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3598: ! 3599: * out-pyr.c (notice_update_cc): Set CC_NO_OVERFLOW in many cases. ! 3600: ! 3601: * cse.c (fold_rtx, fold_cc0): Handle float trap. ! 3602: ! 3603: Sat Nov 18 00:17:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3604: ! 3605: * varasm.c (output_constant): Handle float trap in fprintf. ! 3606: * toplev.c (float_signal): Don't print message. ! 3607: * fold-const.c (combine): Print it here. ! 3608: ! 3609: * sparc.md (extend patterns): Handle CONST_INT as operand. ! 3610: * out-sparc.c (output_block_move, output_mul_by_constant): ! 3611: (output_eager_then_insn): Delete unused vars. ! 3612: ! 3613: * varasm.c (decode_rtx_const): Add a cast in SYMBOL_REF case. ! 3614: ! 3615: * tm-i386.h (TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE) ! 3616: (INITIALIZE_TRAMPOLINE): New macros. ! 3617: * i386.md (indirect_jump): New pattern. ! 3618: ! 3619: * out-i386.c (singlemove_string): Fix paren error. ! 3620: ! 3621: Fri Nov 17 12:19:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3622: ! 3623: * expr.c (expand_increment): For pre-increment, copy the rtx to return. ! 3624: ! 3625: * c-parse.y (compstmt): There may be implicit decls, so check ! 3626: and maybe keep the level. ! 3627: ! 3628: * tm-mips.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): ! 3629: Use call_used_regs, not a private copy. ! 3630: ! 3631: Thu Nov 16 00:28:29 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3632: ! 3633: * reload1.c: Keep track of paradoxical subregs of each pseudo, ! 3634: and make extra stack space for their sake. ! 3635: (reload): Record max size paradoxical subreg for each pseudo. ! 3636: (scan_paradoxical_subreg): New subroutine for that. ! 3637: (reload): Make stack slots big enough for that size. ! 3638: ! 3639: * tm-i860.h (ASM_DECLARE_FUNCTION_NAME): Define it, ! 3640: so we can output a no-op before each function. ! 3641: ! 3642: * tm-pyr.h (INIT_CUMULATIVE_ARGS): Simplify. ! 3643: Pass function type to aggregate_value_p. ! 3644: ! 3645: * fold-const.c (fold): ! 3646: For foo++ > const, don't change if foo++ could overflow. ! 3647: ! 3648: * loop.c (eliminate_biv): ! 3649: Fix typo; check both coeffs when comparing givs. ! 3650: ! 3651: Wed Nov 15 00:12:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3652: ! 3653: * sdbout.c (sdbout_end_function, sdbout_end_block, sdbout_begin_block): ! 3654: Don't allow line numbers < 1. ! 3655: ! 3656: * integrate.c (copy_for_inline): `break' was missing for case 'u':. ! 3657: ! 3658: * sdbout.c (plain_type_1): Output .dim X,Y...; for multi-dim array. ! 3659: (sdbout_array_dim): New recursive subroutine. ! 3660: (PUT_SDB_DIM): Macro eliminated. ! 3661: (PUT_SDB_START_DIM, PUT_SDB_NEXT_DIM, PUT_SDB_LAST_DIM): New macros. ! 3662: * tm-3b1.h: Override PUT_SDB_START_DIM. ! 3663: ! 3664: * jump.c (delete_insn): Extra test for PREV != 0. ! 3665: ! 3666: Tue Nov 14 17:31:08 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3667: ! 3668: * tm-m68k.h (WORDS_BIG_ENDIAN): Define it. ! 3669: * out-m68k.c (output_move_double): Adapt CONST_DOUBLE case to that. ! 3670: ! 3671: * varasm.c (decode_rtx_const): For SYMBOL_REF, use addr of string. ! 3672: ! 3673: * tm-pyr.h (INIT_CUMULATIVE_ARGS): ! 3674: If -fpcc-struct-return, always do the scalar thing. ! 3675: ! 3676: * tm-sun3.h (LINK_SPEC): Specify -L to control choice of -lm. ! 3677: ! 3678: * function.c (expand_function_end): Use FUNCTION_OUTGOING_VALUE. ! 3679: ! 3680: Sat Nov 11 00:18:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3681: ! 3682: * calls.c (prepare_call_address): If NO_RECURSIVE_FUNCTION_CSE, ! 3683: don't do function cse on calls to same function. ! 3684: (emit_call_1): Don't call memory_address for SYMBOL_REF. ! 3685: ! 3686: * tm-att386.h (ASM_OUTPUT_COMMON): Use ROUNDED, not SIZE. ! 3687: (ASM_OUTPUT_LOCAL): Likewise. Also, generate .lcomm ! 3688: rather than a .data area symbol. ! 3689: * tm-sun386.h: Likewise. ! 3690: ! 3691: * tm-bsd386.h (ASM_OUTPUT_COMMON): Use ROUNDED, not SIZE. ! 3692: (ASM_OUTPUT_LOCAL): Likewise. ! 3693: ! 3694: * cexp.y (parse_escape): Delete unused var `count' from case 'x'. ! 3695: ! 3696: Fri Nov 10 15:04:15 1989 Richard Stallman (rms at rice-chex) ! 3697: ! 3698: * caller-save.c (emit_mult_restore, emit_mult_save): ! 3699: Improve arithmetic for address to save at. ! 3700: ! 3701: Thu Nov 9 00:14:19 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3702: ! 3703: * tm-pyr.h (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): ! 3704: Don't use obsolete pushw and popw insns. ! 3705: (ASM_OUTPUT_ALIGN): Ensure arg in range 2 to 5. ! 3706: * pyr.md (tstdi): Pattern deleted. ! 3707: (SImode test recognizer): Output ucmpw if jump is unsigned. ! 3708: ! 3709: * out-sparc.c (operands_satisfy_eager_branch_peephole): ! 3710: Check for moves between FP and non-FP regs; they take two insns. ! 3711: * sparc.md (eager branch peepholes): Likewise. ! 3712: (Ordinary delayed branch peepholes): Similar check. ! 3713: * out-sparc.c (single_insn_extra_test): New subroutine. ! 3714: ! 3715: * final.c (final_scan_insn): ! 3716: Rearrange to avoid calling BLOCK_PROFILER for a jump table. ! 3717: ! 3718: * reload1.c (choose_reload_regs): Split up a hairy if. ! 3719: ! 3720: Wed Nov 8 00:48:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3721: ! 3722: * calls.c (expand_call): Handle UNNAMED_ARGS_IN_REGISTERS. ! 3723: ! 3724: * toplev.c (main): Handle -gsdb to make sdb output when that and dbx ! 3725: are both supported. ! 3726: ! 3727: * combine.c (subst): In (sign_extend:M (subreg:N (and:M .. <const>) 0)) ! 3728: insist that constant be positive in mode N. ! 3729: Also test mode N in similar zero_extend case. ! 3730: ! 3731: * c-typeck.c (build_modify_expr): When assigning to COND_EXPR ! 3732: put cast to void around precomputed rhs. ! 3733: ! 3734: * calls.c (emit_call_1): Make funexp a valid address. ! 3735: ! 3736: Tue Nov 7 18:57:17 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3737: ! 3738: * expr.c (emit_move_insn): If args in memory, make addresses valid. ! 3739: ! 3740: * rtl.h: Undefine FFS in case it was defined by the system. ! 3741: ! 3742: * c-parse.y (combine_strings): Ignore warn_write_strings ! 3743: if -traditional or -fwritable-strings. ! 3744: ! 3745: * Makefile.in (gnulib2): Fix syntax in shell conditionals. ! 3746: ! 3747: * stmt.c (expand_return): Handle COND_EXPR specially. ! 3748: ! 3749: Mon Nov 6 14:43:55 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3750: ! 3751: * optabs.c (expand_float): Check sign of FROM; may be faster than TO. ! 3752: ! 3753: * fold-const.c (fold): If REAL_INFINITY, allow division by zero. ! 3754: * tm-sun3.h (REAL_INFINITY): Define it. ! 3755: ! 3756: * tm-i860.h, tm-m88k.h, tm-pyr.h, tm-spur.h (INIT_CUMULATIVE_ARGS): ! 3757: Test aggregate_value_p, not just BLKmode. ! 3758: ! 3759: * gnulib2.c (__builtin_saveregs): Moved from gnulib.c. ! 3760: Code added for mips. ! 3761: ! 3762: * pyr.md (conditional branch recognizers): Don't simplify if not -O. ! 3763: ! 3764: * out-pyr.c (extend_and_branch): Handle two constant operands. ! 3765: ! 3766: * integrate.c (function_cannot_inline_p): Don't inline if alloca used. ! 3767: ! 3768: Sun Nov 5 02:59:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3769: ! 3770: * Always make a LET_STMT and notes for the top level of a function ! 3771: if it has any subblocks. ! 3772: * c-decl.c (struct binding_level): New field keep_if_subblocks. ! 3773: (poplevel): Obey the new field. ! 3774: (keep_next_if_subblocks): New variable. ! 3775: (pushlevel): Use that variable. ! 3776: (store_parm_decls): Set that variable. ! 3777: (compstmt): Pass nonzero to expand_end_bindings ! 3778: for the new kept binding levels. ! 3779: (kept_level_p): New function. ! 3780: ! 3781: * xm-mips.h: Define USE_C_ALLOCA if compiling with CC. ! 3782: ! 3783: * tm-alliant.h (CHECK_FLOAT_VALUE): Define this. ! 3784: ! 3785: * calls.c (expand_call): Make valreg 0 if passing structure address. ! 3786: ! 3787: Sat Nov 4 23:27:02 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3788: ! 3789: * caller-save.c (emit_mult_save, emit_mult_restore): ! 3790: Test regs for suitability as address before using as temps. ! 3791: ! 3792: * cccp.c (make_definition, do_define): Better error checks for name. ! 3793: ! 3794: Fri Nov 3 01:05:04 1989 Torbj|rn Granlund (tege at echnaton) ! 3795: ! 3796: * pyr.md (tstdi): New pattern. Use 64-bit shift with count zero. ! 3797: ! 3798: * tm-pyr.h: -mretd pops args with the retd insn. ! 3799: ! 3800: * pyr.md (peep-holes for loop optimizations): Use the R output ! 3801: format in PRINT_OPERAND, don't use output_branch. ! 3802: * out-pyr.c: No need for functions output_branch, output_inv_branch. ! 3803: ! 3804: * tm-pyr.h (ASM_OUTPUT_ALIGN): Don't truncate alignment to two. ! 3805: ! 3806: Wed Nov 1 00:38:27 1989 Torbj|rn Granlund (tege at echnaton.sics.se) ! 3807: ! 3808: * out-pyr.c (output_inv_branch): When reversing test operands, ne ! 3809: remains ne, and eq eq eq. ! 3810: ! 3811: * pyr.md: Cleanup output code for compare patterns. ! 3812: ! 3813: * pyr.md (return): Adjust frame pointer if ! 3814: current_function_pretend_args_size != 0. ! 3815: ! 3816: * pyr.md (extendsidi2): Use general_operand for the input operand. ! 3817: ! 3818: * pyr.md, out-pyr.c: Output shift insns with output_shift. ! 3819: ! 3820: * tm-pyr.h, out-pyr.c: Make NOTICE_UPDATE_CC understand how ! 3821: condition codes are really set. Define flag CC_VALID_FOR_UNSIGNED ! 3822: with to make it possible not to reset cc after each compare or ! 3823: test. ! 3824: * pyr.md: Don't use CC_STATUS_INIT for most patterns. ! 3825: ! 3826: * out-pyr.c (already_sign_extended): Cleanup, correct, optimize. ! 3827: ! 3828: * out-pyr.c: rename radr_diff to constant_diff. ! 3829: ! 3830: * out-pyr.c (movdi_possible): Don't combine moves from memory to ! 3831: memory, because of possible address aliasing. Don't combine moves ! 3832: with register destination if the source operands are depending on ! 3833: the destination of the first move, as in ! 3834: ! 3835: movw (pr3),pr3 ! 3836: movw 4(pr3),pr4. ! 3837: ! 3838: * out-pyr.c (consecutive_operands): Handle SUBREG in addition to REG. ! 3839: ! 3840: * out-pyr.c (output_move_double): movl of immediate *sign* extends. ! 3841: ! 3842: Tue Oct 31 22:51:39 1989 Torbj|rn Granlund (tege at echnaton.sics.se) ! 3843: ! 3844: * pyr.md (cmpsi): Don't expand this. It's just slower. ! 3845: ! 3846: * out-pyr.c (extend_and_branch): Handle only QImode and HImode. ! 3847: Flush code specific for SImode. ! 3848: ! 3849: * out-pyr.c (extend_and_branch): To make zero extensions to HImode ! 3850: of constants not crash: ! 3851: * out-pyr.c (ensure_extended): Call extend_const if it's a ! 3852: CONST_INT. Don't call extend_const from extend_and_branch. ! 3853: * pyr.md, out-pyr.md: Use global variable test_mode to determine the ! 3854: mode of tests and compares. Set in define_expands for tests and ! 3855: compares. Used in extend_and_branch. ! 3856: * out-pyr.c: Pass mode between extend_and_branch and ensure_extended. ! 3857: ! 3858: * out-pyr.c (extend_and_branch): Accept SUBREG whereever REG is ! 3859: accepted. ! 3860: * out-pyr.c (weird_memory_memory): Accept SUBREG whereever REG is ! 3861: accepted. ! 3862: ! 3863: Thu Nov 2 16:23:57 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3864: ! 3865: * gnulib2.c (lshrdi2, and other shifts): Take second arg as long long. ! 3866: ! 3867: * combine.c (subst): ! 3868: Simplify (zero_extract (subreg:SI (lshift:QI (mem:QI ...)) 0) ...) ! 3869: ! 3870: * expr.c (do_jump): Don't discard NOP_EXPR from around COMPONENT_REF. ! 3871: Put one on, if that allows extracting the component in natural mode. ! 3872: ! 3873: * final.c (get_attr_length): Omit the body if no length attribute. ! 3874: ! 3875: * Makefile.in (genattrtab): Use host-rtlanal.c as dep and to link. ! 3876: (insn-attrtab.o): Use $(INCLUDES). ! 3877: ! 3878: * cse.c: Include stdio.h. ! 3879: ! 3880: * c-decl.c (finish_enum): Local `value' was declared and set wrong. ! 3881: ! 3882: * Makefile.in (gen*.o): Find source files in $(srcdir). ! 3883: (LIBDEPS, HOST_LIBDEPS): Don't use USE_ALLOCA. ! 3884: ! 3885: Wed Nov 1 00:05:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3886: ! 3887: * stmt.c (init_function_start): Init max_parm_reg. ! 3888: ! 3889: * varasm.c (compare_constant_1): For ADDR_EXPR, compare symbol name. ! 3890: For PLUS_EXPR, etc., don't record code twice. ! 3891: (record_constant_1): Likewise. ! 3892: ! 3893: * expr.c (expand_assignment): Allow for overlap when storing into a ! 3894: structure value area supplied by the caller. ! 3895: ! 3896: * cse.c (remove): Handle an elt in the wrong bucket. ! 3897: ! 3898: * function.c (fixup_stack_1): Avoid using move insn for address arith. ! 3899: ! 3900: * out-sparc.c (output_mul_by_constant): Constant zero is legitimate. ! 3901: ! 3902: * caller-save.c (emit_mult_restore, emit_mult_save): ! 3903: Handle stack addresses which are invalid. ! 3904: ! 3905: * cse.c (use_related_value): Don't abort if offset is 0. ! 3906: ! 3907: Tue Oct 31 15:12:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3908: ! 3909: * config.gcc (pyramid): Set $machine to pyr. ! 3910: ! 3911: * calls.c (expand_call): Don't OK_DEFER_POP in is_const case. ! 3912: ! 3913: Mon Oct 30 17:00:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3914: ! 3915: * final.c (shorten_branches, init_insn_lengths): ! 3916: Define unconditionally; conditionalize the contents, perhaps. ! 3917: ! 3918: Mon Oct 30 03:23:52 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3919: ! 3920: * final.c (shorten_branches): New function. ! 3921: (init_insn_lengths, get_attr_length): New functions. ! 3922: * function.c (init_function_start): Call init_insn_lengths. ! 3923: * recog.c (constrain_operands): Call alter_subreg if nec. ! 3924: * toplev.c (rest_of_compilation): Call shorten_branches. ! 3925: (compile_file): Init and print shorten_branch_time. ! 3926: ! 3927: Mon Oct 30 03:23:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3928: ! 3929: * reload1.c (spill_regs): Make it short, not char. ! 3930: ! 3931: Sun Oct 29 00:53:46 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3932: ! 3933: * final.c (final_scan_insn): Delete no-op moves, even without -O. ! 3934: ! 3935: * c-parse.y (yylex): Prevent warning for numbers that underflow. ! 3936: ! 3937: * stmt.c (assign_parms): Convert stack addresses to valid addresses. ! 3938: (validize_mem): New subroutine. ! 3939: ! 3940: * c-decl.c (finish_enum): If -fshort-enums, round size up to match ! 3941: some ordinary C integer type. ! 3942: Compute precision properly when some values are negative. ! 3943: Make type double precision when necessary. ! 3944: ! 3945: * c-decl.c (lang_decode_option): Accept and ignore -fnotraditional. ! 3946: ! 3947: * gcc.c (default_compilers): Pass -ftraditional to cpp as -traditional. ! 3948: ! 3949: * DOLLARS_IN_IDENTIFIERS now has three values. 1 is now the default. ! 3950: It means enable $ only with -traditional. 2 means enable unless -ansi. ! 3951: * c-decl.c (lang_decode_option): Implement that. ! 3952: * cccp.c (main): Likewise. ! 3953: * tm-vms.h, tm-apollo68.h, tm-convex.h, tm-next.h: ! 3954: Define DOLLARS_IN_IDENTIFIERS as 2. ! 3955: * tm-pyr.h: Define it as 0. ! 3956: * cexp.y (initialize_random_junk): Test DOLLARS_IN_IDENTIFIERS ! 3957: for nonzeroness. ! 3958: ! 3959: * stmt.c (check_for_full_enumeration_handling): Accept enum type ! 3960: as argument (since was finding it incorrectly). ! 3961: Delete special case for constant index. ! 3962: (expand_end_case): Pass enum type; check for constant index. ! 3963: ! 3964: Sun Oct 29 00:53:46 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3965: ! 3966: * varasm.c (force_const_double_mem): Remove redundant code. ! 3967: (record_constant_rtx): Use normal obstack since temporary data. ! 3968: (force_const_mem): Don't output constant immediately. Instead, ! 3969: save it for new fn to write. Also, make hash table mapping ! 3970: internal label to desired constant. ! 3971: (output_constant_pool): New fn to write constant pool. ! 3972: (assemble_function): Call it. ! 3973: (init_const_rtx_hash_table): Initialize new hash table and pool ! 3974: chain and offset. ! 3975: (find_pool_constant): New fn to map internal label SYMBOL_REF to ! 3976: data about constant. ! 3977: (get_pool_constant, get_pool_mode, get_pool_offset): New fns ! 3978: using above fn to return data about constant pool labels. ! 3979: * rtl.h: Define last three new fns. ! 3980: ! 3981: * integrate.c (save_constants): New fn to convert constant pool ! 3982: references to recognizable representation of constant that was ! 3983: being used. ! 3984: (save_for_inline): Call it. ! 3985: (copy_for_inline, output_inline_function): Undo this for copy to ! 3986: be compiled. ! 3987: (restore_constants): New fn used in output_inline_function. ! 3988: (copy_rtx_and_substitute): Make new constant pool entries for ! 3989: constants in pool when fn was inlined. ! 3990: ! 3991: * cse.c (cse_end_of_basic_block): Optionally make a "basic block" ! 3992: that follows branches. Now takes previous block as argument and ! 3993: computes which branch to follow/fall through next. ! 3994: (cse_main, cse_basic_block): Make compatible with above. ! 3995: ! 3996: * toplev.c: Add new flag, -fcse-follow-jumps. ! 3997: (rest_of_compilation): Pass dump file to cse_main. ! 3998: ! 3999: * flags.h: Add flag_cse_follow_jumps. ! 4000: ! 4001: Sat Oct 28 01:24:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4002: ! 4003: * optabs.c (emit_cmp_insn): Default MODE before computing CLASS. ! 4004: ! 4005: Fri Oct 27 16:25:19 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4006: ! 4007: * tm-next.h (__inline): define as macro for old 1.34 Next uses. ! 4008: ! 4009: Thu Oct 26 01:05:09 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4010: ! 4011: * mips.md (compare/branch peepholes): Combine using match_operator. ! 4012: * out-mips.c (relop, frelop, frelop_reversed): New functions. ! 4013: * tm-mips.h (PRINT_OPERAND): New codes `C' and `N' for comparisons. ! 4014: (ASM_OUTPUT_SOURCE_LINE): Output .loc--MIPS likes that. ! 4015: (EXTENDED_COFF, NO_UNDERSCORES, USE_COLLECT): Define, for collect.c. ! 4016: (COFF): Undefine, for collect.c. ! 4017: ! 4018: * getattrtab.c: Rename define_asm_insn to define_asm_attributes. ! 4019: * rtl.def: Likewise. ! 4020: ! 4021: Wed Oct 25 00:52:12 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4022: ! 4023: * rtl.def: Add new RTL codes for insn attributes. ! 4024: Change last operand of DEFINE_INSN and DEFINE_PEEPHOLE. ! 4025: ! 4026: * rtlanal.c (rtx_equal_p): Add support for "V", "n", and "s" types. ! 4027: ! 4028: * genoutput.c (output_epilogue): No longer output machine_info ! 4029: stuff. ! 4030: (process_template): New function. ! 4031: (gen_insn, gen_peephole): Call process_template. ! 4032: (fatal): Add more args. ! 4033: ! 4034: * final.c: Allow called configuration macros to use attribute data. ! 4035: ! 4036: Wed Oct 25 00:52:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4037: ! 4038: * rtlanal.c (rtx_equal_p): Handle operand types n, V, S. ! 4039: ! 4040: * optabs.c (floattab): Record unsigned-float insns. ! 4041: (can_float_p): New arg UNSIGNEDP. ! 4042: (expand_float): Use those insns if available. ! 4043: ! 4044: Tue Oct 24 19:23:11 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4045: ! 4046: * genattr.c, genattrtab.c: New files. ! 4047: * Makefile.in (insn-attr.h, insn-attrtab.c): ! 4048: New files made by those two. ! 4049: ! 4050: * Makefile.in (insn-*.[ch]): Name the temp file `tmp-foo.c', etc., ! 4051: not `tmp-insn-foo.c'. ! 4052: ! 4053: * combine.c (subst): Generalize simplification of ! 4054: (zero_extend:M (subreg:N (zero_extract:M ...) 0)) and similar. ! 4055: ! 4056: Tue Oct 24 19:23:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4057: ! 4058: * combine.c (try_combine): Don't move a volatile asm. ! 4059: ! 4060: Mon Oct 23 01:45:34 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4061: ! 4062: * combine.c (try_combine): Don't install a subreg relating two modes ! 4063: that aren't tieable. ! 4064: ! 4065: * gnulib2.c (__fixdfdi): Declare __fixunsdfdi. ! 4066: ! 4067: * combine.c: Make uid_cuid an int *. ! 4068: (combine_instructions): Allocate as such. ! 4069: * loop.c: Make uid_luid an int *. ! 4070: (loop_optimize): Allocate as such. ! 4071: ! 4072: Sun Oct 22 20:35:55 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4073: ! 4074: * combine.c (try_combine): Call simplify_set_cc0_and for SIGN_EXTEND. ! 4075: (subst): Start by putting constant last in commutative operations ! 4076: and convert MINUS of a constant to PLUS. ! 4077: Put CONST around any PLUS with 2 constants. ! 4078: Simplify (minus <foo> (and <foo> (const_int -pow2))). ! 4079: Handle (zero_extend (and ...)) when the and is nontrivial. ! 4080: Convert (XOR (NOT x) (NOT y)) to (XOR x y). ! 4081: Simplify (abs (neg <foo>)). ! 4082: Simplify abs of something known positive. ! 4083: Handle (zero_extend (truncate...)) using gen_lowpart. ! 4084: Do it for sign_extend too. ! 4085: Simplify (ZERO_EXTRACT (AND x) ...). ! 4086: Simplify (ZERO_EXTRACT (ZERO_EXTEND z) ...), etc. ! 4087: Extend "Extracting a single bit from result of shift" to SIGN_EXTRACT. ! 4088: (ashiftrt (*shift <X> <c1>) <c1>) can be (sign_extend <X>) ! 4089: (lshiftrt (*shift <X> <c1>) <c1>) can be (zero_extend (subreg <X>)) ! 4090: Do (lshift <X> (sign_extend <Y>)) on non-regs using gen_lowpart. ! 4091: Eliminate AND in (lshift (and <X> <C1>) <C2>). ! 4092: Use gen_lowpart in (lshift:m1 (zero_extend:m2 <X>) <C>). ! 4093: Use gen_lowpart in (and x const) => (zero_extend (subreg x 0)). ! 4094: (simplify_set_cc0_and): Ignore outermost SIGN_ or ZERO_EXTEND. ! 4095: Handle constant bit number. ! 4096: Try to get into SImode for bitfield jumps. ! 4097: ! 4098: * recog.c (apply_change_group, validate_change): New functions. ! 4099: ! 4100: Sat Oct 21 00:51:49 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4101: ! 4102: * cse.c (cse_end_of_basic_block): Optionally make a "basic block" ! 4103: that follows branches. Now takes previous block as argument and ! 4104: computes which branch to follow/fall through next. ! 4105: (cse_main, cse_basic_block): Make compatible with above. ! 4106: ! 4107: * cse.c (new_basic_block): Don't assume sizeof (rtx) == sizeof (int). ! 4108: ! 4109: * cse.c (make_new_qty, canon_hash): Add sanity checks. ! 4110: ! 4111: * cse.c (lookup_as_function): Don't assume VOIDmode == 0. ! 4112: ! 4113: * cse.c (exp_equiv_p): For commutative operations, check both orders. ! 4114: Detect unexpected operand-type letters. ! 4115: Mode is significant for all codes. ! 4116: ! 4117: * cse.c (fold_rtx): CONST_DOUBLE can also appear in DImode. Verify ! 4118: that floating-point is used before folding it. ! 4119: Verify that the host's INT width is wide enough to do folding. ! 4120: ! 4121: * cse.c (cse_insn): Treat each component of PARALLEL exactly the same ! 4122: way as if it were standing alone. ! 4123: ! 4124: * combine.c (combine_instructions): If an insn explicitly references ! 4125: CC0, try to combine it with the previous insn. Also, enable ! 4126: combining an insn with two different insns whose results it uses. ! 4127: ! 4128: * combine.c (try_combine): Ignore USE or CLOBBER parallel parts in ! 4129: I2 and I1 as they are not functional. ! 4130: ! 4131: Sat Oct 21 00:51:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4132: ! 4133: * out-pyr.c (extend_and_branch): Allow SUBREG like REG. ! 4134: * pyr.md (mem-reg and reg-mem HI, QI patterns): ! 4135: Don't match unless one arg is MEM. ! 4136: ! 4137: Sat Oct 21 00:28:48 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4138: ! 4139: * stor-layout.c (layout_decl): No more need to avoid >1 wd in one reg. ! 4140: ! 4141: * tree.c (build_index_type): Copy precision from sizetype. ! 4142: ! 4143: * reload.c (find_reloads_toplev): Don't truncate constant if bigger ! 4144: than host word size. ! 4145: ! 4146: * gnulib2 (__floatdidf, __fixunsdfdi): Use WORD_SIZE, not BITS_PER... ! 4147: (WORD_SIZE): # of bits in a `long' on the target. ! 4148: ! 4149: * genextract.c (gen_peephole): Use sizeof (rtx) copying operands. ! 4150: ! 4151: * fold-const.c (force_fit_type): Use POINTER_SIZE for pointers. ! 4152: ! 4153: * final.c (end_final, final_scan_insn): In sizes and aligns of ! 4154: profiling vars and tbls, use INT_TYPE_SIZE for size of an int, ! 4155: or give max alignment. ! 4156: ! 4157: * expr.c (do_jump): Comparing constant arg vs 0, take # sig bits ! 4158: from mode of data type. ! 4159: ! 4160: * gcc.c: Add CC1PLUS_SPEC like CC1_SPEC. ! 4161: (validate_all_switches, do_spec_1, process_command, read_specs): ! 4162: Handle it. Use %2 to use it. ! 4163: (default_compilers): Pass %2 to cc1plus. ! 4164: ! 4165: * out-sparc.c (output_fp_move_double): Use ldd only when safe, ! 4166: on same conditions used for std. ! 4167: ! 4168: * Makefile.in (USE_ALLOCA): New var is $(ALLOCA) if compiling with ! 4169: cc, null otherwise. Use this to refer to alloca. ! 4170: ! 4171: * Makefile.in (gnulib): Test vrbl HPUX_GAS to decide whether to run ! 4172: hpxt instead of ranlib. ! 4173: (stamp-gnulib2): Don't ranlib if HPUX_GAS. ! 4174: * make-hp9kgas: New file, sets HPUX_GAS. ! 4175: ! 4176: Fri Oct 20 13:33:34 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4177: ! 4178: * expmed.c (store_bit_field, extract_bit_field): ! 4179: Use mode whose size is UNITS_PER_WORD for struct in reg. ! 4180: (store_fixed_bit_field, extract_fixed_bit_field): ! 4181: Handle bigger constant masks. ! 4182: (mask_rtx, lshift_value): New subroutines. ! 4183: ! 4184: * c-parse.y (combine_strings): Use correct width of `int'. ! 4185: ! 4186: * varasm.c (make_decl_rtl): Warn for volatile explicit register vars. ! 4187: ! 4188: Fri Oct 20 00:27:00 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4189: ! 4190: * reload1.c (reload_as_needed): Set new variable reload_in_progress ! 4191: and clear it after reload complete. ! 4192: ! 4193: * reload1.c (choose_reload_regs): ! 4194: Don't count deleted reloads vs number of spill regs. ! 4195: ! 4196: * reload1.c (choose_reload_regs): Arg of HARD_REGNO_MODE_OK ! 4197: was the pseudo; should be the reload reg. ! 4198: ! 4199: * reload1.c (gen_input_reload): Don't generate a move with a PLUS ! 4200: as an operand. ! 4201: ! 4202: * reload.c (find_reloads): Ignore unconstrained operands ! 4203: when looking for conflict with an earlyclobber. ! 4204: ! 4205: * reload.c (subst_indexed_address): ! 4206: Replace and canonicalize more thoroughly. ! 4207: (form_sum): New subroutine. ! 4208: ! 4209: * out-i386.c (singlemove_string): Handle ordinary constants as input. ! 4210: ! 4211: * tm-decstatn.h (CPP_PREDEFINES): Add bsd4_2, ultrix, MIPSEL, ! 4212: host_mips, R3000, LANGUAGE_C, SYSTYPE_BSD. ! 4213: * tm-mips.h (CPP_PREDEFINES): Add host_mips, R3000, MIPSEB, LANGUAGE_C. ! 4214: (CPP_SPEC): Remove those from here. ! 4215: Define __SYSTYPE_*__ always. Define SYSTYPE_* only if not -ansi. ! 4216: No CPP_SPEC needed for decstation. ! 4217: Correct typos in option tests. ! 4218: ! 4219: * c-parse.y (unary_expr): Handle EXTENSION here, not in primary. ! 4220: ! 4221: Thu Oct 19 18:16:40 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4222: ! 4223: * tm-m68k.h, tm-alliant.h (PRINT_OPERAND): ! 4224: Don't print :l for address if :w was already printed. ! 4225: ! 4226: * Allow elided braces with unions. ! 4227: * c-typeck.c (digest_init): Treat unions more like records. ! 4228: (process_init_constructor): Handle union types. ! 4229: ! 4230: * c-parse.y (program): Pedantic warning for empty file. ! 4231: ! 4232: Wed Oct 18 22:28:21 1989 Torbj|rn Granlund (tege at echnaton.sics.se) ! 4233: ! 4234: * out-pyr.c (extend_const, extend_and_branch): Make sure all const ! 4235: are CONST_INT. ! 4236: ! 4237: * out-pyr.c (movdi_possible): Handle combination of two immediate ! 4238: moves correctly. (Pyramid immediate move to a DImode operand ! 4239: (movl) work by SIGN extension of the 32 bit immediate source.) ! 4240: * Handle CONST tagged addresses. ! 4241: ! 4242: * out-pyr.c (already_sign_extended): Skip harmless JUMP_INSN when ! 4243: scanning after extension insn. ! 4244: * Check for right mode of extension. ! 4245: * Delete redundant register number test. ! 4246: ! 4247: * pyr.md (anonymous SImode test pattern): Predicate need to accept ! 4248: any operand that can be generated for corresponding compare. Used ! 4249: to reject "foo(p) int *p {int a=0; return *p==a;}". ! 4250: ! 4251: * pyr.md (shift patterns): Condition bogus if no insn really output. ! 4252: ! 4253: * pyr.md: Flush obsolete comment about conversion. ! 4254: ! 4255: * tm-pyr.h (FUNCTION_PROLOGUE): Don't really set up a frame pointer ! 4256: if it's never referenced. Also, don't round up frame size to a ! 4257: multiple of 32, since input args and alloca nevertheless breaks ! 4258: such alignment attempts. ! 4259: * tm-pyr.h (FUNCTION_EPILOGUE): Goodbye. Use (define_insn "return" ! 4260: ..) in md instead. ! 4261: * pyr.md (return): Use "ret" or "retd" depending on the existense ! 4262: of a freme pointer. ! 4263: * tm-pyr.h (EXIT_IGNORE_STACK): Ensure the stack pointer is ! 4264: preserved even when the frame pointer is not really set up. ! 4265: ! 4266: * pyr.md: Reinsert move-and-test peep-hole optimization. ! 4267: ! 4268: * pyr.md: Flush silly peep-hole optimizations for loops. They were ! 4269: inverted optimizations. ! 4270: ! 4271: * tm-pyr.h (NOTICE_UPDATE_CC): Make it identify the most important ! 4272: cases when set conditions codes can be used, without an explicit ! 4273: test. ! 4274: ! 4275: Wed Oct 18 13:01:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4276: ! 4277: * gcc.c (default_compilers): Support -E on .h file. ! 4278: ! 4279: * tm-mips.h (FUNCTION_PROLOGUE): Get rid of __0__gcc macro. ! 4280: Store that value in frame_stack_difference. ! 4281: (FUNCTION_EPILOGUE): Get rid of __0__gcc macro. ! 4282: (FIX_FRAME_POINTER_ADDRESS): Use frame_stack_difference. ! 4283: * out-mips.c (frame_stack_difference): Define here. ! 4284: ! 4285: * gcc.c (default_compilers): Define __GNUG__ for g++. ! 4286: ! 4287: Tue Oct 17 01:17:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4288: ! 4289: * tm-i860.h (HAVE_PRE_INCREMENT): Undefine this. ! 4290: ! 4291: * mips.md (movsf): New alternatives for r registers. ! 4292: * tm-mips.h (FUNCTION_PROLOGUE): Handle big stack frames. ! 4293: * out-mips.c (function_arg): Handle mode distinction for floating args. ! 4294: ! 4295: * pyr.md (mtstsw pattern): Accept general_operand. ! 4296: ! 4297: * Makefile.in (gcc): Force-move when installing new gcc. ! 4298: (realclean): Delete Makefile. ! 4299: ! 4300: * i860.md (movsf): New alternatives: allow loading r from F. ! 4301: Prefer f-reg as reload when moving m from F. ! 4302: * tm-i860.h (PRINT_OPERAND): Handle CONST_DOUBLE if SFmode. ! 4303: ! 4304: Sun Oct 15 14:27:48 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4305: ! 4306: * i860.md (movhi, movqi): Support moves to/from fp regs. ! 4307: ! 4308: * stmt.c (expand_goto): USE both stack ptr and static_chain_rtx ! 4309: just before jumping. ! 4310: ! 4311: * sparc.md (tablejump peepholes): Fix paren error that no-op'd them. ! 4312: ! 4313: * tm-sparc.h (*TRAMPOLINE*): Defined macros, but defns are wrong. ! 4314: * sparc.md (indirect_jump): New pattern; plus peepholes. ! 4315: ! 4316: * sparc.md (cse'd multiply): New pattern for mult. by -1. ! 4317: ! 4318: * out-i860.c (load_opcode, store_opcode): Handle DImode and fp reg. ! 4319: ! 4320: * toplev.c (compile_file): Always test TREE_USED and TREE_ADDRESSABLE ! 4321: in identifier as well as in decl. ! 4322: * c-decl.c (poplevel): Preserve TREE_ADDRESSABLE from local externs. ! 4323: * c-typeck.c (mark_addressable): Don't set bit in identifier here. ! 4324: ! 4325: Fri Oct 13 00:12:46 1989 Richard Kenner (rms at sugar-bombs.ai.mit.edu) ! 4326: ! 4327: * flow.c (life_analysis): No need to think abt CONSIDER on first pass. ! 4328: ! 4329: * flow.c (propagate_block): Remove duplicated code to update OLD. ! 4330: ! 4331: * flow.c (mark_set_1): Handle nested SUBREG, SIGN_EXTRACT, ! 4332: STRICT_LOW_PART, etc. Also, always set subreg_p when setting ! 4333: a bit field, even if modes are same. ! 4334: ! 4335: * expr.c (expand_expr): Check for |= or &= of two bitfields of size 1. ! 4336: Convert to test followed by assignment. ! 4337: ! 4338: * rtl.def (INLINE_HEADER): Correct erroneous field types. ! 4339: ! 4340: * rtl.h: Add definitions for saving flags in INLINE_HEADER. ! 4341: ! 4342: * emit-rtl.c (gen_inline_header): Correct out-of-date arguments. ! 4343: Add support for saving flags. ! 4344: ! 4345: * integrate.c (save_for_inline): Save function flags. ! 4346: Update comments. ! 4347: (expand_inline_function, output_inline_function): Let machine-dependant ! 4348: code view (or possibly modify) inlined insn, if desired. ! 4349: ! 4350: * function.c (assign_stack_local): Don't set frame_pointer_needed or ! 4351: invalid_stack_slot if assigning zero-sized area. ! 4352: ! 4353: * stmt.c (fixup_var_refs_1): If the machine's SIGN_EXTRACT or ! 4354: ZERO_EXTRACT insns can't accept a memory operand, fix them up. ! 4355: ! 4356: * expr.c (do_jump): Look inside EQ_EXPR or NE_EXPR if one arg is 0. ! 4357: Be smart about PLUS_EXPR, MINUS_EXPR, ABS_EXPR, REFERENCE_EXPR, ! 4358: NEGATE_EXPR, rotation, CONVERT_EXPR. ! 4359: ! 4360: * jump.c (reverse_condition): Make non-static. ! 4361: (swap_condition): New routine. ! 4362: ! 4363: * final.c (alter_cond): Use new swap_condition. ! 4364: ! 4365: * expr.c (expand_expr): In cases where a jump will be generated, use ! 4366: original_target because the registers won't be able to be merged due ! 4367: to the jump. ! 4368: ! 4369: * expr.c (expand_expr): Put constant last for PLUS. ! 4370: ! 4371: Fri Oct 13 00:12:46 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4372: ! 4373: * recog.c (constrain_operands): Add case for `&'. ! 4374: ! 4375: * tm-vax.h (TRAMPOLINE_TEMPLATE): Add a .word 0 at beginning. ! 4376: (TRAMPOLINE_SIZE): Increase by 2. ! 4377: (INITIALIZE_TRAMPOLINE): Copy reg mask from pure code to trampoline. ! 4378: Jump into the pure code after the reg mask. ! 4379: ! 4380: * expmed.c (expand_divmod): Use divmod insn for quotient if no div. ! 4381: ! 4382: * expmed.c (extract_bit_field): With structure reg fetched from mem, ! 4383: don't put in subreg if mode already correct. ! 4384: (store_bit_field): Typo: had extzv, wanted insv. ! 4385: ! 4386: * recog.c (init_recog): Set volatile_ok to 1. ! 4387: (init_recog_no_volatile): Similar, but set volatile_ok to 0. ! 4388: (recog_memoized): Don't set volatile_ok. ! 4389: * reload1.c (reload): Call init_recog. ! 4390: * combine.c (combine_instructions): Call init_recog_no_volatile. ! 4391: * loop.c (loop_optimize): Likewise. ! 4392: * cse.c (cse_main): Likewise. ! 4393: * function.c (expand_function_start): Call init_recog_no_volatile ! 4394: for the sake of predicates called from optabs.c. ! 4395: ! 4396: * toplev.c (compile_file): Warn if fun declared static and used ! 4397: but never defined. ! 4398: ! 4399: Thu Oct 12 01:48:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4400: ! 4401: * cccp.c (macarg1): Count newlines even after backslash. ! 4402: ! 4403: * c-decl.c (pushdecl): Don't warn for explicit extern ! 4404: followed by static. That case is useful for incomplete arrays. ! 4405: ! 4406: * c-decl.c (grokdeclarator): Delete some junk about Pmode vs EPmode. ! 4407: ! 4408: * tm-sparc.h (SELECT_RTX_SECTION): Test was backwards. ! 4409: ! 4410: * reload.c (reg_class_subset_p): New function. ! 4411: ! 4412: Wed Oct 11 00:35:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4413: ! 4414: * vax.md (indirect_jump): New pattern. ! 4415: ! 4416: * c-parse.y (primary): Turn off pedantic after `__extension__'. ! 4417: (hash, is_reserved_word, etc.): Recognize `__extension__'. ! 4418: ! 4419: * expr.c (emit_library_call, expand_call): Make a SEQUENCE for ! 4420: any needed USE insns and pass them to emit_call_1. ! 4421: (emit_call_1): Place the passed SEQUENCE immediately before the ! 4422: generated CALL_INSN even if gen_call made more than one insn. ! 4423: ! 4424: * tm-seq386.h (DBX_DEBUGGING_INFO): Override this. ! 4425: (HARD_REGNO_MODE_OK): Override this. ! 4426: ! 4427: * c-typeck.c (build_conditional_expr): Supply missing layout_decl arg. ! 4428: ! 4429: * dbxout.c (dbxout_symbol): Handle nested functions. ! 4430: ! 4431: Wed Oct 11 00:35:25 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4432: ! 4433: * jump.c: Update jump_chain when insns change. ! 4434: (jump_optimize): Leave room in jump_chain for some extra labels. ! 4435: Record length in max_jump_chain. Check this when updating. ! 4436: When optimizing jump-to-return, delete from one chain and add to other. ! 4437: When cross-jumping turns cond jump to simple one, add to new chain. ! 4438: Zero jump_chain at end, so redirect_jump won't change it further. ! 4439: (redirect_jump): Delete from one chain, add to another. ! 4440: (do_cross_jump): Likewise. ! 4441: (delete_from_jump_chain): New subroutine. ! 4442: ! 4443: * cse.c: If `if (x != y) goto l;' fails to jump, assume x==y. ! 4444: (reg_invaliate): Add new argument for when value isn't ! 4445: changing, just its class. ! 4446: (invalidate): Update reg_invalidate call. ! 4447: (record_jump_equiv): New function. ! 4448: (cse_insn): Call it. ! 4449: ! 4450: * cse.c (cse_insn): Delete previous test based on ! 4451: prev_insn_explicit_cc0 just as based on prev_insn_cc0. ! 4452: ! 4453: Tue Oct 10 00:14:35 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4454: ! 4455: * reload.c (push_reload, combine_reloads): Let two reloads share ! 4456: if one's regclass is a subset of the other. ! 4457: ! 4458: * Makefile.in: What depends in expr.h, depends on insn-codes.h also. ! 4459: ! 4460: Mon Oct 9 19:11:38 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4461: ! 4462: * cccp.c (finclude): Close descriptor as soon as text is read. ! 4463: Eliminate `success'; return directly after successful processing. ! 4464: (do_include): Don't close descriptor here. ! 4465: ! 4466: * tm-i386.h (REG_CLASS_FROM_LETTER): Don't define `S' letter. ! 4467: It wasn't used; and now it means something else. ! 4468: ! 4469: * tm-ns32k.h (REG_CLASS_FROM_LETTER): Don't define `r' here. ! 4470: `r' is standard. ! 4471: ! 4472: Mon Oct 9 01:09:25 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4473: ! 4474: * flow.c (life_analysis): Ignore USEs and CLOBBERs when finding ! 4475: redundant register copies. ! 4476: * jump.c (jump_optimize): Do the same thing here. ! 4477: ! 4478: * jump.c (mark_jump_label): Loop NOTEs aren't relevant after loop ! 4479: optimization. ! 4480: ! 4481: * integrate.c (copy_for_inline): Correctly handle RTL type "u". ! 4482: * final.c (output_operand_lossage): Make non-static. ! 4483: ! 4484: * recog.c (constrain_operands): Treat N, O, P like I, J, K, L, M. ! 4485: For Q...U, use EXTRA_CONSTRAINTS if defined. ! 4486: * reload.c (find_reloads): Likewise. ! 4487: ! 4488: * rtl.c (copy_rtx, read_rtx, print_rtx): Handle operand type `V'. ! 4489: ! 4490: * rtlanal.c (note_stores): Use variable Y instead of equivalent ! 4491: slower expression. ! 4492: ! 4493: * rtlanal.c (dead_or_set_p): Hard regs don't always have same RTX. ! 4494: ! 4495: * rtlanal.c (may_trap_p): Don't use const0_rtx here. ! 4496: So we can use this file in programs that don't have const0. ! 4497: ! 4498: Mon Oct 9 01:09:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4499: ! 4500: * Support language-specific tree codes. ! 4501: * tree.c (standard_tree_code_type, standard_tree_code_length): ! 4502: Renamed tables. tree_code_type and tree_code_length are now pointers. ! 4503: * tree.c (init_tree): Copy the tables to allocated memory. ! 4504: * tree.c (tree_code_name): Move here from print-tree.c ! 4505: and define like tree_code_type. ! 4506: ! 4507: * rtl.c (print_rtl): Handle 0 as operand. ! 4508: ! 4509: * emit-rtl.c (save_emit_status): Don't call init_emit here. ! 4510: * function.c (push_function_context): Do it here. ! 4511: ! 4512: * emit-rtl.c (reinstate_emit_status): New function. ! 4513: * function.c (trampoline_address): Use this around ! 4514: INITIALIZE_TRAMPOLINE. ! 4515: ! 4516: * function.c (trampoline_address): Use fp->tail_recursion_reentry ! 4517: when trampoline is in outer function. ! 4518: ! 4519: * Save and restore stack levels in nonlocal gotos. ! 4520: * function.c: New variable nonlocal_goto_stack_level. ! 4521: (init_function_start, push_function_context, pop_...): Init, push, pop. ! 4522: (delete_handlers): Delete insns to set or use this slot. ! 4523: * stmt.c (declare_nonlocal_label): Create this stack slot. ! 4524: (expand_goto): Restore stack ptr from it. ! 4525: (expand_end_bindings, expand_decl): When setting stack ptr, ! 4526: store new value here. ! 4527: * expr.c (expand_builtin): Likewise, for alloca. ! 4528: * calls.c (expand_call): Likewise. ! 4529: ! 4530: * varasm.c (make_function_rtl): Rename nested functions for assembler. ! 4531: * c-decl.c (start_function): Clear TREE_PUBLIC for nested function. ! 4532: ! 4533: * tm-i860.h (*TRAMPOLINE*): Define macros. ! 4534: ! 4535: * i860.md (movdi): accept F source in 2nd alternative. ! 4536: Accept G source in 3rd. ! 4537: (adddi3, subdi3): Typo in opcode of output. ! 4538: ! 4539: * i860.md (indirect_jump): Added pattern. ! 4540: ! 4541: * c-decl.c (lookup_label): Shadow label if it's wrongly inherited. ! 4542: Set DECL_CONTEXT here, since nondeclared labels must be local. ! 4543: ! 4544: Sun Oct 8 01:38:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4545: ! 4546: * function.c (expand_function_start): Copy static chain to pseudo ! 4547: reg if chain is used. ! 4548: ! 4549: * tm-mips.h (ASM_SPEC): Pass -nocpp to as. ! 4550: ! 4551: * c-decl.c (grokdeclarator): Ignore variant differences ! 4552: when preserving typedef types from being altered. ! 4553: ! 4554: * Allow inner label scopes for ({...}). ! 4555: * c-decl.c (push_label_level, pop_label_level): New functions. ! 4556: * c-parse.y (stmt exprs): Call them. ! 4557: ! 4558: * c-decl.c (lookup_label): Set DECL-SOURCE-LINE to locus of reference. ! 4559: (poplevel): Use locus of reference in err msg for undef label. ! 4560: (define_label): Use DECL_INITIAL as flag that label has been defined. ! 4561: ! 4562: * function.c (expand_end_function): Delete nonlocal goto handlers ! 4563: if no nonlocal gotos are actually received. ! 4564: (delete_handlers): New function. ! 4565: ! 4566: * flow.c (find_basic_blocks): Treat blocks as reachable ! 4567: if headed by labels with LABEL_PRESERVE_P. ! 4568: (insn_dead_p): Don't delete insns to set the frame pointer or arg ptr. ! 4569: ! 4570: * m68k.md (indirect_jump): New pattern. ! 4571: ! 4572: Sat Oct 7 00:46:18 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4573: ! 4574: * c-decl.c (lookup_label): If label is nonlocal and wasn't declared so, ! 4575: report error and return 0. ! 4576: (shadow_label): New function. ! 4577: * c-parse.y (goto stmt): Handle 0 returned by lookup_label. ! 4578: (label_decl, label_decls): Parse forward-declarations of labels. ! 4579: (pushlevel): Allow label declarations at start of compound stmt. ! 4580: ! 4581: * rtl.h (LABEL_PRESERVE_P): New flag in CODE_LABEL. ! 4582: * jump.c (jump_optimize): Increment LABEL_NUSES if that flag is set. ! 4583: ! 4584: * stmt.c (any_pending_stack_level): New function. ! 4585: (expand_end_bindings): If block has stack level or cleanups, ! 4586: and this function has any nonlocal labels, make a nonlocal goto handler ! 4587: for the block, and put it in effect during the block. ! 4588: Set LABEL_PRESERVE_P on the handler's label. ! 4589: (expand_goto): For a nonlocal label, restore its stack frame ! 4590: and jump to current handler. ! 4591: ! 4592: * function.c: New var nonlocal_labels lists labels ok for nonlocal. ! 4593: Initted in init_function_start, pushed and popped with fcn context. ! 4594: * stmt.c (declare_nonlocal_label): Put a LABEL_DECL on this list. ! 4595: ! 4596: * output.h: Declare current_function_has_nonlocal_label ! 4597: and sdb_begin_function_line. ! 4598: * final.c: Don't declare them. ! 4599: ! 4600: * function.c (current_function_has_nonlocal_label): New var. ! 4601: (init_function_start): Init it. ! 4602: (push_function_context, pop...): Save and restore it. ! 4603: * flags.h: Declare current_function_has_nonlocal_label. ! 4604: * stmt.c (expand_goto): Set it if nonlocal label. ! 4605: * local-alloc.c (combine_regs): Don't tie call-crossing reg ! 4606: to a non-call-crossing reg, if receive nonlocal gotos. ! 4607: (block_alloc): Don't allocate pseudos that cross calls, ! 4608: if receive nonlocal gotos. ! 4609: * global-alloc.c (global_alloc): Don't even make an allocno for ! 4610: a reg that crosses calls, if receive nonlocal gotos. ! 4611: ! 4612: * function.c (init_function_start): Init function_call_count. ! 4613: (push_function_context, pop_...): Save and restore it. ! 4614: * calls.c (expand_call): Increment function_call_count. ! 4615: * stmt.c (expand_{start,end}_bindings): Use this var ! 4616: to determine whether there are any function calls in a block. ! 4617: No need for a nonlocal goto handler if block has no calls. ! 4618: ! 4619: * c-decl.c (define_label): Set DECL_CONTEXT. ! 4620: Maybe push label on shadowed_labels. ! 4621: (pop_c_function_context): Clear out labels in named_labels ! 4622: and reinstall those in shadowed_labels. ! 4623: Restore shadowed_labels. ! 4624: (push_c_function_context): Push shadowed_labels. ! 4625: (start_function): Clear shadowed_labels. ! 4626: ! 4627: * function.c: New file, split from stmt.c. ! 4628: ! 4629: * xm-mips.h: Use __builtin_alloca. ! 4630: ! 4631: Fri Oct 6 00:30:42 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4632: ! 4633: * jump.c (jump_optimize): Optimization of ! 4634: `if (...) x = 1; else {...} if (x) ...' got sense wrong sometimes. ! 4635: ! 4636: * Makefile.in (stamp-gnulib2): depend on gcc, cc1, cpp via ! 4637: gnulib2-indirect. ! 4638: ! 4639: * tm-vax.h (TRAMPOLINE_SIZE,INITIALIZE_TRAMPOLINE,TRAMPOLINE_TEMPLATE): ! 4640: Define macros. ! 4641: ! 4642: * m68k.md (addsi3): Change ! to ? in lea alternatives. ! 4643: Put them before the add-to-register alternative. ! 4644: ! 4645: * reload.c (find_dummy_reload): Use PREFERRED_RELOAD_CLASS here ! 4646: as in push_reload, so we make accurate predictions. ! 4647: ! 4648: * c-decl.c (pushdecl): Don't set DECL_CONTEXT for function declaration ! 4649: that isn't a definition. ! 4650: ! 4651: * explow.c (fix_lexical_addr): Handle address that's just a base reg. ! 4652: ! 4653: * expr.c (expand_expr, case VAR_DECL): No need for static chain ! 4654: if var is static. ! 4655: ! 4656: * reload.c (find_equiv_reg): Do let xregno be a pseudo reg, ! 4657: but don't call HARD_REGNO_NREGS in that case. ! 4658: ! 4659: * local-alloc.c (combine_regs): Set reg_qty[sreg] even if it was <0. ! 4660: ! 4661: * c-decl.c (start_function): Clear named_labels. ! 4662: ! 4663: Thu Oct 5 00:30:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4664: ! 4665: * reload.c (find_equiv_reg): Don't let xregno be a non-hard reg. ! 4666: Don't do OVERLAPPING_REGNO_P on a pseudo reg number. ! 4667: ! 4668: * Handle addresses of nested functions. ! 4669: * New tm macros TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, ! 4670: ALLOCATE_TRAMPOLINE, TRAMPOLINE_TEMPLATE. ! 4671: * expr.c (expand_expr, case ADDR_EXPR): Handle addresses of nested fns. ! 4672: * stmt.c (trampoline_address): New function. ! 4673: * varasm.c (assemble_trampoline_template): New function. ! 4674: ! 4675: * i386.md (trunchiqi2, etc.): Output %1 with size of destination. ! 4676: * out-i386.c (PRINT_REG): Support 'b' as CODE. ! 4677: ! 4678: * combine.c (try_distrib): Make sure we don't move a reg use ! 4679: across a store into that reg. ! 4680: ! 4681: * reload1.c (order_regs_for_reload): Rate fixed regs at LARGE+2, ! 4682: and explicitly used regs at LARGE+1. ! 4683: ! 4684: * stor-layout.c (layout_record): Support BIGGEST_FIELD_ALIGNMENT. ! 4685: * tm-vax.h (BIGGEST_FIELD_ALIGNMENT): Define it. ! 4686: (BIGGEST_ALIGNMENT): Now always 32. ! 4687: ! 4688: * stor-layout.c (build_int): When memoizing, make permanent nodes. ! 4689: ! 4690: Wed Oct 4 19:40:37 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4691: ! 4692: * xm-i860.h: Missing file added. ! 4693: ! 4694: * integrate.c (function_cannot_inline_p): Don't inline if > 100 bytes ! 4695: of stack space, unless declared inline. ! 4696: ! 4697: Tue Oct 3 00:16:08 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4698: ! 4699: * stmt.c (assign_outer_stack_local): New function. ! 4700: (put_var_into_stack): Allocate stack slot in fn the variable is in. ! 4701: ! 4702: * stmt.c (put_var_into_stack): If variable-size object is nonlocal, ! 4703: put the pseudo with its address into the stack. ! 4704: ! 4705: * calls.c: New file, split out from expr.c. ! 4706: (expand_call): Pass static chain if fn wants it. ! 4707: ! 4708: * Make put_var_into_stack handle vars of containing function. ! 4709: * stmt.c (put_var_into_stack): Find the rtl chains for the ! 4710: function that the variable belongs to. ! 4711: (fixup_var_refs): New args FIRST_INSN, STACK and RTL_EXPS. ! 4712: ! 4713: * Make DECL_CONTEXT the function a var is in, and set it right away. ! 4714: * c-decl.c (store_parm_decls): Use DECL_RESULT, not DECL_CONTEXT, ! 4715: as the flag for duplicate names or missing names. ! 4716: * c-decl.c (start_function): Don't set current_function_decl ! 4717: till after calling pushdecl. ! 4718: * c-decl.c (pushdecl): Set DECL_CONTEXT to current_function_decl. ! 4719: (poplevel): Used to set it here, to the LET_STMT. Don't. ! 4720: * stmt.c (init_function_start): Test for a FUNCTION_DECL in ! 4721: DECL_CONTEXT, not for a LET_STMT. ! 4722: ! 4723: * c-parse.y (primary <- identifier): Set TREE_NONLOCAL if appro. ! 4724: Also call mark_addressable. ! 4725: ! 4726: * stmt.c (expand_function_start): Store static chain into stack frame. ! 4727: Fetch static chains of containing functions into pseudos. ! 4728: (lookup_static_chain): Moved here; and really does something. ! 4729: * expr.c (expand_expr): Handle nonlocal variable. ! 4730: * explow.c (fix_lexical_addr): New function. ! 4731: ! 4732: * out-i386.c (fp_pop_int): Use %L0 in fistp insn. ! 4733: ! 4734: * global-alloc (find_reg): Fix typo marking new hard reg conflicts. ! 4735: ! 4736: * stmt.c (pushcase, pushcase_range, expand_end_case): ! 4737: When warning about insns at start of case, don't mind NOTEs. ! 4738: ! 4739: * local-alloc.c (combine_regs): ! 4740: Transfer all pseudos from SREG's old qty to its new qty. ! 4741: ! 4742: * Support nested functions: ! 4743: * stmt.c (push_function_context, pop_function_context): New functions. ! 4744: * tree.c (save_tree_status, restore_tree_status): New functions. ! 4745: * stor-layout.c (save_storage_status, restore_storage_status): Ditto. ! 4746: * expr.c (save_expr_status, restore_expr_status): Ditto. ! 4747: * emit-rtl.c (save_emit_status, restore_emit_status): Ditto. ! 4748: * c-decl.c (push_c_function_context, pop_c_function_context): Ditto. ! 4749: (start_function, finish_function): New arg NESTED. ! 4750: * c-parse.y (nested_function, notype_nested_function): New nonterms. ! 4751: (decl): New alternative to use them. ! 4752: ! 4753: * tree.h: Declare lineno. ! 4754: * c-decl.c (finish_function): Don't expect lineno as arg. ! 4755: * c-parse.y (fndecl, *nested_function): Don't pass it. ! 4756: ! 4757: * expr.c (init_expr, expand_call): Delete may_call_alloca. ! 4758: * tm-m88k.h, tm-sparc.h, tm-spur.h: Use current_function_calls_alloca. ! 4759: * tm-mips.h: It wasn't really used; delete its declaration. ! 4760: ! 4761: Mon Oct 2 16:26:33 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4762: ! 4763: * reload1.c (emit_reload_insns): Reject any OLDEQUIV that is ! 4764: in use in any other reload of this insn. ! 4765: ! 4766: * expr.c (expand_call): Don't put on notes for const functions ! 4767: if there aren't real insns to hold them. ! 4768: ! 4769: Sun Oct 1 19:50:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4770: ! 4771: * integrate.c (expand_inline_function): Handle PARALLEL in CALL_INSNs ! 4772: when setting follows_call. ! 4773: ! 4774: * mips.md (call_value): Change to a straightforward define_insn ! 4775: with just one action--no PARALLEL. ! 4776: ! 4777: * i860.md (pfeq, pfgt and pfle patterns): Add f0 as 3rd arg. ! 4778: ! 4779: * integrate.c (save_for_inline): Don't delete NOTE_INSN_FUNCTION_END. ! 4780: ! 4781: * c-parse.y (simple_if): Return $$ as value of stmt_count. ! 4782: (stmt (if statement)): Warn if $$ was not incremented in the body. ! 4783: (stmt (else statement)): Likewise. ! 4784: (stmt): All alternatives except null statement increment stmt_count. ! 4785: ! 4786: Fri Sep 29 08:56:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4787: ! 4788: * regclass.c (reg_class_record): If move between CLASS and GENERAL_REGS ! 4789: is costly, charge that cost to GENERAL_REGS and its subclasses. ! 4790: * tm-alliant.h, tm-m68k.h (REGISTER_MOVE_COST): New macro. ! 4791: ! 4792: * regclass.c (regclass): When a reg is a parm equiv to a stack slot, ! 4793: decrease its memcost, since the insn to load it would go away. ! 4794: ! 4795: * global-alloc.c (find_reg): Rewrite two-pass hard reg preference code. ! 4796: Uses regs_used_so_far to avoid allocating a reg not used elsewhere ! 4797: in the first pass. Also updates regs_used_so_far. ! 4798: (global_alloc): Initialize regs_used_so_far. ! 4799: ! 4800: * tm-next.h (LINK_SPEC): Typo for -Z option. Don't pass -M option ! 4801: to ld, since that is for cpp. ! 4802: ! 4803: * Support -MD and -MMD options. ! 4804: * gcc.c (default_compilers): Pass them to cpp in special way. ! 4805: Don't inhibit compilation for them, only for -M and -MM. ! 4806: * cccp.c (main): Handle them like -M and -MM except take arg ! 4807: which is file name to write deps in. ! 4808: ! 4809: * toplev.c: #if 0 around everything for GDB_DEBUG. ! 4810: * symout.c: File removed from distribution. ! 4811: * Makefile.in: Don't try to compile or link it. ! 4812: ! 4813: * tm-hp9k320.h (ASM_FILE_START): Output a `version' pseudo-op. ! 4814: [! HPUX_ASM] (ASM_SPEC): Don't use the -V option. Recognize -mc68000. ! 4815: (CALL_USED_REGISTERS): Redefinition deleted. HPUX 6.5 doesn't need it. ! 4816: * tm-hp9k310.h, tm-hp9k310g.h: New files. ! 4817: ! 4818: Thu Sep 28 12:57:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4819: ! 4820: * stmt.c (pushcase, pushcase_range): Warn if code was emitted inside ! 4821: case stmt before 1st label is seen. ! 4822: (expand_start_case): New arg is string to use in that warning. ! 4823: (struct nesting): New fields printname and seenlabel. ! 4824: * c-typeck.c (c_expand_start_case): Pass new arg to expand_start_case. ! 4825: ! 4826: * gcc.c: Can now read compilation specs, and asm_spec (etc), from file. ! 4827: (cpp_spec, asm_spec, etc.): New variables, initted to corresp. macros. ! 4828: (do_spec_1, validate_all_switches): Use the variables, not the macros. ! 4829: (link_command_spec): New name for old link_spec. ! 4830: (compilers, n_compilers): Now a pointer, with size of vector ptd to. ! 4831: (default_compilers): New name for old `compilers' vector. ! 4832: (read_specs): Given file name, read specs and add to `compilers'. ! 4833: Also set cpp_spec, asm_spec, etc. ! 4834: (skip_whitespace): New subroutine. ! 4835: (main): Initialize `compilers' from `default_compilers'. ! 4836: Find a specs file and call read_specs. ! 4837: Search thru `compilers' from back to front. ! 4838: * Makefile.in (install): Use gcc -dumpspecs to write a specs file. ! 4839: ! 4840: * Support multiple installed compilers; find them by ! 4841: target machine and version. ! 4842: (STANDARD_EXEC_PREFIX): Change to `.../gcc/'. ! 4843: (standard_exec_prefix_1): Change to `.../gcc/'. ! 4844: (process_command): Options -b and -V set spec_machine, spec_version. ! 4845: Option -dumpspecs writes specs file to define cpp_spec, asm_spec, etc. ! 4846: Option -dumpversion writes version number. ! 4847: (main): Set machine_suffix from spec_machine and spec_version. ! 4848: * Makefile.in (libsubdir): New variable, made from libdir. ! 4849: (gcc.o): Define DEFAULT_TARGET_MACHINE macro in compilation. ! 4850: Change value of STANDARD_EXEC_PREFIX as above. ! 4851: (cccp.o): Use libsubdir. ! 4852: (install): Install files under $(libsubdir), after making that dir. ! 4853: ! 4854: * reload.c (decompose): Handle case of pseudo with no hard reg. ! 4855: ! 4856: Wed Sep 27 01:20:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4857: ! 4858: * global-alloc.c: #if 0 handling of REG_NO_CONFLICT notes. ! 4859: ! 4860: * c-typeck.c (build_c_cast): Implement cast to union type. ! 4861: ! 4862: * Edit the makefile automatically when necessary. ! 4863: * config.gcc: Produce Makefile by editing Makefile.in with sed. ! 4864: * Makefile.in: New name for file `Makefile'. ! 4865: Comments on editing the file deleted. ! 4866: * config/make-*: Various files are inserted by sed into Makefile. ! 4867: ! 4868: * Provide a way for languages to control printing of function names. ! 4869: * toplev.c (error, fatal, announce_function, etc.): ! 4870: Use value of decl_printable_name to compute what name to print. ! 4871: * stmt.c (init_function_start): Likewise. ! 4872: * toplev.c (main): Init that variable. ! 4873: (decl_name): New function, used by default. ! 4874: ! 4875: * explow.c (round_push): Fix typo: return fast if ALIGN is 1. ! 4876: ! 4877: * flow.c (dump_flow_info): Delete excess arg to fprintf. ! 4878: * gcc.c (fatal): Delete excess arg to delete_temp_files. ! 4879: ! 4880: * expr.c (convert_move): Handle absence of integer truncate insns ! 4881: by copying value to a reg (and then using subreg). ! 4882: ! 4883: * final.c (final_start_function): Do leaf-function register renumbering ! 4884: if that is defined for this machine. ! 4885: (leaf_renumber_regs, only_leaf_regs_used, leaf_function_p): New fns. ! 4886: ! 4887: * varasm.c (in_text_section): New function. ! 4888: * tm-3b1.h (ASM_OUTPUT_SKIP): Use that. ! 4889: ! 4890: * stmt.c (case_index_expr_type): New function. ! 4891: ! 4892: * c-parse.y (maybe_attribute): Don't fail to return a value. ! 4893: ! 4894: Tue Sep 26 02:40:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4895: ! 4896: * Do auto-increments for hard regs. ! 4897: * flow.c (mark_used_regs): Do set reg_next_use for hard regs. ! 4898: When making an auto-increment for a hard reg, don't mess with ! 4899: reg_n_refs or reg_n_sets. ! 4900: (try_pre_increment_1): Likewise. ! 4901: ! 4902: * gcc.c (compilers): -undef inhibits predefined symbols. ! 4903: ! 4904: * combine.c (subst): In case EQ, prefer ZERO_EXTRACT, not SIGN_EXTRACT. ! 4905: * vax.md (jbs, jbc patterns): Write with ZERO_EXTRACT. ! 4906: * m88k.md: Likewise. ! 4907: ! 4908: * Merge C++ changes in stmt.c: ! 4909: * Set up an obstack, stmt_obstack. ! 4910: (ALLOC_NESTING): Allocate a `struct nesting' on that. Callers changed. ! 4911: (POPSTACK): Use the obstack. ! 4912: (init_stmt): New fn: init the obstack. ! 4913: (any_pending_cleanup): New fn. ! 4914: (expand_start_bindings): Leave outer_cleanups 0 if nothing in it. ! 4915: (expand_end_bindings): Preserve some global vars around cleanups. ! 4916: After cleanups, if no stack level to restore, do pending pops. ! 4917: (fixup_cleanups): Do pending pops after the cleanups. ! 4918: (expand_start_case): Don't output a NOTE if already have one. ! 4919: (assign_parms): Speed up sizetree computations in common case. ! 4920: (init_function_start): Use lang_printable_name for current_function_name. ! 4921: (expand_function_end): Don't set REG_FUNCTION_VALUE_P ! 4922: for a pseudo reg used to copy into the real return. ! 4923: * toplev.c (compile_file): Call init_stmt. ! 4924: ! 4925: * c-typeck.c (commontype): If one arg is error_mark_node, return other. ! 4926: ! 4927: Mon Sep 25 12:13:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4928: ! 4929: * optabs.c (expand_binop): Handle boolean ops on >SImode with ! 4930: several one-word insns. Put out REG_EQUAL and REG_NO_CONFLICT notes. ! 4931: * global-alloc.c (global_conflicts): For each insn, record ! 4932: in no_conflict_pairs all the REG_NO_CONFLICT notes of the insn. ! 4933: (record_one_conflict): Don't mark a conflict between such a pair. ! 4934: * local-alloc.c (block_alloc): Do combine_regs on the sequences ! 4935: made by expand_binop for multi-word boolean ops. ! 4936: (combine_regs): New arg ALREADY_DEAD is 1 if UREG died prior to INSN. ! 4937: (no_conflict_p): New subroutine. ! 4938: * combine.c (try_combine): Move REG_NO_CONFLICT notes like REG_INC. ! 4939: * flow.c (life_analysis): Don't delete no-op moves ! 4940: if they carry REG_EQUAL notes. These insns are needed later. ! 4941: * reload.c (find_dummy_reload): Use actual operands (which may be ! 4942: subregs) for most purposes, including checking for overlap. ! 4943: (hard_reg_set_here_p): Handle a range of regnos, not just one. ! 4944: ! 4945: * loop.c (move_movables): Use special techniques to move regs ! 4946: used for zero-extension. Don't combine matching regs; instead, ! 4947: just record them in pairs in regs_may_share. ! 4948: * global-alloc.c (global_alloc): Digest regs_may_share into a ! 4949: vector, reg_may_share. Then assign matching regs the same allocno. ! 4950: (global_alloc): Initialize allocno_n_refs, allocno_live_length, ! 4951: allocno_calls_crossed. ! 4952: (allocno_compare): Use those new vectors; don't use allocno_reg. ! 4953: (find_reg): Use those new vectors. ! 4954: Assign hard reg to all the pseudos that share the allocno. ! 4955: ! 4956: * jump.c (jump_optimize): Two new cases simplify jumping to or ! 4957: falling into a test-and-branch after setting the register being tested. ! 4958: * jump.c (get_label_before, get_label_after): New functions. ! 4959: (do_cross_jump): Use get_label_before. ! 4960: ! 4961: Sun Sep 24 00:21:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4962: ! 4963: * gnulib2.c (__fixunsdfsi): Defined here, not in gnulib.c. ! 4964: * Makefile (LIBFUNCS, LIB2FUNCS): Corresponding change. ! 4965: ! 4966: * tm-i860.h (SDB_DEBUGGING_INFO): Define this, not SDB_... ! 4967: ! 4968: * gcc.c (link_spec): Don't specify -lg. ! 4969: * tm-alliant.h, tm-convex.h, tm-hp9k3bsd.h, tm-isi68.h, tm-news.h ! 4970: * tm-pyr.h, tm-seq386.h, tm-sequent.h, tm-sparc.h, tm-spur.h ! 4971: * tm-sun2.h, tm-sun3.h, tm-sun386i.h, tm-tahoe.h, tm-vax.h: ! 4972: Make LIB_SPEC link with -lg. ! 4973: * tm-harris.h, tm-vaxv.h, tm-vms.h: Turn off inherited LIB_SPEC. ! 4974: ! 4975: * recog.h (insn_*): Declare these tables `const'. ! 4976: (const): Define this as nothing, if not __STDC__. ! 4977: * expr.h (insn_gen_function): Declare `const'. ! 4978: (const): Define this as nothing, if not __STDC__. ! 4979: * genoutput.c (main): In insn-output.c, don't define `const' if ! 4980: already defined. ! 4981: ! 4982: * recog.c (offsettable_nonstrict_memref_p): New function. ! 4983: * stmt.c (fixup_var_refs_1): Use that, not offsettable_memref_p. ! 4984: * reload.c (find_reloads): Likewise. ! 4985: ! 4986: * integrate.c (save_for_inline): Set in_nonparm_insns when arrive ! 4987: at the first nonparm insn. ! 4988: (copy_for_inline): Set TREE_READONLY only if in_nonparm_insns. ! 4989: ! 4990: * Makefile (float.h): Make hard-params an ordinary dependency. ! 4991: ! 4992: * c-decl.c (poplevel): When popping a local extern decl, ! 4993: save the TREE_USED bit in the identifier. ! 4994: * toplev.c (compile_file): Check that, printing "not used" warnings. ! 4995: ! 4996: * c-parse.y (init_lex): Discard undesired reserved words from table. ! 4997: (yylex): No need to check for them at lookup time. ! 4998: ! 4999: * tree.c (make_node): Always put PARM_DECL in saveable_obstack. ! 5000: ! 5001: * toplev.c (floor_log2, exact_log2): Rewritten for speed. ! 5002: ! 5003: * tree.c (listify): New function. ! 5004: ! 5005: * c-typeck.c (convert_for_assignment): New args for function being ! 5006: called and argument number. Used in error messages. ! 5007: (actualparameterlist): Pass those args usefully. ! 5008: (wrn_for_assignment): New function. ! 5009: ! 5010: * loop.c (general_induction_var): Handle give copied from a biv. ! 5011: ! 5012: * i386.md (div*i3, udiv*i3): New patterns. ! 5013: (divmodhi4, udivmodhi4): New patterns. ! 5014: ! 5015: * combine.c (subst): ! 5016: Simplify (sign_extend:M (subreg:N (lshiftrt:M REG CONST) 0)) ! 5017: when REG was assigned from (zero_extend:M (any:N ...)). ! 5018: Make the similar (zero_extend:M ...) case share code. ! 5019: ! 5020: * expr.c (store_field): A frame-pointer-relative address is stable. ! 5021: ! 5022: * expr.c (expand_expr): Effectively pass on IGNORE for 2nd op of comma. ! 5023: ! 5024: Sun Sep 24 00:21:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5025: ! 5026: * Version 1.36 released. ! 5027: ! 5028: * genextract.c (main): Pass `insn' as arg to `fatal_insn_not_found'. ! 5029: ! 5030: * tahoe.md (casel patterns): Use %@ for operand of .align. ! 5031: * tm-tahoe.h (PRINT_OPERAND): %@ prints `1'. ! 5032: * tm-harris.h (PRINT_OPERAND): Redefine it; %@ prints `2'. ! 5033: ! 5034: * config.gcc (decstation): New entry. ! 5035: ! 5036: * tm-harris.h: New file, using tm-tahoe.h. ! 5037: ! 5038: * tm-decstatn.h, tm-mips-bsd.h, tm-mips-sysv.h: New files. ! 5039: ! 5040: Sat Sep 23 00:28:14 1989 Alain Lichnewsky (lich at glenlivet) ! 5041: ! 5042: * added -Zxxx flag in tm-mips.h. (-Z stands for systype) ! 5043: ! 5044: used as -ZSYSV or -ZBSD43 on RISC_OS. I suppose ! 5045: that at somepoint -ZPOSIX might be required for Ultrix. ! 5046: ! 5047: * changed command issued to loader to set -systype and to get ! 5048: crt1 crtn instead of crt0. ! 5049: ! 5050: * changed predefines for cpp to agree with RISC-OS ! 5051: ! 5052: * tm-mips.h checks for machine type ( defined(ultrix) == DECSTATION) ! 5053: so that user does not have to go in and change tm-mips.h anymore ! 5054: ! 5055: * cpp defines mips host_mips unix and SYSTYPE_SYSV ! 5056: or SYSTYPE_BSD43. ! 5057: ! 5058: Fri Sep 22 00:31:29 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5059: ! 5060: * pyr.md (andsi3): Flush spurious paren. ! 5061: ! 5062: * Makefile (hard-params): Don't use LIBS or LIBDEPS. ! 5063: ! 5064: * rtl.c (init_rtl): ! 5065: Use malloc to allocate the string for format of CONST_DOUBLE. ! 5066: Don't fail to store in rtx_format. ! 5067: ! 5068: Thu Sep 21 00:33:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5069: ! 5070: * print-tree.c (dump): Move decl of P in REAL_CST case. ! 5071: ! 5072: * fold-const.c (fold): For ABS_EXPR, handle REAL_IS_NOT_DOUBLE. ! 5073: ! 5074: * c-convert.c (convert_to_real): Use REAL_VALUE_ATOF to make 0. ! 5075: ! 5076: * mips.md (movdi): Handle constant with or without WORDS_BIG_ENDIAN. ! 5077: For alternative 2, output just 2 store insns, not 3. ! 5078: ! 5079: * dbxout.c (dbxout_symbol): Optionally go to .data for ! 5080: a static file-scope variable. ! 5081: * tm-vax.h: Define DBX_STATIC_STAB_DATA_SECTION to request this. ! 5082: ! 5083: * varasm.c (output_constant, force_const_mem): ! 5084: ASM_OUTPUT_DOUBLE_INT now takes rtx as argument. ! 5085: ! 5086: * gvarargs.h [__NeXT__]: Undefine macros defined by stdardg.h. ! 5087: Define _VARARGS_H. ! 5088: ! 5089: * stddef.h (size_t): Don't define it if _SIZE_T macro is defined. ! 5090: (NULL): Undef any previous defn. ! 5091: ! 5092: * cexp.y (NULL): Don't define if already defined. ! 5093: ! 5094: * emit-rtl.c (force_next_line_note): New function. ! 5095: * stmt.c (expand_function_start): Call that just before returning. ! 5096: ! 5097: Wed Sep 20 01:22:16 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5098: ! 5099: * c-parse.y (asm_clobbers): ! 5100: Allow string concatenation: call combine_strings. ! 5101: ! 5102: Mon Sep 18 00:04:06 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5103: ! 5104: * expr.c (expand_call): If calling const function, don't defer ! 5105: pops for this call. ! 5106: ! 5107: * c-parse.y (yylex): When float constant ends in `f', ! 5108: actually truncate to a single-float. ! 5109: ! 5110: Sun Sep 17 01:36:43 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5111: ! 5112: * gcc.c (SWITCH_TAKES_ARG): -A takes an arg. ! 5113: (link_spec): Inhibit start files when -A. ! 5114: ! 5115: * convex.md (call, call_value): Supply dummy arg to RETURN_POPS_ARGS. ! 5116: ! 5117: * gnulib2.c (__fixunsdfdi): After removing top half, A can be neg. ! 5118: (__cmpdi2, __ucmpdi2): Was misusing macros HIGH and LOW-- ! 5119: use .s.high and .s.low to extract words from long_long. ! 5120: ! 5121: * Makefile (gnulib2): Run `./gcc'. ! 5122: ! 5123: * Makefile (float.h): Use `make', not `$(MAKE)'. ! 5124: (hard-params.o): Use `$(srcdir)' in deps as in commands. ! 5125: ! 5126: * out-tahoe.c (output_move_double): Handle constant operand 1. ! 5127: ! 5128: Sat Sep 16 01:15:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5129: ! 5130: * reload1.c (emit_reload_insns): Put death note for input reload reg ! 5131: even if reload was inherited. ! 5132: ! 5133: * out-i860.c (output_block_move): Typo loading size of block. ! 5134: ! 5135: * m68k.md (dbra patterns): Do CC_STATUS_INIT. ! 5136: ! 5137: * cse.c (fold_rtx): Check GET_MODE_CLASS before floating negate. ! 5138: ! 5139: Fri Sep 15 00:39:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5140: ! 5141: * combine.c (subst): Don't combine (subreg (mem)) ! 5142: if subreg's mode is wider than mem's mode. ! 5143: ! 5144: Thu Sep 14 04:33:51 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5145: ! 5146: * Makefile (clean): Delete temp files used in making gnulib. ! 5147: ! 5148: * tm-next.h (LINK_SPEC): Pass -Z and -seglinkedit options. ! 5149: ! 5150: Tue Sep 12 01:06:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5151: ! 5152: * stor-layout.c (layout_type): Ignore MAX_FIXED_MODE_SIZE for ints. ! 5153: ! 5154: * mips.md (cmpsi + bleu peephole): Should output unsigned insn. ! 5155: ! 5156: * expmed.c (store_bit_field, extract_bit_field): If loading mem ! 5157: into reg for bit field insn, don't use a larger mode than insn wants. ! 5158: ! 5159: * Makefile (stamp-gnulib2): Depend on gcc, cc1, cpp to avoid ! 5160: wrong order of making when parallel. ! 5161: ! 5162: * Makefile (float.h): Do use $(MAKE) to run recursive make. ! 5163: ! 5164: Mon Sep 11 00:49:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5165: ! 5166: * cccp.c (main): Test for missing arg after -o, etc. ! 5167: ! 5168: * tm-next.h: Nearly completely new. ! 5169: ! 5170: * gcc.c (SWITCH_TAKES_ARG, WORD_SWITCH_TAKES_ARG): Move after config.h. ! 5171: ! 5172: * cccp.c: Cast some args to strcpy and strcat. ! 5173: ! 5174: * genoutput.c (error): Declare arg S. ! 5175: ! 5176: * tm-pyr.h, pyr.md, out-pyr.c, xm-pyr.h: New files. ! 5177: * config.gcc: New item for pyr. ! 5178: ! 5179: * gvarargs.h: If __pyr__, use va-pyr.h. ! 5180: ! 5181: Sun Sep 10 00:48:43 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5182: ! 5183: * reload1.c (inc_for_reload): Really return the first of the insns. ! 5184: ! 5185: * stor-layout.c (build_int): Memoize size nodes for sizes <= 32. ! 5186: ! 5187: * loop.c (check_dbra_loop): Don't reverse a biv that is used ! 5188: in between its update and the loop endtest insn. ! 5189: ! 5190: Sat Sep 9 02:10:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5191: ! 5192: * stor-layout.c (genop): Don't use `combine' for nonexplicit constants. ! 5193: Handle some identity elements, etc., directly. ! 5194: (layout_basetypes): Function deleted. ! 5195: (layout_record): Ignore any TYPE_DECLs in the fieldlist. ! 5196: Don't do PCC_BUTFIELD_TYPE_MATTERS hack on field with ERROR_MARK type. ! 5197: (layout_union): Delete error check for base types. ! 5198: Ignore any TYPE_DECLs in the fieldlist. ! 5199: (layout_type): Copy layout info directly into all variants of type. ! 5200: Delete unused local `x'. ! 5201: ! 5202: * mips.md (movdi): Handle constant source operand. ! 5203: (movsi): Some output code moved to output_load_immediate. ! 5204: * out-mips.c (output_load_immediate): New function. ! 5205: ! 5206: * config.gcc (iris): Use tm-iris.h and xm-iris.h. ! 5207: ! 5208: * integrate.c (copy_for_inline): Copy all nonconstant MEM addresses. ! 5209: ! 5210: * tm-3b1.h (ASM_OUTPUT_SPACE): New override defn, to output explicit ! 5211: bytes of 0 if in text segment. ! 5212: ! 5213: Fri Sep 8 19:15:08 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5214: ! 5215: * combine.c (try_combine): Don't do i3dest stuff if i3 isn't a SET. ! 5216: ! 5217: Thu Sep 7 00:16:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5218: ! 5219: * integrate.c (function_cannot_inline_p): Fn is "not even close" ! 5220: only if > 3 * max_insns. ! 5221: ! 5222: * toplev.c (fatal_insn_not_found): New fn. ! 5223: * genextract.c (main): Make insn_extract call that fn. ! 5224: ! 5225: * integrate.c (expand_inline_function): Don't abort about bad offset ! 5226: in a parm whose type is error_mark_node. ! 5227: Make another syntax level to hold parm destructors. ! 5228: ! 5229: * tm-mips.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): ! 5230: Increment push_loc after, not before, each reg save or restore. ! 5231: When storing reg 9 or 29, use offset tsize-4. ! 5232: Make tsize larger by 4 initially. ! 5233: (STARTING_FRAME_OFFSET): -8, not -4. ! 5234: ! 5235: * gcc.c (choose_temp_base): Make use of TMPDIR and P_tmpdir ! 5236: if they exist. ! 5237: ! 5238: * toplev.c, gcc.c, cccp.c, gen*.c (fancy_abort): ! 5239: New function which can be used to replace `abort'. ! 5240: ! 5241: * toplev.c (main): Save argv, argc in save_argv, save_argc. ! 5242: ! 5243: * jump.c (delete_insn): Always advance NEXT across deleted insns, ! 5244: in case not optimizing. Fixes setting current_function_returns_null. ! 5245: ! 5246: * symout.c: Include stddef.h with <...>. ! 5247: ! 5248: Wed Sep 6 00:39:35 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5249: ! 5250: * gcc.c (find_exec_file): Was using `argbuf[0]' where wanted `prog'. ! 5251: ! 5252: * combine.c (combine_instructions): Dont call record_dead_and_set_regs ! 5253: if insn has become a NOTE. ! 5254: ! 5255: * reload.c (combine_reloads): Update reload_when_needed. ! 5256: ! 5257: * jump.c (delete_insn): If delete label on ADDR_VEC, delete table too. ! 5258: (jump_optimize): If ADDR_DIFF_VEC label has 1 ref, delete it and table. ! 5259: ! 5260: * gunlib2.c (__fixunsdfdi, __floatdfdi): Make the long long, ! 5261: and/or its two halves, unsigned. ! 5262: ! 5263: * reload1.c (reload): When setting double_reg_address_ok, ! 5264: require it to be offsettable. ! 5265: * out-sparc.c (output_fp_move_double): Now safe to use std ! 5266: for all reg+reg addresses. ! 5267: ! 5268: * vax.md: Add another simplified-casesi pattern for operand 0 constant. ! 5269: ! 5270: * cse.c (fold_rtx): Don't truncate VAL at end if WIDTH is 0. ! 5271: Don't alter WIDTH for that purpose based on the operands. ! 5272: ! 5273: * stmt.c (warn_if_unused_value): && or || is ok if 2nd op has effect. ! 5274: ! 5275: * c-parse.y (ALIGNOF unary_expr): Find a larger value if possible. ! 5276: ! 5277: * reload.c (combine_reloads): Don't combine an output address reload. ! 5278: (find_reloads): Call combine_reloads after setting reload_when_needed. ! 5279: (find_reloads_address): Update OPERAND if copy the operand. ! 5280: ! 5281: * cccp.c (macroexpand): Missing arg no error in 1-arg macro if -trad. ! 5282: ! 5283: Tue Sep 5 14:12:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5284: ! 5285: * reload.c (find_dummy_reload): Don't use the output reg if it is ! 5286: a fixed reg which can overlap with other regs. ! 5287: ! 5288: * cse.c (exp_equiv_p): Two vectors must have same length. ! 5289: ! 5290: * tree.def (WITH_CLEANUP_EXPR): Print-name string was wrong. ! 5291: ! 5292: * optabs.c (expand_fix): Undo previous change (unsigned conversion). ! 5293: It doesn't work. ! 5294: ! 5295: * gcc.c: Pass -i option to cpp. It takes an arg. ! 5296: ! 5297: * cccp.c (cplusplus_include_defaults) [VMS]: Typo in array indices. ! 5298: ! 5299: * Makefile (gnulib): Create it in tmpgnulib, then rename at the end. ! 5300: ! 5301: * i860.md (movdi from constant pattern): Fix `st' opcode typos. ! 5302: ! 5303: * Makefile (hard-params*): Use CCLIBFLAGS, not CFLAGS. ! 5304: ! 5305: Fri Sep 1 03:43:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5306: ! 5307: * tm-i386gas.h (ASM_OUTPUT_ALIGN): .align arg isn't a log, in gas. ! 5308: (ASM_OUTPUT_ALIGN_CODE): Align labels, etc. to 4-byte boundary. ! 5309: ! 5310: * integrate.c (save_for_inline): Delete NOTE_INSN_DELETED notes. ! 5311: ! 5312: * Makefile (clean): Delete dbr and jump2 dumps. ! 5313: ! 5314: * Makefile (gnulib, gnulib2): Compile in main dir, not libtemp subdir. ! 5315: This avoids trouble with -I options, etc. ! 5316: ! 5317: Thu Aug 31 15:07:19 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5318: ! 5319: * reload1.c (emit_reload_insns): ! 5320: Be specific moving REG_DEAD notes to an output reload. ! 5321: Sometimes move them to output-operand-address reloads. ! 5322: ! 5323: * out-sparc.c (output_fp_move_double): Very cautious about std. ! 5324: Use it only for something visibly aligned, or for an array element. ! 5325: ! 5326: * cccp.c (main) [VMS]: Remove dirs and extension from PROGNAME. ! 5327: (pfatal_with_name) [VMS]: Return VMS system call error code as status. ! 5328: (cplusplus_include_defaults) [VMS]: Add GNU_GXX_INCLUDE. ! 5329: ! 5330: * xm-vms.h (FATAL_EXIT_CODE): Now (44 | 0x10000000). ! 5331: ! 5332: * expr.c (do_store_flag): Allow more values of STORE_FLAG_VALUE. ! 5333: ! 5334: * gnulib2.c (__fixunsdfdi): Explicitly cast doubles to `long int' ! 5335: to avoid infinite recursion. ! 5336: ! 5337: Wed Aug 30 13:28:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5338: ! 5339: * loop.c (skip_consec_insns): Skip NOTEs. ! 5340: ! 5341: * loop.c (general_induction_var): If G or V is a nonreplaceable giv, ! 5342: give up. If G is allocated here, consider it replaceable. ! 5343: ! 5344: * stupid.c: Make uid_suid, reg_where_born and reg_where_dead ! 5345: vectors of ints, not short. ! 5346: ! 5347: Tue Aug 29 00:21:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5348: ! 5349: * tm-iris.h: Fix typo in formfeed char. ! 5350: ! 5351: * out-i860.c (singlemove_string): Add missing `.l' to `st', `ld'. ! 5352: ! 5353: * loop.c (general_induction_var): Don't set G from 2nd op. of MINUS, ! 5354: since that would negate the result. ! 5355: ! 5356: Mon Aug 28 00:16:36 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) ! 5357: ! 5358: * dbxout.c (dbxout_symbol): When we need a pointer type, don't ! 5359: record it in TYPE_POINTER_TO, lest it not live as long as its target. ! 5360: ! 5361: * tm-hp9k320.h (CPP_PREDEFINES): Delete __hp9000s300 and _HPUX_SOURCE. ! 5362: ! 5363: * Makefile (gnulib): Deleted stamp-gnulib2 in wrong dir. ! 5364: (hard-params.o): Copy it into current dir before compiling. ! 5365: (STAGESTUFF): Include the stamp-*.[ch] files. ! 5366: ! 5367: Sun Aug 27 13:59:39 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) ! 5368: ! 5369: * out-i860.c (output_size_for_block_move): Typo in CC_KNOW_HI_R31. ! 5370: ! 5371: * integrate.c (expand_inline_function): Ignore insns to set value reg ! 5372: if we don't want the value. ! 5373: ! 5374: * varasm.c (make_function_rtl, make_decl_rtl): Use DECL_ASSEMBLER_NAME. ! 5375: ! 5376: * Makefile (stamp-gnulib2): Don't explicitly delete old members, ! 5377: just replace them. ! 5378: ! 5379: * m68k.md, alliant.md (trunchiqi): Use movew if moving from memory ! 5380: or from a const_int. ! 5381: ! 5382: * integrate.c (expand_inline_function): Set first_parm_offset ! 5383: later on, after computing the args, in case those args ! 5384: contain inline function calls. ! 5385: ! 5386: * alliant.md (movqi): Like recent change in m68k.md. ! 5387: ! 5388: Sat Aug 26 00:26:03 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) ! 5389: ! 5390: * tm-hp9k320.h (CPP_PREDEFINES): Take out m68k and mc68000. ! 5391: * tm-news.h (CPP_PREDEFINES): Add mc68000. ! 5392: ! 5393: Fri Aug 25 15:37:35 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) ! 5394: ! 5395: * optabs.c (expand_fix): Can convert to unsigned int ! 5396: by subtracting 2**(N-1), converting to signed, and adding 2**(N-1). ! 5397: ! 5398: * reload.c (find_reloads_address): For out-of-range stack slot, ! 5399: reload the displacement into a reg. ! 5400: (find_reloads_toplev): For subreg of a reg with a reg_equiv_address, ! 5401: turn the whole thing into a memref. ! 5402: ! 5403: Thu Aug 24 14:07:03 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) ! 5404: ! 5405: * c-decl.c (grokdeclarator): If function is declared `extern inline', ! 5406: set current_extern_inline. ! 5407: (start_function): In that case, set TREE_EXTERN in function decl. ! 5408: * toplev.c (rest_of_compilation): In that case, don't really compile. ! 5409: (compile_file): Don't output such functions at the end either. ! 5410: ! 5411: * c-typeck.c (build_function_call): Do set NAME if we have one. ! 5412: ! 5413: * Prevent any variability in results of qsort. ! 5414: * stupid.c (stupid_reg_compare): Compare by regno as last resort. ! 5415: * global-alloc.c (allocno_compare): Same idea. ! 5416: * local-alloc.c (qty_compare_1): Same idea. ! 5417: * reload1.c (hard_reg_use_compare, reload_reg_class_lower): Same idea. ! 5418: ! 5419: * cccp.c (macroexpand): If read one arg, but it's whitespace, ! 5420: consider that 0 args for checking number of args. ! 5421: Improve plurals in error messages. ! 5422: ! 5423: * expr.h (inhibit_defer_pop): New name for current_args_size, ! 5424: now declared here. ! 5425: (NO_DEFER_POP, OK_DEFER_POP): Moved here. ! 5426: * expr.c: Names related to current_args_size renamed. ! 5427: (clear_current_args_size): Deleted. ! 5428: * stmt.c (expand_function_start): Init inhibit_defer_pop here. ! 5429: ! 5430: * stmt.c (expand_start_stmt_expr): Do NO_DEFER_POP. ! 5431: (expand_end_stmt_expr): Do OK_DEFER_POP, and don't do deferred pops. ! 5432: ! 5433: * Makefile (c-parse.tab.c): Pass -o option to Bison. ! 5434: ! 5435: Wed Aug 23 23:14:06 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) ! 5436: ! 5437: * expmed.c (store_bit_field, extract_bit_field): ! 5438: Use GET_MODE_WIDER_MODE to scan possible modes for bestmode. ! 5439: ! 5440: * Makefile (stamp-gnulib2): Discard error messages from `ar d'. ! 5441: ! 5442: Tue Aug 22 00:31:51 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) ! 5443: ! 5444: * final.c (output_source_line): In COFF, don't output `.ln 0'. ! 5445: ! 5446: * Makefile (stamp-gnulib2): Depend on gnulib. For parallel make. ! 5447: ! 5448: * stmt.c (uninitialized_vars_warning): Don't crash if DECL_RTL is 0. ! 5449: ! 5450: * i386.md (truncdfsf2): Pay attention whether stack top is dead. ! 5451: ! 5452: Mon Aug 21 22:02:40 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) ! 5453: ! 5454: * reload1.c (choose_reload_regs): Don't use regno uninitialized, ! 5455: in the code that does find_equiv_reg. ! 5456: ! 5457: Sun Aug 20 00:06:47 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) ! 5458: ! 5459: * m68k.md (movqi): Was outputting bad code for areg->mem and mem->areg. ! 5460: ! 5461: * explow.c (memory_address): Handle a hard reg in wrong reg class. ! 5462: ! 5463: * stmt.c (expand_function_end): Set REG_FUNCTION_VALUE_P in return ! 5464: reg when returning address of structure value block. ! 5465: ! 5466: * integrate.c (save_for_inline): Preserve integrated bit on insns. ! 5467: ! 5468: Sat Aug 19 14:20:07 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) ! 5469: ! 5470: * combine.c (subst): Don't change (subreg:M (mem:N ...)) to ! 5471: (mem:M ...) if address is mode-dependent. ! 5472: ! 5473: * config.gcc: Copy and alter Makefile for any srcdir except `.'. ! 5474: In that case, make a .gdbinit as well. ! 5475: ! 5476: * sparc.md (andcbsi3, iorcbsi3, xorcbsi3): These are not commutative. ! 5477: ! 5478: * vax.md (cmpv and cmpzv patterns): Use COMPARE, not MINUS. ! 5479: ! 5480: Fri Aug 18 12:24:52 1989 Richard Stallman (rms at hobbes.ai.mit.edu) ! 5481: ! 5482: * alliant.md (movqi): Change move to mov in assembler code. ! 5483: ! 5484: * integrate.c (expand_inline_function): ! 5485: Handle args passed in regs and copied to slots reached via arg ptr. ! 5486: ! 5487: * out-sparc.c (output_delayed_branch): ! 5488: Do alter_subreg on operands of delay insn. ! 5489: ! 5490: * reload1.c (choose_reload_regs): Look for a reg to share ! 5491: before one that we won't share. ! 5492: ! 5493: * expr.h: Define OPTAB_MUST_WIDEN. ! 5494: * optabs.c (expand_binop): Handle that case. ! 5495: * expmed.c (expand_shift): Use that when widening lshift to ashift. ! 5496: ! 5497: * optabs.c (emit_cmp_insn): Use CONST0_RTX, not individual vars. ! 5498: ! 5499: * gnulib2.c (lsh*di3, ash*di3): Return right away if count is zero. ! 5500: Otherwise tried to shift by 32. ! 5501: Also replace constant 32 by something symbolic. ! 5502: ! 5503: * final.c (output_source_line): Output line number in COFF ! 5504: even if wrong file. ! 5505: ! 5506: Thu Aug 17 15:16:34 1989 Richard Stallman (rms at hobbes.ai.mit.edu) ! 5507: ! 5508: * Makefile (version.o): Make this a target; specify source file. ! 5509: (obstack.o): Likewise. ! 5510: ! 5511: * config.gcc (i860): New alternative. ! 5512: ! 5513: * i860.md (movstrsi): Record the alignment as operand 3. ! 5514: Renumber following (internal) operands. ! 5515: * out-i860.c (output_block_move): Rewrite as in out-sparc.c. ! 5516: (output_size_for_block_move): Likewise. And don't ! 5517: subtract alignment from the size. ! 5518: ! 5519: Wed Aug 16 13:27:12 1989 Richard Stallman (rms at hobbes.ai.mit.edu) ! 5520: ! 5521: * loop.c (combine_movables): Don't combine zero-extend ! 5522: registers that live outside the loop. ! 5523: ! 5524: * integrate.c (expand_inline_function): Use copy_to_mode_reg ! 5525: to set up this_struct_value_rtx, to handle sums right. ! 5526: ! 5527: * Makefile: Use $(srcdir) in bison output files used as deps. ! 5528: Supply some missing deps. ! 5529: (*.info, doc): *.info files go in srcdir. ! 5530: ! 5531: Tue Aug 15 00:11:12 1989 Richard Stallman (rms at hobbes.ai.mit.edu) ! 5532: ! 5533: * i860.md, tm-i860.h, out-i860.c: New files. ! 5534: ! 5535: * c-decl.c (duplicate_decls): Fix bug determining whether NEWDECL ! 5536: is a definition or just a decl. ! 5537: Combine code to preserve various things from old definition ! 5538: through a declaration. ! 5539: ! 5540: * config.gcc: Scan all args at beginning, setting variables. ! 5541: Arg of form -srcdir=... sets srcdir explicitly. ! 5542: srcdir now doesn't contain a slash, and is used with a slash. ! 5543: ! 5544: * Makefile (install): Copy header files and gcc.1 from srcdir. ! 5545: But copy float.h from current dir. (Remove that from USER_H.) ! 5546: (various): Use new variable INCLUDES to get the -I options. ! 5547: Add -I. at the beginning of these. ! 5548: (gnulib, gnulib2): Likewise, use SUBDIR_INCLUDES. ! 5549: Also, get source file from srcdir. ! 5550: Also, depend on $(CONFIG_H). ! 5551: (alloca.o): Get alloca.c from srcdir. ! 5552: ! 5553: * reload1.c (emit_reload_insns): Bug in last change: ! 5554: don't fail to set this_reload_insn. ! 5555: ! 5556: * Makefile (Bison rules): Specify $(srcdir) for target and source. ! 5557: (Explicit C rules): Specify $(srcdir)/ for source in commands. ! 5558: Use sed to eliminate `./' in normal case. ! 5559: (insn-*.c): Use $(srcdir) to run move-if-change. ! 5560: ! 5561: * config.gcc: Check . and .. for the sources. ! 5562: If in .., use that when making links. ! 5563: Also, copy Makefile, alter srcdir in it, and add a VPATH. ! 5564: ! 5565: * stmt.c (expand_end_case): When converting CONST_INT index ! 5566: to an INTEGER_CST, sign-extend if signed type. ! 5567: ! 5568: Mon Aug 14 13:51:08 1989 Richard Stallman (rms at hobbes.ai.mit.edu) ! 5569: ! 5570: * c-decl.c (duplicate_decls): Warn for qualifier mismatch ! 5571: only if pedantic; don't consider it a type mismatch. ! 5572: Merge the qualifiers of the two decls if the types match. ! 5573: ! 5574: * expmed.c (store_bit_field): For insv, memref displacement ! 5575: always counts in bytes, regardless of unit fetched. ! 5576: When checking predicate of op0, accept any mode. ! 5577: ! 5578: * optabs.c (expand_float): One call to can_float_p had args backwards. ! 5579: ! 5580: * loop.c (check_dbra_loop): Set the JUMP_LABEL of the new jump insn. ! 5581: Increment label's use count rather than storing 2. ! 5582: ! 5583: * Makefile: Instead of $<, which fails in certain makes, ! 5584: use $@ and then substitute in the name with sed. ! 5585: ! 5586: * out-sparc.c (output_scc_insn): Handle CC_REVERSED for ordered tests. ! 5587: Use orcc insns to store the result and set cc's for it. ! 5588: ! 5589: * sparc.md (scc combination patterns): ! 5590: Use operands[0] as basis for recorded cc value. ! 5591: ! 5592: * gnulib2.c (floatdidf, fixdfdi, fixunsdfdi): New functions. ! 5593: ! 5594: * gnulib.c (floatdidf, fixdfdi, fixunsdfdi): Deleted. ! 5595: (union longlong, union double_di): Deleted. ! 5596: (HIGH, LOW): Deleted. ! 5597: These were deleted because most did not handle full range of DI ! 5598: and they didn't use the right calling convention for DI. ! 5599: ! 5600: Sun Aug 13 13:06:45 1989 Richard Stallman (rms at hobbes.ai.mit.edu) ! 5601: ! 5602: * c-typeck.c (comptypes): Qualifiers must match. ! 5603: (Was already true for scalars.) ! 5604: Also, array elt qualifiers must match. ! 5605: ! 5606: * tm-apollo68.h (STRUCT_VALUE): Make it 0. ! 5607: (This was done before and lost.) ! 5608: * out-i386.c (function_epilogue): Use ret $4 to pop structure address. ! 5609: (This was done before and lost.) ! 5610: ! 5611: * out-i386.c (call_top_dead_p): Don't fail to check ! 5612: the rtx code of the insns themselves. ! 5613: (This was done before and lost.) ! 5614: ! 5615: * out-sparc.c (output_block_move): If align is 8, make it 4. ! 5616: ! 5617: * typeclass.h: New file. ! 5618: * expr.c: Include it. ! 5619: (expand_builtin): Use those codes in __builtin_classify_type. ! 5620: ! 5621: * Makefile (all, lang-c): Reinstall gnulib2. ! 5622: ! 5623: * Makefile (gnulib2): Don't give up if `ar d' fails. ! 5624: ! 5625: * expr.c (emit_library_call): New 2nd arg NO_QUEUE. ! 5626: All callers changed to pass it. ! 5627: * optabs.c (expand_binop, expand_unop): Don't call emit_queue. ! 5628: Instead, pass 1 for NO_QUEUE to emit_library_call. ! 5629: ! 5630: Sat Aug 12 12:05:22 1989 Richard Stallman (rms at hobbes.ai.mit.edu) ! 5631: ! 5632: * reload1.c (emit_reload_insns): Decision for where to put input ! 5633: reload insn is now common to ordinary case and auto-increment. ! 5634: Likewise, updating these positions afterward. ! 5635: ! 5636: * stmt.c (assign_parms): Treat last named arg as nameless. ! 5637: * expr.c (expand_call): Likewise. ! 5638: ! 5639: * explow.c (copy_to_mode_reg): Use force_operand for PLUS or MULT. ! 5640: (copy_addr_to_reg): Use copy_to_mode_reg. ! 5641: ! 5642: * expmed.c (store_bit_field): Handle case where insv rejects memrefs. ! 5643: ! 5644: * tm-convex.h (ASM_OUTPUT_ALIGN): Magic to handle the fact ! 5645: that this is not called when LOG is 0. ! 5646: ! 5647: Fri Aug 11 16:39:51 1989 Richard Stallman (rms at hobbes.ai.mit.edu) ! 5648: ! 5649: * emit-rtl.c (get_lowpart): For multi-word, in error check, ! 5650: test the unit size of the containing mode. ! 5651: ! 5652: * cccp.c (macroexpand, dump_all_macros): Return void. ! 5653: (macroexpand): Cast sprintf arg to char*. ! 5654: (error, warning, error_with_line): Declare first arg char*. ! 5655: ! 5656: Thu Aug 10 21:42:13 1989 Richard Stallman (rms at hobbes.ai.mit.edu) ! 5657: ! 5658: * expr.c (expand_call): ! 5659: Use force_operand to copy arithmetic to register. ! 5660: ! 5661: * dbxout.c (dbxout_symbol): Go back to N_FUN for const variable. ! 5662: ! 5663: * integrate.c (expand_inline_function): Use proper machine mode ! 5664: for a structure value in memory at address passed by caller. ! 5665: ! 5666: Wed Aug 9 15:21:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5667: ! 5668: * config.gcc: Delete unnecessary variable assignments in case stmt. ! 5669: (isi68-nfp): New alternative. ! 5670: ! 5671: * combine.c (try_combine): Don't substitute for a register ! 5672: which is being explicitly clobbered. ! 5673: ! 5674: * This change was requested for C++. ! 5675: * varasm.c (decode_reg_name, make_decl_rtl): Arg ASMSPEC now char *. ! 5676: * toplev.c (rest_of_decl_compilation): Likewise. ! 5677: * c-decl.c (finish_decl): Change call to rest_of_decl_compilation. ! 5678: ! 5679: * tree.h (struct tree_decl): Pack machine_mode into 8 bits. ! 5680: ! 5681: * explow.c (memory_address, copy_to_reg): ! 5682: Use force_operand to copy arithmetic to register. ! 5683: ! 5684: * tm-isi68-nfp.h: New file. ! 5685: * tm-isi68.h: Allow overriding TARGET_DEFAULT, and let that ! 5686: change CPP_SPEC and LINK_SPEC. ! 5687: (ASM_FILE_START): No `.globl fltused' if soft-float. ! 5688: ! 5689: Tue Aug 8 21:50:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5690: ! 5691: * varasm.c (const_hash): For constructor, mask TREE_TYPE to HASHBITS ! 5692: bits and take modulo, so we don't get negative numbers. ! 5693: ! 5694: * varasm.c (record_constant_1, compare_constant_1): ! 5695: Record and compare the width of an integer. ! 5696: ! 5697: * varasm.c (assemble_function, assemble_variable, get_or_assign_label): ! 5698: (force_const_mem): Don't call ASM_OUTPUT_ALIGN if boundary is 1. ! 5699: ! 5700: * c-decl.c (duplicate_decls): Consider const and volatile as part of ! 5701: type when checking for match and when installing new type into OLDDECL. ! 5702: ! 5703: * expr.c (do_store_flag): Make sure target fits operand predicate. ! 5704: Also, omit the AND insn when true-value is 1 ! 5705: and the mode we get is wider than the one we want. ! 5706: ! 5707: * genrecog.c (main): Make insn-recog.c include real.h. ! 5708: ! 5709: Mon Aug 7 16:58:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5710: ! 5711: * genemit.c (main): Define `operands' as `emit_operands', ! 5712: not `recog_operands'. ! 5713: ! 5714: * reload1.c (emit_reload_insns): Don't copy back a dead output reg. ! 5715: ! 5716: Sun Aug 6 13:56:53 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5717: ! 5718: * sdbout.c (plain_type_1, sdbout_one_type): Use the main variant. ! 5719: (sdbout_type_fields): No need to check TREE_ASM_WRITTEN here, ! 5720: since sdbout_one_type does that. ! 5721: ! 5722: * expr.c (do_store_flag): Ensure the CLOBBER doesn't clobber an input. ! 5723: ! 5724: * fold-const.c (fold_convert): Attempt to avoid overflow ! 5725: when converting real to integer. Use unsigned conversion for ! 5726: low part; always convert as positive and then change sign; ! 5727: subtract high part before converting low part. ! 5728: Also, check for real values out of range for chosen int type; ! 5729: warn and do not convert. ! 5730: ! 5731: * tm-hp9k320.h (CPP_SPEC) [not HPUX_ASM]: Don't define mc68000 here. ! 5732: (CPP_PREDEFINES): Remove mc68k, add m68k and mc68000. ! 5733: [HPUX_ASM]: Define CPP_SPEC here as in the other case, ! 5734: but add __HPUX_ASM__ to each alternative. ! 5735: ! 5736: * tm-m68k.h (FUNCTION_EPILOGUE): Call new hook FUNCTION_EXTRA_EPILOGUE. ! 5737: * tm-altos3068.h (FUNCTION_EXTRA_EPILOGUE): Define it. ! 5738: ! 5739: * Makefile: Use $< wherever appropriate. ! 5740: Also put definitions of customization vars before the comments ! 5741: saying how to override them. ! 5742: ! 5743: Sat Aug 5 14:15:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5744: ! 5745: * i386.md (sne): Typo in opcode name. ! 5746: ! 5747: * tree.h (struct tree_identifier): Delete redundant/unused error_locus. ! 5748: ! 5749: Fri Aug 4 00:04:10 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5750: ! 5751: * varasm.c (const_hash, compare_constant_1, record_constant_1): ! 5752: Compare types only for record constructors, not for array constructors. ! 5753: ! 5754: * dbxout.c (dbxout_parms): When outputing parm from home in local slot, ! 5755: with address from the RTL, don't do big-endian correction on it. ! 5756: ! 5757: * c-typeck.c (build_unary_op): Do default conversion for unary +. ! 5758: ! 5759: * cccp.c (rescan): Accept comments between macro and its args. ! 5760: ! 5761: * c-decl.c (lang_decode_option): -traditional implies writable strings. ! 5762: ! 5763: * cccp.c (trigraph_pcp): Make warning msg more accurate. ! 5764: ! 5765: * c-typeck.c (c_expand_asm_operands): Delete the default promotion ! 5766: which was inserted mysteriously since 1.35. ! 5767: ! 5768: * global-alloc.c (global_conflicts): Allocate regs_set only once. ! 5769: Make it twice as big since clobbers are stored twice. ! 5770: ! 5771: * sparc.md (block move patterns): Record and use alignment operand. ! 5772: * out-sparc.c (output_block_move): Get alignment from there. ! 5773: (output_size_for_block_move): Greatly simplified. ! 5774: ! 5775: * tm-i386v.h (PCC_BITFIELD_TYPE_MATTERS): Define it. ! 5776: ! 5777: * stor-layout.c (layout_record): Anonymous bitfields don't affect ! 5778: overall structure alignment, in PCC_BITFIELD_TYPE_MATTERS case. ! 5779: ! 5780: * loop.c (strength_reduce): Prevent hard reg from becoming biv or giv. ! 5781: ! 5782: * combine.c (subst): Simplify (eq (neg ...) (const_int 0)). ! 5783: ! 5784: Thu Aug 3 13:08:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5785: ! 5786: * cse.c (fold_rtx): For (op var const) special cases, also check ! 5787: for constant as first argument. ! 5788: ! 5789: * c-decl.c (pushtag): For global_binding_level, make permanent nodes. ! 5790: ! 5791: * expr.c (do_store_flag): Put the CLOBBER before the comparison. ! 5792: ! 5793: * expr.c (emit_push_insn): Conditionalize recent changes ! 5794: on no FIRST_PARM_CALLER_OFFSET, so they don't happen on sparc. ! 5795: ! 5796: * out-sparc.c (gen_scc_insn): ! 5797: Don't be confused by CLOBBER emitted by do_store_flag. ! 5798: Skip past such insns looking for last_insn. ! 5799: Don't alter last_insn; instead, patch it to a NOTE and emit new insn. ! 5800: ! 5801: * varasm.c (const_hash, compare_constant_1, record_constant_1): ! 5802: For a CONSTRUCTOR, hash/compare/record type as well as elts. ! 5803: ! 5804: * cse.c (cse_insn): July 18 change was wrong. ! 5805: Now, invalidate at the beginning any regs explicitly clobbered ! 5806: so they will not be substituted for if they appear as inputs. ! 5807: * sparc.md (movstrsi): Copy addresses to temp regs, then use them. ! 5808: ! 5809: * loop.c (record_giv): When comparing life spans for setting ! 5810: ->forces, use luids consistently, not uids. ! 5811: ! 5812: * sparc.md (ashlsi3, ashrsi3, lshrsi3): Truncate constants mod 32. ! 5813: ! 5814: Wed Aug 2 17:50:30 1989 Richard Stallman (rms at sugar-bombs) ! 5815: ! 5816: * mips.md (patterns to move a subreg): Deleted. ! 5817: ! 5818: Sun Jul 30 19:23:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5819: ! 5820: * gcc.c (process_command): Skip `-b' like `-B', in 2nd scan. ! 5821: ! 5822: * xm-sunos4.h: Deleted. ! 5823: * tm-sparc.h, tm-sun3.h: Define LINK_SPEC here instead. ! 5824: * tm-sun4os3.h: Undef it here. ! 5825: * tm-sun3os3.h, tm-sun3os3nf.h: New files to undef LINK_SPEC. ! 5826: * config.gcc: Use those new files where needed. ! 5827: ! 5828: * config.gcc: Delete sun3-fpa and sun3-os4-fpa. ! 5829: * tm-sun3-fpa.h: Deleted. ! 5830: ! 5831: * cccp.c (do_include): Mention even non-ex files for -M. ! 5832: ! 5833: * out-mips.c (addr_compensate): Handle HImode. ! 5834: * mips.md (Set HI from subreg of SI rule): ! 5835: Allow operand in memory. ! 5836: ! 5837: * mips.md (cmpqi, cmphi): Patterns deleted. ! 5838: (cmpsi, cmpsf, cmpdf): Change predicates to register_operand. ! 5839: ! 5840: * cexp.y (rule for ?:): Result is unsigned if either operand is. ! 5841: ! 5842: * expr.c (emit_push_insn): If PARTIAL > 0, load the partial regs ! 5843: at the end, in case the rest of the push does a function call. ! 5844: ! 5845: * reload1.c (alter_frame_pointer_addresses): ! 5846: After altering a PLUS, re-fetch CODE before scanning subexps. ! 5847: ! 5848: * stmt.c (assign_parms): Don't copy the arg pointer value ! 5849: if it is also the frame pointer. If we do copy it, ! 5850: inhibit REG_EQUIV notes for parms copied into pseudo regs ! 5851: ! 5852: * integrate.c (copy_for_inline, copy_rtx_and_substitute): ! 5853: Set up filename and lineno fields of copy of ASM_OPERANDS. ! 5854: ! 5855: Sat Jul 29 18:58:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5856: ! 5857: * integrate.c (expand_inline_function): Handle struct-value-addr ! 5858: passed in memory just like that passed in reg: ! 5859: in either case, translate the pseudo-reg made in ! 5860: expand_function_start. ! 5861: (function_cannot_inline_p): Permit inlining in that case. ! 5862: But reject it if using pcc-style return convention. ! 5863: ! 5864: * stor-layout.c (layout_type): Consider STRICT_ALIGNMENT ! 5865: for ARRAY_TYPE just as for RECORD_TYPE. ! 5866: ! 5867: Wed Jul 26 12:54:59 1989 Richard M. Stallman (rms at mipos3) ! 5868: ! 5869: * cse.c (fold_rtx): If WIDTH is zero for binary operator, ! 5870: look at the modes of the original operands. ! 5871: ! 5872: * cse.c (cse_insn): Set prev_insn_explicit_cc0, for (set (cc0) INT). ! 5873: (predecide_loop_entry): Likewise. ! 5874: (fold_rtx): Look at it, for (if_then_else (cc0) ...). ! 5875: ! 5876: * expr.c (expand_builtin): Pass back return value from ! 5877: __builtin_saveregs. ! 5878: ! 5879: * stmt.c (assign_parms): Allow arg pointer reg not to be fixed. ! 5880: If it is not, copy it to a pseudo reg and use that later on. ! 5881: ! 5882: Tue Jul 25 15:42:04 1989 Richard M. Stallman (rms at mipos3) ! 5883: ! 5884: * expr.c (expand_builtin): New builtin __builtin_classify_type. ! 5885: * tree.h, c-decl.c: Additional support. ! 5886: ! 5887: * flow.c (mark_used_regs): Treat arg pointer like stack pointer. ! 5888: ! 5889: * expr.c (emit_library_call): ! 5890: Pass (tree)0 as TYPE arg to FUNCTION_ARG, etc. ! 5891: ! 5892: Mon Jul 24 11:18:10 1989 Richard M. Stallman (rms at mipos3) ! 5893: ! 5894: * loop.c (regs_match_p): Fix braino. ! 5895: ! 5896: * integrate.c (copy_for_inline, copy_rtx_and_substitute): ! 5897: Make ASM_OPERANDS constraint vector be shared like operand vector. ! 5898: ! 5899: * xm-iris.h: New file. ! 5900: ! 5901: * Makefile (stage4): New target. ! 5902: ! 5903: * gnulib2.c (badd, bsub, bmul, bdiv): If want long value from ! 5904: arithmetic, widen the operands first. ! 5905: (__div_internal aka bdiv): Rename to __bdiv. ! 5906: ! 5907: * sparc.md (seq combination patterns): Fully initialize cc_status. ! 5908: ! 5909: * expr.c (emit_push_insn): Like July 19 change, for BLKmode. ! 5910: ! 5911: * stmt.c (expand_function_end): Stack-restore for alloca ! 5912: is now done after the return_label. ! 5913: ! 5914: * loop.c (scan_loop): Set MAYBE_NEVER for conditional jump to loopbeg. ! 5915: ! 5916: * integrate.c (copy_rtx_and_substitute): Allow mapping of hard regs. ! 5917: (expand_inline_function): Always create parm_map. ! 5918: Handle structure value that way if nec. even if no parms. ! 5919: Otherwise, find the pseudo used in the function to hold the ! 5920: structure address, and map it to a new pseudo. ! 5921: ! 5922: * expr.c (expand_call): ! 5923: Use mark_addressable to make FNDECL addressable. ! 5924: * c-typeck.c (mark_addressable): No longer static. ! 5925: ! 5926: * cse.c (cse_insn): Modify last change: don't canon_reg ! 5927: for hard regs inside clobbers. ! 5928: ! 5929: * expr.c (expand_assignment): ALIGN arg to store_field comes from ! 5930: the structure, not from the value stored. ! 5931: ! 5932: Fri Jul 21 16:23:45 1989 Richard M. Stallman (rms at mipos3) ! 5933: ! 5934: * stmt.c (warn_if_unused_value): Don't warn for a cast ! 5935: around a MODIFY_EXPR. ! 5936: ! 5937: * tm-hp9k320.h (PCC_STATIC_STRUCT_RETURN): Undefine it. ! 5938: (CPP_PREDEFINES): Add some. ! 5939: ! 5940: * combine.c (simplify_and_const_int): ! 5941: Simplify (and (ashiftrt (zero_extend FOO) N) M). ! 5942: ! 5943: * optabs.c (expand_binop): When widening, ! 5944: for some operations we need not actually extend. ! 5945: ! 5946: Thu Jul 20 16:16:35 1989 Richard M. Stallman (rms at mipos3) ! 5947: ! 5948: * Makefile (insn-emit.o): Depend on insn-codes.h. ! 5949: ! 5950: * stmt.c (check_for_full_enumeration_handling): ! 5951: Handle all cases for TYPE_NAME of enum type. ! 5952: ! 5953: Wed Jul 19 17:00:39 1989 Richard M. Stallman (rms at mipos3) ! 5954: ! 5955: * fold-const.c (fold_convert): Don't fail to force_fit_type. ! 5956: ! 5957: * expr.c (emit_push_insn): When pushing only part of scalar on stack, ! 5958: adjust stack offset not to count the words not pushed. ! 5959: ! 5960: * stmt.c (expand_function_end): Always put return structure address ! 5961: in return register. ! 5962: ! 5963: * c-typeck.c (process_init_constructor): Assume 0 for nameless field. ! 5964: ! 5965: * recog.c (general_operand, memory_operand): ! 5966: Check validity of mem address using the mode of the MEM. ! 5967: ! 5968: * fixincludes: When calling egrep, use redirect, not -s. ! 5969: ! 5970: Tue Jul 18 11:18:55 1989 Richard M. Stallman (rms at mipos3) ! 5971: ! 5972: * Makefile (bootstrap*): Pass value of libdir down. ! 5973: ! 5974: * cse.c (cse_insn): Do canon_reg on any CLOBBERs and USEs. ! 5975: ! 5976: * cse.c (cse_insn): Don't use no_labels_between_p to check ! 5977: for jump to following label; find following label and compare. ! 5978: ! 5979: * combine.c (try_combine): Don't substitute into subreg(x)=y ! 5980: if modes of x and y are not tieable. ! 5981: ! 5982: * out-i386.c (call_top_dead_p): Don't fail to check ! 5983: the rtx code of the insns themselves. ! 5984: ! 5985: * i386.md (tstsf, tstdf): Don't discard TOS if not dead. ! 5986: ! 5987: * stupid.c: Don't use regs with PRESERVE_DEATH_INFO_REGNO_P ! 5988: for pseudos which live across jumps or labels. ! 5989: (stupid_life_analysis): Update last_jump_suid, last_label_suid. ! 5990: (stupid_mark_refs): Use those to set reg_crosses_blocks. ! 5991: (stupid_find_reg): Check that data, passed from stupid_life_analysis. ! 5992: ! 5993: * toplev.c (main): Avoid using caddr_t. ! 5994: ! 5995: * mips.md (inverted bgeu peephole): Typo in opcode. ! 5996: ! 5997: Mon Jul 17 12:29:45 1989 Richard M. Stallman (rms at mipos3) ! 5998: ! 5999: * i386.md (mulb patterns): Turned off due to assembler bug. ! 6000: ! 6001: * rtl.c (read_name): Use 0, not NULL, for character. ! 6002: ! 6003: * alliant.md (movqi): Typos in mov opcodes. ! 6004: ! 6005: * tm-sparc.h, tm-spur.h (CONST_DOUBLE_OK_FOR_LETTER_P): ! 6006: Use CONST_DOUBLE_LOW, etc. ! 6007: ! 6008: * stmt.c (expand_function_end): Check value of EXIT_IGNORE_STACK, ! 6009: not just whether defined. ! 6010: ! 6011: * i386.md (seq, etc.): New patterns. ! 6012: * expr.c (do_store_flags): If result is wrong mode, ! 6013: ensure rest of bits are cleared. ! 6014: Before storing low part of TARGET, emit a CLOBBER for it. ! 6015: ! 6016: * i386.md (load address): Use an immediate add if possible. ! 6017: ! 6018: * i386.md (ashlsi3): Don't generate leal; shift is faster. ! 6019: ! 6020: * Now struct_value_rtx is 0 to treat it as a parm. ! 6021: * expr.c (expand_call): Implement that. ! 6022: * integrate.c (expand_inline_function): Don't freak out. ! 6023: * tm-apollo68.h (STRUCT_VALUE): Make it 0. ! 6024: ! 6025: * On 386, called function must pop the structure value address. ! 6026: * tm-i386.h (STRUCT_VALUE): Don't change this. ! 6027: Address is now pushed but not counted as a parm. ! 6028: * out-i386.c (function_epilogue): Use ret $4 to pop that address. ! 6029: * output.h: Declare the current_function_... variables. ! 6030: * final.c: Include output.h. ! 6031: ! 6032: * varasm.c (make_decl_rtl): Insert missing `else', validating reg decl. ! 6033: ! 6034: Fri Jul 14 14:12:17 1989 Richard M. Stallman (rms at mipos3) ! 6035: ! 6036: * out-sparc.c, out-spur.c (output_move_double): ! 6037: Fixed typo, addreg0 => addreg1. ! 6038: ! 6039: * c-decl.c (lang_decode_option): Handle -fshort-enums. ! 6040: (finish_enum): In that case, give enum minimum number of bytes. ! 6041: * toplev.c (main): Default flag_short_enums. ! 6042: * toplev.c, flags.h (flag_short_enums, flag_signed_char): ! 6043: Define those flags here, not in c-decl.c and c-tree.h. ! 6044: ! 6045: * i386.md (mulqi3, umulqi3): New patterns. ! 6046: ! 6047: * c-convert.c (convert_to_integer): Tighter restrictions on ! 6048: distributing truncation through max, min, and multiplication. ! 6049: If operands were extended from unsigned, make the operation ! 6050: unsigned. ! 6051: ! 6052: * cccp.c (main): Fix bug where #include <...>, when -I- was used, ! 6053: failed to search standard dirs and/or searched some dirs ! 6054: intended only for #include "...". ! 6055: ! 6056: * tm-mips.h (FUNCTION_PROLOGUE,FUNCTION_EPILOGUE): ! 6057: Increment push_loc after store or load, not before. ! 6058: ! 6059: Thu Jul 13 11:24:30 1989 Richard M. Stallman (rms at mipos3) ! 6060: ! 6061: * emit-rtl.c (add_insn_after): Don't update last_insn ! 6062: if insn is in a sequence. Instead, update end of sequence. ! 6063: ! 6064: * stmt.c (fixup_var_refs): Update end of stacked sequence. ! 6065: ! 6066: * stmt.c (expand_function_start): Set result rtl before assign_parms. ! 6067: ! 6068: * optabs.c (emit_unop_insn): Set PREV_INSN after preliminaries. ! 6069: ! 6070: * stmt.c (warn_if_unused_value): Do CONVERT_EXPR like NOP_EXPR. ! 6071: ! 6072: * stmt.c (expand_function_start): Make sure parm_birth_insn ! 6073: is a NOTE. ! 6074: ! 6075: * Makefile (clean): Delete tmp-insn-*. ! 6076: ! 6077: Wed Jul 12 14:24:12 1989 Richard M. Stallman (rms at mipos3) ! 6078: ! 6079: * i386.md (mulqi3): Restrict operand 2 to `q' reg. ! 6080: ! 6081: * reload1.c (choose_reload_regs): Check HARD_REGNO_MODE_OK ! 6082: for regs to be inherited. ! 6083: Also check HARD_REGNO_MODE_OK at end for modes of both ! 6084: reload_in and reload_out as well as reload_mode. ! 6085: ! 6086: * Makefile (maketest): Update for config subdir. ! 6087: ! 6088: Tue Jul 11 16:29:57 1989 Richard M. Stallman (rms at mipos3) ! 6089: ! 6090: * integrate.c (copy_decl_tree): Copy TREE_USED of each LET_STMT. ! 6091: ! 6092: * make-cc1.com: Changes by Angel Li. ! 6093: Define variables CC, CFLAGS, LDFLAGS, LIBS. ! 6094: Use LIBR library, not LIB. Specify a /INC in CFLAGS. ! 6095: Use MCR to run the gen* files. Add some comments. ! 6096: * make-cccp.com: Similar. ! 6097: * config-gcc.com: New file. ! 6098: ! 6099: * stmt.c (assign_parms): Compute parm alignment from passed type. ! 6100: ! 6101: * c-typeck.c (actualparameterlist): Instead of truncating ! 6102: and then promoting for PROMOTE_PROTOTYPES, go straight to int. ! 6103: ! 6104: * c-parse.y (setspecs): Save old current_declspecs on a stack. ! 6105: (decl, component_decl): Restore from that stack. ! 6106: ! 6107: Wed Jul 5 15:01:00 1989 Richard Stallman (tiemann at yahi) ! 6108: ! 6109: * tm-aix386.h, xm-aix386.h: New files. ! 6110: ! 6111: * loop.c (check_dbra_loop): Handle either test or compare ! 6112: for insn two before loop end; detect and reject anything else. ! 6113: ! 6114: * expr.c (expand_call, expand_builtin): If alloca is done, ! 6115: set current_function_calls_alloca. ! 6116: * stmt.c (expand_function_end): If so, generate code to save and ! 6117: restore the stack pointer, if not EXIT_IGNORE_STACK. ! 6118: ! 6119: * ns32k.md (movsi): Fixes for moving from fp or sp. ! 6120: ! 6121: * tm-mips.h (ASM_OUTPUT_ASCII): Start new .ascii every 256 chars. ! 6122: ! 6123: Tue Jul 4 11:01:00 1989 Richard Stallman (tiemann at yahi) ! 6124: ! 6125: * reload1.c (choose_reload_targets): Don't depend on ! 6126: reload_spill_index when cancelling invalid inheritance. ! 6127: Also, abort if trying to preserve death info ! 6128: on a spill reg used in operand addressing. ! 6129: ! 6130: * fold-const.c (fold): Don't fold "foo"[n] here. ! 6131: * expr.c (expand_expr): Do it here. ! 6132: Handle wide strings correctly. ! 6133: ! 6134: * i386.md (movsf,movdf): Disallow mem-mem moves. ! 6135: Enable mem-to-reg moves. ! 6136: ! 6137: * c-decl.c (finish_{struct,enum}): Warn if inside parm decls. ! 6138: (in_parm_level_p, declare_parm_level): Record when inside. ! 6139: * c-parse.y (parmlist, parmlist_or_identifiers): Call ! 6140: declare_parm_level. ! 6141: ! 6142: * c-decl.c (parmlist_tags_warning): Revise warning message text. ! 6143: ! 6144: * tm-hp9k320.h (ASM_SPEC): Pass -V switch to assembler. ! 6145: ! 6146: * tm-sun386.h (ASM_START_FILE): Truncate filename to 14 chars. ! 6147: ! 6148: * c-typeck.c (decl_constant_value): Use only literal values. ! 6149: ! 6150: Sat Jul 1 17:29:54 1989 Richard Stallman (tiemann at yahi) ! 6151: ! 6152: * integrate.c (copy_rtx_and_substitute): Don't make nested SUBREGs. ! 6153: ! 6154: * stmt.c (expand_function_start): Set new global ! 6155: current_function_returns_pointer. ! 6156: ! 6157: * stmt.c (get_frame_size): Return the size, not the offset. ! 6158: * integrate.c (expand_inline_function): When setting FP_DELTA, ! 6159: compensate for this change. ! 6160: * tm-alliant.h,tm-mips.h,tm-sparc.h,tm-tahoe.h ! 6161: (FUNCTION_PROLOGUE,FUNCTION_EPILOGUE): Compensate. ! 6162: ! 6163: * out-mips.c (function_arg): Return 0 for BLKmode. ! 6164: ! 6165: * tm-mips.h (FUNCTION_INCOMING_ARG): Delete; no register windows. ! 6166: * out-mips.c (function_inarg): Delete; no longer used. ! 6167: ! 6168: * mips.md (addsi3): Use register_operand for operands 0,1. ! 6169: (load address): New pattern, following movsi. ! 6170: (fix_trunc*): Use trunc insn, not cvt. ! 6171: (cmpfs + bgt peephole): Operands were backwards in template. ! 6172: ! 6173: * gcc.c (main): Record in explicit_link_files which input files go ! 6174: straight to linker. If linker is not run, complain about them. ! 6175: (execute): Increment execution_count, to show we were called. ! 6176: ! 6177: * gcc.c (validate_all_switches): Check ASM_SPEC, CC1_SPEC, etc., ! 6178: so we find all switches that could be valid. ! 6179: ! 6180: * varasm.c (output_constructor): Position fields according to ! 6181: DECL_OFFSET; don't try to compute alignment here. ! 6182: ! 6183: * tm-sparc.h (PCC_BITFIELD_TYPE_MATTERS): Define this. ! 6184: ! 6185: * reload1.c (emit_reload_insns): Fix stupid error in last change. ! 6186: ! 6187: * c-decl.c (duplicate_decls): If redeclaring builtin, give error is ! 6188: type mismatched; otherwise warn only if -W. ! 6189: ! 6190: * jump.c (jump_back_p): Verify that PREV is not null. ! 6191: ! 6192: Mon Jun 26 13:50:28 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6193: ! 6194: * reload1.c (choose_reload_regs): If number of reloads needing ! 6195: spill regs exceeds n_spills, don't inherit any reloads. ! 6196: ! 6197: * sdbout.c (sdbout_record_type_name): Dumb error in last change. ! 6198: ! 6199: * reload1.c (emit_reload_insns): Extend last change: don't use ! 6200: equiv reg if reg is in use at same stage of insn, either. ! 6201: ! 6202: Sun Jun 25 00:00:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6203: ! 6204: * reload1.c (emit_reload_insns): Don't use an equivalent register ! 6205: to reload from, if that register was used for reloading ! 6206: earlier in this insn. ! 6207: ! 6208: * sdbout.c (sdbout_record_type_name): Handle a TYPE_DECL as the ! 6209: type name. Get rid of TYPE_TAG_NAME as separate macro. ! 6210: ! 6211: * optabs.c (emit_cmp_insn): Args to memcmp are addresses, not blocks. ! 6212: ! 6213: * reload1.c (choose_reload_regs): Typo, clearing reload_override_in. ! 6214: ! 6215: * tm-i386.h: Add register classes SIREG and DIREG. ! 6216: (enum reg_class, REG_CLASS_NAMES): Define class names. ! 6217: (REGNO_REG_CLASS, REG_CLASS_CONTENTS): Define their contents. ! 6218: (REG_CLASS_FROM_LETTER): Define letters `S' and `D'. ! 6219: ! 6220: Sat Jun 24 00:17:16 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6221: ! 6222: * c-decl.c (keep_next_level): New function. ! 6223: (struct binding): New slot `keep' says make a LET_STMT for this level. ! 6224: (pushlevel, poplevel): Implement that. ! 6225: * c-parse.y (stmt exprs): Call keep_next_level. ! 6226: ! 6227: * sdbout.c (plain_type_1): Handle REFERENCE_TYPE, METHOD_TYPE. ! 6228: Correct for size less than 0. ! 6229: (plain_type): Correct for size less than 0. ! 6230: ! 6231: * global-alloc.c (mark_reg_set): For CLOBBERs, call mark_reg_clobber. ! 6232: ! 6233: * reload1.c (order_regs_for_reload): Among regs explicitly used, ! 6234: prefer those used less often. ! 6235: ! 6236: * reload1.c (choose_reload_regs): If we find alternate place ! 6237: to reload from, verify it after all reloads assigned. ! 6238: New variable reload_override_in used for this. ! 6239: ! 6240: * combine.c (record_dead_and_set_regs): Look inside SIGN_EXTEND and ! 6241: STRICT_LOW_PART for place being set. ! 6242: (subst): When using reg_last_set to find what a register contains, ! 6243: verify the entire register was set. ! 6244: ! 6245: * toplev.c (rest_of_decl_compilation): Report invalid register name. ! 6246: ! 6247: Fri Jun 23 13:19:41 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6248: ! 6249: * tm-hp9k3bsd.h: New file. ! 6250: * config.gcc: New target hp9k320-bsd. ! 6251: ! 6252: * gcc.c (record_temp_file): Don't add a name twice to one queue. ! 6253: ! 6254: * stmt.c (expand_expr_stmt): Call warn_if_unused_value. ! 6255: (warn_if_unused_value): Code extracted from expand_expr_stmt. ! 6256: Recurse to handle COMPOUND_EXPR. Don't warn about COND_EXPR. ! 6257: ! 6258: * tm-encore.h (DBX_REGISTER_NUMBER): Override tm-ns32k.h; ! 6259: return operand unchanged. ! 6260: ! 6261: * reload1.c (emit_reload_insns): Don't use recog_memoized ! 6262: on an asm. ! 6263: ! 6264: * jump.c (delete_insn): Update last_insn. ! 6265: * emit-rtl.c (set_last_insn): New function. ! 6266: ! 6267: * reload1.c (reload): Put a note at end of insn chain. ! 6268: ! 6269: * gcc.c: Put cpp output of .S file into a .s file. ! 6270: ! 6271: Thu Jun 22 22:14:35 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6272: ! 6273: * optabs.c (expand_binop, expand_unop): Emit queue before library call. ! 6274: It is done within emit_library_call, and cse screws up if there is a ! 6275: queued insn in the middle of a cse-able sequence. ! 6276: ! 6277: Wed Jun 21 11:57:22 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6278: ! 6279: * tm-mips.h (CPP_PREDEFINES): Define -Dunix. ! 6280: ! 6281: * reload.c (combine_reloads): Combined reload needed for entire insn. ! 6282: ! 6283: * c-parse.y (yylex): Braino checking for out-of-range escape seq. ! 6284: ! 6285: * stor-layout.c (layout_union): Handle PCC_BITFIELD_TYPE_MATTERS. ! 6286: (layout_struct): Don't let a bitfield cross the storage unit ! 6287: of its type, if PCC_BITFIELD_TYPE_MATTERS. ! 6288: ! 6289: Tue Jun 20 00:03:48 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6290: ! 6291: * varasm.c (get_or_assign_label): Let CONSTANT_ALIGNMENT specify ! 6292: alignment of the constant. ! 6293: CONSTANT_ALIGNMENT is a new optional macro. ! 6294: ! 6295: * varasm.c (force_const_mem, get_or_assign_label): ! 6296: Make buffer bigger. ! 6297: ! 6298: * toplev.c (print_target_switch_defaults): New fn called for -version. ! 6299: ! 6300: * toplev.c (compile_file): Detect error closing output file. ! 6301: ! 6302: * stor-layout.c (fixup_unsigned_type): Don't shift by 32. ! 6303: ! 6304: * stmt.c (emit_case_nodes): Pass UNSIGNEDP along to emit_cmp_insn. ! 6305: ! 6306: * stmt.c (expand_end_case): If index is narrow and cannot be ! 6307: directly compared, widen it just once. ! 6308: ! 6309: * c-parse.y (yylex): Support multi-character constants. ! 6310: Thorough rewrite of char constant parsing. ! 6311: ! 6312: * c-decl.c (pushdecl): Replace local extern function decl with ! 6313: previous global decl if latter is inline, or builtin, or has ! 6314: more arg type info. ! 6315: ! 6316: * hard-params.c (xmalloc): Define it, for alloca.c. ! 6317: ! 6318: * tm-hp9k320.h (STANDARD_STARTFILE_PREFIX): Override -D in Makefile. ! 6319: ! 6320: * expmed.c (store_fixed_bit_field): Avoid shift by 32. ! 6321: ! 6322: * stmt.c (expand_function_start): Emit a NOTE_INSN_FUNCTION_BEG. ! 6323: * final.c (final_scan_insn): For SDB output, do the ! 6324: sdbout_begin_function at that note. ! 6325: ! 6326: * reload1.c (choose_reload_regs): If a reload reg inherits ! 6327: from a previous reload, verify safety after all reloads are assigned. ! 6328: ! 6329: * c-decl.c (build_enumerator): Remove no-op casts. ! 6330: ! 6331: * reload.c (find_reloads): If an earlyclobber operand matches ! 6332: an input operand it is constrained to match, that's not a problem. ! 6333: If an earlyclobber operand loses due to earlyclobber, its matching ! 6334: input operand also loses. ! 6335: ! 6336: * reload1.c (choose_reload_regs): Don't use result of find_equiv_reg ! 6337: if that reg is used for reloading in an earlier part of the insn. ! 6338: ! 6339: * cse.c (fold_rtx): If WIDTH is 0, don't try sign-extending ARG0, ARG1. ! 6340: ! 6341: * Makefile (hard-params*): Use $(OLDCC). ! 6342: ! 6343: * c-typeck.c (c_alignof): No warning for -pedantic. ! 6344: ! 6345: * c-parse.y (readescape): Don't have both error and warning ! 6346: on one hex escape. ! 6347: ! 6348: * c-parse.y (yylex): Treat vertical tab as white space. ! 6349: (skip_white_space): Likewise. ! 6350: ! 6351: * c-parse.y (datadef): If pedantic, warn for stray semicolon. ! 6352: ! 6353: * expr.c (expand_increment): Pass accurate unsignedp arg ! 6354: to expand_binary_op. ! 6355: ! 6356: Mon Jun 19 13:36:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6357: ! 6358: * config.gcc (news, news-gas): Use xm-m68k.h. ! 6359: ! 6360: * final.c (output_asm_label, output_addr_const): Make buf bigger. ! 6361: ! 6362: * cexp.y (main): Handle EOF on input. ! 6363: (lookup, warning): Provide as a dummy. ! 6364: (is_idchar, is_idstart): Declare as unsigned char. ! 6365: ! 6366: * cexp.y (parse_escape): Use TARGET_NEWLINE, etc., as values. ! 6367: Support hex escapes. Warn if octal or hex escape doesn't fit in char. ! 6368: ! 6369: * cexp.y (yylex): Sign-extend char constants if appropriate. ! 6370: ! 6371: * genemit.c: Make insn-emit.c include insn-flags.h. ! 6372: ! 6373: * gcc.c: Move record_temp_file past page which declares vflag. ! 6374: ! 6375: * integrate.c (expand_inline_function): If copying an insn with ! 6376: a REG_EQUIV note, make a similar note. ! 6377: ! 6378: * Allow reload regs to be reused for parts of an insn. ! 6379: * reload.c (find_reloads): Classify each reload for which part ! 6380: of the insn it is needed in. ! 6381: (find_reloads_address, etc.): Pass down the overall operand ! 6382: that this is part of, to record it on address reloads. ! 6383: (push_reload): Record that for each reload. ! 6384: * reload1.c (reload): Compute maximum needs of any part of the insn. ! 6385: (choose_reload_regs): Part of old choose_reload_targets. ! 6386: Hairier criteria for inheriting reloads and for which ones are ! 6387: available for the next insn to inherit. ! 6388: (emit_reload_insns): The rest of old choose_reload_targets. ! 6389: Emit reload insns in proper order according to where they are needed. ! 6390: * Record `reload_reg_in_use' separately for each part of the insn. ! 6391: (mark_reload_reg_in_use): New function. ! 6392: (reload_reg_free_p, reload_reg_free_before_p): New functions. ! 6393: (reload_reg_reaches_end_p): New function. ! 6394: ! 6395: * expr.c (expand_expr): Emit queue in X+=(Y?Z:A) optimization. ! 6396: ! 6397: * rtlanal.c (rtx_equal_p): Check vectors have same length. ! 6398: ! 6399: Sun Jun 18 12:16:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6400: ! 6401: * stmt.c (expand_expr_stmt): Maybe warn if top-level operator ! 6402: makes an unused result. ! 6403: ! 6404: * gcc.c (delete_temp_files, delete_failure_queue): ! 6405: If -v, report failures in unlink. ! 6406: ! 6407: * Makefile (includes): New target to run fixincludes. ! 6408: (install): Swap arms of if-statement. ! 6409: ! 6410: Sat Jun 17 12:41:53 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6411: ! 6412: * stor-layout.c (layout_union): Arg to error_with_decl was missing. ! 6413: ! 6414: * ns32k.md (movsf): Use CONST_DOUBLE_LOW to extract from CONST_DOUBLE. ! 6415: ! 6416: * loop.c (consec_sets_giv): Change type of force, force2. ! 6417: ! 6418: * combine.c (dump*): Declare arg as FILE*. ! 6419: ! 6420: * Makefile (clean): Delete hard-params. ! 6421: ! 6422: * flow.c (life_analysis): Use a special obstack for the temporary ! 6423: regsets. ! 6424: ! 6425: * m68k.md (clr pattern): On 68000, use moveq to clear data reg. ! 6426: ! 6427: * gvarargs.h: File varargs.h renamed. ! 6428: The old name conflicted with <varargs.h>, now that -I. is used. ! 6429: * tree.c, expr.c, emit-rtl.c: Change #include commands. ! 6430: * Makefile (install): Install gvarargs.h under name varargs.h. ! 6431: * gcc.c: Include gvarargs.h, not system's varargs.h. ! 6432: ! 6433: * Makefile: Use -I$(srcdir) before -I$(srcdir)/config. ! 6434: * config/tm.h: Deleted; didn't work if config was a symlink. ! 6435: ! 6436: * cse.c (cse_insn): Record location of inner_dest ! 6437: so it can be replaced properly if a new MEM rtx is made. ! 6438: ! 6439: Fri Jun 16 14:17:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6440: ! 6441: * make-cc1.com: Compile and link rtlanal.c. ! 6442: ! 6443: * c-typeck.c (build_array_ref): Call fold on the array ref. ! 6444: * fold-const.c (fold): Simplify array ref of string constant. ! 6445: ! 6446: * stmt.c (expand_asm_operands): Fix error message. ! 6447: ! 6448: * Makefile (gnulib2): Remove old members before compiling new. ! 6449: Fix stupid errors. ! 6450: * gnulib2.c (__cmpdi2, __ucmpdi2): Typos in names of interface unions. ! 6451: ! 6452: * genconfig.c (main): Don't write MAX_CLOBBERS_PER_INSN; obsolete. ! 6453: Add 3 to MAX_RECOG_OPERANDS. ! 6454: ! 6455: * cse.c (fold_cc0): Extra arg specifies machine mode. ! 6456: Callers changed. ! 6457: (cse_insn): Record original mode of each src for this purpose. ! 6458: ! 6459: Thu Jun 15 12:35:18 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6460: ! 6461: * gnulib2.c (_cmpdi2, _ucmpdi2): Moved here from gnulib.c. ! 6462: Use long long for argument type. ! 6463: ! 6464: * rtlanal.c (may_trap_p): Moved here from loop.c. ! 6465: Return 1 for division by explicit zero. ! 6466: ! 6467: * reload1.c (eliminate_frame_pointer, alter_frame_pointer_addresses): ! 6468: Rerecognize insns which are changed by this. ! 6469: ! 6470: * i386.md (call_value): Don't return prematurely. ! 6471: ! 6472: * alliant.md (movqi): Handle moving Aregs to mem and vice versa. ! 6473: (bftst -> btst): Restrict to bitpos less than 8 ! 6474: so operand may be non-offsettable. ! 6475: (nop): New pattern. ! 6476: (return): Was disabled; now deleted. ! 6477: * tm-alliant.h (PRINT_OPERAND_PUNCT_VALID_P): Define it. ! 6478: * out-alliant.c (output_btst): Same change as in out-m68k.c ! 6479: ! 6480: * alliant.md, out-alliant.c: Offsetable -> offsettable. ! 6481: ! 6482: * c-parse.y (rule for stmt_exprs): Make the LET_STMT volatile. ! 6483: ! 6484: * c-decl.c (duplicate_decls): Don't save inline function data ! 6485: from previous definition if a new *definition* is seen. ! 6486: ! 6487: * integrate.c (access_parm_map): Handle subregs and constants. ! 6488: ! 6489: * stmt.c (expand_return): Don't crash if DECL_RTL (DECL_RESULT()) is 0. ! 6490: ! 6491: * tm-tahoe.h (LONGJMP_RESTORE_FROM_STACK): Define it. ! 6492: ! 6493: * tm-mips.h (CONSTANT_P): Deleted; duplicates rtl.h. ! 6494: ! 6495: Fri Jun 9 01:39:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6496: ! 6497: * Makefile (float.h): Avoid using $(MAKE). ! 6498: ! 6499: * Don't cram two things into STMT_BODY of a LET_STMT. ! 6500: * tree.h (struct bind_stmt): New field, subblocks. ! 6501: (STMT_SUBBLOCKS): New macro to access it. ! 6502: * print-tree.c (walk): Print new field. ! 6503: * tree.c (build_let_stmt): Store the old BODY arg into subblocks field. ! 6504: * c-parse.y (stmt expr rule): Put rtl expr alone into body field. ! 6505: * dbxout.c (dbxout_block): Recurse on subblocks, not body. ! 6506: * sdbout.c, symout.c: Likewise. ! 6507: * integrate.c (copy_decl_tree): Likewise. ! 6508: * stmt.c (setjmp_protect, uninitialized_vars_warning): Likewise. ! 6509: * expr.c (expand_expr): For LET_STMT, simply use its body. ! 6510: ! 6511: * machmode.def: Add sixth arg to each entry. ! 6512: * tree.h, rtl.h, rtl.c: Add arg to DEF_MACHMODE. ! 6513: * rtl.h (GET_WIDER_MODE): New macro; table in rtl.c. ! 6514: * expr.c (expand_expr): Use that for widening multiply. ! 6515: ! 6516: * stmt.c (fixup_var_refs_1): When converting MEM to QImode for ! 6517: bit field, adjust the address if possible to make bitpos ! 6518: less than 8. ! 6519: * m68k.md (bftst -> btst): Restrict to bitpos less than 8 ! 6520: so operand may be non-offsettable. ! 6521: ! 6522: * cccp.c (do_line): Accept and pass on 3rd arg for enter or leave file. ! 6523: ! 6524: * out-m68k.c (output_btst): Handle COUNT bigger than size of unit. ! 6525: ! 6526: * cccp.c (CHECK_DEPTH): Macro to detect instack overflow. ! 6527: (finclude, macroexpand, expand_to_temp_buffer): Use that. ! 6528: ! 6529: * cccp.c (rescan): Don't check for disabled macro if traditional. ! 6530: (macroexpand): Don't disable macro if traditional. ! 6531: ! 6532: * sdbout.c (sdbout_one_type): Take out last change; assembler barfs. ! 6533: ! 6534: * c-parse.y (maybe_attribute): Eliminate #-syntaxes. ! 6535: Make ATTRIBUTE the name for __attribute. ! 6536: ! 6537: * c-parse.gperf: Add __attribute{,__} and __signed{,__}. ! 6538: * c-parse.y: Install results of that change. ! 6539: ! 6540: * Fix bug in sizeof ({...}). ! 6541: * c-decl.c (poplevel): Set TREE_USED. Return the LET_STMT. ! 6542: * c-parse.y (stmt-expr rule): Put the RTL_EXPR in the LET_STMT, ! 6543: clear its TREE_USED, and use it as the result. ! 6544: * expr.c (expand_expr): Allow LET_STMT as an expr. ! 6545: Set its TREE_USED and expand the TREE_VALUE of its body. ! 6546: * dbxout.c (dbxout_block): Ignore LET_STMT if TREE_USED not set. ! 6547: * sdbout.c, symout.c: Likewise. ! 6548: ! 6549: Thu Jun 8 00:06:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6550: ! 6551: * c-parse.y (yylex): Extend ERANGE-inhibitor for 0.0 ! 6552: to 0.0e0 as well. ! 6553: ! 6554: * flow.c (life_analysis): Prevent allocation of regs live at setjmp ! 6555: on certain machines. Controlled by LONGJMP_RESTORE_FROM_STACK. ! 6556: Sets reg_live_length to -1. ! 6557: * local-alloc.c (block_alloc): Be prepared for that. ! 6558: * tm-vax.h (LONGJMP_RESTORE_FROM_STACK): Define it. ! 6559: ! 6560: * gnulib2.c (all interfaces): Declare args and values as long long, ! 6561: and split them using unions. ! 6562: ! 6563: * loop.c (check_dbra_loop): Don't reverse loop if there are two ! 6564: refs to varying addresses. Consider foo[i] = foo[i-1]. ! 6565: (count_nonfixed_refs): Subroutine to count them. ! 6566: ! 6567: * cexp.y: Distinguish signed and unsigned. ! 6568: An integer value is now represented by a struct. ! 6569: All rules for arithmetic changed. ! 6570: (yylex): Adapt to change in yylval data type. ! 6571: ! 6572: * limits.h (LONG_MIN): Make sure it's a signed long. ! 6573: ! 6574: * sdbout.c (sdbout_one_type): Output types of fields first, ! 6575: if they are structs. Don't go through pointers. ! 6576: (sdbout_field_types): Subroutine for that ! 6577: ! 6578: Wed Jun 7 13:00:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6579: ! 6580: * fixincludes: Switch to /usr/include before doing vuid_event.h. ! 6581: Use $2 as output directory for sed. ! 6582: ! 6583: * tm-i386.h (FUNCTION_PROFILER): Put counter address in %edx. ! 6584: * tm-i386v.h (LIB_SPEC): Use -L/usr/lib/libp if profiling. ! 6585: ! 6586: * expr.c (expand_increment): Typo testing for BImode component. ! 6587: ! 6588: * convex changes from csmith: ! 6589: * tm-convex.h: use EXTRA_SECTIONS to do .bss. ! 6590: out-convex.c: set_section, align_section are now unused. ! 6591: * convex.md: add pattern to pick an A-reg destination for sums ! 6592: whose source involves a dedicated A reg (frame or arg pointer) ! 6593: * convex.md: immediate and, or, xor instructions store a 32-bit ! 6594: result. Fix instructions that assumed it was 64. ! 6595: ! 6596: * mips.md (probe): New pattern to create stack space. ! 6597: ! 6598: * Makefile (float.h): Ignore errors from hard-params. ! 6599: Specify ./ to run it. ! 6600: ! 6601: Tue Jun 6 15:45:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6602: ! 6603: * out-tahoe.c: Rename `offsetable' to `offsettable'. ! 6604: ! 6605: * tahoe.md (nop): New pattern. ! 6606: ! 6607: * i386.md (umul...): Constrain operand 1 as `0', not `a'. ! 6608: `a' sometimes wanted two a-regs for operands 0 and 1. ! 6609: ! 6610: * cccp.c: Forward-declare some structs. ! 6611: ! 6612: * c-decl.c: Rearrange fcn fwd decls and struct decls. ! 6613: ! 6614: * expr.c: Move some fcn fwd decls after structs their args use. ! 6615: * genpeep.c, genextract.c: Likewise. ! 6616: ! 6617: * loop.c: Forward-declare some structs. ! 6618: ! 6619: * stmt.c: Move decls of structs before those of static functions. ! 6620: ! 6621: * loop.c (strength_reduce): Delete extra arg to check_eliminate_biv. ! 6622: ! 6623: * integrate.c (expand_inline_function): Supply missing arg ! 6624: to convert_to_mode. ! 6625: ! 6626: * gcc.c (handle_braces): Supply missing arg to do_spec_1. ! 6627: ! 6628: * explow.c (lookup_static_chain): Accept a context arg. ! 6629: ! 6630: * expmed.c (store_split_bit_field): Pass ALIGN arg ! 6631: to extract_fixed_bit_field. ! 6632: ! 6633: * expr.c (expand_assignment): Convert TYPE_ALIGN to bytes. ! 6634: (store_constructor, expand_expr): Likewise. ! 6635: ! 6636: * tm-m68k.h: NO_ADDSUB_Q conditionals turn off all addq, subq insns. ! 6637: (Fully supported only with MOTOROLA and HPUX_ASM flags.) ! 6638: ! 6639: * jump.c (do_cross_jump): Don't die if LABEL is 0. ! 6640: ! 6641: * tm-mips.h (PRINT_OPERAND_PUNCT_VALID_P): New macro. ! 6642: * tm-iris.h: New file. Unsplit lines accidentally split. ! 6643: ! 6644: Mon Jun 5 15:39:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6645: ! 6646: * integrate.c (output_inline_function): Call init_function_start, ! 6647: not expand_function_start. ! 6648: * emit-rtl.c (restore_reg_data): No need to init reg_rtx_no. ! 6649: ! 6650: * stmt.c (init_function_start): Set current_function_returns_struct. ! 6651: ! 6652: * rtlanal.c (reg_set_between_p): New fn analogous to reg_used_between_p ! 6653: * loop.c (strength_reduce): Reject biv initial value which is altered ! 6654: subsequently before actual loop start. ! 6655: ! 6656: * rtlanal.c: New file split out from rtl.c. ! 6657: Has things not used in the gen files. ! 6658: ! 6659: * loop.c (strength_reduce): Reject biv initial value in a hard reg ! 6660: clobbered by an intervening function call. ! 6661: ! 6662: * tree.c (get_identifier): New flag needed to enable id-clash warnings. ! 6663: (start_identifier_warnings): Set that flag. ! 6664: * c-decl.c (init_decl_processing): Call that, after making built-ins. ! 6665: ! 6666: Sat Jun 3 14:41:34 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6667: ! 6668: * final.c (final_scan_insn): No basic block profiling at jump tables. ! 6669: ! 6670: * stmt.c (expand_decl): Probe the stack to make pages exist. ! 6671: * expr.c (expand_builtin): Likewise, for alloca. ! 6672: ! 6673: * move-if-change: Specify /bin/sh. ! 6674: ! 6675: * tm-ns32k.h (INDIRECTABLE_2_ADDRESS_P): Don't accept PLUS ! 6676: with constant operands but not inside CONST. ! 6677: ! 6678: * integrate.c (output_inline_function, save_for_inline): ! 6679: Save stack_slot_list, and restore it for actual output. ! 6680: * emit-rtl.c (gen_inline_header_rtx): New arg for this. ! 6681: ! 6682: * emit-rtl.c (restore_reg_data): Initialize reg_rtx_no. ! 6683: (restore_reg_data_1): Handle reg_rtx_no jumping past ! 6684: reg_pointer_flag_length. ! 6685: ! 6686: * reload1.c (alter_reg): Do nothing if regno_reg_rtx has 0. ! 6687: ! 6688: * integrate.c (copy_rtx_and_substitute): Typos for stack parm ! 6689: addresses in PLUS case. ! 6690: ! 6691: * genoutput.c (gen_insn, gen_peephole): Make output_n fns static. ! 6692: (output_prologue): Use new macro DEFAULT_MACHINE_INFO if defined. ! 6693: ! 6694: * tree.h (enum machine_mode): Define MAX_MACHINE_MODE as in rtl.h. ! 6695: ! 6696: Fri Jun 2 15:40:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6697: ! 6698: * cccp.c (do_include): A file included via a system header file ! 6699: counts as a system header file for -M. ! 6700: ! 6701: * gnulib2.c: Support boolean ops and shifts. ! 6702: ! 6703: * loop.c (emit_iv_inc): Use emit_iv_init_code. ! 6704: ! 6705: * rtl.h (CONST0_RTX): Don't try to cast abort. ! 6706: ! 6707: * tm-news.h (PRINT_OPERAND_ADDRESS): Fix typo `reg_name'. ! 6708: Delete two garbage lines. ! 6709: ! 6710: * loop.c (eliminate_biv): Use emit_iv_init_code to compute comparison ! 6711: value. If value is constant, recognize the insn, and if that fails, ! 6712: put the value in a register. ! 6713: ! 6714: Thu Jun 1 16:56:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6715: ! 6716: * print-tree.c (dump): Don't die if rtx components are null. ! 6717: ! 6718: * expmed.c (expand_mult_add): New fn to do A * X + B. ! 6719: (make_tree): New subroutine. ! 6720: * loop.c (emit_iv_init_code): Use that. Much simpler now. ! 6721: ! 6722: Tue May 30 17:20:40 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6723: ! 6724: * fold-const.c (fold): Use TREE_SET_CODE to store in tree codes. ! 6725: ! 6726: * tree.h (struct tree_common): Make `code' an unsigned int. ! 6727: (TREE_CODE, TREE_SET_CODE): Put in casts. ! 6728: ! 6729: * optabs.c (emit_cmp_insn): Supply all the args in recursive calls. ! 6730: ! 6731: * toplev.c (report_error_function): Fix typo; METHOD_TYPE missing. ! 6732: ! 6733: * fixincludes: Add code to make internal non-directory links. ! 6734: ! 6735: Mon May 29 21:36:28 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6736: ! 6737: * gcc.c (find_exec_file): Try both with and without machine_suffix. ! 6738: (find_file): Use machine_suffix here too. ! 6739: ! 6740: Sat May 27 00:02:26 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6741: ! 6742: * reload.c (decompose): OFFSET wasn't initialized. ! 6743: ! 6744: * cse.c (cse_main): Assign monotonic cuids. ! 6745: (make_regs_eqv, CHEAPER): Use cuids, not uids. ! 6746: (cse_end_of_basic_block): Return a cuid, not a uid. ! 6747: ! 6748: * expr.c (expand_builtin): For BUILTIN_SAVEREGS, range of regs ! 6749: moved included one extra previous insn. ! 6750: ! 6751: * emit-rtl.c (emit_line_note): Don't check -g here. ! 6752: (emit_note): For line number when no -g, increment cur_insn_uid anyway. ! 6753: * stmt.c (expand_start_case): Always output a NOTE_INSN_DELETED. ! 6754: ! 6755: * loop.c (loop_optimize): Don't count line-number NOTEs for luids. ! 6756: Prevents -g from affecting optimization decisions. ! 6757: ! 6758: Fri May 26 17:31:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6759: ! 6760: * local-alloc.c (block_alloc): Don't count notes in insn_number. ! 6761: Prevents -g from affecting order of allocation. ! 6762: ! 6763: Thu May 25 14:12:19 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6764: ! 6765: * local-alloc.c (block_alloc): Clear full length of regs_live_at. ! 6766: ! 6767: * ns32k.md (cmpsi): Make this the first cmp pattern. ! 6768: ! 6769: * jump.c (do_cross_jump): Skip NOTEs while checking for existing label. ! 6770: ! 6771: * cse.c (cse_insn): When no-oping a jump, decrement use count of label. ! 6772: (cse_basic_block): If label use count is 0, go past it. ! 6773: ! 6774: * integrate.c (access_parm_map): New fn, broken out of ! 6775: copy_rtx_and_substitute, handles case of mem ref to stack arg. ! 6776: (copy_rtx_and_substitute): Call it. ! 6777: Also use it for address of a stack arg. ! 6778: ! 6779: * gen*.c (fatal): Declare 1st arg as string. ! 6780: ! 6781: Wed May 24 00:13:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6782: ! 6783: * optabs.c (init_optabs): Handle movdi and movdf insns. ! 6784: ! 6785: * final.c (end_final): Realign locn ctr after outputting string. ! 6786: ! 6787: * tm-sparc.h (LINK_SPEC): Link bb_link.o before standard lib. ! 6788: ! 6789: * tm-sun386i.h (LINK_SPEC): Accept and ignore -sun386. ! 6790: ! 6791: * gcc.c (find_exec_file): Use machine_suffix. ! 6792: (process_command): Set that for -b option. ! 6793: ! 6794: * integrate.c (function_cannot_inline_p): No size limit ! 6795: for functions declared inline. ! 6796: ! 6797: * loop.c (skip_consec_insns): New fn, skip several insns or libcalls. ! 6798: (force_movables): New fn, part of scan_loop broken out. ! 6799: (ignore_some_movables): New fn, ignore a movable whose insn ! 6800: is within another movable's libcall. ! 6801: (scan_loop): Call those three. ! 6802: Don't handle m->consec for zero-extend movables, since always 0. ! 6803: ! 6804: Tue May 23 12:58:24 1989 Joe Weening (weening at gang-of-four.stanford.edu) ! 6805: ! 6806: * config/alliant.md: ! 6807: Removed operand classes 'x', 'y', 'G', 'H'. ! 6808: Added "%." to many opcodes to simplify comparison with m68k.md. ! 6809: Changed TARGET_68881 to TARGET_CE. ! 6810: Changed floating-point insns to better describe the Alliant CE. ! 6811: Most args to floating-point insns are now nonimmediate_operand. ! 6812: Removed special insns for pushing doublewords onto stack. ! 6813: Added non-CE versions of movsf and movdf to avoid using FP ! 6814: registers in this case. ! 6815: (float*i*f2): Don't allow immediate ops. ! 6816: (sne): Fix typo, fsne => fsneq. ! 6817: (call, call_value): Changed to always pop args from stack ! 6818: upon return; this gives better code than before and conforms ! 6819: to Alliant calling standard. ! 6820: Incorporated some recent changes to m68k.md. ! 6821: ! 6822: * config/out-alliant.c: ! 6823: (regno_reg_class): Removed FPA reg classes. ! 6824: (output_move_const_double): Function not needed, removed. ! 6825: ! 6826: * config/tm-alliant.h: ! 6827: Removed FPA registers and reg classes. ! 6828: Target flags: changed TARGET_68881 to TARGET_CE, removed ! 6829: TARGET_RTD, TARGET_REGPARM, TARGET_FPA. ! 6830: Removed TARGET_CE test in several places since we need to ! 6831: use FP regs even for non-CE programs. ! 6832: (TARGET_VERSION, CPP_SPEC): Define for Alliant. ! 6833: (CONDITIONAL_REGISTER_USAGE): Removed, not needed. ! 6834: (FRAME_POINTER_REQUIRED): Defined. ! 6835: (RETURN_POPS_ARGS): Defined. ! 6836: (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): ! 6837: Use fp0 to return floating-point values. ! 6838: (FUNCTION_ARG): Remove TARGET_REGPARM code. ! 6839: (FUNCTION_ARG_PARTIAL_NREGS): Always 0. ! 6840: (FUNCTION_PROFILER): Define for Alliant. ! 6841: (FUNCTION_EPILOGUE): Remove use of rtd instruction. ! 6842: Renamed CC_IN_68881 to CC_IN_FP. ! 6843: (NOTICE_UPDATE_CC): Incorporate changes that were made ! 6844: in tm-m68k.h. ! 6845: ! 6846: * config/xm-alliant.h (LINK_SPEC): Pass -X to linker. ! 6847: ! 6848: Tue May 23 12:58:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6849: ! 6850: * sdbout.c: Don't include c-tree.h. ! 6851: ! 6852: * tree.c (build_index_type): Use sizetype for min and max values. ! 6853: Convert maxval rather than clobbering it. ! 6854: ! 6855: * tm-hp9k320.h: Finish unterminated comment. ! 6856: ! 6857: * sdbout.c (sdbout_parms): Use gen_fake_label for anonymous parm. ! 6858: ! 6859: Sun May 21 12:58:06 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6860: ! 6861: * stmt.c (aggregate_value_p): New fn says whether expression is a type ! 6862: that functions cannot return as a scalar. ! 6863: (assign_parms, expand_function_start): Use that. ! 6864: * expr.c (expand_call): Likewise. ! 6865: ! 6866: * gcc.c (delete_failure_queue): New subroutine. ! 6867: (delete_temp_files): No longer delete the failure queue. ! 6868: (main): Delete failure queue after each failing compilation. ! 6869: ! 6870: Sat May 20 13:16:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6871: ! 6872: * varasm.c (force_const_mem): New optional macro SELECT_RTX_SECTION. ! 6873: ! 6874: * mips.md: Change %u0 to %:. ! 6875: (movsi): Add constraint alternative accepting address arg. ! 6876: ! 6877: * fold-const.c (mul_double): Special case for 2nd arg 2, 4, 8. ! 6878: (combine): Special case shortcuts for plus, minus, mult, div. ! 6879: ! 6880: * stmt.c (expand_function_start): Simplify hairy statement for 3B1. ! 6881: * expr.c (expand_call): Likewise. ! 6882: ! 6883: * math-68881.h: New file. ! 6884: ! 6885: * m68k.md (movqi): Handle moving aregs to mem and vice versa. ! 6886: ! 6887: * dbxout.c (dbxout_type): Don't test use_gdb_dbx_extensions ! 6888: in cases that occur in C. ! 6889: ! 6890: * stmt.c (expand_function_{start,end}): Make DECL_RESULT's rtl 0 ! 6891: when function returns no value. ! 6892: ! 6893: * tree.c (build_decl): Initialize DECL_PRINT_NAME, DECL_ASSEMBLER_NAME. ! 6894: ! 6895: * c-decl.c (store_parm_decls): Call init_function_start. ! 6896: ! 6897: Thu May 18 00:41:37 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6898: ! 6899: * stmt.c (expand_null_return_1): New arg USE_GOTO says jump to ! 6900: return_label even if could otherwise use a return insn. ! 6901: Make a return_label if we need one and don't have one already. ! 6902: If have parm cleanups, always jump to cleanup_label. ! 6903: (expand_null_return): Pass 1 for USE_GOTO if cleanups pending. ! 6904: (expand_return): Set LAST_INSN if have local cleanups or parm cleanups. ! 6905: Use that if jumping to tail-recursion label. ! 6906: Optimization for returning a comparison is safe for local cleanups ! 6907: but don't do it if there are parm cleanups. ! 6908: Calling expand_null_return_1, pass 1 for USE_GOTO if local cleanups. ! 6909: (this_contour_has_cleanups_p): New function. ! 6910: ! 6911: * stmt.c (init_function_start): New function, beginning of ! 6912: expand_function_start broken out. ! 6913: Use DECL_PRINT_NAME to get function's name. ! 6914: (expand_function_start): Now two args, function and PARMS_HAVE_CLEANUPS ! 6915: Compute RETURN_LABEL sooner; make one if parm cleanups. ! 6916: If parms have cleanups, put scalar return value in pseudo-reg. ! 6917: Don't mark that pseudo with REG_FUNCTION_VALUE_P. ! 6918: (expand_function_end): Simplify decisions about output of return_label ! 6919: and return insn. ! 6920: If DECL_RESULT is pseudo-reg, copy it to real return reg. ! 6921: ! 6922: * stmt.c (expand_function_end): Handle ordinary struct values ! 6923: like pcc, but only if unoptimized. ! 6924: (expand_function_start): Make a return_label for ordinary struct value. ! 6925: ! 6926: * stor-layout.c (layout_type): Handle METHOD_TYPE like FUNCTION_TYPE. ! 6927: (layout_decl): Allow TYPE_DECL. ! 6928: ! 6929: * stor-layout.c (layout_basetypes): Code for basetypes broken ! 6930: out of layout_record. Sets the type size tentatively. ! 6931: (layout_record): Start with that tentative size. ! 6932: Also, don't do anything with CONST_DECL members. ! 6933: ! 6934: * stor-layout.c (layout_union): Simpler error report for static memb. ! 6935: ! 6936: * reload1.c (eliminate_frame_pointer): Reduce PUSH_ROUNDING ! 6937: conditional to apply only to push instructions. ! 6938: ! 6939: * expr.c (expand_call): Fix stupid errors handling MAX_PARM_BOUNDARY. ! 6940: * stmt.c (assign_parms): Likewise. ! 6941: ! 6942: * toplev.c (announce_function, report_error_function): ! 6943: (error_with_decl, warning_with_decl): Use DECL_PRINT_NAME. ! 6944: ! 6945: * toplev.c (compile_file): Subtract integration_time from parse_time. ! 6946: ! 6947: * toplev.c (compile_file): Don't output read-only static variables ! 6948: at end of compilation if address was not used. ! 6949: ! 6950: * toplev.c (rest_of_compilation): Handle flag_syntax_only. ! 6951: ! 6952: * toplev.c (main): Handle -g0 and -G0 options. ! 6953: For -g and -G, set use_gdb_dbx_extensions. ! 6954: ! 6955: * toplev.c (main): Set `progname'. ! 6956: (pfatal_with_name, fatal_io_error, {error,warning}_with_file_and_line): ! 6957: (sorry): Print value of `progname', not "cc1". ! 6958: ! 6959: * tree.def: Delete FRIEND_DECL. Add PUSH_EXPR and POP_EXPR. ! 6960: ! 6961: * tree.c (simple_cst_equal): Handle INDIRECT_REF. ! 6962: ! 6963: * tree.c (lvalue_p): Handle METHOD_TYPE. Handle NEW_EXPR. ! 6964: ! 6965: * tree.c (copy_list): New function. ! 6966: ! 6967: * tree.h (struct tree_decl): New fields print_name and assembler_name. ! 6968: (DECL_PRINT_NAME, DECL_ASSEMBLER_NAME): New accessors. ! 6969: ! 6970: * c-decl.c (LONG_DOUBLE_TYPE_SIZE): New compilation parameter. ! 6971: ! 6972: Wed May 17 22:07:17 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) ! 6973: ! 6974: * dbranch.c (emit_delay_sequence): Reset insn code to -1 when ! 6975: turning insn into a sequence so that it won't think that it matches ! 6976: something in the md file. ! 6977: ! 6978: * dbranch.c (insn_eligible_p): Call refers_to_regno_p with a ! 6979: non-zero range. ! 6980: ! 6981: * dbranch.c (pnote): Modified to make sure instruction clobbered ! 6982: register is a set, rather than, say, a clobber. ! 6983: ! 6984: Wed May 17 14:01:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6985: ! 6986: * sdbout.c (sdbout_parms): Handle parm with no name. ! 6987: ! 6988: * loop.c (combine_movables): Test for overlap of zero-extend regs ! 6989: was screwed up. ! 6990: ! 6991: * c-typeck.c (c_sizeof{,_nowarn}): Convert from bytes to chars, ! 6992: since c defines sizeof (char) as 1. ! 6993: (pointer_int_sum, pointer_diff): Use c_sizeof{,_nowarn}. ! 6994: ! 6995: Tue May 16 16:27:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6996: ! 6997: * reload1.c (choose_reload_targets): Don't reuse regs ! 6998: mentioned in reload_reg_rtx. ! 6999: ! 7000: * tm-tahoe.h, tahoe.md, out-tahoe.c, xm-tahoe.h: New files. ! 7001: ! 7002: Mon May 15 16:25:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7003: ! 7004: * fixincludes: Exit with explicit status 0 at end. ! 7005: cd to /usr/include before cd to subtree root in case of relative link. ! 7006: Create dir $LIB earlier. ! 7007: When checking for a link, treat .. like an absolute target. ! 7008: ! 7009: * symout.c (symout_block_symbols): Give every local decl a typespec. ! 7010: * cexp.y (parse_number): ! 7011: * flow.c (life_analysis, dump_flow_info): ! 7012: ! 7013: * loop.c (consec_sets_invariant_p): Logic error accepted consec sets ! 7014: of which only one was invariant. ! 7015: ! 7016: * expr.c (expand_expr): Use no subtargets inside loops. ! 7017: * stmt.c (inside_loop): New function. ! 7018: ! 7019: Sun May 14 00:11:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7020: ! 7021: * tree.h: Declare long long types. ! 7022: ! 7023: * c-parse.y (combine_strings): Make string contents saveable. ! 7024: ! 7025: * tree.c (savealloc): New function. ! 7026: ! 7027: * m68k.md (movdi): % missing in fmove%.d. ! 7028: ! 7029: * c-parse.y (yylex): Detect overflow past 64-bits. ! 7030: Detect specially numbers not fitting in signed long long. ! 7031: ! 7032: Sat May 13 13:16:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7033: ! 7034: * reload1.c (alter_frame_pointer_addresses): Preserve volatility. ! 7035: ! 7036: * varasm.c (output_constructor): Die if BITS_PER_UNIT is too big ! 7037: for this function to work. ! 7038: ! 7039: * genpeep.c (match_rtx): For match_operator, match the operands, too. ! 7040: ! 7041: * varasm.c (output_constant): Use ASM_OUTPUT_DOUBLE_INT for DImode. ! 7042: ! 7043: * stor-layout.c (make_signed_type, make_unsigned_type): ! 7044: (fixup_unsigned_type): Use HOST_BITS_PER_INT. ! 7045: ! 7046: * stor-layout.c (layout_type): Use TFmode if appro. ! 7047: ! 7048: * optabs.c (emit_cmp_insn): Use mode sizes to check cmpstrqi, cmpstrhi. ! 7049: ! 7050: * c-typeck.c (get_floating_type): Compare MODE against modes of types. ! 7051: (signed_type, unsigned_type, signed_or_unsigned_type, type_for_size): ! 7052: Handle long long types. ! 7053: (digest_init): Don't assume width of `char' is BITS_PER_UNIT. ! 7054: ! 7055: * c-parse.y (yylex): For truncating chars, use width of `char' type. ! 7056: Allow `ll' in int constants and make long long. ! 7057: Also make long long if constant won't fit in an int. ! 7058: ! 7059: * c-decl.c (SHORT_TYPE_SIZE): Round up when dividing. ! 7060: ! 7061: Fri May 12 22:36:21 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7062: ! 7063: * real.h: Allow multiple inclusion. ! 7064: ! 7065: * tm-sun386i.h (DBX_REGISTER_NUMBER): Bizarre renumbering. ! 7066: ! 7067: Thu May 11 00:36:21 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7068: ! 7069: * fixincludes: Fix non-ansi declaration of sprintf in X11/Xmu.h ! 7070: ! 7071: * c-parse.y (stmt from expr): Do default conversion if useful ! 7072: for sake of ({...}). ! 7073: ! 7074: * sparc.md (andcc recognizer): Operand missing in subreg. ! 7075: ! 7076: Wed May 10 17:20:38 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7077: ! 7078: * rtl.c (read_name): Error if name is missing. ! 7079: (dump_and_abort): Don't print char args if -1. ! 7080: ! 7081: * i386.md (umulqihi3): Operand numbers were missing. ! 7082: ! 7083: * reload1.c (choose_reload_targets): Allow spill reg in find_equiv_reg ! 7084: if it's free and correct class. ! 7085: ! 7086: * cse.c (canon_hash): Handle empty strings. ! 7087: ! 7088: * cccp.c (macroexpand): Newline newline treated like real white space ! 7089: when stringifying. ! 7090: ! 7091: * Rename *offsetable* to *offsettable*. ! 7092: ! 7093: Tue May 9 22:54:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7094: ! 7095: * c-decl.c (finish_type): Layout any variants of the type. ! 7096: ! 7097: Tue May 9 12:30:28 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) ! 7098: ! 7099: * final.c (final_scan_insn, final): Added an argument to ! 7100: final_scan_insn to disallow peephole processing (to turn it off ! 7101: during delayed branch scheduling). ! 7102: ! 7103: * final.c (final_scan_insn): Made insn not matching any MD rtl a ! 7104: criteria for delayed branch case. Moved delayed branch case to just ! 7105: before real insn recognition to reduce the number of insns on which ! 7106: recog_memoized is called. ! 7107: ! 7108: Mon May 8 15:02:42 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7109: ! 7110: * fixincludes (LIB): Allow overriding. ! 7111: ! 7112: * cccp.c: Don't search /usr/include/CC by default. ! 7113: ! 7114: Mon May 8 13:09:21 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) ! 7115: ! 7116: * print-tree.c (dump): Fixed typo; IDENTIFIER ==> IDENTIFIER_NODE. ! 7117: ! 7118: Sun May 7 12:44:53 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7119: ! 7120: * print-tree.c (dump): TYPE_NAME may be IDENTIFIER or TYPE_DECL. ! 7121: ! 7122: Sat May 6 00:13:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7123: ! 7124: * tree.def: Define EXACT_DIV_EXPR, for when remainder known as 0. ! 7125: * fold-const.c (combine, fold, div_and_round_double): Handle new code. ! 7126: * expr.c (expand_expr): Likewise. ! 7127: * c-typeck.c (pointer_diff): Use EXACT_DIV_EXPR. ! 7128: ! 7129: * integrate.c (expand_inline_function): Use size of passed type ! 7130: for allocating stack slot with that type. ! 7131: ! 7132: * c-parse.y (maybe_attribute, attribute*): New syntax for Apollos. ! 7133: These tokens currently not generated. ! 7134: ! 7135: Fri May 5 18:43:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7136: ! 7137: * toplev.c [USG]: Undefine FLOAT for sake of sys/param.h on hpux. ! 7138: ! 7139: * optabs.c (expand_binop): If backtracking, don't delete insns made ! 7140: for -fforce-mem. ! 7141: ! 7142: Thu May 4 01:57:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7143: ! 7144: * reload.c (find_reloads): Don't compare an earlyclobber operand ! 7145: with itself. ! 7146: ! 7147: * reload.c (immune_p): Constants and stack slots don't overlap. ! 7148: ! 7149: * Put no-ops in front of loops and labels, ! 7150: to prevent confusion in the debugger. ! 7151: * c-parse.y (loops and labels): Call emit_nop. ! 7152: * stmt.c (emit_nop): New function--sometimes emit a no-op. ! 7153: * *.md (nop): New insn. ! 7154: ! 7155: * expr.c (expand_call): Typo in arg to FIRST_PARM_CALLER_OFFSET. ! 7156: ! 7157: Wed May 3 01:34:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7158: ! 7159: * loop.c (scan_loop): Scanning around end of loop ! 7160: should not set maybe_never. ! 7161: ! 7162: * Rename SELECT_VARIABLE_SECTION to SELECT_SECTION. ! 7163: * varasm.c (get_or_assign_label): Use SELECT_SECTION if defined. ! 7164: * varasm.c: Use EXTRA_SECTION_FUNCTIONS if defined (new macro). ! 7165: ! 7166: * mips.md: Change %u to %u0 to avoid error check. ! 7167: ! 7168: * tm-mips.h (TARGET_VERSNUM): Inc. to 1 08. ! 7169: (TARGET_VERSION): Change strings. ! 7170: (AL_DEBUG): Don't define it. ! 7171: (HARD_REGNO_MODE_OK): Add some casts to int. ! 7172: (STACK_ARGS_ADJUST): Name was misspelled. ! 7173: (PRINT_OPERAND_ADDRESS): Just abort for MEM, POST_INC, etc. ! 7174: (EXTRA_SECTIONS, SELECT_VARIABLE_SECTION, SELECTORS_EXTRA_SECTIONS, ! 7175: SELECT_VARIABLE_CONST_SECTION): New macros. ! 7176: (ASM_FILE_END): Change function name. ! 7177: * out-mips.c (function_arg_advance): Delete debugging printfs. ! 7178: (function_inarg, function_arg): Likewise. ! 7179: (compare_collect, compare_restore): Add some. ! 7180: ! 7181: * reload1.c (reload): Fix handling of caller_save_needed. ! 7182: ! 7183: * stmt.c (expand_function_start): Clear caller_save_needed. ! 7184: ! 7185: * stmt.c (emit_case_nodes): Some compiler has trouble with calling ! 7186: a function pointer. ! 7187: * gnulib.c: likewise. ! 7188: ! 7189: Tue May 2 15:32:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7190: ! 7191: * loop.c (combine_movables): For zero extend, ! 7192: do each from-mode separately. ! 7193: ! 7194: Mon May 1 00:18:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7195: ! 7196: * tm-apollo68.h: New file. ! 7197: ! 7198: * c-parse.y (is_reserved_word, hash): Add keywords `__asm__', etc. ! 7199: * c-parse.gperf: Corresponding changes. ! 7200: ! 7201: * c-parse.y (check_newline): Set main_input_filename before ! 7202: considering optional arguments. ! 7203: ! 7204: * final.c (final_scan_function): Return next insn to process. ! 7205: Usually that's the following insn; occasionally, previous compare. ! 7206: ! 7207: * c-decl.c (DOUBLE_TYPE_SIZE): Wrong value. ! 7208: ! 7209: * reload.c (decompose): Failed to return value. ! 7210: ! 7211: * Support local specified-register variables. ! 7212: * varasm.c (decode_reg_name): New function, cvt asmspec to regnum. ! 7213: (make_decl_rtl): Call that. ! 7214: * toplev.c (rest_of_decl_compilation): Handle local specified-register ! 7215: declarations. ! 7216: ! 7217: * i386.md (tstqi, trunc*qi): Constrain to `q' regs. ! 7218: ! 7219: * loop.c (scan_loop, move_movables): ->global for zero-extend register ! 7220: now means register is used outside range from where it is set ! 7221: to the following label. Non-global zero-extend regs ! 7222: may be entirely cleared. ! 7223: ! 7224: * loop.c (combine_movables): Loop that combines matching movables ! 7225: broken out from scan_loop. ! 7226: Now also combine non-global zero-extend registers with each other ! 7227: if their lifespans don't overlap. ! 7228: ! 7229: * c-typeck.c (build_unary_op, ADDR_EXPR of a COMPONENT_REF): ! 7230: Always convert to desired result type. ! 7231: ! 7232: Sun Apr 30 12:58:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7233: ! 7234: * c-decl.c (init_decl_processing): New macros parameterize int types. ! 7235: CHAR_TYPE_SIZE, SHORT_TYPE_SIZE, LONG_TYPE_SIZE, LONG_LONG_TYPE_SIZE, ! 7236: FLOAT_TYPE_SIZE, DOUBLE_TYPE_SIZE. ! 7237: ! 7238: * fixincludes: Use sed instead of ex. No problem with split lines. ! 7239: ! 7240: * print-tree.c (dump): Print type's name, if any. ! 7241: ! 7242: * c-parse.y: Use __inline, not plain inline. ! 7243: ! 7244: * toplev.c: New option -fdelayed-branch. ! 7245: (compile_file): Open and close dbranch dump file. ! 7246: Collect and print dbranch time. ! 7247: (rest_of_compilation): Optionally do dbranch scheduling, ! 7248: only if HAVE_DELAYED_BRANCH. ! 7249: (main): Handle -dd. ! 7250: ! 7251: * rtl.c (copy_rtx): Handle null pointers as code `e'. ! 7252: ! 7253: * final.c (dbr_sequence_length): New function. ! 7254: (final_scan_insn): Most of `final' broken out. ! 7255: Add support for SEQUENCE insns. ! 7256: last_ignored_compare and new_block now top-level static. ! 7257: ! 7258: * c-parse.y (MAX_WORD_LENGTH): Long enough for __volatile. ! 7259: ! 7260: Sat Apr 29 13:03:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7261: ! 7262: * c-parse.y (asm statements): Output line numbers. ! 7263: ! 7264: * loop.c (emit_iv_init_code, emit_iv_inc, eliminate_biv): Copy ! 7265: additive term rtx's to prevent sharing between insns. ! 7266: ! 7267: * c-parse.y (check_newline): Increment input_file_stack_tick. ! 7268: * toplev.c (report_error_function): Describe input stack only if ! 7269: changed. ! 7270: ! 7271: * c-decl.c (finish_struct): Reject zero width for named field. ! 7272: ! 7273: * tm-sun3.h (CC1_SPEC): Prevent error on `-sun3'. ! 7274: * tm-sparc.h (CC1_SPEC): Prevent error on `-sun4'. ! 7275: ! 7276: * Makefile (cleanconfig): cleanlinks renamed; also delete gnulib. ! 7277: (gnulib): Delete stamp-gnulib2 since gnulib2 should be redone after. ! 7278: ! 7279: Fri Apr 28 00:38:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7280: ! 7281: * config.gcc (genix): Correct xm file name. ! 7282: ! 7283: * tm-genix.h: Undefine ASM_SPEC inherited from tm-encore.h. ! 7284: ! 7285: * Makefile: Make float.h using hard-params. ! 7286: (clean): Delete float.h. ! 7287: ! 7288: * hard-params.c: New program. ! 7289: ! 7290: * varasm.c (assemble_variable): Use SELECT_VARIABLE_SECTION if defined. ! 7291: (in_section): Use EXTRA_SECTIONS if defined. ! 7292: ! 7293: * toplev.c (compile_file): Call ASM_FILE_END if defined. ! 7294: ! 7295: * gcc.c (SWITCH_TAKES_ARG, WORD_SWITCH_TAKES_ARG): Let config override. ! 7296: ! 7297: * loop.c (emit_iv_init_code): Force A to a reg if it isn't. ! 7298: ! 7299: Thu Apr 27 12:51:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7300: ! 7301: * tm-mips.h (ASM_START_FILES): Don't call print_options. ! 7302: Don't call the funny abort-functions. ! 7303: * out-mips.c: Delete funny debugging functions and aborts. ! 7304: (print_options): #if 0. ! 7305: (compare_restore): Test for COMPARE, not MINUS. ! 7306: (mips_section_get, mips_output_external, mips_asm_final): New fns. ! 7307: ! 7308: * input.h: New file with *input_filename, lineno and input_file_stack. ! 7309: Included in toplev.c and c-parse.y. ! 7310: * c-decl.c (finish_function): LINENO is now arg. ! 7311: * c-parse.y: Calls changed. ! 7312: ! 7313: * c-parse.y (check_newline): Handle `1' or `2' from cpp ! 7314: by pushing or popping input_file_stack. ! 7315: * toplev.c (compile_file): Push main input file on input_file_stack. ! 7316: (report_error_function): If in include file, print the chain ! 7317: of include-locations. ! 7318: ! 7319: * cccp.c (output_line_command): New arg says whether entering or ! 7320: leaving a file. Output `1' or `2' on #-line if so. Callers changed. ! 7321: ! 7322: * gnulib2.c: Little-endian fixes from [email protected]. ! 7323: ! 7324: * fixincludes: Wrong quoting in `echo' command. ! 7325: ! 7326: * tm-mips.h (REG_P): Duplicate defn deleted. ! 7327: (PRINT_OPERAND): `\' was missing. ! 7328: ! 7329: Wed Apr 26 02:44:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7330: ! 7331: * cccp.c (handle_directive): Preprocess even #pragma, but copy ! 7332: to output file afterward. ! 7333: (do_pragma): Use standard calling convention. ! 7334: (install_builtins, special_symbol): Define __INCLUDE_LEVEL__. ! 7335: ! 7336: * cccp.c (do_include): Don't forget to close file. ! 7337: ! 7338: * final.c (output_asm_insn): Use PRINT_OPERAND_PUNCT_VALID_P ! 7339: to validate punctuation after percent. ! 7340: * tm-m68k.h, tm-alliant.h, tm-ns32k.h, tm-vax.h, tm-i386.h: ! 7341: Define PRINT_OPERAND_PUNCT_VALID_P. ! 7342: ! 7343: * Version 1.35 released. ! 7344: ! 7345: * c-decl.c (grokdeclarator): Use INT_CST_LT only on int constants. ! 7346: ! 7347: Tue Apr 25 15:47:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7348: ! 7349: * reload.c (find_reloads_address_1): Always return a value. ! 7350: ! 7351: * flow.c (mark_set_1): Look inside zero_extract, sign_extract. ! 7352: ! 7353: * expr.c (emit_library_call) [STACK_ARGS_ADJUST]: ! 7354: Fix typo for `struct args_size'. ! 7355: ! 7356: Mon Apr 24 00:12:18 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7357: ! 7358: * flow.c (mark_set_1): Look inside strict_low_part. ! 7359: ! 7360: * c-typeck.c (decl_constant_value): Don't use var's init if volatile. ! 7361: ! 7362: * print-tree.c (dump): Don't call walk on rtx's. ! 7363: ! 7364: * integrate.c (expand_inline_function): Convert expanded arg from ! 7365: passed mode to nominal mode. ! 7366: ! 7367: Sun Apr 23 13:14:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7368: ! 7369: * fixincludes: fix _IO macros if split across two lines. ! 7370: Fix typo: EOF was indented. ! 7371: ! 7372: * gnulib2.c: New file with DImode library routines. ! 7373: * Makefile (gnulib2): Put them into gnulib. ! 7374: Must be explicitly requested. ! 7375: ! 7376: Fri Apr 21 13:45:45 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7377: ! 7378: * cccp.c (main): Don't turn on trigraphs for -Wtrigraphs or -Wall; ! 7379: use -trigraphs for that. ! 7380: ! 7381: * cccp.c (main): Use -trigraphs to enable trigraphs. ! 7382: * gcc.c: Pass -trigraphs to cpp; don't pass -T. ! 7383: ! 7384: * Makefile: Variable srcdir relates location of sources ! 7385: to current directory. Default is `.'. ! 7386: ! 7387: * integrate.c (expand_inline_function): When copying expanded arg, ! 7388: use mode it's passed in, not arg's nominal mode. ! 7389: ! 7390: * dbxout.c (dbxout_block): Print generated name with assemble_name. ! 7391: ! 7392: Thu Apr 20 12:36:09 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7393: ! 7394: * stdarg.h: check __sparc__ instead of sparc. ! 7395: ! 7396: Tue Apr 18 18:58:03 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7397: ! 7398: * tm-next.h (STARTFILE_SPEC): Define it. ! 7399: ! 7400: Mon Apr 17 19:56:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7401: ! 7402: * dbxout.c (dbxout_block): Use ASM_GENERATE_INTERNAL_LABEL to format ! 7403: the labels LBB... and LBE... ! 7404: ! 7405: Sun Apr 16 23:57:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7406: ! 7407: * mips.md: Change MINUS to COMPARE where appropriate. ! 7408: ! 7409: Sat Apr 15 16:11:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7410: ! 7411: * c-decl.c (finish_struct, redeclaration_error_message): ! 7412: Rename variables named OLD and NEW. ! 7413: ! 7414: * sparc.md (cse'd mult pattern): Handle memory operands. ! 7415: Optimize small integer operands. ! 7416: ! 7417: * stmt.c (expand_decl): On sparc, ensure dynamic arrays of doubles ! 7418: are properly aligned, despite unaligned STACK_POINTER_OFFSET. ! 7419: ! 7420: Fri Apr 14 10:59:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7421: ! 7422: * expr.c (expand_call): Bugs treating struct value address as param: ! 7423: do so only if it's supposed to be pushed; ! 7424: decode value of FUNCTION_ARG properly. ! 7425: ! 7426: * tm-altos3068.h (CPP_SPEC): Some braces were dropped. ! 7427: ! 7428: * gcc.c (pexecute): Print message when exec fails. ! 7429: (perror_exec): New fn. ! 7430: (perror_with_name,pfatal_with_name): Change message syntax. ! 7431: ! 7432: * tm-hp9k320.h (ASM_IDENTIFY_GCC): Define as no-op. ! 7433: ! 7434: Wed Apr 12 00:20:31 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7435: ! 7436: * cse.c (cse_insn): Can record constant value being stored in ! 7437: a bit field, if we can tell that truncation won't change it. ! 7438: ! 7439: * m68k.md (bfset, bfclr, bfchg insns): Do CC_STATUS_INIT ! 7440: since the cc's are set from the old contents. ! 7441: ! 7442: * gcc.c (compilers): Running `as', put -o option before input file. ! 7443: ! 7444: * gcc.c: Delete output file only if that file's compilation fails. ! 7445: * gcc.c (record_temp_file): Changed args: always_delete, fail_delete. ! 7446: (store_arg): Likewise. Callers changed. ! 7447: (clear_failure_queue): Called after each compilation. ! 7448: ! 7449: Tue Apr 11 01:18:53 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7450: ! 7451: * combine.c (subst): (SET (ZERO_EXTRACT) (OR (ZERO_EXTRACT) const)) ! 7452: optimization was sometimes invalid. ! 7453: ! 7454: * tm-m68k.h (NOTICE_UPDATE_CC): A doubleword move that requires 2 insns ! 7455: does not set the cc's usefully. ! 7456: ! 7457: * Makefile (cleanlinks): Just do `clean', not `realclean'. ! 7458: (realclean): Delete config links also. ! 7459: ! 7460: * expr.c (expand_call): Handle case where return value is in memory ! 7461: but TARGET is a register. ! 7462: ! 7463: * c-typeck.c (build_binary_op_nodefault): New arg ERROR_CODE ! 7464: is passed to binary_op_error instead of CODE. ! 7465: All callers changed. ! 7466: (binary_op_error): CODE = NOP_EXPR is new special case. ! 7467: (truthvalue_conversion): Call build_binary_op_nodefault directly ! 7468: and specify NOP_EXPR for the error code. ! 7469: ! 7470: * c-decl.c (xref_tag): If pedantic, warn on fwd ref to enum. ! 7471: ! 7472: Mon Apr 10 19:44:48 1989 Chris Smith (csmith at mozart) ! 7473: ! 7474: * tm-convex.h (PCC_BITFIELD_TYPE_MATTERS): It doesn't, ! 7475: but set it anyway. It makes for better code on this ! 7476: word machine. ! 7477: ! 7478: * convex.md (one_compl*): add not:QI and not:HI, which ! 7479: do get used after all. ! 7480: ! 7481: * tm-convex.h (A_REG_P, S_REG_P): define new macros ! 7482: convex.md: use them ! 7483: ! 7484: * convex.md (addsi3): tidy up constraints. ! 7485: ! 7486: * tm-convex.h (REG_OK_FOR_INDEX_P): stack pointer is not ok. ! 7487: ! 7488: * convex.md: add a pattern to push REG+CONST so we can ! 7489: prefer an A reg. ! 7490: ! 7491: * tm-convex.h (tstqi): should sign extend, not zero extend. ! 7492: ! 7493: * expr.c (convert_move): Extending narrow to DI via SI, ! 7494: operand of extendsidi2 was wrong. ! 7495: ! 7496: * emit-rtl.c (gen_lowpart): Handle CONST_DOUBLE. ! 7497: ! 7498: Mon Apr 10 05:19:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7499: ! 7500: * recog.c (nonmemory_operand): Test constant operands ! 7501: as general_operand does. ! 7502: ! 7503: * tm-m68k.h (PRINT_OPERAND): Limit effect of code `d' ! 7504: to constant addresses. ! 7505: ! 7506: * loop.c (can_eliminate_biv_p, eliminate_biv): Don't rely on givs with ! 7507: nonconstant coefficients, since the coeffs could be zero. ! 7508: ! 7509: * loop.c (can_eliminate_biv_p): Check each giv for ! ignore ! 7510: before assuming it can be used. ! 7511: (check_eliminate_biv): New fn, a piece of strength_reduce broken out. ! 7512: ! 7513: * cccp.c (error_from_errno): New fn, like error and perror_with_name. ! 7514: (do_include): Call that if open fails. ! 7515: (finclude): Print I/O error msg before closing desc. ! 7516: ! 7517: * c-decl.c (shadow_tag): If more than one tag or structure, ! 7518: or anything other than a tag, warning. ! 7519: ! 7520: * c-parse.y (components): Just warn if memb decl has no member, ! 7521: and only if pedantic. ! 7522: ! 7523: * loop.c (strength_reduce): Print uids, not luids, for dump. ! 7524: (record_giv): giv_count field counts only DEST_REG givs. ! 7525: (check_dbra_loop): src_two_before_end was set wrong. ! 7526: ! 7527: * loop.c (record_giv): New arg LOOP_END; all callers changed. ! 7528: Don't mark giv replaceable if used past LOOP_END. ! 7529: (find_mem_givs): New arg LOOP_END; all callers changed. ! 7530: ! 7531: * out-i386.c (FP_CALL): Make this a `return' stmt. ! 7532: ! 7533: Fri Apr 7 11:56:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7534: ! 7535: * expr.c (expand_expr, case ..._DECL): Preserve mode thru ! 7536: calling change_address. ! 7537: ! 7538: * expr.c (emit_library_call): Typo: ARGNUM => COUNT. ! 7539: ! 7540: * expr.c (preexpand_calls, expand_call): Take note of RETURN_IN_MEMORY. ! 7541: * stmt.c (assign_parms): Likewise. ! 7542: * integrate.c (function_cannot_inline_p): Likewise. ! 7543: ! 7544: * STACK_ARGS_ADJUST: Arg is now a `struct arg_data' and it should ! 7545: be updated in place. ! 7546: * tm-mips.h: Define it. ! 7547: * expr.c (expand_call): Adapt to this. Assume padding comes after args ! 7548: so turn off the feature of changing the args' offsets. ! 7549: (emit_library_call): Adapt to this. ! 7550: ! 7551: * tm-mips.h (PRINT_OPERAND): Use CONST_DOUBLE_{LOW,HIGH}. ! 7552: Truncate SFmode constants to single precision. ! 7553: ! 7554: * c-typeck.c (mark_addressable): Fix test for local vs global reg var. ! 7555: ! 7556: * config.gcc: Change `:-' to `-' in var refs. ! 7557: Shell on convex doesn't handle `:-'. ! 7558: ! 7559: Thu Apr 6 00:09:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7560: ! 7561: * integrate.c (expand_inline_function): Compare actual's mode ! 7562: against formal's DECL_ARG_TYPE's mode, not TREE_TYPE's mode. ! 7563: ! 7564: * c-decl.c (implicitly_declare): Make the decl permanent if ! 7565: in global binding level. (Can happen for certain invalid input.) ! 7566: ! 7567: * c-typeck.c (build_modify_expr): Block path that made a MODIFY_EXPR ! 7568: containing an ERROR_MARK. ! 7569: ! 7570: * config/tm.h: New file. ! 7571: ! 7572: * loop.c (only_reg_use_p): Fix bugs in recursion, add some fast ! 7573: special cases. Comment on return value was backwards. ! 7574: (strength_reduce): Negate the value of only_reg_use_p. ! 7575: ! 7576: * genoutput.c (output_prologue): Output `#include hard-reg-set.h'. ! 7577: * Makefile: insn-output.o depends on that. ! 7578: ! 7579: * toplev.c (main): Typo recognizing -Wswitch. ! 7580: ! 7581: * config.gcc (mips): New alternative. ! 7582: * tm-mips.h, out-mips.c, mips.md, va-mips.h: New files. ! 7583: * varargs.h: Include va-mips.h if on mips. ! 7584: ! 7585: Wed Apr 5 16:58:04 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7586: ! 7587: * c-decl.c (duplicate_decls): Rename OLD, NEW to OLDDECL, NEWDECL. ! 7588: ! 7589: * stmt.c (expand_function_start): Ref subr instead of ! 7590: current_function_decl; should make no difference. ! 7591: ! 7592: * stmt.c (assign_parms): Do extra padding for some parms, ! 7593: controlled by MAX_PARM_BOUNDARY. ! 7594: * expr.c (expand_call): Same thing for caller side. ! 7595: Note this is implemented only for machines that lack push insns. ! 7596: Also, in both cases, it doesn't handle variable-size args. ! 7597: ! 7598: Tue Apr 4 12:22:06 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7599: ! 7600: * gcc.c (find_file): Try STANDARD_EXEC_PREFIX for startfiles too. ! 7601: ! 7602: * varasm.c (make_decl_rtl): Delete never-executed clause. ! 7603: ! 7604: * spur.md (movqi, loadhi, extend*, zero_extendhisi): ! 7605: Make subregs with C code, not RTL patterns, so we can ! 7606: avoid generating subreg of subreg. ! 7607: ! 7608: * optabs.c (emit_cmp_insn): Not all clauses always succeed, ! 7609: so stop using `else' structure. ! 7610: ! 7611: * stmt.c (expand_return): Avoid moving void to void, in cleanups case. ! 7612: ! 7613: Mon Apr 3 18:04:33 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7614: ! 7615: * m68k.md (cmphi): Don't allow a-reg vs a-reg, since that sign-extends. ! 7616: If there is one a-reg, make sure it is not last. ! 7617: ! 7618: Sun Apr 2 13:02:26 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7619: ! 7620: * stor-layout.c (agg_mode): Use highest mode that has desired size. ! 7621: Allow all integer modes, but reject sizes > MAX_FIXED_MODE_SIZE. ! 7622: (That defaults to the size of DImode.) ! 7623: ! 7624: * machmode.def: Add PSI, PDI and XF, CXF modes. ! 7625: ! 7626: Sat Apr 1 00:50:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7627: ! 7628: * ns32k.md (ashd, lshd): Delete patterns that logand the count with 31. ! 7629: The shift count is not truncated on this machine. ! 7630: ! 7631: * combine.c (subst): Simplify nested or's, nested xor's. ! 7632: (try_distrib): XOR doesn't distribute through anything. ! 7633: ! 7634: * rtl.c (rtx_equal_p): Don't die on null pointers. ! 7635: ! 7636: * loop.c (eliminate_biv): Use COMPARE, not MINUS, in generated compare. ! 7637: ! 7638: * loop.c (invariant_p): Mem refs in constant pool are invariant. ! 7639: ! 7640: * c-decl.c (redeclaration_error_message): If -traditional, allow ! 7641: redeclarations of typedef provided they agree. ! 7642: ! 7643: * c-decl.c (start_decl): Do expand_decl on the decl that pushdecl ! 7644: returns. If there was a prev. decl with a different type, ! 7645: we have changed its type and cleared its old rtl, so it need new rtl. ! 7646: ! 7647: Sat Apr 1 00:50:11 1989 Matthew Self (rms at sugar-bombs.ai.mit.edu) ! 7648: ! 7649: * expr.c (convert_move): Modified to use mode classes ! 7650: instead of refering to specific machine modes. ! 7651: ! 7652: * expr.c (do_jump): Converted to use CONST0_RTX macro. ! 7653: do_jmp no longer refers to any machine modes directly except ! 7654: for VOIDmode! ! 7655: ! 7656: * expr.c (compare, compare1): Modified to use CONST0_RTX ! 7657: macro. No longer refers to any machine modes directly ! 7658: except VOIDmode and BLKmode! ! 7659: ! 7660: * machmode.def: Documented assumptions made about the order ! 7661: of machine modes during mode widening. ! 7662: ! 7663: * optabs.c (expand_binop, expand_twoval_binop, expand_unop, ! 7664: emit_cmp_insn): Added mode widening which is independent of ! 7665: specific machine modes. It assumes that we may widen to any ! 7666: higher numbered mode of the same mode class. ! 7667: NOTE: the checks for VOIDmode ops which were present in ! 7668: QI and HI to SI widening are now present in all widening. ! 7669: I assume this is correct. Also, widening is now possible ! 7670: from QI to HI. This may or may not be a good thing.... ! 7671: ! 7672: * rtl.h (CONST0_RTX): Added definition of new macro ! 7673: CONST0_RTX (mode). ! 7674: ! 7675: * rtl.h (GET_NOTE_INSN_NAME, GET_REG_NOTE_NAME): New macros. ! 7676: * rtl.c (note_insn_name, reg_note_name): New tables. ! 7677: * rtl.def (NOTE): Change last field from `i' to `n'. ! 7678: * rtl.c (print_rtx): Print mode of INSN_LIST or EXPR_LIST as reg-note. ! 7679: Print operand code `n' as name of kind of note. ! 7680: (read_rtx): treat `n' like `i'. ! 7681: ! 7682: * loop.c (struct induction): Add `mode' field. ! 7683: (strength_reduce, record_giv): Set the `mode' field in V. ! 7684: (can_eliminate_biv_p, eliminate_biv): Use that field. ! 7685: ! 7686: * loop.c (struct iv_class): `init_insn' records what inits the biv. ! 7687: Replaces `init_val_set' flag. ! 7688: (strength_reduce): Update and test `init_insn' instead. ! 7689: Use of a biv between its init and the start of the loop ! 7690: does not preclude its elimination from the loop. ! 7691: Setting a giv is ok for eliminating a biv, even if giv is "ignore", ! 7692: since that just means giv will be combined with another. ! 7693: Handle some DEST_ADDR givs for that purpose. ! 7694: Test for giv-setting before check can_eliminate_biv_p. ! 7695: New error check for replaceable giv whose value needed after loop. ! 7696: (only_reg_use_p): New fn. ! 7697: ! 7698: * expr.c (expand_expr): PLUS, MINUS with EXPAND_SUM: ! 7699: Associate even harder. ! 7700: ! 7701: * loop.c (strength_reduce): Treat all constant biv init vals like ints. ! 7702: ! 7703: * loop.c (strength_reduce): Clear all_reduced when v->ignore is set; ! 7704: the code to check this later didn't always do the job. ! 7705: ! 7706: * loop.c (verify_loop): Set loop_continue. ! 7707: (scan_loop): mention its value. ! 7708: * rtl.h: Define NOTE_INSN_LOOP_CONT. ! 7709: * stmt.c (expand_loop_continue_here): Output one. ! 7710: ! 7711: Fri Mar 31 10:08:29 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7712: ! 7713: * c-typeck.c (pointer_int_sum, pointer_diff): Treat const void * like ! 7714: void *. ! 7715: ! 7716: * rtl.c (rtx_addr_varies_p): Don't die on null exp. ! 7717: * cse.c (refers_to_mem_p, refers_to_p): Likewise. ! 7718: ! 7719: * gcc.c (validate_switches, validate_all_switches): New fns. ! 7720: Mark a switch as valid if any compiler spec or the linker spec ! 7721: matches it, even for languages not being used. ! 7722: ! 7723: Thu Mar 30 00:22:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7724: ! 7725: * loop.c (loop_optimize, move_movables): when moving a `clr' insn used ! 7726: in zero-extension, sometimes change it to an `and' so that the ! 7727: significant low bits are not clobbered. ! 7728: ! 7729: * cccp.c: Implement __BASE_FILE__ and #once. ! 7730: (savestring): New fn. ! 7731: (struct file_name_list): new name for struct directory_stack. ! 7732: (enum node_type): Add T_ONCE, T_BASE_FILE. ! 7733: (directive_table): Add #pragma once. ! 7734: (initialize_builtins): Add __BASE_FILE__. ! 7735: (special_symbol): Handle __BASE_FILE__, together with __FILE__. ! 7736: (do_include): Ignore the file if it's on the #pragma once list. ! 7737: (do_once): New fn; add current file to #pragma once list. ! 7738: ! 7739: * cccp.c (do_include): Don't add non-ex files to list of deps. ! 7740: ! 7741: * config.gcc: Use {...:-...}, not {...=...}. ! 7742: ! 7743: * c-parse.y: Add precedence for IF/ELSE, and for parens; ! 7744: avoids some conflicts. ! 7745: ! 7746: * tm-newsgas.h: Include tm-news.h and define USE_GAS. ! 7747: ! 7748: * tm-news.h: New name for tm-news800.h. ! 7749: If not USE_GAS, define SONY_ASM. ! 7750: Don't define USE_GAS by default. ! 7751: (CPP_PREDEFINES): Various alternatives depending on processor type. ! 7752: (ASM_FORMAT_PRIVATE_NAME): Override this. ! 7753: (ASM_IDENTIFY_GCC): Override; output nothing. ! 7754: (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Round fsize up to % 4. ! 7755: Max for halfword link insn is 32k, not 64k. ! 7756: (FUNCTION_EPILOGUE): Don't output move.l if no regs to restore. ! 7757: (PRINT_OPERAND_ADDRESS): Change handling of tableref pc-rel addresses. ! 7758: * m68k.md (movhi): Add SONY_ASM conditional. ! 7759: ! 7760: * cse.c (cse_insn): If replacing a dest address, preserve MEM_IN_STRUCT ! 7761: ! 7762: * gcc.c (error, fatal): alternate varargs defns if HAVE_VPRINTF. ! 7763: ! 7764: Wed Mar 29 09:54:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7765: ! 7766: * gcc.c (process_command): Check WORD_SWITCH_TAKES_ARG, so that ! 7767: -Tdata can be handled right. ! 7768: ! 7769: * stmt.c (check_for_full_enumeration_handling): new fn, for warn_switch ! 7770: (expand_end_case): Call it, if orig index was enum. ! 7771: * toplev.c (main): Handle -Wswitch. ! 7772: * c-parse.y (SWITCH stmt): Pass orig switch expr to expand_end_case. ! 7773: ! 7774: * tm-*.h, out-*.c: Uniformly use reg_names, not reg_name, and don't ! 7775: define any duplicates. ! 7776: * final.c: Delete reg_name. ! 7777: ! 7778: * c-parse.y (is_reserved_word): Add keywords __asm and __inline; ! 7779: also __const and __volatile. ! 7780: (yylex): Keywords that start with `__' are recognized regardless of ! 7781: -traditional or -ansi. ! 7782: ! 7783: * c-parse.y (check_newline): Always recognize #ident. ! 7784: Macro IDENT_DIRECTIVE is no more. ! 7785: If ASM_OUTPUT_IDENT is undefined, don't output anything for #ident. ! 7786: * tm-3b1.h: Don't define IDENT_DIRECTIVE or ASM_OUTPUT_IDENT. ! 7787: * tm-encore.h, tm-i386gas.h, tm-i368v.h, tm-sun386i.h, tm-vaxv.h: ! 7788: Don't define IDENT_DIRECTIVE; define ASM_OUTPUT_IDENT to output in ! 7789: default way. ! 7790: ! 7791: * expr.h (RETURN_IN_MEMORY): New macro, default defn here. ! 7792: * expr.c (expand_call): Use it to control where to return value. ! 7793: * stmt.c (expand_function_start): Likewise. ! 7794: ! 7795: * out-sparc.c (find_addr_reg): Abort if none found. ! 7796: Eliminate confusion; do only one change between tests for PLUSness. ! 7797: (output_move_double): Arg to find_addr_reg is address, not mem ref. ! 7798: * out-m68k.c, out-spur.c, out-i386.c, out-alliant.c: Likewise. ! 7799: ! 7800: * jump.c (find_cross_jump): Don't let either E1 or E2 be included ! 7801: in the range of matching insns preceding the other (E2 or E1). ! 7802: ! 7803: * c-parse.y (check_newline): No error for `#pragma\n'. ! 7804: ! 7805: * Makefile (gcc.o): Control STANDARD_STARTFILE_PREFIX here. ! 7806: ! 7807: * stmt.c (walk_fixup_memory_subreg): handle null. ! 7808: ! 7809: * tm-sparc.h (FUNCTION_BLOCK_PROFILER): Change LPBnn to LPYnn, ! 7810: to avoid conflict with final.c. ! 7811: ! 7812: Tue Mar 28 15:23:17 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7813: ! 7814: * cccp.c (do_include): If fail, print system error message. ! 7815: (perror_with_name): Use more standard error format. Inc. `errors'. ! 7816: ! 7817: * dbxout.c (dbxout_function): Output any temporary types ! 7818: that were made by dbxout itself. ! 7819: ! 7820: * stmt.c: always use an epilogue if pcc-struct-return. ! 7821: (expand_function_start): Compute return_label after testing that. ! 7822: (expand_function_end): Output a return insn after pcc-struct-return ! 7823: processing, if there is a return insn. ! 7824: (expand_null_return): Don't output a return insn, in that case. ! 7825: Simplify the conditions--depends entirely on HAVE_return. ! 7826: ! 7827: * tm-m68k.h (FUNCTION_BLOCK_PROFILER): Use jsr, not call. ! 7828: ! 7829: * reload.c (find_reloads): Certain mem addresses will be offsetable ! 7830: after reloading; in particular, those where reg_equiv_address applies. ! 7831: ! 7832: * loop.c (check_dbra_loop): Change MINUS to COMPARE. ! 7833: ! 7834: * c-typeck.c (convert_for_assignment): Return THE standard error_mark. ! 7835: ! 7836: Thu Mar 23 09:39:02 1989 Richard M. Stallman (rms at watson) ! 7837: ! 7838: * c-parse.y (components): Error if empty. ! 7839: ! 7840: * dbxout.c (dbxout_symbol): Output const variables as N_STSYM. ! 7841: ! 7842: * varasm.c (force_const_mem): Use ASM_OUTPUT_DOUBLE_INT if defnd. ! 7843: ! 7844: * c-decl.c (grokdeclarator): Warn about `long long long'. ! 7845: ! 7846: * reload1.c (reload): When changing REG to MEM, clear REG_USERVAR_P. ! 7847: * final.c (alter_subreg): Preserve volatile bit of MEM. ! 7848: ! 7849: * m68k.md (cmpsi, cmphi): Permit cmpm. ! 7850: ! 7851: * gcc.c (find_file): Use standard_startfile_prefix_2. ! 7852: Now search /usr/local/lib/, /lib/ and /usr/lib/. ! 7853: ! 7854: * tm-m68k.h (PRINT_OPERAND): Support code `d'. ! 7855: * m68k.md (cmpsi, cmphi, cmpqi): Use it for all mem addresses. ! 7856: ! 7857: * final.c (output_asm_insn): Don't allow %LETTER without an ! 7858: operand number. ! 7859: * tm-m68k.h, m68k.md, tm-hp9k320.h, tm-news*.h: Use %@ instead of %s. ! 7860: * tm-alliant.h, alliant.md: Likewise. ! 7861: * i386.md, out-i386.h: Put `0' after each %L, %W, %B, %S, %Q, %R. ! 7862: ! 7863: * stmt.c (expand_end_stmt_expr): Pop pending stack args. ! 7864: ! 7865: * varasm.c (assemble_variable): For 0-size common variable, ! 7866: allocate at least 1 byte. ! 7867: ! 7868: * tm-encore.h (ASM_OUTPUT_DOUBLE, PRINT_OPERAND): Use 0f, not 0l, ! 7869: for doubles. ! 7870: ! 7871: Mon Mar 13 10:24:56 1989 Richard M. Stallman (rms at ccvi) ! 7872: ! 7873: * out-i386.h (function_prologue, function_epilogue): ! 7874: Use call_used_regs, not a copy, so -f options work. ! 7875: Save regs in the opposite order. ! 7876: Save regs even starting from 0 if they happen to be call-saved. ! 7877: ! 7878: * Bug fixes from Rob McMahon. ! 7879: ! 7880: * loop.c (strength_reduce): When inserting insn to set ! 7881: nonreplaceable giv, put it after all the consecutive insns ! 7882: that compute it. ! 7883: ! 7884: * reload.c (find_reloads): When forcing const to mem, ! 7885: use the insn's operand mode, not the const's mode. ! 7886: ! 7887: * reload1.c (choose_reload_targets): Use wider of inmode and outmode ! 7888: when determining have_groups. ! 7889: ! 7890: * reload1.c (choose_reload_targets): typo checked wrong insn with ! 7891: constraint_accepts_reg_p. ! 7892: ! 7893: * reload1.c (choose_reload_targets): Enable #if-0'd code for ! 7894: forgetting old reloads in case of output reload from a non-spill-reg. ! 7895: ! 7896: Sun Mar 12 00:04:49 1989 Richard M. Stallman (rms at ccvi) ! 7897: ! 7898: * c-parse.y (yyerror): Add forward-decl here. ! 7899: * c-tree.h: Delete decl here. ! 7900: ! 7901: * New macro USE_C_ALLOCA. ! 7902: * cse.c (cse_main): Do alloca (0) to clear out C alloca. ! 7903: * flow.c (life_analysis): ! 7904: * local-alloc.c (local_alloc): ! 7905: * reload1.c (reload_as_needed): likewise. ! 7906: ! 7907: * loop.c (emit_iv_init_code, eliminate_biv): ! 7908: Always put constant in a PLUS last. ! 7909: ! 7910: * gcc.c (make_switch): Unused function deleted. ! 7911: ! 7912: *gcc.c (switches): Each switch has a `used' field. ! 7913: (process_command): Init it to 0 when making `switches'. ! 7914: (do_spec_1, handle_braces, give_switch): Set to 1 when switch is used. ! 7915: (main): If it remains 0 at the end, print error message. ! 7916: ! 7917: * expr.c (convert_move, convert_to_mode): Don't truncate a MEM in ! 7918: place if it is volatile. ! 7919: ! 7920: * loop.c (strength_reduce): When reducing a giv, if the biv is ! 7921: incremented between the giv's creation and its use, increment ! 7922: the reduced giv var *after* its use. ! 7923: ! 7924: * c-decl.c (duplicate_decls): Warn about proto vs nonproto ! 7925: only if no other errors apply. ! 7926: ! 7927: * jump.c (invert_exp): Don't crash if arg is null. ! 7928: ! 7929: * alliant.md (float*i*f2): Don't allow immediate ops. ! 7930: (sne): Fix typo, fsne => fsneq. ! 7931: ! 7932: * expr.c (store_one_arg, expand_call): When size doesn't matter, ! 7933: pass const0_rtx, not (rtx) 0. ! 7934: ! 7935: * expr.c (do_jump): Args to invert_exp were missing. ! 7936: ! 7937: * gcc.c (store_arg): Now 2 separate args for delete-on-success ! 7938: and delete-on-failure. All calls changed. ! 7939: (do_spec_1): DELETE_THIS_FILE is meaningful for output files. ! 7940: ! 7941: * config/xm-alliant.h (LINK_SPEC): Pass -X to linker. ! 7942: ! 7943: Sat Mar 11 10:30:41 1989 Richard M. Stallman (rms at ccvi) ! 7944: ! 7945: * tm-*.h, xm-*.h, *.md: Moved to subdir `config'. ! 7946: * output-*.c: Moved to `config/out-*.c'. ! 7947: * Makefile (.c.o): Define rule to use -Iconfig when compiling. ! 7948: (various): Delete the commands from some compilation rules. ! 7949: Put -Iconfig in other compilation commands. ! 7950: Also some reordering of variable defs and comments for cleanliness. ! 7951: (realclean): Change a shell comment to a Make comment. ! 7952: ! 7953: * fold-const.c (fold): Simplify and extend TRUTH_... operators ! 7954: knowing that args must be ints and values will be 0 or 1. ! 7955: ! 7956: * gcc.hlp: New file (for VMS). ! 7957: ! 7958: * reload1.c (reload): Don't let two 2-groups overlap. ! 7959: ! 7960: * reload.c (push_reloads): When a plain reg matches a reload ! 7961: for an increment, don't change the reload_in to a plain reg. ! 7962: Leave the increment there. ! 7963: ! 7964: * integrate.c (expand_inline_function): Don't try to inline ! 7965: unless the parm machine modes really match what's expected. ! 7966: ! 7967: * stmt.c (emit_case_nodes): default_label is an rtx, not tree. ! 7968: ! 7969: * tm-next.h (DOLLARS_IN_IDENTIFIERS): Define it as 1. ! 7970: ! 7971: * output-sparc.c (output_move_double): Don't trust random structs ! 7972: to be double-word aligned. ! 7973: ! 7974: * gcc.c: Pass -Wcomments to cpp. ! 7975: ! 7976: * rtl.def (ASM_OPERANDS): New operands, source file and line. ! 7977: * rtl.h (ASM_OPERANDS_*): New macros for components of ASM_OPERANDS. ! 7978: * stmt.c (expand_asm_operands): Use new fields, not REG_ASM_* notes. ! 7979: * toplev.c (error_for_asm): likewise. ! 7980: * rtl.h (enum reg_note): Delete REG_ASM_FILE, REG_ASM_LINE. ! 7981: ! 7982: * combine.c (try_combine): Check explicitly for volatility in I2, I1. ! 7983: ! 7984: Fri Mar 10 19:30:10 1989 Richard M. Stallman (rms at ccvi) ! 7985: ! 7986: * c-parse.y (GOTO stmt): Set TREE_USED for the label. ! 7987: * c-decl.c (poplevel): Warn about unused label. ! 7988: ! 7989: * c-decl.c (warn_pointer_arith, warn_strict_prototypes): New vars. ! 7990: (lang_decode_options): Options to set them. ! 7991: * c-typeck.c (pointer_int_sum, c_sizeof): Maybe warn if bad target. ! 7992: * c-decl.c (grokparms): Maybe warn if nonprototype fn decl. ! 7993: ! 7994: * flags.h, toplev.c (warn_shadow): New flag. ! 7995: * toplev.c (main): Decode it. ! 7996: * c-decl.c (pushdecl): Maybe warn about any shadowing. ! 7997: Existing parm-shadowing warning now disabled if shadowing decl ! 7998: is also a parm. ! 7999: ! 8000: * flags.h, toplev.c (warn_id_clash, id_clash_len): New flags. ! 8001: * toplev.c (main): Decode -Wid-clash-LEN. ! 8002: * tree.c (get_identifier): Implement warning if two idents match. ! 8003: ! 8004: * toplev.c (compile_file): Warn about statics defined and unused. ! 8005: ! 8006: * rtl.h (CONST0_RTX): New macro. ! 8007: ! 8008: * recog.c (offsetable_address_p): New 1st arg says whether to demand ! 8009: a strictly valid address. ! 8010: (offsetable_memref_p): Pass nonzero. ! 8011: * stmt.c (optimize_bit_field): Pass zero. ! 8012: ! 8013: * cccp.c (main): Allow -Wcomment like -Wcomments. ! 8014: * c-decl.c (lang_decode_options): Likewise. ! 8015: ! 8016: Sun Mar 5 15:02:59 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) ! 8017: ! 8018: * m68k.md [tstdf, cmp[sd]f, truncdfsf2, floatsi[sd]f2, add[sd]f3, ! 8019: sub[sd]f3, mul[sd]f3, div[sd]f3, neg[sd]f2, abs[sd]f2]: Made sure ! 8020: that the test function's in the match_operands of the define_expand ! 8021: and define_insn's matched, and made that test function ! 8022: "register_operand" when both define_insn's really needed registers ! 8023: in that spot. ! 8024: ! 8025: Sat Mar 4 00:25:37 1989 Richard M. Stallman (rms at c2v) ! 8026: ! 8027: * expr.c (emit_push_insn): Don't ever bypass the big-endian ! 8028: padding at the end. ! 8029: ! 8030: * cccp.c (deps_output): Break line if would otherwise exceed 75 chars. ! 8031: Make a name for that value 75. ! 8032: ! 8033: * combine.c (subst): Handle general case of (subreg (sign_extend X)). ! 8034: ! 8035: * tm-sun386i.h (CPP_PREDEFINES): Define `sun'. ! 8036: ! 8037: * fixincludes: change `find' calls to find dirs thru symlinks. ! 8038: ! 8039: * flow.c (mark_set_1): (set (subreg (reg N))...) ! 8040: does make reg N significant for this basic block. ! 8041: ! 8042: Fri Mar 3 13:55:25 1989 Richard M. Stallman (rms at c2v) ! 8043: ! 8044: * c-decl.c (parmlist_tags_warning): Print an explanation ! 8045: for the first such warning. ! 8046: ! 8047: * i386.md (extendsfdf): Let op 1 match op0 if that is an fp reg. ! 8048: ! 8049: * expr.c (expand_call): Fix stupid errors copying pcc struct value. ! 8050: ! 8051: * varasm.c (output_constructor): Discard NOP_EXPRs from build_c_cast. ! 8052: ! 8053: Thu Feb 23 05:55:57 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8054: ! 8055: * Version 1.34 released. ! 8056: ! 8057: * c-typeck.c (build_c_cast): If EXPR is an error mark, return that. ! 8058: ! 8059: * fold-const.c (div_and_round_double): Abort if divisor is 0. ! 8060: (combine): Likewise, for real constants. ! 8061: (real_zerop): New subroutine. ! 8062: (fold): Don't try to fold division if divisor is 0. ! 8063: Don't try to fold reals if can't do arithmetic on them. ! 8064: Don't try to compare reals for TRUTH_..._EXPR if can't do arith. ! 8065: Use real_zerop to test reals for zeroness. ! 8066: For TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR, can simplify based on ! 8067: first operand alone. ! 8068: ! 8069: * c-typeck.c (store_init_value): Fix error msg text. ! 8070: ! 8071: * tm-sparc.h (FUNCTION_PROFILER): Use `mcount'. ! 8072: * tm-sun4os3.h (FUNCTION_PROFILER): Override it; use `.mcount'. ! 8073: ! 8074: Wed Feb 22 04:33:22 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8075: ! 8076: * tm-hp9k320.h (CPP_SPEC, CPP_PREDEFINES): Make handling of ! 8077: -Dmc68000 depend on TARGET_DEFAULT. ! 8078: ! 8079: * tm-sparc.h (FUNCTION_PROFILER): Missing newline in fprintf. ! 8080: ! 8081: * integrate.c (expand_inline_function): Don't map struct-value-address ! 8082: in memory if fn does not use it. ! 8083: ! 8084: * c-parse.y (check_newline): At skipline, detect eof. ! 8085: ! 8086: * stmt.c (uninitialized_vars_warning): Change text of warning. ! 8087: ! 8088: Tue Feb 21 03:58:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8089: ! 8090: * output-sparc.c (output_mul_insn): Handle case of both args ! 8091: in reg 8, or both in reg 9. ! 8092: ! 8093: * tm-sparc.h (ASM_SPEC): Define, to handle -pipe. ! 8094: ! 8095: * tm-sparc.h (FUNCTION_PROFILER): Add omitted fprintf args. ! 8096: (BLOCK_PROFILER): Likewise. Use tempvar. ! 8097: ! 8098: * m68k.md (QImode btst): Allow nonoffsetable mem refs. ! 8099: ! 8100: Mon Feb 20 00:32:42 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8101: ! 8102: * flow.c (mark_used_regs): Don't record about global reg vars. ! 8103: ! 8104: * config.gcc (convex-*): tm file names are tm-convex1.h, tm-convex2.h. ! 8105: ! 8106: * tm-vax.h, tm-ns32k.h, tm-alliant.h: Define PCC_STATIC_STRUCT_RETURN. ! 8107: ! 8108: * gcc.c (compilers): Pass `-a' to cc1. ! 8109: * tm-sun3.h, tm-sparc.h (LIB_SPEC): Define, to handle `-a'. ! 8110: ! 8111: * expr.c (emit_push_insn): Copy stack addresses to be passed to bcopy; ! 8112: old method of preadjustment is broken by changes in emit_library_call. ! 8113: ! 8114: * c-decl.c (finish_decl): New temp `temporary'; don't get confused ! 8115: about whether allocation was temporary. ! 8116: ! 8117: Sun Feb 19 17:03:35 1989 Chris Smith (csmith at mozart) ! 8118: ! 8119: * tm-convex.h: define PCC_STATIC_STRUCT_RETURN ! 8120: ! 8121: * convex.md: ! 8122: remove pshea patterns, movsi does it better. ! 8123: add ashift:DI abs:DF abs:SF ! 8124: (tstdi): use a clobbered register instead of a bogus DImode zero. ! 8125: (trunchiqi2): delete noninstruction cvth.b ! 8126: (udivsi3, udivhi3, udivqi3): deleted, expand_divmod does it now. ! 8127: (call, call_value): delete stupid call/ret -> jump optimization. ! 8128: (call, call_value): flush call_ap_check, use reg_mentioned_p instead. ! 8129: ! 8130: * convex.md: (movxx): swap constraint alternatives so that the ! 8131: leftmost alternative is (set =g r). This makes (set mem const) ! 8132: get combinable input reloads of const instead of uncombinable ! 8133: output reloads to mem. They still do not combine, but wtf, ! 8134: I'll inch up on it. ! 8135: ! 8136: * output-convex.c: (const_double_{high,low}_int): new routines ! 8137: to pick apart const_doubles for assembler. ! 8138: ! 8139: Sun Feb 19 01:40:17 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8140: ! 8141: * sparc.md (shift memory right 24 bits): Another `a1' typo. ! 8142: ! 8143: * config.gcc (convex-*): Delete troublesome whitespace. ! 8144: ! 8145: * c-decl.c (grokparms): Delete redundant `parm != 0' tests. ! 8146: ! 8147: * stmt.c (fixup_memory_subreg): Slight simplification. ! 8148: ! 8149: * tm-sparc.h (FUNCTION_PROFILER): Fill delay slot. ! 8150: (FUNCTION_BLOCK_PROFILER): Use sethi. ! 8151: (BLOCK_PROFILER): Use %g2, not %g0. Use sethi. ! 8152: ! 8153: Sat Feb 18 02:11:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8154: ! 8155: * expr.c (expand_expr): Ignore const array's initial value ! 8156: if it's an error_mark. ! 8157: * c-decl.c (finish_decl): Set DECL_INITIAL to an error_mark ! 8158: if the decl is a permanent node. ! 8159: ! 8160: * cccp.c (rescan): If traditional, if macro ends inside string, ! 8161: keep scanning for the end of the string. ! 8162: (handle_directive): A line of just `#' becomes blank. ! 8163: (collect_expansion): \ in strings traditionally doesn't hide macro arg. ! 8164: ! 8165: * m68k.md, alliant.md (addsi3): New alternative a=r+a, in addition ! 8166: to old a=a+r, needed since reload-insns are not commuted. ! 8167: ! 8168: Fri Feb 17 03:15:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8169: ! 8170: * tm-m68k.h (PCC_STATIC_STRUCT_RETURN): Define it. ! 8171: * toplev.c, flags.h: New var flag_pcc_struct_return. ! 8172: * stmt.c (expand_function_start): Obey new flag and new variable. ! 8173: * expr.c (expand_call): Obey new flag and new variable. ! 8174: * varasm.c (assemble_static_space): New function. ! 8175: ! 8176: * stmt.c (expand_return): If we need cleanups, compute retval first ! 8177: into pseudo reg, then do the cleanups, then copy it to return reg. ! 8178: ! 8179: Thu Feb 16 02:59:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8180: ! 8181: * regclass.c (init_reg_sets_1): Win if STATIC_CHAIN_REGNUM undefined. ! 8182: ! 8183: * expr.c (expand_call): Handle conflict between two precomputed ! 8184: args that are both function calls returning structures. ! 8185: ! 8186: * loop.c (move_movables): Bkwds test of m->partial, for a matching reg. ! 8187: ! 8188: * expr.c (emit_library_call, expand_call): Handle STACK_ARGS_ADJUST. ! 8189: ! 8190: Wed Feb 15 01:59:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8191: ! 8192: * toplev.c (flag_caller_saves): New var, for -fcaller-saves. ! 8193: DEFAULT_CALLER_SAVES controls initial value. ! 8194: * global-alloc.c (find_reg): Do caller saves only if flag set. ! 8195: * local-alloc.c (find_free_reg): Do caller saves only if flag set. ! 8196: * tm-alliant.h, tm-convex.h: Define DEFAULT_CALLER_SAVES. ! 8197: ! 8198: Wed Feb 15 01:59:15 1989 Chris Smith (rms at sugar-bombs.ai.mit.edu) ! 8199: ! 8200: * caller-save.c: New file. ! 8201: * regs.h (CALLER_SAVE_PROFITABLE): New macro. ! 8202: (reg_n_calls_crossed): new int-vector replaces reg_crosses_calls. ! 8203: * flow.c (allocate_for_life_analysis, propagate_block, dump_flow_info): ! 8204: Use reg_n_calls_crossed. ! 8205: * stupid.c (stupid_mark_refs, stupid_life_analysis): Likewise. ! 8206: * global-alloc.c (find_reg): Sometimes allocate call-clobbered regs ! 8207: for call-crossing pseudos. ! 8208: New arg ACCEPT_CALL_CLOBBERED; callers changed. ! 8209: * local-alloc.c (find_free_reg): Similar changes. ! 8210: (qty_n_calls_crossed): New int-vector replaces qty_crosses_calls. ! 8211: (alloc_qty, local_alloc, combine_regs, find_free_reg): change that var. ! 8212: * regclass.c (call_fixed_regs, call_fixed_reg_set): new vars. ! 8213: (init_reg_sets_1): Initialize them. ! 8214: * reload1.c (reload): Call caller-saves processing if needed. ! 8215: ! 8216: Wed Feb 15 01:59:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8217: ! 8218: * expr.c (expand_expr): INTEGER_CST for DImode: don't handle ! 8219: endianness here. So CONST_DOUBLE_LOW is always the low word. ! 8220: * varasm.c (force_const_mem): Handle it here. ! 8221: ! 8222: * expr.c (convert_move): widening followed by extendsidi2 had braino. ! 8223: ! 8224: * integrate.c: Don't include ctype.h; not needed and kills Sun cpp. ! 8225: ! 8226: * m68k.md (cmpsf, cmpdf and their recognizers): ! 8227: Replace MINUS with COMPARE. ! 8228: Also, use VOIDmode for COMPAREs, not SF or DF. ! 8229: ! 8230: * optabs.c (sign_expand_binop): Handle ops such as division where ! 8231: an unsigned char could be widened and handled with signed int insns. ! 8232: * expmed.c (expand_divmod): Use that. ! 8233: ! 8234: * c-typeck.c (digest_init): Allow for type variants in validating ! 8235: initialization from a string constant. ! 8236: ! 8237: * c-typeck.c (decl_constant_value): Disable opt. if pedantic or ! 8238: outside functions, so that validity of program is never affected. ! 8239: ! 8240: * fold-const.c (fold): Signedness-test for ABS_EXPR was backwards. ! 8241: ! 8242: Tue Feb 14 01:30:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8243: ! 8244: * cccp.c (main): Don't omit normal output, if we want deps on ! 8245: a separate stream. ! 8246: ! 8247: * c-decl.c (grokdeclarator): Don't record any arg types for functions ! 8248: if -traditional. ! 8249: ! 8250: * print-tree.c (prtypeinfo): Mention permanent attribute. ! 8251: ! 8252: * tm-next.h: New file. ! 8253: ! 8254: * c-typeck.c (decl_constant_value): The DECL_INITIAL may be ERROR_MARK. ! 8255: ! 8256: * c-decl.c (duplicate_decls): For fns, new static decl overrides ! 8257: old non-static one. ! 8258: ! 8259: * emit-rtl.c (gen_lowpar, gen_highpart): Use change_address, so we ! 8260: preserve volatility, etc. ! 8261: ! 8262: * stmt.c (expand_expr_stmt): Use emit_filename, emit_lineno ! 8263: as file and line for any warning. ! 8264: * emit-rtl.c (emit_line_note): Set those vars. ! 8265: ! 8266: * c-decl.c (store_parm_decls): If -Wimplicit, warn of arg with no decl. ! 8267: ! 8268: * recog.c (offsetable_address_p): Use strict_memory_address_p, ! 8269: since called from reload.c. ! 8270: ! 8271: Mon Feb 13 03:11:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8272: ! 8273: * sparc.md (compare-to-reg patterns): Some still had MINUS. ! 8274: ! 8275: * toplev.c (main): Warn if `-a' on system that can't handle it. ! 8276: ! 8277: * stmt.c (expand_asm_operands): Delete unused local `val'. ! 8278: (pushcase_range): Likewise for `value'. ! 8279: (fixup_var_refs): Likewise for `insn'. ! 8280: * emit-rtl.c (start_sequence): Likewise for `save'. ! 8281: * loop.c (scan_loop): Likewise for `before_start'. ! 8282: * expr.c (expand_expr): Delete label `binop1'. ! 8283: ! 8284: * reload1.c (constraint_accepts_reg_p): Handle SUBREGs of REGs. ! 8285: ! 8286: Sun Feb 12 05:37:46 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8287: ! 8288: * gnulib.c (__bb_init_func): New function ! 8289: ! 8290: * tm-m68k.h (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): Defined. ! 8291: ! 8292: Sat Feb 11 00:05:55 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8293: ! 8294: * tm-sparc.h (FUNCTION_PROFILER): Make it really work. ! 8295: (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): New macros. ! 8296: ! 8297: * final.c (final): Use BLOCK_PROFILER at start of each basic block. ! 8298: (final_start_function): Use FUNCTION_BLOCK_PROFILER if -a. ! 8299: (end_final): New fn to output the block-profiling tables. ! 8300: * toplev.c (profile_block_flag): Set if -a. ! 8301: (compile_file): Call end_final. ! 8302: ! 8303: * combine.c (try_combine): Avoid combining in most cases if I3 ! 8304: has an inc or dec and I1 or I2 uses the same register. ! 8305: ! 8306: * tree.c (size_in_bytes, int_size_in_bytes): Use type's main variant. ! 8307: ! 8308: * c-typeck.c (actualparameterlist): Error if parm type is incomplete. ! 8309: ! 8310: * expr.c (expand_call): Ignore args that have incomplete type. ! 8311: ! 8312: Fri Feb 10 02:26:02 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8313: ! 8314: * c-parse.y (case stmts): strip dummy NOP_EXPRs. ! 8315: ! 8316: * reload1.c (reload_as_needed): Clear reg_{has,is}_output_reload here, ! 8317: (choose_reload_targets): not here. ! 8318: ! 8319: Thu Feb 9 01:35:55 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8320: ! 8321: * output-sparc.c (output_mul_by_constant): Forget cc status. ! 8322: ! 8323: * stmt.c (assign_parms): Don't put volatile parms in regs. ! 8324: ! 8325: * vax.md (jlbs/jlbc recognizers): Move them before jbc/jbs recognizers. ! 8326: ! 8327: * cse.c (fold_rtx): Handle (EQ (COMPARE ...) (CONST_INT 0)). ! 8328: ! 8329: * c-typeck.c (default_conversion, digest_init): For static const ! 8330: nonvolatile scalar variable, use its initial value if known. ! 8331: ! 8332: * expr.c (expand_expr: case COMPONENT_REF): If containing structure ! 8333: comes out volatile, leave the component MEM volatile too. ! 8334: ! 8335: * hard-reg-set.h: Fix multi-word case macros to swallow semicolon. ! 8336: ! 8337: * c-typeck.c (default_conversion): In array=>ptr, volatility ! 8338: of target type comes from TREE_THIS_VOLATILE, not TREE_VOLATILE. ! 8339: ! 8340: * reload1.c (forget_old_reload_1, choose_reload_targets): ! 8341: New array reg_is_output_reload is converse of reg_has_output_reload. ! 8342: forget_old_reload_1 needs both. ! 8343: ! 8344: Wed Feb 8 01:26:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8345: ! 8346: * reload1.c (forget_old_reloads_1): New fn, guts of forget_old_reloads. ! 8347: Do process a spill reg if it isn't used for reloading in this insn. ! 8348: (forget_old_reloads): Deleted, replaced with note_stores. ! 8349: (reload_as_needed): Undo Feb 1 change. ! 8350: Call forget_old_reloads_1 on pseudos autoincremented and not reloaded. ! 8351: ! 8352: * c-typeck.c (convert_for_assignment): Handle variant types. ! 8353: ! 8354: * c-decl.c (lang_decode_option): -Wall implies -Wunused. ! 8355: ! 8356: Tue Feb 7 01:32:28 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8357: ! 8358: * combine.c (try_combine): Don't try adding outputs to an asm_operands. ! 8359: ! 8360: * cse.c (CHEAPER): Don't ever let a hard reg get ahead of a pseudo. ! 8361: ! 8362: * stmt.c (fixup_gotos): Don't crash on undef label if THISBLOCK is 0. ! 8363: ! 8364: * c-decl.c (parmlist_tags_warning): New fn. ! 8365: * c-parse.y (parmlist, parmlist_or_identifiers): Call it, ! 8366: to warn about any tags defined inside the parmlist. ! 8367: * c-decl.c (grokparms): Don't warn about ptr to incomplete type. ! 8368: The new warning is better. ! 8369: ! 8370: Mon Feb 6 01:11:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8371: ! 8372: * expr.c (store_constructor): Incorrect ALIGN arg in store_field calls. ! 8373: ! 8374: * c-parse.y (%union): Delete unused alternative. ! 8375: ! 8376: * c-decl.c (grokparms): Use main variant to test for ptr to incomplete. ! 8377: ! 8378: * c-decl.c (finish_enum): Delete superfluous init for `pair'. ! 8379: ! 8380: * cse.c (fold_rtx): Optimize X+0, X-0 in floating point. ! 8381: Fix typo in PLUS case; omitted value to compare GET_MODE_CLASS against. ! 8382: (equiv_constant): Allow CONST_DOUBLE. ! 8383: ! 8384: * cse.c: Optimize past if-statements that are known to fail. ! 8385: (cse_insn): If condjump becomes uncond to end of this block, ! 8386: set cse_skip_to_next_block. ! 8387: (cse_basic_block): If that happens, ignore rest of block, and maybe ! 8388: treat next block as part of this one (if tables have room). ! 8389: Resume insn that starts next basic block to be scanned. ! 8390: (cse_main): Make room for at least 500 qtys. ! 8391: (cse_end_of_basic_block): Subroutine broken out of cse_main. ! 8392: ! 8393: * c-parse.y (hash, is_reserved_word): Rewrite: new hash technique. ! 8394: ! 8395: * c-decl.c (duplicate_decls): Be smart about proto vs nonproto mismatch ! 8396: involving a function definition. ! 8397: ! 8398: Sun Feb 5 17:31:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8399: ! 8400: * alliant.md (movdi): Typo in `fmoved'. ! 8401: (ftruncsf2): Handle moving into fp reg. ! 8402: ! 8403: * jump.c (jump_optimize): Typo in testing PRESERVE_DEATH_INFO_REGNO_P. ! 8404: ! 8405: * reload1.c (choose_reload_targets): Move all death notes to the ! 8406: output reload insn. ! 8407: ! 8408: * m68k.md (fix_truncsfsi2,fix_truncdfsi2): Use accurate rtl pattern. ! 8409: ! 8410: * loop.c (delete_insn_forces): Use presence of REG_RETVAL to check ! 8411: for value-of-library-call insn. ! 8412: ! 8413: Sat Feb 4 18:17:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8414: ! 8415: * integrate.c (expand_inline_function): Make addresses of stack ! 8416: slots valid somehow. ! 8417: ! 8418: * tm-3b1.h (DIVSI3_LIBCALL, etc.): Define these macros; avoid gnulib. ! 8419: ! 8420: * expmed.c (store_bit_field): Avoid (subreg (mem)) when converting ! 8421: VALUE1 to SImode. ! 8422: ! 8423: * jump.c (jump_optimize): Do delete USE and CLOBBER insns. ! 8424: This is needed for proper jump optimization. ! 8425: ! 8426: * rtl.def (COMPARE): New code. ! 8427: * *.md (compare and related patterns): Use COMPARE, not MINUS:VOID. ! 8428: * loop.c (eliminate_biv, can_eliminate_biv_p): Likewise. ! 8429: * cse.c (fold_rtx, fold_cc0, cse_insn): ! 8430: * output-m88k.c (output_{f,}compare, output_store): ! 8431: * output-sparc.c (strict_single_insn_op_p, single_insn_src_p, safe_insn_src_p): ! 8432: * combine.c (subst): ! 8433: * jump.c (jump_back_p): ! 8434: ! 8435: Fri Feb 3 18:34:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8436: ! 8437: * output-i386.c (notice_update_cc): If arith insn sets the cc's, ! 8438: discard all remnants of previous cc value and flags. ! 8439: ! 8440: * sparc.md (ashiftrt mem by 24): Fix typo `a1'. ! 8441: ! 8442: Thu Feb 2 14:55:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8443: ! 8444: * output-sparc.c (output_mul_insn): Clear the CC status. ! 8445: ! 8446: Wed Feb 1 20:01:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8447: ! 8448: * Version 1.33 released. ! 8449: ! 8450: * reload1.c (reload_as_needed): On entering new basic block, ! 8451: if it didn't need reload regs, forget all inherited contents of those. ! 8452: ! 8453: * tm-alliant.h (NOTICE_UPDATE_CC): Floating moves don't set the cc's. ! 8454: Also delete the clauses and tests for FPA regs. ! 8455: ! 8456: Tue Jan 31 21:51:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8457: ! 8458: * config.gcc: Handle convex-c1, convex-c2. ! 8459: * tm-convex1.h, tm-convex2.h: New files that include tm-convex.h. ! 8460: * tm-convex.h: Define switches -mnoc1, -mnoc2. ! 8461: ! 8462: * config.gcc: rename `nofp' to `nfp', to match the file names. ! 8463: ! 8464: Mon Jan 30 22:12:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8465: ! 8466: * output-sparc.c (output_delay_insn): Extract the operands, ! 8467: call alter_subreg, constrain_operands and NOTICE_UPDATE_CC. ! 8468: So callers other than output_eager_then_insn don't lose. ! 8469: (output_eager_then_insn): No need to do that stuff. ! 8470: ! 8471: * symout.c (symout_block_symbols): Handle (MEM (REG)) for ! 8472: variable-sized arrays. ! 8473: ! 8474: * tm-encore.h (ASM_SPEC): Always pass -j; avoid jump-range lossage. ! 8475: ! 8476: Sun Jan 29 17:06:26 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8477: ! 8478: * alliant.md: Fix refs to CONST_DOUBLEs to use CONST_DOUBLE_{HIGH,LOW}. ! 8479: ! 8480: * combine.c (subst): (minus (zero_extend ...) (const_int ...)) opt. ! 8481: now limited to within the context of (set (cc0) ...). ! 8482: ! 8483: Sat Jan 28 14:26:08 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8484: ! 8485: * cse.c (fold_cc0): Missing `&' extracting CONST_DOUBLEs. ! 8486: (fold_rtx): Don't put CONST_DOUBLEs together into a (CONST (PLUS...)). ! 8487: ! 8488: * output-convex.c (gen_cmp): Recognize CONST_DOUBLE as a constant. ! 8489: ! 8490: * tree.c (build_real_from_int_cst): Typo in REAL_ARITHMETIC case. ! 8491: ! 8492: * Makefile (bootstrap2): Don't use bootstrap3 as subroutine. ! 8493: ! 8494: * varasm.c (force_const_mem): Put the CONST_DOUBLE on the chain ! 8495: if its MEM is stored in it; so it can be cleared at end of function. ! 8496: ! 8497: * stmt.c (emit_case_nodes): Put a compare before each cond-jump. ! 8498: Two cond-jumps after one cond is invalid and makes cse produce garbage. ! 8499: ! 8500: Fri Jan 27 01:05:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8501: ! 8502: * tm-sun2.h (CPP_SPEC): Define __HAVE_68881__ only if -m68881. ! 8503: ! 8504: * c-decl.c (start_decl): Don't expand_decl if DECL already has rtl. ! 8505: (grokparms): If just declaring fcn, incomplete parm type is just ! 8506: a warning, and don't discard the specified type. ! 8507: ! 8508: * expmed.c (expand_divmod): Be smarter about not clobbering args ! 8509: with intermediate results; one mem can clobber another, and a reg ! 8510: can clobber a mem. ! 8511: ! 8512: * tm-i386.h (FUNCTION_PROFILER): Use LPREFIX. May actually work now. ! 8513: * tm-i386gas.h: Include tm-bsd386.h, not tm-att386.h. ! 8514: This means changing asm syntax. ! 8515: #undef DBX_NO_XREFS and DBX_CONTIN_LENGTH. ! 8516: ! 8517: * sparc.md (eager branch peepholes): Don't forget 2nd arg to ! 8518: safe_insn_src_p. ! 8519: Don't print warnings. ! 8520: * output-sparc.c: (strict_single_insn_op_p): Return 0 for floating ! 8521: REG or MEM, since copying that may take 2 insns. ! 8522: (operands_satisfy_eager_branch_peephole): require delay insn to ! 8523: be strict_single_insn_op_p as well as safe_insn_src_p. ! 8524: (operand_clobbered_before_used_after): Don't print warnings. ! 8525: ! 8526: * varasm.c (decode_rtx_const): Clear entire structure incl. gaps. ! 8527: Avoids spurious hash mismatches. ! 8528: (force_const_mem): If CONST_DOUBLE, store its CONST_DOUBLE_MEM field. ! 8529: Also look in that field rather than hashing, to save time. ! 8530: ! 8531: * c-typeck.c (build_c_cast): If value is literal, mark NOP_EXPR as so. ! 8532: (store_init_value): Change error msg. ! 8533: ! 8534: * c-decl.c (duplicate_decls): Classify prototype vs nonprototype ! 8535: mismatches better. ! 8536: ! 8537: * tm-3b1.h: Fix comment. ! 8538: ! 8539: Wed Jan 25 12:46:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8540: ! 8541: * Makefile (cleanlinks): Use -f. ! 8542: ! 8543: Tue Jan 24 17:54:16 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8544: ! 8545: * cse.c (canon_hash): Fix paren error in last change. ! 8546: ! 8547: * varasm.c (immed_real_const_1): Missing arg to bcmp. ! 8548: ! 8549: Mon Jan 23 02:43:45 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8550: ! 8551: * stor-layout.c (layout_type): BLKmode elts force array to be BLKmode. ! 8552: ! 8553: * genpeep.c, genoutput.c, genemit.c: Put `#include "real.h"' in output. ! 8554: ! 8555: * stmt.c (expand_expr_stmt): No "no effect" warning for error-mark. ! 8556: ! 8557: * varargs.h: Rename implicit arg name to __builtin_va_alist ! 8558: which triggers code in assign_parms. Does this really matter? ! 8559: ! 8560: * sparc.md (sne): New define_expand. ! 8561: (seq recognizers): Handle sne as well. ! 8562: * output-sparc.c ({strict_,}single_insn_src_p): ! 8563: Some NEG and MINUS insns are actually 2 asm insns. ! 8564: (safe_insn_src_p): No floating arith is safe; they can trap. ! 8565: (eq_or_neq): New fn, for seq/sne recognizers. ! 8566: ! 8567: * c-decl.c (grokdeclarator, size of array type): ! 8568: Strip from SIZE any NOP_EXPRs that don't change anything. ! 8569: ! 8570: * reload.c, recog.c: Include real.h so constraint macros can examine ! 8571: CONST_DOUBLEs. ! 8572: ! 8573: Sun Jan 22 04:12:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8574: ! 8575: * c-decl.c (init_decl_processing): Define __builtin_saveregs. ! 8576: * tree.h: likewise. ! 8577: * expr.c (expand_builtin): Handle it. ! 8578: ! 8579: * tm-sparc.h: Define TARGET_EAGER and -meager. ! 8580: * sparc.md (eager branch peepholes): Reenable, but test TARGET_EAGER. ! 8581: Change fb insns to use %F. Delete `,a' from some of them. ! 8582: * jump.c (jump_optimize): Don't delete USE and CLOBBER insns. ! 8583: ! 8584: * xm-vms.h (const): Define it as empty. ! 8585: ! 8586: * make-cccp.com: Move the rename of cexp_tab.c. ! 8587: Compile cccp.c with no macro definitions. ! 8588: ! 8589: * cccp.c (main): VMS conditional for setting max_include_len. ! 8590: ! 8591: Sat Jan 21 12:53:00 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8592: ! 8593: * varargs.h (va_start): On sparc, call __builtin_saveregs. ! 8594: Delete the old conditional that used va-sparc.h. ! 8595: Rename macros and locals to start with two underscores. ! 8596: * va-sparc.h: File deleted. ! 8597: ! 8598: * c-decl.c (store_parm_decls): Initialize OTHERS. ! 8599: ! 8600: * stmt.c (assign_parms): Obey layout_decl. ! 8601: ! 8602: Fri Jan 20 02:19:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8603: ! 8604: * cse.c (fold_rtx): For SYMBOL_REF and LABEL_REF, mask address ! 8605: to 16 bits. ! 8606: ! 8607: * tree.h (NUM_TREE_CODES): NUM_TREE_CODE renamed. ! 8608: ! 8609: Thu Jan 19 13:53:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8610: ! 8611: * c-typeck.c (mark_addressable): For global reg var, report error. ! 8612: Now returns an int; value of 0 means caller should fail. ! 8613: All calls (in this file) changed. ! 8614: ! 8615: * stor-layout.c (layout_decl): Don't let an more than 1 word ! 8616: of any aggregate go in any 1 register. (Needed for machines whose ! 8617: integer regs are 64 bits). ! 8618: ! 8619: * tm-convex.h, xm-convex.h, convex.md, output-convex.c: new files. ! 8620: ! 8621: * expr.c (convert_move): Use extendqidi2, etc. for converting ! 8622: small ints to double ints. Use zero_extendsidi2 rather than ! 8623: clearing the high half. ! 8624: ! 8625: Wed Jan 18 01:20:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8626: ! 8627: * varasm.c (make_decl_rtl): If global `register' decl is invalid, ! 8628: make ordinary non-register rtl. ! 8629: ! 8630: * output-sparc.c (operand_clobbered_before_used_after): new fn. ! 8631: (reg_clobbered_p, safe_insn_src_p): New fns. ! 8632: (single_insn_src_p): Treat constants all as ok, even though not ! 8633: always literally so. Also accept some SIGN_EXTENDs and ZERO_EXTENDs. ! 8634: (strict_single_insn_src_p): New fn, like above but is strict ! 8635: about constants and constant memory addresses. ! 8636: (relop): New fn. ! 8637: (output_move_double): Don't make a MEM, and don't use %m. ! 8638: (output_delayed_branch): New name for output_delay_insn. ! 8639: Now handle non-small constant operands. ! 8640: Avoid duplicate loads of g1 for constant addresses. ! 8641: Use recog_operand directly for output of the delay insn. ! 8642: (output_delay_insn): Now a completely new fn. ! 8643: (output_eager_then_insn, next_real_insn_no_labels): New fns. ! 8644: (operands_satisfy_eager_branch_peephole): New fn. ! 8645: ! 8646: * sparc.md: New peepholes for testing a recently used operand. ! 8647: New peepholes for delayed branches, incl. conditional ones. ! 8648: ** Some of them commented out because they seem not to work. ! 8649: (andcc recognizer): Fix typo, missing %. ! 8650: (bgt): Change bgt to bg in output. ! 8651: (reversed jumps): Replace with one pattern using match_operand. ! 8652: It uses %F to output the condition. ! 8653: (movsi): For round-valued immed const, use just a sethi. ! 8654: For other immed, use explicit sethi and or. ! 8655: (movhi, movqi): use `move' for reg source or small int source. ! 8656: For other immed, use explicit sethi and or. ! 8657: (movsi, etc.): Handle all constant addresses like SYMBOL_REFs. ! 8658: (movsf): Delete never-used duplicate code for constant addresses. ! 8659: (addsi3, subsi3, cse'd multiply): Use sethi and or, rather than set. ! 8660: (andsi3, iorsi3, xorsi3): Likewise. ! 8661: (jump): Make an annulled branch. ! 8662: ! 8663: * tm-sparc.h (PROMOTE_PROTOTYPES): Define this. ! 8664: (GO_IF_LEGITIMATE_ADDRESS): Now accept all constant addresses; ! 8665: also cleaned up. ! 8666: (NOTICE_UPDATE_CC): Don't change the G1 status when storing in memory. ! 8667: Assume all PARALLEL insns are peepholes. ! 8668: (PRINT_OPERAND): New codes C and N for outputting conditions, ! 8669: either forward or reversed. Also F for reversed floating. ! 8670: ! 8671: * jump.c (delete_for_peephole): New function to delete range of insns. ! 8672: * genpeep.c (gen_peephole): Output code to use this. ! 8673: ! 8674: * Makefile (install): Fix typo, had $${name} for $${file}. ! 8675: ! 8676: Tue Jan 17 00:00:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8677: ! 8678: * i386.md (ashlsi3): Use addl or leal for special cases. ! 8679: ! 8680: * c-decl.c (grokdeclarator): Make a non-global VAR_DECL public ! 8681: if it is external. ! 8682: ! 8683: * masm386.c: Clean up formatting. ! 8684: ! 8685: * cse.c (fold_rtx): Typo simplifying x|0 or x^0 ! 8686: when the 0 comes second. ! 8687: ! 8688: * expmed.c (store_fixed_bit_field): For halfwords, verify that ! 8689: the field fits in an *aligned* halfword. ! 8690: (extract_fixed_bit_field): likewise. ! 8691: ! 8692: * expmed.c (store_split_bit_field): New arg align, passed in from ! 8693: store_fixed_bit_field and passed back to it. ! 8694: (extract_split_bit_field): likewise. ! 8695: ! 8696: * expr.c: Reinsert changes from Jan 2, mysteriously deleted Jan 3. ! 8697: Also changes from Dec 23, Dec 28 and Dec 29. ! 8698: ! 8699: * tm-i386.h: Likewise for changes from Dec 30. ! 8700: ! 8701: * c-typeck.c (build_component_ref): If field's type is error-mark, ! 8702: return an error-mark. ! 8703: ! 8704: Mon Jan 16 14:16:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8705: ! 8706: * genpeep.c (main): Output code to exit early if insn is followed ! 8707: by a barrier. ! 8708: (gen_peephole): Reject barriers just like labels. ! 8709: ! 8710: * stmt.c (do_jump_if_equal): New arg UNSIGNEDP, for emit_cmp_insn. ! 8711: Caller changed. Now static. ! 8712: ! 8713: * final.c (final): Set INSN_DELETED_P in insns when output. ! 8714: ! 8715: * final.c (final): Re-set BODY if peephole does anything. ! 8716: ! 8717: * c-decl.c (grokparms): Ignore anything but PARM_DECLs in the list. ! 8718: (store_parm_decls): If we had a prototype, separate out anything other ! 8719: than a PARM_DECL declared in it, and pushdecl those at the end, ! 8720: after DECL_ARGUMENTS is set. ! 8721: ! 8722: * stmt.c (expand_end_case): Do stack adjusts after computing index. ! 8723: ! 8724: * expr.c (store_one_arg): Handle padding for case of BLKmode ! 8725: for which space was preallocated. ! 8726: ! 8727: * integrate.c (copy_rtx_and_substitute): When copying asm insn, ! 8728: preserve sharing of the input-operand vectors. ! 8729: (expand_inline_function): Clear {orig,copy}_asm_operands_vector ! 8730: to make that mechanism work. ! 8731: (save_for_inline, copy_for_inline): Likewise. ! 8732: ! 8733: * stmt.c (expand_asm_operands): Reject `+' in constraints. ! 8734: Every output constraint requires `='; inputs reject it. ! 8735: ! 8736: * stmt.c (expand_function_end): Arg to fixup_gotos was missing. ! 8737: ! 8738: Sun Jan 15 00:28:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8739: ! 8740: * cccp.c, gcc.c (main): Handle SIGPIPE. ! 8741: (pipe_closed): New fn; report suitable fatal error. ! 8742: ! 8743: * loop.c (loop_optimize): Initialize moved_once. ! 8744: ! 8745: * gcc.c (do_spec): Don't call `execute' if value != 0. ! 8746: Delete redundant second call to do_spec_1. ! 8747: ! 8748: * toplev.c (compile_file): Make declared-but-not-defined warnings ! 8749: only if -Wunused. ! 8750: ! 8751: * stmt.c (emit_case_nodes): Fix typo setting gen_ble_pat. ! 8752: ! 8753: * tm-sparc.h ({U,}MODSI3_LIBCALL): Name was wrong. ! 8754: ! 8755: * gcc.c (env_exec_prefix refs): Don't try to open via it if it's null. ! 8756: ! 8757: * output-sparc.c (output_store, output_load_{fixed,floating}): ! 8758: Fixed confusions between the mem ref and its address. ! 8759: ! 8760: * cse.c (canon_hash): global_regs has entries only for hard regs. ! 8761: * flow.c (insn_dead_p, mark_set_p, mark_used_regs): Likewise. ! 8762: ! 8763: * cse.c (fold_rtx): More simplifications for MULT, IOR, AND, XOR ! 8764: DIV and shifts with one arg 0 or 1. ! 8765: ! 8766: Sat Jan 14 11:41:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8767: ! 8768: * c-typeck.c (build_array_ref): If pedantic, check for regdecl arrays. ! 8769: ! 8770: * fixincludes: Make all subdirs in advance, so no need for `dirname'. ! 8771: ! 8772: * genpeep.c (gen_peephole): Delete code to increment LABEL_NUSES; ! 8773: instead, clear JUMP_LABEL for any jumps being deleted. ! 8774: No need to test INSN1 for being a label, since not called then. ! 8775: [If any of the matched insns is a JUMP_INSN, set want_jump, ! 8776: and in that case make the matched peephole a JUMP_INSN itself.] ! 8777: That's in an #if 0 now; it's good in jump, but not in final. ! 8778: ! 8779: * jump.c (jump_optimize): Don't do peepholes here. ! 8780: * final.c (final): Do them here. ! 8781: ! 8782: * jump.c (jump_optimize): In optimizing `if (foo) bar; else break;', ! 8783: don't try to invert anything but a standard-looking conditional jump. ! 8784: ! 8785: * jump.c (jump_optimize): Do peepholes on ALL BUT the first pass. ! 8786: ! 8787: * gcc.c (env_exec_prefix): New var used like user_exec_prefix ! 8788: but set from envvar GCC_EXEC_PREFIX. ! 8789: ! 8790: Fri Jan 13 13:21:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8791: ! 8792: * genpeep.c (gen_peephole): Test INSN1 for a label at the very start, ! 8793: then test following insns at the end of the loop. ! 8794: ! 8795: * sparc.md (call recognizers): do CC_STATUS_INIT, for %g1. ! 8796: ! 8797: Thu Jan 12 02:13:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8798: ! 8799: * varasm.c (make_decl_rtl): Recognize more error cases for reg vars: ! 8800: BLKmode, or initializer given. ! 8801: Distinguisn missing asm from invalid name. ! 8802: ! 8803: * expr.c (expand_call): Never return 0; return const0_rtx instead. ! 8804: This makes expand_expr more uniform. ! 8805: ! 8806: * c-decl.c (grokparms): For ptr to incomplete type, just warn; ! 8807: don't change the parm's type. ! 8808: ! 8809: * stmt.c (expand_return): Set RETVAL_RHS so as to recognize ! 8810: tail-recursive fcn returning void. ! 8811: Unconditionally test value of expand_expr for being a REG. ! 8812: ! 8813: * reload.c (find_reloads): Don't process insns that have ! 8814: no constraint alternatives. No more need for have_constraints. ! 8815: ! 8816: * recog.c (constrain_operands): New local var nalternatives. ! 8817: Don't bother checking the insn if nalternatives is 0. ! 8818: ! 8819: Wed Jan 11 01:27:48 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8820: ! 8821: * Implement global register decls. ! 8822: ! 8823: * varasm.c (make_decl_rtl): Handle global register vars. ! 8824: (make_function_rtl): Set function_defined: after 1st function dfn. ! 8825: (assemble_variable): Ignore global register vars. ! 8826: ! 8827: * c-decl.c (grokdeclarator): Don't reject global register decls. ! 8828: (builtin_function): Use make_decl_rtl, not make_function_rtl, ! 8829: to avoid setting function_defined. ! 8830: ! 8831: * regclass.c (init_reg_class{,_1}): Init and process global_regs. ! 8832: They are fixed, and call-clobbered. ! 8833: ! 8834: * flow.c (insn_dead_p): Storing one of global_regs is never dead. ! 8835: (mark_used_regs, mark_set_1): A global reg is never dead. ! 8836: ! 8837: * cse.c (canon_hash): Consider global regs volatile. ! 8838: ! 8839: ! 8840: * expr.c (do_jump): Know how to invert jumps which are sequences. ! 8841: ! 8842: * dbxout.c, symout.c, final.c: On USG, use our own stab.h. ! 8843: ! 8844: * tm-i386gas.h: New file for GAS on sysV (with DBX debugging info). ! 8845: ! 8846: * m68k.md (bfchg and bfins patterns): Make # alternatives uniform. ! 8847: * alliant.md: Likewise; also in movdf patterns. ! 8848: ! 8849: * genoutput.c (output_epilogue): Spurious `break' disabled ! 8850: error check for mismatched # of alternatives. ! 8851: (output_epilogue, scan_operands): Errors in input are not fatal. ! 8852: ! 8853: * flow.c (regno_uninitialized): Avoid crash if no basic blocks. ! 8854: ! 8855: * sparc.md (move insns): Delete special patterns that handled ! 8856: symbolic constant addresses. The main move patterns now do this. ! 8857: * output-sparc.c (output_store, output_load_{fixed,floating}): ! 8858: Subroutines to do the work for this; has the code from those ! 8859: special patterns. Also fixed bugs in testing against cc_status.mdep. ! 8860: ! 8861: * output-sparc.c (output_delay_insn): Clear the CC status. ! 8862: This is necessary for %g1 in the case of a call insn. ! 8863: ! 8864: * tm-i386.h (REG_CLASS_CONTENTS): INDEX_REGS is now all but ESP. ! 8865: (REGNO_REG_CLASS): Corresponding change. ! 8866: (REG_CLASS_FROM_LETTER): Eliminate `x' letter since not used. ! 8867: ! 8868: * optabs.c (emit_cmp_insn): New arg ALIGN, used for BLKmode. ! 8869: All callers changed. ! 8870: Pass alignment (as rtx) as 4th arg to cmpstr gen functions. ! 8871: Use cmpstrhi if available. ! 8872: * expr.c (compare): Only this call passes a nonzero ALIGN. ! 8873: ! 8874: * expr.c (emit_push_insn, emit_block_move): Pass alignment (as rtx) ! 8875: as 4th arg to movstr gen functions. ! 8876: ! 8877: Tue Jan 10 23:43:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8878: ! 8879: * stor-layout.c (layout_type): Use BLKmode, if a struct isn't ! 8880: aligned well enough for a scalar mode. ! 8881: ! 8882: * expr.c (expand_expr): For static CONSTRUCTOR, ensure memory ! 8883: address is made valid. ! 8884: ! 8885: * genpeep.c (match_rtx): For MATCH_OPERATOR, set max_opno, n_operands. ! 8886: ! 8887: Mon Jan 9 17:07:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8888: ! 8889: * varasm.c (output_constant): Split strings every 2000 chars. ! 8890: ! 8891: * stmt.c (expand_end_case): Test bkwds, handling constant switch arg. ! 8892: ! 8893: Fri Jan 6 09:11:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8894: ! 8895: * output-sparc.c (output_delay_insn): Add parens to first if test. ! 8896: (output_move_double): Turn addr for `sethi' into MEM for %m. ! 8897: ! 8898: * c-typeck.c (convert_for_assignment): move test for ERROR_MARK. ! 8899: ! 8900: * c-parse.y (unary_expr): Allow cast_expr as arg of unary op. ! 8901: ! 8902: * stmt.c (expand_decl): Don't abort if FUNCTION_DECL lacks rtl; ! 8903: assemble_variable is called after this. ! 8904: ! 8905: * c-parse.y (primary -> identifier): Separate case for undeclared ! 8906: identifier outside of functions; avoids confusing error msgs. ! 8907: ! 8908: Thu Jan 5 01:24:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8909: ! 8910: * Makefile (install): Ignore errors in all `if' commands. ! 8911: Create $(libdir) if nec. ! 8912: ! 8913: * Makefile (insn-*.[ch]): Put in empty commands. May help Ultrix Make. ! 8914: ! 8915: * stmt.c (emit_case_nodes): New arg UNSIGNEDP says do unsigned jumps. ! 8916: Arg INDEX is an rtx, not a tree. ! 8917: (expand_end_case): Pass that arg. ! 8918: (node_has_{low,high}_bound): check for overflow, avoid confusion. ! 8919: ! 8920: Wed Jan 4 02:24:21 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8921: ! 8922: * sparc.md (movdi, movdf): Use `&' constraint when loading reg from; ! 8923: otherwise can lose on (set (reg X) (mem (plus (reg X) (reg X+1)))). ! 8924: ! 8925: * expr.c (emit_push_insn): For memory scalar partially going in regs, ! 8926: copy each word to reg before pushing. Avoids memory-to-memory move. ! 8927: Make the displaced address valid. ! 8928: Also delete unfinished STACK_OFFSET variable. ! 8929: ! 8930: * c-parse.y (check_newline): Read just one #-directive and return. ! 8931: This prevents lossage when toplev.c calls it to get the main input file ! 8932: name, and it gets a following #ident as well. ! 8933: ! 8934: * c-decl.c (lang_decode_option): Set warn_cast_qual for -Wcast-qual. ! 8935: * c-typeck.c (build_c_cast): Issue some warnings if set. ! 8936: ! 8937: * tm-3b1.h (ASM_OUTPUT_CASE_LABEL): Missing `;'. ! 8938: ! 8939: Tue Jan 3 18:07:31 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8940: ! 8941: * expr.c (emit_library_call): Do force_operand on each operand ! 8942: if it isn't a REG, MEM or constant. ! 8943: Do this, or mode conversions, earlier, before loading any hard regs. ! 8944: ! 8945: * m68k.md (addsi3) [SGS]: Put a zero displacement in the `lea'. ! 8946: ! 8947: * c-typeck.c (default_conversion): Don't lose `const' or `volatile' ! 8948: when converting array type to pointer. ! 8949: ! 8950: Mon Jan 2 01:18:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8951: ! 8952: * expmed.c (store_bit_field, store_fixed_bit_field): New arg, ! 8953: alignment in bytes the structure is known to have. ! 8954: (store_fixed_bit_field): Handle working in halfwords, ! 8955: in case the pointer isn't known to have fullword alignment. ! 8956: * expmed.c (extract_bit_field, extract_fixed_bit_field): likewise. ! 8957: (extract_bit_field): fix unsignedp arg to extract_fixed_bit_field. ! 8958: * expr.c (store_field): New arg, passed to {store,extract}_bit_field ! 8959: (expand_assignment, store_constructor): Pass that arg. ! 8960: (expand_expr): Pass new arg to extract_bit_field. ! 8961: ! 8962: * m68k.md (casesi_2 recognizer): Offset always 6 for 3b1. ! 8963: ! 8964: * c-typeck.c (convert_for_assignment): Strip from rhs no-op NOP_EXPRs ! 8965: put on by build_c_cast (to make the result not an lvalue). ! 8966: (build_modify_expr, build_compound_expr): likewise. ! 8967: (build_conditional_expr): likewise. ! 8968: (actualparameterlist, build_function_call): likewise. ! 8969: (default_conversion, truthvalue_conversion): likewise. ! 8970: ! 8971: * loop.c (move_movables): If reg has moved out of one loop, ! 8972: divide `savings' by 2. ! 8973: ! 8974: Sun Jan 1 03:00:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 8975: ! 8976: * c-typeck.c (truthvalue_conversion): Distribute the conversion ! 8977: into the arms of a COND_EXPR. ! 8978: ! 8979: * cse.c (fold_rtx): Don't fold a MINUS with VOIDmode ! 8980: into a symbolic constant--it's incorrect. ! 8981: ! 8982: * cse.c (cse_insn): If SRC is a subreg with known value, simplify it. ! 8983: ! 8984: * integrate.c (copy_rtx_and_substitute): Allow a ref to a part of ! 8985: MEM parm whose actual parm is a reg, provided it refs ! 8986: the low part of the MEM. ! 8987: (function_cannot_inline_p): Don't inline functions which have ! 8988: aggregate parameters and take their addresses. This could produce ! 8989: refs to non-low-parts, which copy_rtx_and_substitute can't handle. ! 8990: ! 8991: * c-typeck.c (build_modify_expr): If lhs is COND_EXPR, ! 8992: make a COMPOUND_EXPR to ensure the rhs is computed before the branch. ! 8993: ! 8994: * Implement -pipe. ! 8995: * gcc.c (do_spec_1): `|' is now a special delimiter ! 8996: which goes in the argbuf. ! 8997: When a newline is preceded by a `|', delete it if no -pipe. ! 8998: Otherwise, don't execute yet, and keep scanning. ! 8999: (do_spec): At end, if we have stuff with no newline, execute it. ! 9000: (handle_braces): Implement %{|foo:...}. ! 9001: (execute): If argbuf contains some `|'s, run several processes ! 9002: and pipe them together. ! 9003: (pexecute): new subroutine to make one of the processes. ! 9004: (find_exec_file): new fn to search for program to execute. ! 9005: (record_temp_file): new arg FAIL_ONLY. ! 9006: (store_arg): 2nd arg == 3 means delete file on failure. ! 9007: This is used for output files. ! 9008: (delete_temp_files): delete certain files only if fail. ! 9009: ! 9010: * cccp.c (include_defaults): /usr/include before /usr/local/include. ! 9011: ! 9012: * recog.c (asm_noperands): 1-off in loop checking CLOBBERS ! 9013: when no output operands and PARALLEL. ! 9014: ! 9015: * expmed.c (negate_rtx): Sign-extend the high bits rather than clear. ! 9016: ! 9017: * cse.c (fold_rtx): fold negation of real values. ! 9018: (fold_cc0): fold comparisons on real values. ! 9019: ! 9020: * Makefile (install): Use $(INSTALL) for gcc.1 and files in USER_H. ! 9021: ! 9022: * Handle floating-point problems for cross-compilation. ! 9023: ! 9024: * real.h (CONST_DOUBLE_LOW, etc.): new macros to access CONST_DOUBLE. ! 9025: * varasm.c (immed_double_const, decode_rtx_const): Use these. ! 9026: ({force,clear}_const_double_mem): Likewise. ! 9027: * output-*.c (output_move_double): Use these. ! 9028: * output-m68k.c (standard_{68881,sun_fpa}_constant_p): Likewise. ! 9029: * tm-*.h (PRINT_OPERAND): Use these. ! 9030: * output-i386.c (print_operand): Use these. ! 9031: * final.c (output_addr_const): Likewise. ! 9032: * emit-rtl.c (gen_rtx): Delete special code for CONST_DOUBLE. ! 9033: ! 9034: * real.h (union real_extract): Portable type for storing real as ints. ! 9035: * varasm.c (immed_double_const, decode_rtx_const): Use these. ! 9036: ! 9037: * varasm.c (immed_real_const_1, decode_rtx_const): ! 9038: Don't assume REAL_VALUE_TYPE is 2 ints long. ! 9039: * emit-rtl.c (init_emit_once): Likewise. ! 9040: ! 9041: * real.h (REAL_VALUE_TYPE): Define as `double' if not defined. ! 9042: (REAL_IS_NOT_DOUBLE): Define this if default REAL_VALUE_TYPE not used. ! 9043: (REAL_VALUES_EQUAL, REAL_VALUES_LESS): Define, if not already defined. ! 9044: (REAL_VALUE_LDEXP, REAL_VALUE_ATOF): Likewise. ! 9045: * tree.h (struct tree_real_cst): Use REAL_VALUE_TYPE for the value. ! 9046: ! 9047: * rtl.c (init_rtl): Increase length of CONST_DOUBLE if REAL_VALUE_TYPE ! 9048: needs more space. Change the rtx_format element to match. ! 9049: * varasm.c (immed_real_const_1): 1st arg now has REAL_VALUE_TYPE. ! 9050: (force_const_mem): Assume a CONST_DOUBLE contains REAL_VALUE_TYPE. ! 9051: * emit-rtl.c (init_emit_once): Likewise. ! 9052: And use REAL_VALUE_ATOF to get a floating zero. ! 9053: * optabs.c (expand_float): Use REAL_VALUE_TYPE, REAL_VALUE_LDEXP. ! 9054: * c-parse.y (yylex): Likewise, and use REAL_VALUE_ATOF. ! 9055: * fold-const.c (split_tree): Don't accept REAL_CSTs. ! 9056: (combine, fold_convert, fold): Use REAL_ARITHMETIC if defined; ! 9057: else don't fold reals if they are not doubles. ! 9058: * tree.c (build_real_from_int_cst): Likewise. ! 9059: * print-tree.c (dump) [REAL_IS_NOT_DOUBLE]: output float value ! 9060: in hex, since we don't know how to do it right. ! 9061: ! 9062: Sat Dec 31 14:15:13 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 9063: ! 9064: * optabs.c (init_optabs): Handle new macros {U,}MULSI3_LIBCALL, ! 9065: DIVSI3_LIBCALL, MODSI3_LIBCALL. ! 9066: * tm-sparc.h: Define {,U}{MUL,DIV,MOD}SI3 to call Sun's library direct. ! 9067: ! 9068: * tm-sun3-nfp.h, tm-sun3-fpa.h: New files. ! 9069: ! 9070: Fri Dec 30 00:14:36 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 9071: ! 9072: * cccp.c (main): Certain envvars specify a file to write deps info to. ! 9073: ! 9074: * toplev.c (compile_file): Warn about undefined fns declared static. ! 9075: ! 9076: * m68k.md (casesi_2 recognizer) [SGS] RTX_INTEGRATED_P test backwards. ! 9077: * tm-3b1.h (ASM_OUTPUT_CASE_LABEL): Likewise. Also missing `\'. ! 9078: ! 9079: * reload1.c (count_occurrences): New function. ! 9080: (choose_reload_targets): Don't delete a reload if the same reg ! 9081: is used elsewhere in the current insn. ! 9082: (delete_output_reload): code split out from choose_reload_targets. ! 9083: ! 9084: * c-typeck.c (build_c_cast): Always put on some operator, ! 9085: so the cast is never an lvalue for strict ANSI. ! 9086: ! 9087: * c-typeck.c (initializer_constant_valid_p): Don't depend on ! 9088: distinction between NOP_EXPR and CONVERT_EXPR. ! 9089: ! 9090: * c-convert.c: Fns reordered; new comments. ! 9091: ! 9092: * fold-const.c (fold): If simplifying a NOP_EXPR within a BIT_AND_EXPR, ! 9093: return a NOP_EXPR. ! 9094: New var TYPE holds type of expr. ! 9095: ! 9096: * c-parse.y (expr_no_commas): Split off cast_expr and unary_expr, ! 9097: to reject `sizeof (int) foo'. ! 9098: ! 9099: * toplev.c (main): Treat plain `-' as input filename. ! 9100: ! 9101: * final.c (final): If an insn's output routine returns 0, ! 9102: it means to output the deleted compare insn immediately preceding. ! 9103: ! 9104: * m68k.md (branch insns): Use 0 as 3rd arg for OUTPUT_JUMP ! 9105: rather than explicitly clearing the overflow flag. ! 9106: ! 9107: * tm-i386.h (OUTPUT_JUMP): Really use NO_OV; don't abort. ! 9108: * i386.md (branch insns): Put real data (sometimes 0) in 3rd arg ! 9109: of OUTPUT_JUMP. 0 means preceding test may not be deleted. ! 9110: (lea pattern): Clear the cc's. ! 9111: * output-i386.c (notice_update_cc): various arith insns set the cc's. ! 9112: ! 9113: Thu Dec 29 13:22:01 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 9114: ! 9115: * stmt.c (expand_decl_init): Do nothing for static decls. ! 9116: ! 9117: * reload.c (find_reloads_address{,_1}): Return 1 iff entire arg ! 9118: was reloaded as a whole, else 0. ! 9119: (find_reload): If find_reloads_address returns 1, don't let that MEM ! 9120: satisfy a `>' or `<' constraint. ! 9121: ! 9122: * m68k.md (cmpmb): Delete special pattern, make cmpqi handle it. ! 9123: The special pattern couldn't handle reloading the incremented register. ! 9124: ! 9125: * integrate.c (copy_rtx_and_substitute): Test BYTES_BIG_ENDIAN, ! 9126: not BITS... ! 9127: ! 9128: * combine.c (subst): Consider big-endian correction ! 9129: when simplifying (subreg (mem ...) ...). ! 9130: ! 9131: * reload.c (find_reloads): Don't crash if matching operands in `asm' ! 9132: are both read or both write. ! 9133: ! 9134: * expr.c (emit_push_insn): Address for movstr must be XINNER, not X. ! 9135: ! 9136: * toplev.c (main): Typo parsing `-fno...'. ! 9137: ! 9138: Wed Dec 28 13:07:21 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 9139: ! 9140: * toplev.c (rest_of_compilation): `volatile' fns need jump_optimize ! 9141: for warnings, as if -Wreturn-type. ! 9142: * c-typeck.c (c_expand_return): Warn about `return' in a `volatile' fn. ! 9143: * c-decl.c (finish_function): Warn if `volatile' fn can drop thru end. ! 9144: ! 9145: * cse.c (canon_reg): Handle nulls as subexpressions. ! 9146: (fold_rtx, canon_hash, mention_regs, exp_equiv_p): Likewise. ! 9147: * loop.c (invariant_p, replace_regs, replace_call_address, may_trap_p, ! 9148: {basic,general}_induction_var): Likewise. ! 9149: ! 9150: * expr.c (expand_call): Handle `const' functions: ! 9151: Local IS_CONST is 1 if function is const. ! 9152: Attach REG_RETVAL and REG_LIBCALL notes around the call. ! 9153: Copy fn address to register outside of those notes. ! 9154: Likewise precompute all parms outside them. ! 9155: ! 9156: * expr.c (expand_call): If fn is volatile, emit barrier after the call. ! 9157: ! 9158: * c-decl.c (grokdeclarator): Allow function declared const or volatile. ! 9159: ! 9160: Sat Dec 24 18:40:12 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 9161: ! 9162: * integrate.c (function_cannot_inline_p): If STRUCT_VALUE_INCOMING ! 9163: or STRUCT_VALUE is defined, can't inline functions returning BLKmode. ! 9164: ! 9165: Fri Dec 23 13:26:26 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 9166: ! 9167: * expr.c (store_constructor): Compute array's size ! 9168: with int_size_in_bytes. ! 9169: ! 9170: * varasm.c (assemble_variable): If shared data, go to data section ! 9171: before outputting an uninitialized symbol. ! 9172: ! 9173: * tm-sequent.h (ASM_OUTPUT_ALIGN_CODE): Missing backslash. ! 9174: (SHARED_SECTION_ASM_OP): Macro defined. ! 9175: * tm-seq386.h (SHARED_SECTION_ASM_OP): Macro defined. ! 9176: ! 9177: * c-typeck.c (c_expand_asm_operands): Warn if output op is `const'. ! 9178: ! 9179: * Fix problem where a stmt expr in an initialization ! 9180: refers to the variable it is initializing. ! 9181: * stmt.c (expand_decl_init): New fn split out from `expand_decl'. ! 9182: * c-decl.c (finish_decl): Call that. ! 9183: Don't call expand_decl if already done. ! 9184: (start_decl): Call expand_decl if type is complete already. ! 9185: ! 9186: * Makefile (install): Typo in ranlib command. ! 9187: ! 9188: Thu Dec 22 15:57:12 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 9189: ! 9190: * tree.h (tree_identifier): New field. ! 9191: (IDENTIFIER_ERROR_LOCUS): Accessor for it. ! 9192: * c-parse.y (primary => IDENTIFIER): ! 9193: Undeclared variable gets one err msg per function it appears in. ! 9194: ! 9195: * ns32k.md (andsi3): Delete extra brace. ! 9196: ! 9197: * alliant.md, xm-alliant.h, tm-alliant.h, output-alliant.c: New files. ! 9198: ! 9199: * combine.c (SUBST, SUBST_INT): Store new field `is_int'. ! 9200: (copy_substitutions): Don't copy an int as an rtx. ! 9201: ! 9202: * Makefile (INSTALL): Install gcc.1 properly. ! 9203: ! 9204: * tm-ns32k.h (FUNCTION_PROLOGUE, ASM_OUTPUT_ALIGN_CODE): ! 9205: Add missing backslashes. ! 9206: ! 9207: See file OChangeLog.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.