|
|
1.1.1.13! root 1: Wed Feb 1 20:01:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2: ! 3: * Version 1.33 released. ! 4: ! 5: * reload1.c (reload_as_needed): On entering new basic block, ! 6: if it didn't need reload regs, forget all inherited contents of those. ! 7: ! 8: * tm-alliant.h (NOTICE_UPDATE_CC): Floating moves don't set the cc's. ! 9: Also delete the clauses and tests for FPA regs. ! 10: ! 11: Tue Jan 31 21:51:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 12: ! 13: * config.gcc: Handle convex-c1, convex-c2. ! 14: * tm-convex1.h, tm-convex2.h: New files that include tm-convex.h. ! 15: * tm-convex.h: Define switches -mnoc1, -mnoc2. ! 16: ! 17: * config.gcc: rename `nofp' to `nfp', to match the file names. ! 18: ! 19: Mon Jan 30 22:12:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 20: ! 21: * output-sparc.c (output_delay_insn): Extract the operands, ! 22: call alter_subreg, constrain_operands and NOTICE_UPDATE_CC. ! 23: So callers other than output_eager_then_insn don't lose. ! 24: (output_eager_then_insn): No need to do that stuff. ! 25: ! 26: * symout.c (symout_block_symbols): Handle (MEM (REG)) for ! 27: variable-sized arrays. ! 28: ! 29: * tm-encore.h (ASM_SPEC): Always pass -j; avoid jump-range lossage. ! 30: ! 31: Sun Jan 29 17:06:26 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 32: ! 33: * alliant.md: Fix refs to CONST_DOUBLEs to use CONST_DOUBLE_{HIGH,LOW}. ! 34: ! 35: * combine.c (subst): (minus (zero_extend ...) (const_int ...)) opt. ! 36: now limited to within the context of (set (cc0) ...). ! 37: ! 38: Sat Jan 28 14:26:08 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 39: ! 40: * cse.c (fold_cc0): Missing `&' extracting CONST_DOUBLEs. ! 41: (fold_rtx): Don't put CONST_DOUBLEs together into a (CONST (PLUS...)). ! 42: ! 43: * output-convex.c (gen_cmp): Recognize CONST_DOUBLE as a constant. ! 44: ! 45: * tree.c (build_real_from_int_cst): Typo in REAL_ARITHMETIC case. ! 46: ! 47: * Makefile (bootstrap2): Don't use bootstrap3 as subroutine. ! 48: ! 49: * varasm.c (force_const_mem): Put the CONST_DOUBLE on the chain ! 50: if its MEM is stored in it; so it can be cleared at end of function. ! 51: ! 52: * stmt.c (emit_case_nodes): Put a compare before each cond-jump. ! 53: Two cond-jumps after one cond is invalid and makes cse produce garbage. ! 54: ! 55: Fri Jan 27 01:05:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 56: ! 57: * tm-sun2.h (CPP_SPEC): Define __HAVE_68881__ only if -m68881. ! 58: ! 59: * c-decl.c (start_decl): Don't expand_decl if DECL already has rtl. ! 60: (grokparms): If just declaring fcn, incomplete parm type is just ! 61: a warning, and don't discard the specified type. ! 62: ! 63: * expmed.c (expand_divmod): Be smarter about not clobbering args ! 64: with intermediate results; one mem can clobber another, and a reg ! 65: can clobber a mem. ! 66: ! 67: * tm-i386.h (FUNCTION_PROFILER): Use LPREFIX. May actually work now. ! 68: * tm-i386gas.h: Include tm-bsd386.h, not tm-att386.h. ! 69: This means changing asm syntax. ! 70: #undef DBX_NO_XREFS and DBX_CONTIN_LENGTH. ! 71: ! 72: * sparc.md (eager branch peepholes): Don't forget 2nd arg to ! 73: safe_insn_src_p. ! 74: Don't print warnings. ! 75: * output-sparc.c: (strict_single_insn_op_p): Return 0 for floating ! 76: REG or MEM, since copying that may take 2 insns. ! 77: (operands_satisfy_eager_branch_peephole): require delay insn to ! 78: be strict_single_insn_op_p as well as safe_insn_src_p. ! 79: (operand_clobbered_before_used_after): Don't print warnings. ! 80: ! 81: * varasm.c (decode_rtx_const): Clear entire structure incl. gaps. ! 82: Avoids spurious hash mismatches. ! 83: (force_const_mem): If CONST_DOUBLE, store its CONST_DOUBLE_MEM field. ! 84: Also look in that field rather than hashing, to save time. ! 85: ! 86: * c-typeck.c (build_c_cast): If value is literal, mark NOP_EXPR as so. ! 87: (store_init_value): Change error msg. ! 88: ! 89: * c-decl.c (duplicate_decls): Classify prototype vs nonprototype ! 90: mismatches better. ! 91: ! 92: * tm-3b1.h: Fix comment. ! 93: ! 94: Wed Jan 25 12:46:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 95: ! 96: * Makefile (cleanlinks): Use -f. ! 97: ! 98: Tue Jan 24 17:54:16 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 99: ! 100: * cse.c (canon_hash): Fix paren error in last change. ! 101: ! 102: * varasm.c (immed_real_const_1): Missing arg to bcmp. ! 103: ! 104: Mon Jan 23 02:43:45 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 105: ! 106: * stor-layout.c (layout_type): BLKmode elts force array to be BLKmode. ! 107: ! 108: * genpeep.c, genoutput.c, genemit.c: Put `#include "real.h"' in output. ! 109: ! 110: * stmt.c (expand_expr_stmt): No "no effect" warning for error-mark. ! 111: ! 112: * varargs.h: Rename implicit arg name to __builtin_va_alist ! 113: which triggers code in assign_parms. Does this really matter? ! 114: ! 115: * sparc.md (sne): New define_expand. ! 116: (seq recognizers): Handle sne as well. ! 117: * output-sparc.c ({strict_,}single_insn_src_p): ! 118: Some NEG and MINUS insns are actually 2 asm insns. ! 119: (safe_insn_src_p): No floating arith is safe; they can trap. ! 120: (eq_or_neq): New fn, for seq/sne recognizers. ! 121: ! 122: * c-decl.c (grokdeclarator, size of array type): ! 123: Strip from SIZE any NOP_EXPRs that don't change anything. ! 124: ! 125: * reload.c, recog.c: Include real.h so constraint macros can examine ! 126: CONST_DOUBLEs. ! 127: ! 128: Sun Jan 22 04:12:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 129: ! 130: * c-decl.c (init_decl_processing): Define __builtin_saveregs. ! 131: * tree.h: likewise. ! 132: * expr.c (expand_builtin): Handle it. ! 133: ! 134: * tm-sparc.h: Define TARGET_EAGER and -meager. ! 135: * sparc.md (eager branch peepholes): Reenable, but test TARGET_EAGER. ! 136: Change fb insns to use %F. Delete `,a' from some of them. ! 137: * jump.c (jump_optimize): Don't delete USE and CLOBBER insns. ! 138: ! 139: * xm-vms.h (const): Define it as empty. ! 140: ! 141: * make-cccp.com: Move the rename of cexp_tab.c. ! 142: Compile cccp.c with no macro definitions. ! 143: ! 144: * cccp.c (main): VMS conditional for setting max_include_len. ! 145: ! 146: Sat Jan 21 12:53:00 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 147: ! 148: * varargs.h (va_start): On sparc, call __builtin_saveregs. ! 149: Delete the old conditional that used va-sparc.h. ! 150: Rename macros and locals to start with two underscores. ! 151: * va-sparc.h: File deleted. ! 152: ! 153: * c-decl.c (store_parm_decls): Initialize OTHERS. ! 154: ! 155: * stmt.c (assign_parms): Obey layout_decl. ! 156: ! 157: Fri Jan 20 02:19:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 158: ! 159: * cse.c (fold_rtx): For SYMBOL_REF and LABEL_REF, mask address ! 160: to 16 bits. ! 161: ! 162: * tree.h (NUM_TREE_CODES): NUM_TREE_CODE renamed. ! 163: ! 164: Thu Jan 19 13:53:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 165: ! 166: * c-typeck.c (mark_addressable): For global reg var, report error. ! 167: Now returns an int; value of 0 means caller should fail. ! 168: All calls (in this file) changed. ! 169: ! 170: * stor-layout.c (layout_decl): Don't let an more than 1 word ! 171: of any aggregate go in any 1 register. (Needed for machines whose ! 172: integer regs are 64 bits). ! 173: ! 174: * tm-convex.h, xm-convex.h, convex.md, output-convex.c: new files. ! 175: ! 176: * expr.c (convert_move): Use extendqidi2, etc. for converting ! 177: small ints to double ints. Use zero_extendsidi2 rather than ! 178: clearing the high half. ! 179: ! 180: Wed Jan 18 01:20:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 181: ! 182: * varasm.c (make_decl_rtl): If global `register' decl is invalid, ! 183: make ordinary non-register rtl. ! 184: ! 185: * output-sparc.c (operand_clobbered_before_used_after): new fn. ! 186: (reg_clobbered_p, safe_insn_src_p): New fns. ! 187: (single_insn_src_p): Treat constants all as ok, even though not ! 188: always literally so. Also accept some SIGN_EXTENDs and ZERO_EXTENDs. ! 189: (strict_single_insn_src_p): New fn, like above but is strict ! 190: about constants and constant memory addresses. ! 191: (relop): New fn. ! 192: (output_move_double): Don't make a MEM, and don't use %m. ! 193: (output_delayed_branch): New name for output_delay_insn. ! 194: Now handle non-small constant operands. ! 195: Avoid duplicate loads of g1 for constant addresses. ! 196: Use recog_operand directly for output of the delay insn. ! 197: (output_delay_insn): Now a completely new fn. ! 198: (output_eager_then_insn, next_real_insn_no_labels): New fns. ! 199: (operands_satisfy_eager_branch_peephole): New fn. ! 200: ! 201: * sparc.md: New peepholes for testing a recently used operand. ! 202: New peepholes for delayed branches, incl. conditional ones. ! 203: ** Some of them commented out because they seem not to work. ! 204: (andcc recognizer): Fix typo, missing %. ! 205: (bgt): Change bgt to bg in output. ! 206: (reversed jumps): Replace with one pattern using match_operand. ! 207: It uses %F to output the condition. ! 208: (movsi): For round-valued immed const, use just a sethi. ! 209: For other immed, use explicit sethi and or. ! 210: (movhi, movqi): use `move' for reg source or small int source. ! 211: For other immed, use explicit sethi and or. ! 212: (movsi, etc.): Handle all constant addresses like SYMBOL_REFs. ! 213: (movsf): Delete never-used duplicate code for constant addresses. ! 214: (addsi3, subsi3, cse'd multiply): Use sethi and or, rather than set. ! 215: (andsi3, iorsi3, xorsi3): Likewise. ! 216: (jump): Make an annulled branch. ! 217: ! 218: * tm-sparc.h (PROMOTE_PROTOTYPES): Define this. ! 219: (GO_IF_LEGITIMATE_ADDRESS): Now accept all constant addresses; ! 220: also cleaned up. ! 221: (NOTICE_UPDATE_CC): Don't change the G1 status when storing in memory. ! 222: Assume all PARALLEL insns are peepholes. ! 223: (PRINT_OPERAND): New codes C and N for outputting conditions, ! 224: either forward or reversed. Also F for reversed floating. ! 225: ! 226: * jump.c (delete_for_peephole): New function to delete range of insns. ! 227: * genpeep.c (gen_peephole): Output code to use this. ! 228: ! 229: * Makefile (install): Fix typo, had $${name} for $${file}. ! 230: ! 231: Tue Jan 17 00:00:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 232: ! 233: * i386.md (ashlsi3): Use addl or leal for special cases. ! 234: ! 235: * c-decl.c (grokdeclarator): Make a non-global VAR_DECL public ! 236: if it is external. ! 237: ! 238: * masm386.c: Clean up formatting. ! 239: ! 240: * cse.c (fold_rtx): Typo simplifying x|0 or x^0 ! 241: when the 0 comes second. ! 242: ! 243: * expmed.c (store_fixed_bit_field): For halfwords, verify that ! 244: the field fits in an *aligned* halfword. ! 245: (extract_fixed_bit_field): likewise. ! 246: ! 247: * expmed.c (store_split_bit_field): New arg align, passed in from ! 248: store_fixed_bit_field and passed back to it. ! 249: (extract_split_bit_field): likewise. ! 250: ! 251: * expr.c: Reinsert changes from Jan 2, mysteriously deleted Jan 3. ! 252: Also changes from Dec 23, Dec 28 and Dec 29. ! 253: ! 254: * tm-i386.h: Likewise for changes from Dec 30. ! 255: ! 256: * c-typeck.c (build_component_ref): If field's type is error-mark, ! 257: return an error-mark. ! 258: ! 259: Mon Jan 16 14:16:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 260: ! 261: * genpeep.c (main): Output code to exit early if insn is followed ! 262: by a barrier. ! 263: (gen_peephole): Reject barriers just like labels. ! 264: ! 265: * stmt.c (do_jump_if_equal): New arg UNSIGNEDP, for emit_cmp_insn. ! 266: Caller changed. Now static. ! 267: ! 268: * final.c (final): Set INSN_DELETED_P in insns when output. ! 269: ! 270: * final.c (final): Re-set BODY if peephole does anything. ! 271: ! 272: * c-decl.c (grokparms): Ignore anything but PARM_DECLs in the list. ! 273: (store_parm_decls): If we had a prototype, separate out anything other ! 274: than a PARM_DECL declared in it, and pushdecl those at the end, ! 275: after DECL_ARGUMENTS is set. ! 276: ! 277: * stmt.c (expand_end_case): Do stack adjusts after computing index. ! 278: ! 279: * expr.c (store_one_arg): Handle padding for case of BLKmode ! 280: for which space was preallocated. ! 281: ! 282: * integrate.c (copy_rtx_and_substitute): When copying asm insn, ! 283: preserve sharing of the input-operand vectors. ! 284: (expand_inline_function): Clear {orig,copy}_asm_operands_vector ! 285: to make that mechanism work. ! 286: (save_for_inline, copy_for_inline): Likewise. ! 287: ! 288: * stmt.c (expand_asm_operands): Reject `+' in constraints. ! 289: Every output constraint requires `='; inputs reject it. ! 290: ! 291: * stmt.c (expand_function_end): Arg to fixup_gotos was missing. ! 292: ! 293: Sun Jan 15 00:28:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 294: ! 295: * cccp.c, gcc.c (main): Handle SIGPIPE. ! 296: (pipe_closed): New fn; report suitable fatal error. ! 297: ! 298: * loop.c (loop_optimize): Initialize moved_once. ! 299: ! 300: * gcc.c (do_spec): Don't call `execute' if value != 0. ! 301: Delete redundant second call to do_spec_1. ! 302: ! 303: * toplev.c (compile_file): Make declared-but-not-defined warnings ! 304: only if -Wunused. ! 305: ! 306: * stmt.c (emit_case_nodes): Fix typo setting gen_ble_pat. ! 307: ! 308: * tm-sparc.h ({U,}MODSI3_LIBCALL): Name was wrong. ! 309: ! 310: * gcc.c (env_exec_prefix refs): Don't try to open via it if it's null. ! 311: ! 312: * output-sparc.c (output_store, output_load_{fixed,floating}): ! 313: Fixed confusions between the mem ref and its address. ! 314: ! 315: * cse.c (canon_hash): global_regs has entries only for hard regs. ! 316: * flow.c (insn_dead_p, mark_set_p, mark_used_regs): Likewise. ! 317: ! 318: * cse.c (fold_rtx): More simplifications for MULT, IOR, AND, XOR ! 319: DIV and shifts with one arg 0 or 1. ! 320: ! 321: Sat Jan 14 11:41:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 322: ! 323: * c-typeck.c (build_array_ref): If pedantic, check for regdecl arrays. ! 324: ! 325: * fixincludes: Make all subdirs in advance, so no need for `dirname'. ! 326: ! 327: * genpeep.c (gen_peephole): Delete code to increment LABEL_NUSES; ! 328: instead, clear JUMP_LABEL for any jumps being deleted. ! 329: No need to test INSN1 for being a label, since not called then. ! 330: [If any of the matched insns is a JUMP_INSN, set want_jump, ! 331: and in that case make the matched peephole a JUMP_INSN itself.] ! 332: That's in an #if 0 now; it's good in jump, but not in final. ! 333: ! 334: * jump.c (jump_optimize): Don't do peepholes here. ! 335: * final.c (final): Do them here. ! 336: ! 337: * jump.c (jump_optimize): In optimizing `if (foo) bar; else break;', ! 338: don't try to invert anything but a standard-looking conditional jump. ! 339: ! 340: * jump.c (jump_optimize): Do peepholes on ALL BUT the first pass. ! 341: ! 342: * gcc.c (env_exec_prefix): New var used like user_exec_prefix ! 343: but set from envvar GCC_EXEC_PREFIX. ! 344: ! 345: Fri Jan 13 13:21:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 346: ! 347: * genpeep.c (gen_peephole): Test INSN1 for a label at the very start, ! 348: then test following insns at the end of the loop. ! 349: ! 350: * sparc.md (call recognizers): do CC_STATUS_INIT, for %g1. ! 351: ! 352: Thu Jan 12 02:13:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 353: ! 354: * varasm.c (make_decl_rtl): Recognize more error cases for reg vars: ! 355: BLKmode, or initializer given. ! 356: Distinguisn missing asm from invalid name. ! 357: ! 358: * expr.c (expand_call): Never return 0; return const0_rtx instead. ! 359: This makes expand_expr more uniform. ! 360: ! 361: * c-decl.c (grokparms): For ptr to incomplete type, just warn; ! 362: don't change the parm's type. ! 363: ! 364: * stmt.c (expand_return): Set RETVAL_RHS so as to recognize ! 365: tail-recursive fcn returning void. ! 366: Unconditionally test value of expand_expr for being a REG. ! 367: ! 368: * reload.c (find_reloads): Don't process insns that have ! 369: no constraint alternatives. No more need for have_constraints. ! 370: ! 371: * recog.c (constrain_operands): New local var nalternatives. ! 372: Don't bother checking the insn if nalternatives is 0. ! 373: ! 374: Wed Jan 11 01:27:48 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 375: ! 376: * Implement global register decls. ! 377: ! 378: * varasm.c (make_decl_rtl): Handle global register vars. ! 379: (make_function_rtl): Set function_defined: after 1st function dfn. ! 380: (assemble_variable): Ignore global register vars. ! 381: ! 382: * c-decl.c (grokdeclarator): Don't reject global register decls. ! 383: (builtin_function): Use make_decl_rtl, not make_function_rtl, ! 384: to avoid setting function_defined. ! 385: ! 386: * regclass.c (init_reg_class{,_1}): Init and process global_regs. ! 387: They are fixed, and call-clobbered. ! 388: ! 389: * flow.c (insn_dead_p): Storing one of global_regs is never dead. ! 390: (mark_used_regs, mark_set_1): A global reg is never dead. ! 391: ! 392: * cse.c (canon_hash): Consider global regs volatile. ! 393: ! 394: ! 395: * expr.c (do_jump): Know how to invert jumps which are sequences. ! 396: ! 397: * dbxout.c, symout.c, final.c: On USG, use our own stab.h. ! 398: ! 399: * tm-i386gas.h: New file for GAS on sysV (with DBX debugging info). ! 400: ! 401: * m68k.md (bfchg and bfins patterns): Make # alternatives uniform. ! 402: * alliant.md: Likewise; also in movdf patterns. ! 403: ! 404: * genoutput.c (output_epilogue): Spurious `break' disabled ! 405: error check for mismatched # of alternatives. ! 406: (output_epilogue, scan_operands): Errors in input are not fatal. ! 407: ! 408: * flow.c (regno_uninitialized): Avoid crash if no basic blocks. ! 409: ! 410: * sparc.md (move insns): Delete special patterns that handled ! 411: symbolic constant addresses. The main move patterns now do this. ! 412: * output-sparc.c (output_store, output_load_{fixed,floating}): ! 413: Subroutines to do the work for this; has the code from those ! 414: special patterns. Also fixed bugs in testing against cc_status.mdep. ! 415: ! 416: * output-sparc.c (output_delay_insn): Clear the CC status. ! 417: This is necessary for %g1 in the case of a call insn. ! 418: ! 419: * tm-i386.h (REG_CLASS_CONTENTS): INDEX_REGS is now all but ESP. ! 420: (REGNO_REG_CLASS): Corresponding change. ! 421: (REG_CLASS_FROM_LETTER): Eliminate `x' letter since not used. ! 422: ! 423: * optabs.c (emit_cmp_insn): New arg ALIGN, used for BLKmode. ! 424: All callers changed. ! 425: Pass alignment (as rtx) as 4th arg to cmpstr gen functions. ! 426: Use cmpstrhi if available. ! 427: * expr.c (compare): Only this call passes a nonzero ALIGN. ! 428: ! 429: * expr.c (emit_push_insn, emit_block_move): Pass alignment (as rtx) ! 430: as 4th arg to movstr gen functions. ! 431: ! 432: Tue Jan 10 23:43:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 433: ! 434: * stor-layout.c (layout_type): Use BLKmode, if a struct isn't ! 435: aligned well enough for a scalar mode. ! 436: ! 437: * expr.c (expand_expr): For static CONSTRUCTOR, ensure memory ! 438: address is made valid. ! 439: ! 440: * genpeep.c (match_rtx): For MATCH_OPERATOR, set max_opno, n_operands. ! 441: ! 442: Mon Jan 9 17:07:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 443: ! 444: * varasm.c (output_constant): Split strings every 2000 chars. ! 445: ! 446: * stmt.c (expand_end_case): Test bkwds, handling constant switch arg. ! 447: ! 448: Fri Jan 6 09:11:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 449: ! 450: * output-sparc.c (output_delay_insn): Add parens to first if test. ! 451: (output_move_double): Turn addr for `sethi' into MEM for %m. ! 452: ! 453: * c-typeck.c (convert_for_assignment): move test for ERROR_MARK. ! 454: ! 455: * c-parse.y (unary_expr): Allow cast_expr as arg of unary op. ! 456: ! 457: * stmt.c (expand_decl): Don't abort if FUNCTION_DECL lacks rtl; ! 458: assemble_variable is called after this. ! 459: ! 460: * c-parse.y (primary -> identifier): Separate case for undeclared ! 461: identifier outside of functions; avoids confusing error msgs. ! 462: ! 463: Thu Jan 5 01:24:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 464: ! 465: * Makefile (install): Ignore errors in all `if' commands. ! 466: Create $(libdir) if nec. ! 467: ! 468: * Makefile (insn-*.[ch]): Put in empty commands. May help Ultrix Make. ! 469: ! 470: * stmt.c (emit_case_nodes): New arg UNSIGNEDP says do unsigned jumps. ! 471: Arg INDEX is an rtx, not a tree. ! 472: (expand_end_case): Pass that arg. ! 473: (node_has_{low,high}_bound): check for overflow, avoid confusion. ! 474: ! 475: Wed Jan 4 02:24:21 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 476: ! 477: * sparc.md (movdi, movdf): Use `&' constraint when loading reg from; ! 478: otherwise can lose on (set (reg X) (mem (plus (reg X) (reg X+1)))). ! 479: ! 480: * expr.c (emit_push_insn): For memory scalar partially going in regs, ! 481: copy each word to reg before pushing. Avoids memory-to-memory move. ! 482: Make the displaced address valid. ! 483: Also delete unfinished STACK_OFFSET variable. ! 484: ! 485: * c-parse.y (check_newline): Read just one #-directive and return. ! 486: This prevents lossage when toplev.c calls it to get the main input file ! 487: name, and it gets a following #ident as well. ! 488: ! 489: * c-decl.c (lang_decode_option): Set warn_cast_qual for -Wcast-qual. ! 490: * c-typeck.c (build_c_cast): Issue some warnings if set. ! 491: ! 492: * tm-3b1.h (ASM_OUTPUT_CASE_LABEL): Missing `;'. ! 493: ! 494: Tue Jan 3 18:07:31 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 495: ! 496: * expr.c (emit_library_call): Do force_operand on each operand ! 497: if it isn't a REG, MEM or constant. ! 498: Do this, or mode conversions, earlier, before loading any hard regs. ! 499: ! 500: * m68k.md (addsi3) [SGS]: Put a zero displacement in the `lea'. ! 501: ! 502: * c-typeck.c (default_conversion): Don't lose `const' or `volatile' ! 503: when converting array type to pointer. ! 504: ! 505: Mon Jan 2 01:18:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 506: ! 507: * expmed.c (store_bit_field, store_fixed_bit_field): New arg, ! 508: alignment in bytes the structure is known to have. ! 509: (store_fixed_bit_field): Handle working in halfwords, ! 510: in case the pointer isn't known to have fullword alignment. ! 511: * expmed.c (extract_bit_field, extract_fixed_bit_field): likewise. ! 512: (extract_bit_field): fix unsignedp arg to extract_fixed_bit_field. ! 513: * expr.c (store_field): New arg, passed to {store,extract}_bit_field ! 514: (expand_assignment, store_constructor): Pass that arg. ! 515: (expand_expr): Pass new arg to extract_bit_field. ! 516: ! 517: * m68k.md (casesi_2 recognizer): Offset always 6 for 3b1. ! 518: ! 519: * c-typeck.c (convert_for_assignment): Strip from rhs no-op NOP_EXPRs ! 520: put on by build_c_cast (to make the result not an lvalue). ! 521: (build_modify_expr, build_compound_expr): likewise. ! 522: (build_conditional_expr): likewise. ! 523: (actualparameterlist, build_function_call): likewise. ! 524: (default_conversion, truthvalue_conversion): likewise. ! 525: ! 526: * loop.c (move_movables): If reg has moved out of one loop, ! 527: divide `savings' by 2. ! 528: ! 529: Sun Jan 1 03:00:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 530: ! 531: * c-typeck.c (truthvalue_conversion): Distribute the conversion ! 532: into the arms of a COND_EXPR. ! 533: ! 534: * cse.c (fold_rtx): Don't fold a MINUS with VOIDmode ! 535: into a symbolic constant--it's incorrect. ! 536: ! 537: * cse.c (cse_insn): If SRC is a subreg with known value, simplify it. ! 538: ! 539: * integrate.c (copy_rtx_and_substitute): Allow a ref to a part of ! 540: MEM parm whose actual parm is a reg, provided it refs ! 541: the low part of the MEM. ! 542: (function_cannot_inline_p): Don't inline functions which have ! 543: aggregate parameters and take their addresses. This could produce ! 544: refs to non-low-parts, which copy_rtx_and_substitute can't handle. ! 545: ! 546: * c-typeck.c (build_modify_expr): If lhs is COND_EXPR, ! 547: make a COMPOUND_EXPR to ensure the rhs is computed before the branch. ! 548: ! 549: * Implement -pipe. ! 550: * gcc.c (do_spec_1): `|' is now a special delimiter ! 551: which goes in the argbuf. ! 552: When a newline is preceded by a `|', delete it if no -pipe. ! 553: Otherwise, don't execute yet, and keep scanning. ! 554: (do_spec): At end, if we have stuff with no newline, execute it. ! 555: (handle_braces): Implement %{|foo:...}. ! 556: (execute): If argbuf contains some `|'s, run several processes ! 557: and pipe them together. ! 558: (pexecute): new subroutine to make one of the processes. ! 559: (find_exec_file): new fn to search for program to execute. ! 560: (record_temp_file): new arg FAIL_ONLY. ! 561: (store_arg): 2nd arg == 3 means delete file on failure. ! 562: This is used for output files. ! 563: (delete_temp_files): delete certain files only if fail. ! 564: ! 565: * cccp.c (include_defaults): /usr/include before /usr/local/include. ! 566: ! 567: * recog.c (asm_noperands): 1-off in loop checking CLOBBERS ! 568: when no output operands and PARALLEL. ! 569: ! 570: * expmed.c (negate_rtx): Sign-extend the high bits rather than clear. ! 571: ! 572: * cse.c (fold_rtx): fold negation of real values. ! 573: (fold_cc0): fold comparisons on real values. ! 574: ! 575: * Makefile (install): Use $(INSTALL) for gcc.1 and files in USER_H. ! 576: ! 577: * Handle floating-point problems for cross-compilation. ! 578: ! 579: * real.h (CONST_DOUBLE_LOW, etc.): new macros to access CONST_DOUBLE. ! 580: * varasm.c (immed_double_const, decode_rtx_const): Use these. ! 581: ({force,clear}_const_double_mem): Likewise. ! 582: * output-*.c (output_move_double): Use these. ! 583: * output-m68k.c (standard_{68881,sun_fpa}_constant_p): Likewise. ! 584: * tm-*.h (PRINT_OPERAND): Use these. ! 585: * output-i386.c (print_operand): Use these. ! 586: * final.c (output_addr_const): Likewise. ! 587: * emit-rtl.c (gen_rtx): Delete special code for CONST_DOUBLE. ! 588: ! 589: * real.h (union real_extract): Portable type for storing real as ints. ! 590: * varasm.c (immed_double_const, decode_rtx_const): Use these. ! 591: ! 592: * varasm.c (immed_real_const_1, decode_rtx_const): ! 593: Don't assume REAL_VALUE_TYPE is 2 ints long. ! 594: * emit-rtl.c (init_emit_once): Likewise. ! 595: ! 596: * real.h (REAL_VALUE_TYPE): Define as `double' if not defined. ! 597: (REAL_IS_NOT_DOUBLE): Define this if default REAL_VALUE_TYPE not used. ! 598: (REAL_VALUES_EQUAL, REAL_VALUES_LESS): Define, if not already defined. ! 599: (REAL_VALUE_LDEXP, REAL_VALUE_ATOF): Likewise. ! 600: * tree.h (struct tree_real_cst): Use REAL_VALUE_TYPE for the value. ! 601: ! 602: * rtl.c (init_rtl): Increase length of CONST_DOUBLE if REAL_VALUE_TYPE ! 603: needs more space. Change the rtx_format element to match. ! 604: * varasm.c (immed_real_const_1): 1st arg now has REAL_VALUE_TYPE. ! 605: (force_const_mem): Assume a CONST_DOUBLE contains REAL_VALUE_TYPE. ! 606: * emit-rtl.c (init_emit_once): Likewise. ! 607: And use REAL_VALUE_ATOF to get a floating zero. ! 608: * optabs.c (expand_float): Use REAL_VALUE_TYPE, REAL_VALUE_LDEXP. ! 609: * c-parse.y (yylex): Likewise, and use REAL_VALUE_ATOF. ! 610: * fold-const.c (split_tree): Don't accept REAL_CSTs. ! 611: (combine, fold_convert, fold): Use REAL_ARITHMETIC if defined; ! 612: else don't fold reals if they are not doubles. ! 613: * tree.c (build_real_from_int_cst): Likewise. ! 614: * print-tree.c (dump) [REAL_IS_NOT_DOUBLE]: output float value ! 615: in hex, since we don't know how to do it right. ! 616: ! 617: Sat Dec 31 14:15:13 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 618: ! 619: * optabs.c (init_optabs): Handle new macros {U,}MULSI3_LIBCALL, ! 620: DIVSI3_LIBCALL, MODSI3_LIBCALL. ! 621: * tm-sparc.h: Define {,U}{MUL,DIV,MOD}SI3 to call Sun's library direct. ! 622: ! 623: * tm-sun3-nfp.h, tm-sun3-fpa.h: New files. ! 624: ! 625: Fri Dec 30 00:14:36 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 626: ! 627: * cccp.c (main): Certain envvars specify a file to write deps info to. ! 628: ! 629: * toplev.c (compile_file): Warn about undefined fns declared static. ! 630: ! 631: * m68k.md (casesi_2 recognizer) [SGS] RTX_INTEGRATED_P test backwards. ! 632: * tm-3b1.h (ASM_OUTPUT_CASE_LABEL): Likewise. Also missing `\'. ! 633: ! 634: * reload1.c (count_occurrences): New function. ! 635: (choose_reload_targets): Don't delete a reload if the same reg ! 636: is used elsewhere in the current insn. ! 637: (delete_output_reload): code split out from choose_reload_targets. ! 638: ! 639: * c-typeck.c (build_c_cast): Always put on some operator, ! 640: so the cast is never an lvalue for strict ANSI. ! 641: ! 642: * c-typeck.c (initializer_constant_valid_p): Don't depend on ! 643: distinction between NOP_EXPR and CONVERT_EXPR. ! 644: ! 645: * c-convert.c: Fns reordered; new comments. ! 646: ! 647: * fold-const.c (fold): If simplifying a NOP_EXPR within a BIT_AND_EXPR, ! 648: return a NOP_EXPR. ! 649: New var TYPE holds type of expr. ! 650: ! 651: * c-parse.y (expr_no_commas): Split off cast_expr and unary_expr, ! 652: to reject `sizeof (int) foo'. ! 653: ! 654: * toplev.c (main): Treat plain `-' as input filename. ! 655: ! 656: * final.c (final): If an insn's output routine returns 0, ! 657: it means to output the deleted compare insn immediately preceding. ! 658: ! 659: * m68k.md (branch insns): Use 0 as 3rd arg for OUTPUT_JUMP ! 660: rather than explicitly clearing the overflow flag. ! 661: ! 662: * tm-i386.h (OUTPUT_JUMP): Really use NO_OV; don't abort. ! 663: * i386.md (branch insns): Put real data (sometimes 0) in 3rd arg ! 664: of OUTPUT_JUMP. 0 means preceding test may not be deleted. ! 665: (lea pattern): Clear the cc's. ! 666: * output-i386.c (notice_update_cc): various arith insns set the cc's. ! 667: ! 668: Thu Dec 29 13:22:01 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 669: ! 670: * stmt.c (expand_decl_init): Do nothing for static decls. ! 671: ! 672: * reload.c (find_reloads_address{,_1}): Return 1 iff entire arg ! 673: was reloaded as a whole, else 0. ! 674: (find_reload): If find_reloads_address returns 1, don't let that MEM ! 675: satisfy a `>' or `<' constraint. ! 676: ! 677: * m68k.md (cmpmb): Delete special pattern, make cmpqi handle it. ! 678: The special pattern couldn't handle reloading the incremented register. ! 679: ! 680: * integrate.c (copy_rtx_and_substitute): Test BYTES_BIG_ENDIAN, ! 681: not BITS... ! 682: ! 683: * combine.c (subst): Consider big-endian correction ! 684: when simplifying (subreg (mem ...) ...). ! 685: ! 686: * reload.c (find_reloads): Don't crash if matching operands in `asm' ! 687: are both read or both write. ! 688: ! 689: * expr.c (emit_push_insn): Address for movstr must be XINNER, not X. ! 690: ! 691: * toplev.c (main): Typo parsing `-fno...'. ! 692: ! 693: Wed Dec 28 13:07:21 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 694: ! 695: * toplev.c (rest_of_compilation): `volatile' fns need jump_optimize ! 696: for warnings, as if -Wreturn-type. ! 697: * c-typeck.c (c_expand_return): Warn about `return' in a `volatile' fn. ! 698: * c-decl.c (finish_function): Warn if `volatile' fn can drop thru end. ! 699: ! 700: * cse.c (canon_reg): Handle nulls as subexpressions. ! 701: (fold_rtx, canon_hash, mention_regs, exp_equiv_p): Likewise. ! 702: * loop.c (invariant_p, replace_regs, replace_call_address, may_trap_p, ! 703: {basic,general}_induction_var): Likewise. ! 704: ! 705: * expr.c (expand_call): Handle `const' functions: ! 706: Local IS_CONST is 1 if function is const. ! 707: Attach REG_RETVAL and REG_LIBCALL notes around the call. ! 708: Copy fn address to register outside of those notes. ! 709: Likewise precompute all parms outside them. ! 710: ! 711: * expr.c (expand_call): If fn is volatile, emit barrier after the call. ! 712: ! 713: * c-decl.c (grokdeclarator): Allow function declared const or volatile. ! 714: ! 715: Sat Dec 24 18:40:12 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 716: ! 717: * integrate.c (function_cannot_inline_p): If STRUCT_VALUE_INCOMING ! 718: or STRUCT_VALUE is defined, can't inline functions returning BLKmode. ! 719: ! 720: Fri Dec 23 13:26:26 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 721: ! 722: * expr.c (store_constructor): Compute array's size ! 723: with int_size_in_bytes. ! 724: ! 725: * varasm.c (assemble_variable): If shared data, go to data section ! 726: before outputting an uninitialized symbol. ! 727: ! 728: * tm-sequent.h (ASM_OUTPUT_ALIGN_CODE): Missing backslash. ! 729: (SHARED_SECTION_ASM_OP): Macro defined. ! 730: * tm-seq386.h (SHARED_SECTION_ASM_OP): Macro defined. ! 731: ! 732: * c-typeck.c (c_expand_asm_operands): Warn if output op is `const'. ! 733: ! 734: * Fix problem where a stmt expr in an initialization ! 735: refers to the variable it is initializing. ! 736: * stmt.c (expand_decl_init): New fn split out from `expand_decl'. ! 737: * c-decl.c (finish_decl): Call that. ! 738: Don't call expand_decl if already done. ! 739: (start_decl): Call expand_decl if type is complete already. ! 740: ! 741: * Makefile (install): Typo in ranlib command. ! 742: ! 743: Thu Dec 22 15:57:12 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 744: ! 745: * tree.h (tree_identifier): New field. ! 746: (IDENTIFIER_ERROR_LOCUS): Accessor for it. ! 747: * c-parse.y (primary => IDENTIFIER): ! 748: Undeclared variable gets one err msg per function it appears in. ! 749: ! 750: * ns32k.md (andsi3): Delete extra brace. ! 751: ! 752: * alliant.md, xm-alliant.h, tm-alliant.h, output-alliant.c: New files. ! 753: ! 754: * combine.c (SUBST, SUBST_INT): Store new field `is_int'. ! 755: (copy_substitutions): Don't copy an int as an rtx. ! 756: ! 757: * Makefile (INSTALL): Install gcc.1 properly. ! 758: ! 759: * tm-ns32k.h (FUNCTION_PROLOGUE, ASM_OUTPUT_ALIGN_CODE): ! 760: Add missing backslashes. ! 761: 1.1.1.12 root 762: Wed Dec 21 02:46:34 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 763: 764: * Version 1.32 released. 765: 766: * toplev.c (main): Vax pcc enforces goto-less programming 767: with fatal error. 768: 769: * stmt.c (fixup_memory_subreg): New arg INSN says where to emit insns. 770: (walk_fixup_memory_subreg): Likewise. All callers changed. 771: 772: Tue Dec 20 01:26:56 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 773: 774: * c-decl.c (start_function): Don't clear TREE_PERMANENT in fn decl. 775: Make the result decl a permanent node. 776: (finish_function): Don't clear DECL_RESULT in an inline function. 777: (duplicate_decls): Don't lose DECL_RESULT or DECL_SAVED_INSNS 778: or old decl, when defn is followed by redeclaration. 779: Likewise DECL_ARGUMENTS and DECL_RESULT_TYPE. 780: 781: * stmt.c (expand_function_end): End any sequences left unterminated. 782: 783: * cse.c (predecide_loop_entry): If "loop" has no label, do nothing. 784: 785: * recog.c (asm_noperands): Now return -1 if not that kind of insn. 786: All callers changed. 787: * combine.c (check_asm_operands): Calling changes not quite trivial. 788: * final.c (final): Likewise. 789: * reload.c (find_reloads): Likewise. 790: * recog.c (asm_noperands): Other changes: 791: Loop computing # of SETs in a PARALLEL was off by 1. 792: Validate all elts of any PARALLEL, to block invalid combinations. 793: 794: * ns32k.md (andsi3, andhi3): Make new CONST_INTs; don't clobber old. 795: 796: * integrate.c (copy_rtx_and_substitute): When looking in `parm_map', 797: if our mode mismatches parm's mode, use change_address to extract part. 798: On BYTES_BIG_ENDIAN machines, adjust the offset. 799: 800: Mon Dec 19 23:50:14 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 801: 802: * cexp.y ('/' and '%' ops): If divide by 0, print error, don't die. 803: 804: Sun Dec 18 14:03:02 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 805: 806: * toplev.c (main): Avoid shadowing I in inner block. 807: 808: * flow.c (propagate_block): The insn at the end of a libcall 809: may be dead, but the libcall might still be needed if the 810: hard return reg is used later. Detect this case. 811: (libcall_dead_p): New fn used to check that the libcall is dead. 812: 813: * output-m68k.c, tm-m68k.h (standard_sun_fpa_constant_p): Fn renamed. 814: 815: Sat Dec 17 13:23:51 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 816: 817: * stmt.c (expand_end_bindings): error_with_file_and_line => ..._decl. 818: 819: * combine.o (try_combine): Accept combination making a valid 820: asm with operands. 821: (check_asm_operands): Recognize asm with operands that are valid. 822: 823: * loop.c (strength_reduce): Don't accept a reg as a giv 824: if the reg was made by loop-optimize. 825: 826: * stmt.c (balance_case_nodes): A list of 3 always splits in middle. 827: 828: Fri Dec 16 17:22:07 1988 Tiemann (rms at sugar-bombs.ai.mit.edu) 829: 830: * sparc.md (fetch from constant address): Split into two patterns, 831: one fixed point and one floating. 832: (store at constant address): Handle remembered hi-half differently. 833: Other bug fixes. 834: (fix_truncsfsi2): Use f1, not f0, as temp. 835: (fix_truncdfsi2): Don't clear CC_F1_IS_0. 836: 837: * output-sparc.c (singlemove_string): Changed handling of case 838: where op1 is not memory and op0 has varying address. 839: (output_fp_move_double): Avoid reloading high half address 840: in the ldd and std cases with constant address. 841: (make_f0_contain_0): Handle f0 and f1 individually. 842: 843: * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): CONST is now illegitimate. 844: 845: * rtl.c (note_stores): Pass entire SET rtx, not flag, as 2nd arg to FN. 846: * local-alloc.c (reg_is_set): New type for 2nd arg. 847: 848: * Makefile: Comment out cc1plus, since not ready for release. 849: 850: Thu Dec 15 16:39:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 851: 852: * local-alloc.c (reg_is_set): If a hard reg is clobbered, make it free 853: before and after the insn. 854: * stupid.c (stupid_mark_refs): Likewise. 855: * global-alloc.c (global_conflicts): Likewise. 856: Use note_stores to call mark_reg_{store,clobber}. 857: (mark_reg_store): Changed calling conventions 858: All work done on set/clobbered regs is now done here. 859: Ignore CLOBBERs. 860: (mark_reg_clobber): Similar fn, but ignore SETs and handle CLOBBERs. 861: (regs_set, n_regs_set): New static vars for comm. among the above. 862: 863: * stmt.c (expand_asm_operands): call protect_from_queue on operands. 864: This requires preexpanding the outputs into a vector of rtx's. 865: 866: * Makefile (install): cd to $(libdir) before ranlib. 867: 868: * c-typeck.c (c_expand_asm_operands): emit_queue at the end. 869: 870: * reload.c (find_reloads): Count # alternatives properly for 871: an asm insn, and check that all operands correspond. 872: 873: * loop.c (verify_loop): Reject loops containg setjmps. 874: * cse.c (cse_main): Don't cse across a call to setjmp. 875: 876: * expr.c (expand_expr): Permit any non0 DECL_RTL for a VAR_DECL. 877: 878: * stmt.c (balance_case_nodes): Count ranges double when balancing. 879: 880: Wed Dec 14 13:50:45 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 881: 882: * final.c (output_addr_const): Output just `-', not `+-'. 883: 884: * make-cc1.com: Update filenames changed to `c-'. 885: * make-cccp.com: Pass needed -D options when compiling cccp.c. 886: Use /nomap when linking. 887: 888: * loop.c (strength_reduce): Paraphrase setting NEW_REG, for Iris cc. 889: 890: * output-m68k.c (output_move_const_single): %'s must be doubled twice. 891: 892: * loop.c (record_giv): A giv can be replaceable if its uses are 893: all in the same basic block as its sole setting. 894: (last_use_this_basic_block): Subroutine to test that. 895: 896: Tue Dec 13 13:41:57 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 897: 898: * expr.c (do_store_flag): Allow for COMPARISON to be a const_int. 899: 900: * c-decl.c (pushdecl): Warn if type mismatch with another external decl 901: in a global scope. 902: 903: * fixincludes: Fix typo in msg of deleting unchanged file. 904: 905: * Makefile (insn-*): Use two-step rules with a separate time-stamp file 906: to avoid rerunning gen* unless md has changed again. 907: 908: Mon Dec 12 13:32:05 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 909: 910: * i386.md (tstsf, tstdf, cmpsf, cmpdf): Use fnstsw, not fstsw. Faster. 911: 912: * tm-vax.h (ASM_OUTPUT_REG_POP): Use correct asm syntax for pop insn. 913: 914: * combine.c (subst): Handle (subreg (mem)) by making a changed mem. 915: This avoids producing any (subreg (mem))s except in the special 916: case they are supposed to be made here. 917: Also set undo_storage in a couple of cases that forgot to. 918: 919: * reload.c (push_reload): When handling (SUBREG (MEM)) for IN, 920: if there is an OUT, make that a separate reload. 921: Return its number in `output_reloadnum' 922: (find_reloads): When pushing matching-reloads, note that the 923: two operands can have different reload-numbers. 924: 925: * tm-3b1.h (ASM_OUTPUT_CASE_END): Test flag on TABLE, not its pattern. 926: (ASM_OUTPUT_CASE_LABEL): If /i flag set, don't output the dummy entry 927: since the fetcher-insn will not be off by 2 in this case. 928: * m68k.md (casesi_2 recognizer): For 3b1 syntax, compensate for that. 929: 930: Sun Dec 11 12:51:49 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 931: 932: * genrecog.c (try_merge_2): No longer put all explicit decompositions 933: before all predicates. Patterns are now tested in the order written. 934: * vax.md: Move the push-or-move-address patterns to the end. 935: * m68k.md: Move load-address pattern to end. 936: Rearrange the special-case movsi patterns. 937: * ns32k.md: Move special load-reg-17 pattern before movsi. 938: * i386.md: Move the QI and DI push patterns to logical places. 939: This should not actually change anything. 940: 941: * stmt.c: Add Andy Hitchins's binary-tree case statement code. 942: (struct case_stmt): case_list field is now a case_node chain. 943: Replace has_default field with default_label field. 944: (pushcase, pushcase_range): Build case_list in its new type, 945: and keep it sorted. 946: (expand_end_case): Use case_list in its new type. 947: Count a range of > 1 as two cases, when choosing strategy. 948: (group_case_nodes, balance_case_nodes): New fns, rearrange case_list. 949: (node_has_{low,high}_bound, node_is_bounded): New fns test 950: relationships of values of various case_list tree nodes. 951: (emit_jump_if_reachable): New fn. 952: (emit_case_nodes): Emit compares and jumps based on tree of case_list. 953: 954: * cccp.c (finclude): Handle nonordinary files (stat doesn't give size). 955: 956: * tm-3b1.h (PRINT_OPERAND_ADDRESS): Handle case of breg and no ireg. 957: 958: Sat Dec 10 16:30:32 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 959: 960: * sparc.md (movstrsi): Separate define_expand and define_insn; 961: clobber some pseudos to get temp regs to use in the output. 962: * output-sparc.c (output_block_move): Use those temp regs, 963: guaranteed to be free. 964: 965: * sparc.md (andcc patterns for bitfields from memory): 966: Test immed. arg for being in range. 967: (load DFmode constant): Use %m for output in one case. 968: * output-sparc.c (singlemove_string, output_move_double): Likewise. 969: 970: * output-sparc.c (singlemove_string): New case for mem-to-mem move. 971: 972: Fri Dec 9 11:42:15 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 973: 974: * stupid.c (stupid_mark_refs): for CLOBBER of a pseudo, 975: it is born just before this insn and dies just after. 976: 977: * tm-vax.h (NOTICE_UPDATE_CC): For aob, sob insns, forget the cc's. 978: 979: * basic-block.h (REG_BLOCK_UNKNOWN, REG_BLOCK_GLOBAL): Move defn here. 980: * local-alloc.c: Use them. 981: 982: * c-decl.c (store_parm_decls): Additional explanatory message 983: for some prototype mismatches. 984: 985: * gnulib.c (SItype): New macro used instead of `int' 986: for SImode operands and values. Definition is `long int'. 987: 988: Thu Dec 8 18:45:48 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 989: 990: * reload.c (operands_match_p): Move the label `slow' so that 991: it doesn't cause a REG and a SUBREG to be compared wrong. 992: 993: * toplev.c (compile_file): Output a label `gcc_compiled.' for GDB. 994: If new macro ASM_IDENTIFY_GCC is defined, run that instead. 995: * tm-3b1.h (ASM_IDENTIFY_GCC): Define this as no-op. 996: 997: Wed Dec 7 12:20:42 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 998: 999: * i386.md (adddf3): Typo: paren was in a constraint. 1000: 1001: * c-decl.c (grokparms): Avoid duplicate msgs for incomplete type ptrs. 1002: 1003: * gnulib.c: Rename all fns to start with `__'. 1004: * optabs.c, expr.c: Rename all references. 1005: 1006: * gnulib.c (__cmpdi2, __ucmpdi2): New fns. 1007: * optabs.c (emit_cmp_insn): Use them. 1008: 1009: * Makefile (stage*): Ignore errors on the main `mv' (for cc1plus). 1010: Run ranlib if we have to copy gnulib. 1011: 1012: * expmed.c (expand_divmod): Split `label' into several local vars. 1013: 1014: * jump.c (jump_back_p): Do nothing unless cc's were set from integers. 1015: 1016: Tue Dec 6 12:00:21 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1017: 1018: * c-parse.y (extend_token_buffer): Use xrealloc, not realloc. 1019: 1020: * integrate.c (output_inline_function): fix args of expand_function_end 1021: (expand_inline_function): Add missing arg to expand_end_bindings. 1022: 1023: * cse.c (cse_insn): Add missing MODE arg to canon_hash. 1024: 1025: * reload1.c (reload_as_needed): Del. extra arg of choose_reload_targets 1026: (reload): Add missing MODE arg to immediate_operand. 1027: 1028: * expmed.c (expand_mult): Delete extra arg to expand_unop. 1029: 1030: * c-typeck.c (default_conversion): 1031: Add missing NOCONVERT arg to build_unary_op. 1032: 1033: * c-decl.c (duplicate_decls, finish_struct): Add missing arg 1034: KNOWN_ALIGMENT to layout_decl. 1035: * stor-layout.c (layout_record): Likewise. 1036: * varasm.c (assemble_variable): Likewise. 1037: 1038: * dbxout.c (dbxout_init): Add missing LOCAL arg to dbxout_symbol. 1039: 1040: * expr.c (clear_storage): Remove excess arg to emit_move_insn. 1041: 1042: * loop.c (consec_sets_invariant_p): Add parens in hairy if-condition. 1043: 1044: * fold-const.c (fold): Typo, missing `case'. 1045: 1046: * cccp.c (main): Typo handling `-I-' option. 1047: 1048: * tm-i386.h (NO_FUNCTION_CSE): Define this; cse is said to slow 1049: things down with less than 7 calls. 1050: 1051: * stmt.c (fixup_var_refs_insn): When scanning the reg-notes, 1052: don't touch other insns they point at. 1053: 1054: * expr.c (do_jump): Use invert_exp, not reverse_condition, 1055: to invert sense of a jump. 1056: * jump.c reverse_condition now static, invert_exp now global. 1057: 1058: Mon Dec 5 10:51:39 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1059: 1060: * tm-sun386.h (ASM_FILE_START): In the .file arg, exclude directories. 1061: 1062: * stmt.c (expand_expr_stmt): If -W, warn if stmt has no side effect. 1063: 1064: * cccp.c (monthnames): Capitalize each name. 1065: 1066: * rtl.def: New code MATCH_OPERATOR. 1067: * genconfig.c (walk_insn_part): Handle it. 1068: * genextract.c (walk_rtx): Handle it. 1069: * genpeep.c (match_rtx): Handle it. 1070: * genrecog.c (add_to_sequence): Handle it. 1071: * genemit.c (max_operand_1, gen_exp, gen_expand): Handle it. 1072: * genoutput.c (scan_operands): Handle it. 1073: (insn_n_alternatives): New array in the output. 1074: (struct data): New slots n_alternatives and op_n_alternatives. 1075: (scan_operands, gen_insn, gen_peephole): 1076: Record op_n_alternatives for each operand. 1077: (output_epilogue): Verify that all operands have same # of alternatives 1078: Also output insn_n_alternatives. 1079: 1080: * reload.c (find_reloads): use insn_n_alternatives to control 1081: the loop over all alternatives. 1082: An empty constraint or empty alternative in a constraint 1083: is always satisfied. 1084: * recog.c (constrain_operands): Likewise. 1085: 1086: * c-decl.c (lang_decode_option): For each -f option, recognize a form 1087: with `no-' and a form without, as contraries. 1088: 1089: * toplev.c (main): Decode -f options using a table 1090: so that each option automatically has a `no-' variant. 1091: 1092: * combine.c (try_combine): Give up if I1 or I2 follows a compare insn. 1093: 1094: Sun Dec 4 12:00:36 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1095: 1096: * varasm.c (data_section): If flag_shared, use SHARED_SECTION_ASM_OP 1097: if that is defined. 1098: 1099: * cccp.c (include_default): Add /usr/local/include. 1100: 1101: * Makefile (install): Install the makefile. 1102: 1103: * varasm.c (assemble_external): New fn to declare an external. 1104: (assemble_variable): Output nothing for externals. 1105: * c-parse.y (primary => identifier): Call assemble_variable on 1st use. 1106: 1107: * toplev.c (main): Print version info on stderr, not stdout. 1108: * tm-*.h (TARGET_VERSION): Likewise. 1109: 1110: * tm-isi68.h, tm-news800.h: Rename __HAVE_FPU__ to __HAVE_68881__. 1111: 1112: * sparc.md (seq, etc): Entire page rewritten by Tiemann 1113: to avoid incorrect use of PARALLEL. 1114: * output-sparc.c (gen_scc_insn): Corresponding changes. 1115: 1116: Sat Dec 3 00:03:19 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1117: 1118: * gcc.c (do_spec_1): %P is an ANSIfied form of %p: 1119: put __ at beg and end of each predefined macro name. 1120: 1121: * tm-sun3.h (CPP_SPEC): Don't define -Dmc68010, etc., if -ansi. 1122: * tm-sun2.h (CPP_SPEC): Likewise. 1123: 1124: * c-decl.c (shadow_tag): Don't complain if declare a new tag 1125: at top level, or if redeclare a tag. 1126: 1127: * c-decl.c (grokparms): Warn if parm points to incomplete type. 1128: (We already err if its own type is incomplete.) 1129: 1130: * stmt.c (fixup_var_refs_insns): Fix any (SUBREG (MEM)) in REG_NOTES. 1131: (walk_fixup_memory_subreg): New subroutine used for this. 1132: 1133: * integrate.c (copy_rtx_and_substitute): Handle MEM refs to the middle 1134: of a stack-parm--at least in the case of reading the parm. 1135: 1136: * rtl.c (rtx_equal_p): REG_FUNCTION_VALUE_P is significant 1137: only until end of reload pass. 1138: * toplev.c (rest_of_compilation): 1139: Control that by setting new var rtx_equal_function_value_matters. 1140: 1141: * c-decl.c (init_decl_processing): Don't declare the builtins 1142: that aren't really implemented. 1143: 1144: * output-sparc.c (output_move_double): "in structure" implies 1145: 8-byte alignment only for DFmode, not for DImode. 1146: 1147: * final.c (output_operand_lossage): Cleaner text for error msg. 1148: No longer need to write text into .s file, now that linenum is correct. 1149: 1150: * c-decl.c (pushdecl): -traditional stops warning 1151: about "declared extern, later static". 1152: 1153: * c-typeck.c (build_indirect_ref): Don't handle flag_volatile here. 1154: * expr.c (expand_expr): Handle it here, in INDIRECT_REF case. 1155: This prevents -fvolatile from causing additional warnings. 1156: 1157: * output-sparc.c (output_load_address): Allow REG+REG for operands[3]. 1158: 1159: * m68k.md (movsi): If we output the label LIn, 1160: set the RTL_INTEGRATED flag in the switch table's pattern. 1161: * tm-3b1.h (ASM_OUTPUT_CASE_END): Define LD%n only if LI%n was output. 1162: 1163: * i386.md (push-and-add pattern): Comment it out. 1164: It's said to result in slower code. 1165: 1166: * i386.md (tstqi, tsthi, tstsi): Output real `test' insn if op is reg. 1167: 1168: * i386.md (push for DI): Allow `oiF' for 2nd operand. 1169: 1170: Fri Dec 2 13:57:35 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1171: 1172: * i386.md (movdi): Allow F constraint for 2nd operand. 1173: 1174: * i386.md (push for QI): define pattern to push a QImode 1175: which really uses pushw and therefore really pushes a halfword. 1176: * tm-i386.h (PUSH_ROUNDING): Round up to multiple of 2. 1177: 1178: * gcc.c (do_spec_1): Handle %e, which means report an error. 1179: Use it to prohibit -pg with -fomit-frame-pointer. 1180: 1181: * tree.h (DECL_RESULT_TYPE): New field in FUNCTION_DECL holds the type 1182: of the widened returned value (not nec. the declared return type). 1183: * c-decl.c (start_function): Set DECL_RESULT_TYPE. 1184: * integrate.c (expan_inline_function): Use that, not DECL_RESULT. 1185: 1186: Thu Dec 1 16:44:10 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1187: 1188: * cse.c (fold_rtx): When reordering constant args, insist on 1189: manifest constants; regs with known contents won't do. 1190: 1191: * i386.md (mulsi3): Don't use rtx_equal_p to compare regs. 1192: 1193: * expr.c (move_by_pieces_1): Don't call change_address 1194: if address is autoinc, since that may not be memory_address_p. 1195: Subroutine-macro add_offset deleted. 1196: 1197: * optabs.c (bcc_gen_fctn, setcc_gen_fctn): Moved to this file. 1198: (init_optabs): Init those tables here. 1199: * expr.c (init_conditions): Not here. 1200: 1201: * stmt.c (assign_stack_local): Make a list of all stack slots. 1202: * emit-rtl.c (unshare_all_rtl): Unshare all the stack slots. 1203: 1204: * final.c (final): Handle BARRIER with ASM_OUTPUT_ALIGN_CODE. 1205: * tm-ns32k.h (ASM_OUTPUT_ALIGN_CODE): Align to 4-byte bdry. 1206: ?? * tm-sequent.h (ASM_OUTPUT_ALIGN_CODE): Override: just 2-byte bdry. 1207: 1208: * tm-m68k.h (PRINT_OPERAND): use new macros to print floats. 1209: (ASM_OUTPUT_FLOAT_OPERAND): New macro. 1210: (ASM_OUTPUT_DOUBLE_OPERAND): New macro. 1211: * tm-sun3.h: Override those macros, to check for infinities. 1212: 1213: Wed Nov 30 06:35:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1214: 1215: * tm-ns32k.h (FUNCTION_{PRO,EPI}LOGUE): if no frame pointer, 1216: do explicit push or pop insns. 1217: 1218: * tm-genix.h (PRINT_OPERAND): Fix typo `file'. 1219: Extedn decl for paren_base_reg_printed. 1220: (MAIN_FUNCTION_PROLOGUE): Deleted. 1221: (ASM_OUTPUT_EXTERNAL): Defined. 1222: 1223: * c-parse.y (yyerror): Better error msg for unprintable char in token. 1224: (primary => identifier): Set TREE_USED if implicit decl made. 1225: 1226: * Makefile (cleanlinks): New target. 1227: (INSTALL): New variable, has program used for installing files in sys. 1228: 1229: * output-ns32k.c (print_operand_address): If addr is sum of 2 consts, 1230: output ADDR first, then OFFSET. 1231: 1232: * ns32k.md (addsi3): Allow adding const+reg with result in another reg. 1233: 1234: * tm-seq386.h (FUNCTION_PROFILER): Provide overriding definition. 1235: 1236: * tm-hp9k320.h: Alternate ASM_SPEC if using GAS. 1237: Define STANDARD_STARTFILE_PREFIX if using GAS. 1238: (FUNCTION_PROLOGUE): on 68020 for big stack frame use link.l. 1239: 1240: * gcc.c (STANDARD_STARTFILE_PREFIX): New cust. macro replaces `/lib/'. 1241: 1242: * va-sparc.h, va-spur.h: Prefix non-interface identifiers with `__'. 1243: 1244: * optabs.c (init_optabs): Don't set up libcalls for ftrunc_optab 1245: because (1) they aren't supported and (2) they are never used. 1246: 1247: * gnulib.c (__builtin_saveregs): If not sparc, define the symbol anyway 1248: to avoid a warning in ranlib. 1249: 1250: Mon Nov 28 01:46:12 1988 Michael Tiemann (mdt at choctaw) 1251: 1252: * c-parse.y (yylex): Typo, `=' for `==' making wide strings. 1253: 1254: * sparc.md (various places): make sure that all patterns which store 1255: can store using const0_rtx (i.e., make all operands to `st' %rx). 1256: 1257: * output-sparc.c (various places): changed dispatches on SYMBOL_REF 1258: to dispatches on CONSTANT_ADDRESS_P since we now recognize any CONST 1259: (and not just SYMBOL_REFs). Don't recognize special case CONST for 1260: output_block_move. Compiler doesn't have enough information to use 1261: it. 1262: 1263: * stmt.c (expand_fixup): If the control stack is nested within the 1264: nesting stack, then no fixup is needed. Otherwise, compiler must 1265: check for possible fixups between the current nesting stack and the 1266: nesting stack that immediately contains the control stack. 1267: 1268: * stmt.c (expand_function_start): functions which are nested use 1269: DECL_CONTEXT. For these functions, test that their DECL_CONTEXT is 1270: a LET_STMT node. 1271: 1272: * tree.h: declare `build_offset_type'. 1273: 1274: Sun Nov 27 10:34:53 1988 Richard Stallman (mdt at yahi) 1275: 1276: * output-sparc.c (output_move_double): 1277: Don't try to use ldd/std if OP1 is a constant. 1278: * sparc.md (movdi): Allow immediate args moved into general regs. 1279: 1280: * c-decl.c (grokparms): Reject incomplete parm types even if just 1281: declarating, not defining. Change types to error_mark_node 1282: in both the PARM_DECL and the list of types. 1283: 1284: * dbxout.c (dbxout_type): It's not a bug if a RECORD_TYPE 1285: has a typedef as its TYPE_NAME. That happens in C++. 1286: 1287: * Make each `asm' with operands record its source file/line 1288: with reg-notes. It doesn't work to emit a special note before the insn 1289: because the insn can be moved by loop_optimize. 1290: * stmt.c (expand_asm_operands): New args FILENAME, LINE. 1291: Record them in the insn, in reg notes. 1292: * c-typeck.c (c_expand_asm_operands): New args, passed along. 1293: * c-parse.y: Pass those args. 1294: (maybe_type_qual): Line #s for asm stmts emitted like all others. 1295: * rtl.h (REG_ASM_FILE, REG_ASM_LINE): New kinds of reg notes. 1296: * toplev.c (error_for_asm): Get the info from those notes. 1297: 1298: * reload.c (find_reloads): Don't clear BADOP for a reg letter 1299: if the alternative ultimately doesn't allow any regs. 1300: 1301: * reload.c (find_reloads): If an `asm' insn gets an error, 1302: change it to a USE to avoid duplicate error msgs or later trouble. 1303: 1304: * reload.c (find_reloads_address): Reloading a constant address, 1305: specify Pmode as the mode for push_reloads, in case of CONST_INT. 1306: 1307: * expr.c (emit_push_insn): Fix calc. of space needed when PARTIAL > 0. 1308: Both scalar case and BLKmode case needed fixing. 1309: 1310: * sparc.md (load/store constant address): 1311: Moving DF from mem to cpu regs, don't go via %f0. 1312: Don't use std/ltd if alignment is wrong or uncertain. 1313: 1314: Sun Nov 27 10:34:53 1988 Michael Tiemann (mdt at yahi) 1315: 1316: * reload.c (push_reload): Allow VOIDmode for INMODE, OUTMODE; 1317: default the mode from the operand values. 1318: 1319: * sparc.md: remove patterns which generate annulled branch insns. 1320: They are correct, but those insns confuse GDB. 1321: 1322: * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): 1323: Treat any constant address like a SYMBOL_REF. 1324: * sparc.md: Check for CONSTANT_ADDRESS_P rather than SYMBOL_REF. 1325: 1326: * sparc.md: Peepholes now accept SYMBOL_REF addresses. 1327: The output routine can now split them properly even as delay insns. 1328: 1329: * print-tree.c (dump): added entry for METHOD_TYPE and 1330: METHOD_CALL_EXPR. Also added entry for WITH_CLEANUP_EXPR. Suggest 1331: that we make first_rtl of WITH_CLEANUP_EXPR 2 instead of 1. 1332: 1333: Sun Nov 27 00:15:33 1988 Michael Tiemann (mdt at yahi) 1334: 1335: * print-tree.c (dump): added entry for OP_IDENTIFIER. 1336: 1337: * tree.c (build_op_identifier): new function. Needed because 1338: `build_nt' expects an "e" node, but OP_IDENTIFIER is an "x" node. 1339: 1340: * store_layout.c (layout_record): use DECL_FIELD_CONTEXT instead of 1341: DECL_CONTEXT. 1342: 1343: * tree.h (DECL_FIELD_CONTEXT): new macro. Points to the type that a 1344: FIELD_DECL is a member of. For C, this is just DECL_CONTEXT. 1345: 1346: * tree.c (build_method_type): typo used "==" to assign basetype to 1347: TYPE_METHOD_BASETYPE with predictably poor results. 1348: 1349: Sat Nov 26 22:55:32 1988 Michael Tiemann (mdt at yahi) 1350: 1351: * output-sparc.c (output_sized_memop): new function to output a load 1352: or store insn based on the size of the operand loaded or stored. 1353: (make_f0_contain_0): use info from condition codes to decide whether 1354: the register %f0 needs to have 0 loaded from memory or not in order 1355: to contain zero. 1356: (gen_scc_insn): new function used by define_expands for 1357: set-on-condition-code insns. 1358: (output_delay_insn): now knows how to handle load and store 1359: scheduling when the load or store operation takes two insns instead 1360: of one. The rewrite is now understands is this: 1361: 1362: sethi %hi(address),%g1 -> sethi %hi(address),%g1 1363: ld/st [%g1+%lo(address)],%reg -> b target 1364: b target -> ld/st [%g1+%lo(address)],%reg 1365: nop -> ;; gone 1366: 1367: * jump.c (reverse_condition): make this function publicly visible, 1368: now needed in expr.c. 1369: 1.1.1.13! root 1370: * output-sparc.c (reg_or_0_operand): new function, returns nonzero 1.1.1.12 root 1371: if operand is const0_rtx or a register of specified mode. 1372: (hardreg): deleted. 1373: 1374: * expr.c, stmt.c: fixed random syntax errors. 1375: 1376: * tree.c (build_method_type): now corresponds to defn in tree.def 1377: expr.c (expand_call): removed code to get FUNCTION_TYPE from 1378: METHOD_TYPE. This should probably be looked at harder. 1379: 1380: * tree.def (METHOD_TYPE): Changed definition so that TREE_TYPE (m) 1381: (where m is a METHOD_TYPE) is the type of the return value of the 1382: method, not the FUNCTION_TYPE from which the METHOD_TYPE is derived. 1383: 1384: * Makefile: Changed target of BINDIR from /usr/local to 1385: /usr/local/bin. 1386: 1387: Sat Nov 26 16:29:22 1988 Michael Tiemann (mdt at chickasaw) 1388: 1389: * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): Allow any SYMBOL_REF. 1390: (NOTICE_UPDATE_CC): Remember high half of %g1 as a "condition code" 1391: to avoid reloading it if it does not change. 1392: (NOTICE_UPDATE_CC): Test SET_SRC, not SET_DEST, for a CALL rtx. 1393: (PRINT_OPERAND): New code-letter `m' says output operand as an address. 1394: 1395: * toplev.c (flag_syntax_only): New flag variable. 1396: * flags.h: Likewise. 1397: 1398: * toplev.c (error_with_decl): Extra arg, passed to fprintf. 1399: (warning_with_decl): Likewise. 1400: 1401: * tree.c (build_offset_type): New function. 1402: 1403: * tree.h (TYPE_METHOD_BASETYPE): New name for TYPE_METHOD_CLASS. 1404: Uses in tree.c and... renamed. 1405: 1406: * combine.c (SUBST_INT): New macro, for replacing an int. 1407: (subst): Collapse nested SUBREGs even if SUBREG_WORDs are not 0. 1408: 1409: * expr.c (bcc_gen_fctn, setcc_gen_fctn): new tables, 1410: initialized in init_comparisons. 1411: Used in expand_expr, do_jump, do_store_flag 1412: instead of explicit construction of a jump. 1413: 1414: * expr.c (save_noncopied_parts): New function. 1415: 1416: * expr.c (expand_expr): 1417: ARRAY_REF: Special case for array of constants. 1418: WITH_CLEANUP_EXPR: Handle it. 1419: INIT_EXPR: Case deleted. 1420: MODIFY_EXPR: Use save_noncopied_parts. 1421: 1422: * expr.c (expand_call): blkmode_parms_forced can be >0 1423: even when no stack arg space otherwise needed. 1424: Don't use a hard reg as a target if there are cleanups. 1425: 1426: * stmt.c (struct block): New elt. outer_cleanups. 1427: (struct case): New elt. num_ranges. 1428: (struct fixup): Changed meaning of cleanup_list_list. 1429: Changes in expand_fixup, fixup_gotos. 1430: (expand_fixup): Detect some internal forward-jumps 1431: that need no fixups--for speed. 1432: (fixup_gotos): New arg THISBLOCK. 1433: (expand_expr_stmt): Handle flag_syntax_only. 1434: (use_variable): No longer static. 1435: (use_variable_after): new fn. 1436: (expand_end_bindings): handle cleanups like a stack level. 1437: (expand_decl): Handle a cleanup with no decl. 1438: (move_cleanups_up): Preserve relative order of cleanups. 1439: (expand_anon_union_decl): New fn. 1440: (pushcase): New fast clause if no ranges yet. 1441: (pushcase_range): Turned on. 1442: (expand_function_start): New temp var `fntype'. 1443: Set TREE_USED for a parm we are ignoring. 1444: (expand_function_end): Really use the `filename' arg. 1445: Use use_variable_after for SAVE_EXPR regs. 1446: 1447: * dbxout.c (dbxout_type): Handle OFFSET_TYPE. 1448: 1449: * gnulib.c (__builtin_new, etc.): Support for C++. 1450: 1451: * emit-rtl.c (next_insn, prev_insn): New fns. 1452: 1453: Sat Nov 26 16:29:22 1988 Richard Stallman (mdt at chickasaw) 1454: 1455: * tree.h (TREE_LANG_FLAG_[1234]): New attributes. 1456: (TYPE_METHOD_BASETYPE): New name for TYPE_METHOD_CLASS. 1457: (TYPE_OFFSET_BASETYPE): New macro. 1458: (NUM_TREE_CODE): New macro. 1459: (TYPE_NONCOPIED_PARTS): new field in a type-node. 1460: 1461: * varasm.c (make_decl_rtl): Split out from assemble_variable. 1462: (assemble_variable): No longer creates the rtl. 1463: No longer handles policy of whether to output tentative decl yet. 1464: (output_constant_def): Don't lose if wasn't temp allocation 1465: when this was called. 1466: (output_constant): Handle REFERENCE_EXPR. 1467: 1468: * Makefile (BISONFLAGS): new variable. 1469: (prefix): New variable, used in bindir and libdir. 1470: (C_OBJS, CPLUS_OBJS): New vars, split off from OBJS. 1471: (LIBFUNCS): C++ support functions added. 1472: (CPLUS_TREE_H): New variable. 1473: (cc1plus): New target. 1474: (lang_c, lang_cplus): Combines all targets for one language. 1475: (gplus.info): New target. 1476: (cplus-*.o): New targets. 1477: (realclean): Handle new C++ files and recent renamings. 1478: (install, TAGS): Likewise. 1479: 1480: * print-tree.c (prtypeinfo): Handle TREE_LANG_FLAG_[1-4]. 1481: 1482: * tm-sparc.h (ASM_OUTPUT_DOUBLE): Special case for infinity. 1483: (ASM_OUTPUT_FLOAT): Likewise. 1484: 1485: * gcc.c: Don't define __GNU__. 1486: For .cc files, pass -+ to cpp, and don't handle -ansi. 1487: Use cc1plus as name of compiler for .cc files. 1488: 1489: * stor-layout.c (layout_type): abort if given a LANG_TYPE node. 1490: (layout_union): Complain if union has basetypes or static members. 1491: (layout_record): Handle anonymous union members. 1492: 1493: * tree.def (LANG_TYPE): New tree code for language-specific purposes. 1494: (WITH_CLEANUP_EXPR): New tree code for expressions whose values 1495: need to be cleaned up when they are deallocated. 1496: (OP_IDENTIFIER): New tree code for certain C++ purposes. 1497: 1498: * toplev.c (rest_of_decl_compilation): Call make_var_rtl 1499: before assemble_variable. 1500: 1501: Wed Nov 23 02:15:45 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1502: 1503: * xm-sunos4.h: Rename included config files to xm-*. 1504: * xm-*.h: Likewise. 1505: 1506: * fixincludes: Avoid altering args to names other than CTRL 1507: that end in ...CTRL. 1508: If a file isn't actually changed, delete the copy. 1509: 1510: Mon Nov 21 12:48:22 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1511: 1512: * loop.c (move_movables): Never move a reg w/ # > old_max_reg. 1513: (strength_reduce): For nonreplaceable giv, put insn to load it 1514: after the insn that used to compute it, in case the latter 1515: is the last of a libcall sequence. 1516: 1517: * stmt.c (expand_function_end): If returning BLKmode, also copy 1518: address where value is returned to the place that GDB will 1519: expect to see it after the return. 1520: 1521: * c-parse.y (readescape): Warn about hex constant out of range 1522: for a target integer. 1523: (yylex): Warn about escape out of range for non-wide char or string. 1524: Use a buffer of ints to read a wide string. 1525: 1.1.1.11 root 1526: Sat Nov 19 02:18:02 1988 Richard Stallman (rms at apple-gunkies.ai.mit.edu) 1527: 1528: * Version 1.31 released. 1529: 1530: * sparc.md: Change `K' to `I' in all constraints. 1531: 1532: * loop.c (gen_iv_mult): Handle TARGET==0. 1533: 1534: * c-decl.c (duplicate_decls): Undo last change. 1535: 1536: * c-decl.c (pushdecl): Instead of that change, 1537: save old-decl's file/line before calling duplicate_decls, 1538: and pass them later to warning_with_file_and_line. 1539: * toplev.c (warning_with_file_and_line): New fn. 1540: 1541: Fri Nov 18 13:07:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1542: 1543: * stmt.c (fixup_var_refs_1): (SUBREG (MEM)) was slipping through 1544: in case where a SET was writing in the variable being fixed. 1545: 1546: * recog.c (register_operand, nonmemory_operand, memory_operand): 1547: Changes to handle new var reload_completed: 1 means that 1548: (SUBREG (MEM)) now counts as a mem-ref, since alter_subreg 1549: will make it one. 1550: * toplev.c (rest_of_compilation): Set and clear reload_completed. 1551: 1552: * sparc.md (call patterns): If TARGET_SUN_ASM, and address in reg, 1553: output a jmpl rather than a call. 1554: * tm-sun4os3.h: Like tm-sparc.h but turn on TARGET_SUN_ASM. 1555: 1556: * reload.c (push_reloads): Reinstate handling of reg_equiv_constant. 1557: 1558: Thu Nov 17 09:48:14 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1559: 1560: * reload1.c (constraint_accepts_reg_p): Name changed from 1561: constraint_all_regs_p; new arg is reg we are concerned with, 1562: and condition tested takes some advantage of that reg. 1563: 1564: * gcc.c (main): Rename var `error' to `error_count' for name conflict. 1565: 1566: * emit-rtl.c (emit_note): Output line #s even if no debug info wanted. 1567: (emit_line_note): New fn, does what emit_note did. 1568: (emit_line_note_force): New name for emit_note_force. 1569: * stmt.c, c-parse.y: Call emit_line_note instead of emit_note. 1570: 1571: * c-parse.y (maybe_type_qual): Call emit_note instead of emit_line_note 1572: Now we can find the line # of every `asm' from the RTL. 1573: * toplev.c (error_for_asm): New fn, gets line # by searching for NOTE. 1574: * reload.c (find_reloads): Use error_for_asm. 1575: * reload1.c (choose_reload_targets): Likewise. 1576: * final.c (output_operand_lossage): Likewise. 1577: Variable this_is_asm_operands is now current insn if it's nonzero. 1578: 1579: * loop.c (move_movables): When a reg is moved, update regno_first_uid 1580: and regno_last_uid; say life span includes entire loop. 1581: * Decrement THRESHOLD per reg moved, not per insn moved. 1582: 1583: Wed Nov 16 08:41:32 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1584: 1585: * gnulib.c (___builtin_saveregs): New fn, for sparc. 1586: 1587: * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): Don't recognize 1588: SYMBOL_REFs, except for the constants pool. 1589: But do recognize REG+REG and SMALLINT+REG. 1590: * sparc.md: New patterns for fetching and storing memory 1591: whose address is symbolic and not "legitimate". 1592: 1593: * sparc.md (movsi): Add `f' to op1 constraint. 1594: New output clause for result in fp reg. 1595: (Floating point fetch patterns): Output sethi insns. 1596: (call_value, related patterns): value-register has `register_operand'. 1597: 1598: * output-sparc.c (hardreg): New function. 1599: (COMPATIBLE): Clause added for n_regs == 2. 1600: (single_insn_src_p): Return 0 for MEM whose address is absolute. 1601: 1602: * tm-genix.h (GO_IF_LEGITIMATE_ADDRESS subroutines): 1603: Redefine, to exclude any possibility of SB-referencing addresses. 1604: 1605: * loop.c (strength_reduce): Can't eliminate a biv if used before 1606: start of the loop. Used before is same as used after, if contained 1607: in another loop. 1608: 1609: * recog.c (asm_noperands, decode_asm_operands): 1610: Handle case of no outputs, but some clobbers. 1611: * stmt.c (expand_asm_operands): Generate right stuff for that case. 1612: 1613: * tm-sun3.h (CPP_SPEC): Don't define __HAVE_68881__ if using fpa. 1614: 1615: Tue Nov 15 00:10:26 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1616: 1617: * loop.c (gen_iv_mult): Arg OP0 may not be a constant. 1618: Pay attention to return value of expand_mult. 1619: (eliminate_biv): Call changed. 1620: 1621: * output-m88k.c, output-sparc.c (output_move_double): 1622: Fix typo `optype0' for `optype1'. 1623: 1624: * c-decl.c (duplicate_decls): Don't alter file, line of old decl. 1625: 1626: * c-parse.y (skip_white_space): Don't recognize comments; rely on cpp. 1627: 1628: * rtl.c (rtx_equal_p): Handle vectors. 1629: 1630: * loop.c (scan_loop): Change elts of n_times_set back to positive 1631: for candidates that weren't moved, before doing strength reduction. 1632: 1633: * ns32k.md (movdi, movdf): Use `&' constraint for first operand. 1634: 1635: * reload1.c (reload): Initialize spill_indirect_ok here. 1636: 1637: * config-sun4.h: Recognize `-static' switch. 1638: 1639: * global-alloc.c (set_preference): Avoid using nonsense hard reg #s 1640: that result from adding OFFSET. 1641: 1642: * sdbout.c (sdbout_end_function): Line # in .ef should be relative. 1643: 1644: * final.c (output_source_line): For SDB, don't output negative #s. 1645: 1646: * tm-encore.h (ASM_OUTPUT_LOCAL): Don't ignore SIZE arg. 1647: 1648: Mon Nov 14 11:03:16 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1649: 1650: * reload.c: Don't declare refers_to_regno_p. 1651: 1652: * gcc.c (main): Warn if any input files are for the linker 1653: but the linker is not being run. 1654: 1655: * jump.c (sets_cc0_p): Dumb bug fetching elts of a PARALLEL. 1656: 1657: * local-alloc.c: qty_birth, qty_death elements are now -1, not 0, 1658: when the value is not known. 1659: 1660: * expmed.c (extract_bit_field): Bug computing xbitpos, xoffset 1661: when changing units from bytes to words. 1662: 1663: * loop.c: Rename `times_used' field in `struct movable' to `savings'. 1664: (scan_loop): When scanning the consecutive sets, for each libcall, 1665: increment `savings'--leave `consec'. 1666: When making movable for (SET (REG) 0) which is part of zero-extension, 1667: set `savings' to 1 initially, since only 1 insn will be moved. 1668: And don't let any other reg force that insn. 1669: Reduce initial THRESHOLDs. 1670: (move_movables): Don't add `consec' into `savings' 1671: since the initial `savings' was proportional to `consec'. 1672: Decrement THRESHOLD by 3 (not 2) for each move done. 1673: 1674: * reload1.c (choose_reload_targets): Strip subregs from OLD 1675: before writing the output-reload move-insn. 1676: 1677: * reload1.c (reload): counted_for_groups and counted_for_nongroups 1678: are now file-scope. Update them both when spilling. 1679: (new_spill_reg): No need for counted_for_nongroups as arg. 1680: (choose_reload_targets): Don't use for a group 1681: any spill regs for which counted_for_nongroups is set. 1682: 1683: * dbxout.c (dbxout_symbol): Indirect-symbol case checked erroneously 1684: for PARM_DECL. 1685: 1686: Sun Nov 13 08:13:49 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1687: 1688: * cse.c (fold_rtx): Don't alter MULT by -1 if arg mode != result mode. 1689: 1690: * loop.c (move_movables): If moving a CALL_INSN, make a new CALL_INSN. 1691: * emit-rtl.c (emit_call_insn_before): New fn. 1692: 1693: * config-sun4.h (LINK_SPEC): Avoid shared libraries if -g. 1694: 1695: * expr.c (store_one_arg): Stabilize ARG->stack so it doesn't use SP 1696: before computing the arg value. 1697: 1698: * combine.c (use_crosses_set_p): Moving a ref to stack ptr 1699: is always forbidden if machine has push insns, since might cross one. 1700: 1701: * vax.md (movqi): Avoid out-of-range immed ops in mcomb. 1702: 1703: * expmed.c (extract_bit_field): Don't say `extzv' in the 1704: clause for `extv'. 1705: 1706: * emit-rtl.c (copy_rtx_if_shared): Even if a MEM can be shared, 1707: unshare its address from everything outside that MEM. 1708: 1709: * expr.c (expand_builtin): Fix omitted arg to `convert_to_mode'. 1710: 1711: * expr.c (store_expr): In case where will not return TARGET 1712: and must do type conversion, don't fail to store into TARGET. 1713: 1714: * dbxout.c (FORCE_TEXT): New macro used before output `.stabs' 1715: to go to the text section on targets that require it. 1716: (DEBUG_SYMS_TEXT): Target macro which turns on that feature. 1717: 1718: * reload1.c (reload): Index in spill_regs was wrong 1719: when checking counted_for_groups. 1720: (choose_reload_targets): When calling find_equiv_reg looking for 1721: a reload reg, reject all spill regs, even those not in use now. 1722: 1723: * tm-sun386.h, tm-sun386i.h, config-sun386i.h: New files. 1724: 1725: * cccp.c (main): Don't die if no output file arg given. 1726: 1727: * fixincludes: Tell `find' to find only ordinary files. 1728: 1.1.1.12 root 1729: * config.gcc: If symlink fails, make a hard link. 1730: 1.1.1.11 root 1731: Sat Nov 12 20:43:20 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1732: 1733: * Makefile (gnulib): Use cp to make the temporary .c files; 1734: less likely to fail than ln. 1735: 1736: Sat Nov 5 12:46:39 1988 Randall Smith (randy at sugar-bombs.ai.mit.edu) 1737: 1738: * tm-m68k.h (HARD_REGNO_MODE_OK): Disallowed d7:a0 as an allowable 1739: pair of registers to hold a double value. This is correct for the 1740: fpa but incorrect for the 68881. It was, however, simpler than 1741: defining a new regclass. 1742: 1743: Tue Oct 25 12:03:49 1988 Randall Smith (randy at gluteus.ai.mit.edu) 1744: 1745: * m68k.md: Added some thoughts (comments) on best method to allow 1746: 68881 code with fpa code. 1747: 1.1.1.10 root 1748: Thu Oct 13 14:19:17 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1749: 1.1.1.11 root 1750: * Version 1.30 released. 1751: 1.1.1.10 root 1752: * stupid.c (stupid_life_analysis): Init last_call_suid with 1753: largest possible value, not 0. 1754: 1755: Wed Oct 12 04:40:18 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1756: 1757: * output-i386.c (output_asm_insn_double_reg_op): Compensate for 1758: assembler bug that interchanges fsub and fsubr. 1759: 1760: * reload1.c (order_regs_for_reload): Undo 29 Sept change. 1761: It breaks the 386. 1762: 1763: * varasm.c (decode_rtx_const): Don't example value->addr 1764: if what was stored in was value->d. 1765: 1766: * toplev.c (set_float_handler): New fn, specify where to jump 1767: on floating exception signal. 1768: * fold-const.c (combine): Use that to handle overflow in arithmetic. 1769: 1770: * c-decl.c (grokdeclarator): Don't clear CONSTP, VOLATILEP 1771: when making an array type. 1772: 1773: * dbxout.c (dbxout_symbol): Ignore VAR_DECLs in memory whose 1774: addresses we can't represent. 1775: 1776: * fold-const.c (fold): don't convert >= to > if both args are constant. 1777: When converting >= to >, don't fail to change CODE. 1778: 1779: Tue Oct 11 04:13:40 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1780: 1781: * vax.md (movhi): Error in truncating mcomw, addh3 args to 16 bits. 1782: 1783: * final.c: Better error checking for %-specs in templates. 1784: (output_operand_lossage): new fn to report errors. 1785: (insn_noperands): new var: # operands in current fn. 1786: (this_insn_asm_operands): new var: 1 for `asm', 0 otherwise. 1787: (output_asm_insn): Check for operand # out of range. 1788: (output_asm_label, output_operand): Call new fn to report errors. 1789: 1790: * reload.c (push_reloads): An input reload for (REG N) can match one 1791: for (POST_INC (REG N)) or (PRE_INC (REG N)), since the value 1792: reloaded is the same in any case. 1793: 1794: Mon Oct 10 06:19:05 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1795: 1796: * recog.c (next_insns_test_no_inequality): Like next_insn_tests... 1797: but check all insns that follow this one and can use it's cc's. 1798: * output-m68k.c (output_btst): Use that. 1799: 1800: * vax.md (movsf, movdf): Undo last change; movq/movl set the cc wrong. 1801: 1802: * expr.c (expand_call): Set current_function_calls_setjmp if appro. 1803: * stmt.c (setjmp_protect): New fn: move all vars into stack 1804: unless declared `register'. 1805: * c-decl.c (finish_function): Call it if -traditional and setjmp used. 1806: 1807: * cccp.c (main): Open output after the input. 1808: Handle `-o -'. 1809: 1810: Sun Oct 9 00:28:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1811: 1812: * tm-sun3.h (CPP_SPEC): Define __HAVE_FPA__ if appropriate. 1813: 1814: * c-decl.c (pushdecl): After duplicate_decls, maybe warn about 1815: "declared extern and later static". 1816: 1817: * expmed.c (store_bit_field): In insv case, avoid turning 1818: VALUE into a subreg of a subreg. 1819: 1820: * loop.c (move_movables): When moving a libcall, 1821: un-cse the function address; put it into the call insn. 1822: 1823: Sat Oct 8 01:48:03 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1824: 1825: * cse.c (equiv_constant): Subroutine to find the constant equivalent 1826: of a reg. Now handles SUBREGs too. 1827: (fold_rtx, fold_cc0): Use that function. 1828: Don't handle SUBREGs like arithmetic. 1829: 1830: * reload1.c (choose_reload_targets): Don't call reg_overlap_mentioned_p 1831: if arg is 0. 1832: 1833: Fri Oct 7 01:00:19 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1834: 1835: * assert.h: Typo declaring __eprintf. 1836: 1837: * config.gcc: New file for making the links. 1838: Fixed bugs for sun-[23]-os4. Added sun-[234] for sunos 3. 1839: Added sequent-i386. 1840: 1841: * emit-rtl.c (gen_rtx): Return const0_rtx for 0 in DImode. 1842: * varasm.c (immed_double_const): Don't be confused by this. 1843: 1844: * expmed.c (negate_rtx): New 1st arg MODE. 1845: * expr.c (push_block): Calls changed. 1846: * m68k.md, ns32k.md, vax.md: Calls changed. 1847: 1848: * c-decl.c (duplicate_decls): Don't discard DECL_BLOCK_SYMTAB_ADDRESS. 1849: 1850: * tree.c (staticp): INDIRECT_REF with constant address is static. 1851: COMPONENT_REF may not be, if component offset isn't constant. 1852: 1853: * c-typeck.c (default_conversion): Converting array to ptr, if array 1854: isn't a VAR_DECL, go through build_unary_op so that COMPONENT_REFs 1855: will be simplified away. 1856: 1857: * ns32k.md (tbitd patterns): op 0 constraint: reject constants. 1858: * ns32k.md (extzv for SImode and HImode): 1859: Use adj_offsetable_operand; plus_constant was the wrong thing. 1860: 1.1.1.9 root 1861: Thu Oct 6 00:10:41 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 1862: 1863: * Version 1.29 released. 1864: 1865: * loop.c (scan_loop): Don't think a `return' insn enters the loop. 1866: 1867: * ns32k.md (ashrsi3, etc): New define_expands for right shift. 1868: 1869: * reload1.c (choose_reload_targets): Change in the `force_group' 1870: logic to avoid crashes. 1871: 1872: Wed Oct 5 04:09:19 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) 1873: 1874: * expr.c (expand_expr, MINUS_EXPR): When negating integer op1, 1875: truncate it to its mode. 1876: 1877: * expmed.c (extract_bit_field): SUBREG error check was wrong; 1878: SImode SUBREGs are possible and ok in extzv, extv. 1879: 1.1.1.13! root 1880: * tm-ns32k.h (REGISTER_NAMES): Had two excess elements; deleted. 1.1.1.9 root 1881: 1882: Mon Oct 3 01:15:51 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) 1883: 1884: * toplev.c (main, compile_file): If no files spec'd, use stdin, stdout. 1885: 1886: * flow.c (propagate_block): When checking for stack-adjust insns, 1887: exclude non-SET patterns. 1888: 1889: * jump.c (jump_optimize): When changing jump=>return to return, 1890: must rerecognize the insn. 1891: 1892: * toplev.c (compile_file): Allow `-' for main input or output filename. 1893: 1894: Sun Oct 2 10:30:09 1988 Richard Stallman (rms at apple-gunkies.ai.mit.edu) 1895: 1896: * final.c (final): NOTICE_UPDATE_CC has extra arg, INSN. 1897: * tm-*.h: Change definitions. 1898: 1899: * stmt.c (optimize_bit_field): Use gen_lowpart to make subregs. 1900: 1901: * stmt.c (assign_parms): Don't obey regdecls in inline function. 1902: Don't lose existing REG_NOTES when adding one. 1903: 1904: * stmt.c (expand_function_start): Make return rtx before 1905: marking parms live. 1906: (expand_function_end): Use use_variable to emit USEs for SAVE_EXPRs. 1907: 1908: * stmt.c (expand_return): Handle TRUTH_AND_EXPR like ANDIF; OR also. 1909: 1910: * stmt.c (expand_end_stmt_expr): Always set TREE_VOLATILE, 1911: sometimes TREE_THIS_VOLATILE. 1912: 1913: * jump.c (delete_insn): When finding PREV, skip deleted insns. 1914: 1915: * varasm.c (output_constant): WORDS_BIG_ENDIAN test was backwards. 1916: 1917: * emit-rtl.c (gen_lowpart): Allow MODE > 1 word if X is same size. 1918: 1919: * final.c (final): Don't delete no-op moves (jump did it if appro.). 1920: 1921: * final.c: Support prescan pass. 1922: (final_start_function): init_recog and CC_STATUS_INIT mvd to `final'. 1923: (final): New arg PRESCAN. Do no output if prescanning. 1924: Don't alter conditionals if PRESCAN < 0 (prescan already done). 1925: If jump becomes no-op, change it to a NOTE. 1926: Remember to free the temp space for ASM_OPERANDS. 1927: 1928: * final.c (final): Altering store-flag must check STORE_FLAG_VALUE. 1929: Don't try to do it if that isn't defined. 1930: Don't try it if condition doesn't test CC0. 1931: (alter_cond): No need to check COND != 0. 1932: Handle CC_Z_IN_NOT_N and CC_Z_IN_N. 1933: (m68k.md): Delete code that handled CC_Z_IN_NOT_N. 1934: 1935: * conditions.h: New flag CC_Z_IN_N. 1936: * tm-*.h: Renumber all CC_... flags to make room. 1937: 1938: * combine.c (use_crosses_set_p): Loop start was 1 off. 1939: 1940: * local-alloc.c (reg_is_set): When a reg is CLOBBERed and dies in 1941: one insn, make it live immediately before and after that insn. 1942: 1943: * global-alloc.c: Hard reg preferences for global pseudos. 1944: Var allocno_preferred_reg deleted; new vars hard_reg_preferences 1945: and regs_someone_prefers. 1946: (global_alloc): Init those vars. Pass hard_reg_preferences elt 1947: to find_reg. 1948: (set_preference): New function makes entries in those vars. 1949: (global_conflicts): new arg to mark_reg_store. Call set_preference. 1950: (find_reg): Last arg now a preferred hard_reg_set. 1951: Scan that set first of all. 1952: (mark_reg_store): New arg is offset for renumbered regno. 1953: But the code to use it is turned off. 1954: 1955: * global_alloc (check_frame_pointer_required): Handle reg_equiv_address 1956: like reg_equiv_mem. Don't try to allocate pseudos with equiv mems 1957: that don't use the frame pointer. 1958: * reload1.c (reload): Call changed. 1959: 1960: * jump.c (sets_cc0_p): Tests whether rtx sets cc0, and whether 1961: it does nothing but set cc0. 1962: (find_cross_jump, delete_jump): Use that fn for these tests. 1963: * loop.c (loop_skip_over): Likewise. 1964: * reload.c (push_reload): Likewise. 1965: 1966: * genoutput.c: Output `const' before the data arrays. 1967: Define it as nothing if not __STDC__. 1968: 1969: Sat Oct 1 02:19:29 1988 Richard Stallman (rms at apple-gunkies.ai.mit.edu) 1970: 1971: * expr.c (store_one_arg): 3rd arg to emit_block_move is in bytes. 1972: 1973: * cse.c (fold_rtx): Handling ZERO_EXTEND or SIGN_EXTEND of constant, 1974: if the arg width is too wide to handle, return safely. 1975: 1976: * combine.c (FAKE_EXTEND_SAFE_P): Don't allow extend to > 1 word. 1977: 1978: * rtl.c (refers_to_regno_p): Moved from reload.c. Not static. 1979: (reg_overlap_mentioned_p): New function, calls the above. 1980: * output-*.c: Use that instead of reg_mentioned_p. 1981: * tm-*.h (NOTICE_UPDATE_CC): Likewise. 1982: * reload.c (push_reload, combine_reloads): Likewise. 1983: * reload1.c (choose_reload_targets): Use it to check earlyclobbers. 1984: 1985: * reload1.c (choose_reload_targets): Elimination of previous 1986: output-reload feeding our input now limited to pseudo-regs. 1987: 1988: * flow.c (life_analysis): Delete any insn copying reg to itself. 1989: (propagate_block): Move update of OLD after special life and death 1990: for CALL_INSNs. 1991: 1992: * vax.md (ashrsi3, ashrdi3, rotrsi3): define_expands to negate 1993: the shift count. 1994: * expmed.c (expand_shift): Eliminate negate-the-shift-count feature. 1995: 1996: * vax.md (and*i3): define_expands which use complement and bit-clear. 1997: * expmed.c (expand_bit_and): Eliminate feature to do that. 1998: This function could be eliminated. 1999: 2000: * expmed.c (store_bit_field): Handle nested subregs. 2001: Allow gen_insv to fail; if it does, delete what we did and then 2002: use store_fixed_bit_field. 2003: (store_fixed_bit_field): Use gen_lowpart to make SUBREGs. 2004: Do that for SUBREGs just as for REGs. 2005: Error check OFFSET must be 0 for REGs. 2006: (store_split_bit_field): Error check OP0 is a SUBREG when expected. 2007: (extract_bit_field): Allow gen_ext{,z}v to fail. 2008: Use gen_lowpart to make subregs. 2009: (expand_shift): If a try fails, delete any insns it made. 2010: 2011: * expmed.c (expand_mult): Use expand_unop to negate. 2012: When adding 2 powers of 2, do serial shifts, not parallel. 2013: Handle absval==1 like other powers of 2. 2014: 2015: * explow.c (force_reg): Don't lose any existing reg notes. 2016: 2017: * stmt.c (expand_start_stmt_expr): Eliminate return value. 2018: (expand_end_stmt_expr): No need for argument. 2019: * c-parse.y (primary): Change calls. 2020: 2021: Fri Sep 30 01:50:22 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) 2022: 2023: * integrate.c (copy_rtx_and_substitute, copy_address): 2024: 'u' case erroneously returned the translated single element. 2025: (copy_address): Special cases for frame-ptr and sums containing it. 2026: MEM and LABEL_REF cases passed wrong arg to copy_rtx_and_substitute. 2027: (copy_rtx_and_substitute): adjust mode of inline_target for context. 2028: 2029: * jump.c (true_regnum): For SUBREG of pseudo, use pseudo's # unchanged. 2030: 2031: Thu Sep 29 02:50:46 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) 2032: 2033: * i386.md (movsi, mov{q,h}i): Use find_reg_note to look for REG_WAS_0. 2034: * vax.md (movsi, movhi): Likewise. 2035: 2036: * varasm.c (decode_rtx_const): Was setting un.addr.base wrong 2037: for a CONST. Should be symbol name, not the SYMBOL_REF. 2038: 2039: * rtl.c (rtx_equal_p): When comparing registers, check 2040: REG_FUNCTION_VALUE_P. If there are `u'-slots in the rtx, ignore them. 2041: 2042: * rtl.c (reg_mentioned_p): Some rtx types were mistakenly treated 2043: as uniquified (various constants). 2044: 2045: * rtl.c (read_rtx): Element type 'S' is string that may be omitted. 2046: * rtl.def (define_insn, define_peephole): Add a last element, type 'S'. 2047: * genoutput.c: Collect these optional last elements and output as 2048: array `insn_machine_info' of structs `INSN_MACHINE_INFO'. 2049: The last must be defined as a macro. 2050: * recog.h (insn_machine_info): Declare it if appropriate. 2051: 2052: * regclass.c (record_address_regs): In PLUS case, look inside SUBREGs. 2053: 2054: * reload1.c (reload): Use reg_equiv_address for REG_EQUIVs with 2055: invalid memory addresses. 2056: When changing pseudos to mem refs at end, do FIX_FRAME_POINTER_ADDRESS 2057: on their addresses. 2058: (alter_reg): Check that with reg_equiv_mem. 2059: (spill_hard_reg): If fp reg, spill regardless of basic_block_needs. 2060: 2061: * reload1.c (order_regs_for_reload): Don't put invalid regs into 2062: potential_reload_regs at all. (They used to go at the end.) 2063: 2064: * reload.c (find_reloads): Store all earlyclobber operand in 2065: reload_earlyclobbers (# in n_earlyclobbers): 2066: * reload.1 (choose_reload_targets): Don't use value of find_equiv_reg 2067: if it matches an earlyclobber operand. 2068: 2069: * reload.c (find_reloads_address for REG): 2070: No need for explicitly excluding hard regs in these tests. 2071: (find_reloads, find_reloads_address_1 for REG): likewise. 2072: 2073: * reload.c (push_reload): Code testing reg_equiv_constant should 2074: be obsolete; add error check to verify this. 2075: 2076: * reload.c (hard_reg_set_here_p): Handle CLOBBERs, SUBREGs, overlap. 2077: (refers_to_regno_p): Handle CLOBBERS. Handle overlap. 2078: New arg ENDREGNO specs end of range to check for; 2079: all callers changed (all in this file). 2080: 2081: * reload.c (find_reloads): SUBREG like REG in alternate recovery 2082: for earlyclobber conflict. 2083: The operands to unswap are those that are supposed to commute. 2084: When operands match, copy the regclass of earlier one for later one. 2085: 2086: * stmt.c (optimize_bit_field): Don't use gen_extend_insn; 2087: use convert_move, then reorder the insns. 2088: * optabs.c (gen_extend_insn): Deleted. 2089: 2090: * optabs.c (emit_cmp_insn): Don't emit queue before recursion. 2091: Don't convert size to SImode for cmpstrqi. 2092: 2093: * optabs.c (expand_binop): Keep any old REG_NOTES when adding them. 2094: Always delete_insns_since if returning failure. 2095: (expand_unop, emit_unop_insn): Keep any old REG_NOTES when adding them. 2096: * spur.md (movhi): likewise. 2097: 2098: * RTL_EXPR_SEQUENCE is now a chain of insns, not a SEQUENCE. 2099: * emit-rtl.c (emit_insns): New fn, emit a chain of insns. 2100: * expr.c (expand_expr): Use that. 2101: Also put const0_rtx in the RTL_EXPR_SEQUENCE (mark RTL_EXPR as output). 2102: * stmt.c (expand_end_stmt_expr): Use get_insns to get the chain. 2103: 2104: * stmt.c (expand_end_stmt_expr): Put the RTL_EXPR on rtl_expr_chain. 2105: (fixup_var_refs): Scan all waiting RTL_EXPRs not yet output. 2106: Also scan all stacked sequences on sequence_stack. 2107: 2108: * genemit.c (gen_expand): Generate calls to {start,end}_sequence. 2109: Use `emit' to handle a PARALLEL. 2110: (FAIL, DONE): Change to fit gen_expand changes. 2111: 2112: * emit-rtl.c (change_address): abort if arg isn't a MEM. 2113: 2114: * emit-rtl.c: Sequences work now by saving and restoring first_insn 2115: and last_insn. So these variables are used even when in a sequence. 2116: emit_to_sequence has been deleted. 2117: (start_sequence, end_sequence): Save and restore first_insn, last_insn. 2118: (get_last_insn, add_insn): Sequences no longer need special treatment. 2119: (delete_insns_since, reorder_insns): likewise. 2120: (push_to_sequence): Set up to emit to a given existing insn chain. 2121: 2122: * emit-rtl.c (copy_rtx_if_shared): Don't copy INSNs. 2123: Insert missing return stmt in MEM case (for MEMs ok to share). 2124: (unshare_all_rtx): Now can copy the REG_NOTES simply. 2125: Copy the LOG_LINKS too. 2126: 2127: * emit-rtl.c (make_safe_from): Treat SUBREG as X like a REG. 2128: (delete_insns_since): Don't lose if FROM is the first insn. 2129: (emit): Declare void, since no useful value. 2130: Call simplejump_p properly. 2131: (restore_reg_data_1): When a reg is an address, do mark_reg_pointer. 2132: 2133: * dbxout.c (dbxout_types): Call dbxout_symbol to do the work. 2134: (dbxout_type_def): Deleted. 2135: (dbxout_symbol): Set TREE_ASM_WRITTEN when a TYPE_DECL is output. 2136: Don't output the same one twice. 2137: 2138: * cse.c (fold_cc0): LABEL_REF is not zero. 2139: 2140: * cse.c (cse_insn): Don't insert src, dest if they are the same place. 2141: 2142: * cse.c (lookup_as_function): Return entire rtx, not just operand. 2143: (cse_insn): Caller changed. Also, copy the result before inserting it. 2144: 2145: * cse.c (fold_rtx): Put constant arg last if commutative op. 2146: Handle idempotents and identities for mult, div, booleans, shifts. 2147: 2148: * cse.c (canon_hash): Parens were missing around shifts in "rotates". 2149: 2150: * c-convert.c (convert_to_integer): Truncate TRUTH_ANDIF_EXPR 2151: like TRUTH_AND_EXPR; OR also. 2152: 2153: * c-typeck.c (build_binary_op_nodefault): Do truthvalue_conversion 2154: for TRUTH_ANDIF, etc. 2155: (build_unary_op): More simplifications for TRUTH_NOT_EXPR; 2156: uses new fn `invert_truthvalue'. 2157: 2158: * recog.c (reg_fits_class_p): New name for reg_renumbered_fits_class_p 2159: since it no longer needs to renumber. Also it now really assumes 2160: arg is a REG. Callers changed. 2161: * reload.c: Callers changed. 2162: 2163: * recog.c (general_operand): (SUBREG (MEM...)) need not alter mode. 2164: (register_operand, nonmemory_operand): (SUBREG (MEM...)) is allowed. 2165: (memory_operand): (SUBREG (MEM...)) is *not* allowed. 2166: (mode_independent_operand): Operand names were backwards! 2167: (No change in effect of this function.) 2168: 2169: * print-tree.c (dump): Some expr nodes contain rtx's. Print as rtx's. 2170: 2171: Wed Sep 28 18:51:12 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2172: 2173: * reload1.c (choose_reload_targets): If a reload wanted a group, 2174: don't allow a single register for it. 2175: 2176: Tue Sep 27 11:43:56 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2177: 2178: * final.c (output_addr_const): Handle DImode CONST_DOUBLEs. 2179: * tm-*.h (PRINT_OPERAND): Treat DImode CONST_DOUBLE like a CONST_INT. 2180: 2181: * vax.md (rotldi3): Insn deleted; it doesn't really exist. 2182: 2183: * toplev.c (report_error_function): Also mention the file name, 2184: for parallel makes. New arg FILE; all callers changed. 2185: 2186: Mon Sep 26 15:44:18 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2187: 2188: * expmed.c (expand_shift): When using extzv, convert OP1 to SImode. 2189: * c-typeck.c (build_binary_op_nodefault): Convert shift-count 2190: to int regardless of result type. 2191: 2192: * output-spur.c (output_move_double): Fix typo, optype0=>optype1. 2193: 2194: * expr.c (expand_call): Avoid null deref on result of FUNCTION_ARG. 2195: 2196: * tm-i386.h (FUNCTION_PROFILER): Use correct assembler syntax. 2197: 2198: Sun Sep 25 12:13:56 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2199: 2200: * fixincludes: Handle some files in netdnet, netdna, vaxif, vaxuba. 2201: 2202: * reload.c (find_reloads): Make no optional reloads if not -O. 2203: 2204: * loop.c (strength_reduce): Can't eliminate a biv if it's used 2205: to compute a DEST_ADDR giv. Only DEST_REG givs are safe. 2206: 2207: * loop.c (general_induction_var): Shift & divide ops are linear 2208: only in 1st operand; don't look for biv or giv in 2nd operand. 2209: 2210: * vax.md (fix_truncdfqi2): Use `%#'. 2211: 2212: Sat Sep 24 00:25:48 1988 Richard Stallman (rms at gluteus.ai.mit.edu) 2213: 2214: * loop.c (n_times_set, n_times_used): Now file-scope; 2215: no longer passed as args to several functions. 2216: 2217: * loop.c (basic_induction_var): Accept reg as source value 2218: only if it's invariant. 2219: (strength_reduce): Benefit calculation and threshold changed. 2220: Check reducibility of givs before trying to reduce them. 2221: Check eliminability of biv before considering the givs; 2222: let this affect the threshold. 2223: (record_giv): New subroutine adds a giv to the chain. 2224: 2225: * ns32k.md (incrementing sp): Use cmpd insns to increment by 4 or 8. 2226: 2227: * integrate.c (expand_inline_function): Rename return_label 2228: to local_return_label; avoid shadowing. 2229: 2230: Fri Sep 23 13:57:52 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2231: 2232: * loop.c (loop_skip_over): Put the new label after the note that ends 2233: the loop. 2234: 2235: * loop.c: New function strength_reduce and subroutines. 2236: * toplev.c: New var flag_strength_reduce, set from -fstrength-reduce. 2237: 2238: * vax.md (sob insns): They were broken, with plus in one place 2239: and minus in another. Use plus consistently. 2240: 2241: * rtl.h (REG_LIBCALL, REG_NONNEG): Two new kinds of reg-note. 2242: * optabs.c (expand_binop, expand_unop): Make REG_LIBCALL notes. 2243: * loop.c (scan_loop, move_movables): Move entire library calls. 2244: Use m->set_src to get the expression, in case it's from a REG_EQUAL. 2245: (consec_sets_invariant_p): Likewise. 2246: 2247: * loop.c (scan_loop): Start scan from loop_top, if entry is rearranged. 2248: Watch out for pseudo regs created by strength_reduce; 2249: they can't index regno_last_uid. 2250: (replace_regs): # regs mapped is now an arg. 2251: 2252: * loop.c (count_loop_regs_set): Don't increment n_times_set past 127. 2253: (consec_sets_invariant_p): Reject if N_SETS arg is 127. 2254: 2255: * toplev.c (rest_of_compilation): NREGS arg of loop_optimize deleted. 2256: 2257: * c-decl.c (store_parm_decls): Anything but an IDENTIFIER_NODE 2258: in SPECPARMS indicates a parmlist, not an identifier list. 2259: (get_parm_info): Use only PARM_DECLs when making the list of arg types. 2260: 2261: * combine.c (try_distrib): Boolean ops can't distribute through PLUS. 2262: MULT can distribute through PLUS and only PLUS. 2263: 2264: Thu Sep 22 15:57:41 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2265: 2266: * jump.c (jump_optimize): uncond jump to a return becomes a return. 2267: 2268: * integrate.c (copy_parm_decls, copy_decl_tree): Set TREE_USED. 2269: Avoid inevitable "unused" warning for these decls. 2270: 2271: * c-typeck.c (comptypes): When comparing array types, 2272: ignore qualifiers of element type. 2273: 2274: * tm-*.h (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Define new macros. 2275: * final.c (final_start_function): Use them to protect around 2276: the call to the profiling function. 2277: * stmt.c (expand_function_start): Set current_function_needs_context 2278: and current_function_returns_struct. 2279: 2280: * stmt.c (expand_null_return_1): If clear_pending_stack_adjust 2281: doesn't clear it, do the adjust now. 2282: * expr.c (clear_pending_stack_adjust): No-op if -finline-functions. 2283: 2284: * cccp.c (macarg1, skip_if_group): Backslash makes next char ordinary. 2285: 2286: * reload.c (find_reloads): Delete code to look for an equiv reg 2287: for a reg being input-reloaded. This isn't safe. 2288: * reload1.c (choose_reload_targets): Do it here. 2289: 2290: Wed Sep 21 00:36:22 1988 Richard Stallman (rms at hobbes.ai.mit.edu) 2291: 2292: * tm-sun3.h (CPP_SPEC): Define it based on TARGET_DEFAULT. 2293: (STARTFILE_SPEC): Likewise. 2294: 2295: * reload1.c (choose_reload_targets): When redirecting prev insn 2296: into this insn's reload-reg, check this doesn't break the prev insn 2297: by giving it a reg it can't accept. Use new fn constraint_all_regs_p. 2298: 2299: * tm-sparc.h (ASM_OUTPUT_LOCAL): Use .reserve, not .common. 2300: 2301: * tree.h (TREE_USED): New attribute macro. 2302: * c-parse.y (primary): Set TREE_USED in ..._DECL nodes. 2303: * toplev.c, flags.h: Define and set warn_unused. 2304: * stmt.c (expand_end_bindings): Warn if any var is unused. 2305: * print-tree.c (prtypeinfo): Print this attribute. 2306: 2307: Tue Sep 20 15:29:01 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2308: 2309: * assert.h: `assert' must expand to an expression. 2310: Error message should show arg before expansion, not after. 2311: 2312: * c-decl.c (implicitly_declare): Make decl perm if !warn_implicit 2313: since start_function needs to look inside it in that case. 2314: 2315: * toplev.c (announce_function): If we don't print, don't record we did. 2316: 2317: Mon Sep 19 15:21:11 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2318: 2319: * c-parse.y (structsp): If pedantic, warn if comma at end of enumlist. 2320: 2321: * reload.c (find_reloads): Check insn_code_number >= 0 when 2322: looking in insn_operand_strict_low. 2323: 2324: * tm-sun[23].h (CPP_SPEC): Rename __HAVE_FPU__ to __HAVE_68881__ 2325: and put a space after that option. 2326: 2327: Sun Sep 18 01:12:56 1988 Richard Stallman (rms at hobbes.ai.mit.edu) 2328: 2329: * reload.c (find_reloads): Make optional reloads for explicit MEMs. 2330: 2331: * tm-m68k.h (MODES_TIEABLE_P): If no 68881, can tie fixed to floating. 2332: * m68k.md (movdi): Allow F's (can be DImode now). 2333: Don't allow f-regs (experiment). Don't preference x-regs. 2334: (DImode push): Allow y-regs. 2335: (DFmode push): Allow y-regs, not x-regs. 2336: 2337: * reload1.c (modes_equiv_for_class_p): New function. 2338: (reload): Compare multiple modes for reg group with that function. 2339: Allows differing modes in some cases when not tieable. 2340: 2341: * c-parse.y (check_newline): Let ASM_OUTPUT_IDENT override .ident. 2342: * tm-3b1.h (ASM_OUTPUT_IDENT): Define this as no-op. 2343: 2344: * emit-rtl.c (reorder_insns): Update sequence_{first,last}_insn if nec. 2345: (get_last_insn): If in a sequence, return last insn of sequence. 2346: (delete_insns_since): If in a sequence, set sequence_last_insn. 2347: 2348: * spur.md (CONST_DOUBLE load insn): Use & for most dests. 2349: (cond branches): pass additional args to output_compare. 2350: (movdf, movdi): Use & loading reg from mem. 2351: (trunc*): Enable these. 2352: (add): New pattern for adding large immediate operand. 2353: (shifts): A define_expand for each kind of shift, 2354: plus a recognizer which outputs repeated insns if necessary. 2355: (call*): Use r9 as temp, not r2. 2356: 2357: * output-spur.c (output_compare): New args NEG_{EXCHANGE_,}OPCODE. 2358: (singlemove_string): Handle reg as operand 1. 2359: (output_add_large_offset): Fake add insn with large immediate arg. 2360: (big_immediate_operand): Match such an arg. 2361: 2362: * tm-spur.h (FUNCTION_PROLOGUE): Align the stack pointer. 2363: Handle bigger frames. 2364: (TARGET_LONG_JUMP, TARGET_EXPAND_SHIFT): New target flags. 2365: 2366: * va-spur.h: Track position in regs and stack separately. 2367: 2368: * c-decl.c (duplicate_decls): Warn if prototype follows 2369: non-prototype definition. 2370: 2371: Sat Sep 17 14:30:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2372: 2373: * expr.c (expand_builtin): Avoid crash if arg isn't integer type. 2374: 2375: * c-decl.c (duplicate_decls): Just warn if redeclaring a builtin, 2376: and leave it built in unless it is redefined. 2377: 2378: * vax.md (ashlsi3): Use addl3, moval or movad when useful. 2379: (addsi3): Avoid pushab, movab for constants < 64. 2380: Do use movab when > 64 when operands match. 2381: (mov*i): Use mcom* rather than mneg*. 2382: Use add*3 with two quick immediate args when useful. 2383: (movhi): Don't use movzbw or cvtbw; said to be slow. 2384: 2385: * rtl.h: New macros MEM_VOLATILE_P, MEM_IN_STRUCT_P, 2386: INSN_DELETED_P, REG_USER_VAR_P, RTX_UNCHANGING_P, RTX_INTEGRATED_P, 2387: CONSTANT_POOL_ADDRESS_P. 2388: Most places changed to use them. 2389: 2390: Fri Sep 16 11:50:15 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2391: 2392: * jump.c (jump_optimize): Was testing volatil on non-MEMs erroneously 2393: when looking for no-op move insns. 2394: 2395: * cccp.c (handle_directive): Ignore comments between # and directive. 2396: 2397: * integrate.c (copy_rtx_and_substitute): Stack-push memrefs need 2398: to be copied. 2399: 2400: * tm-bsd386.h (ASM_OUTPUT_DOUBLE): Undef previous def. 2401: 2402: * reload1.c (alter_reg): Don't reuse spill_stack_slot 2403: if it isn't big enough for this reg's mode. 2404: 2405: * expr.c (emit_move_insn): After force_const_mem, ensure 2406: mem address is valid. 2407: (move_block_to_reg, move_block_from_reg): Likewise. 2408: 2409: * expr.c (expand_call): Spurious TREE_VALUE on args[i].tree_value. 2410: 2411: * m68k.md (zero_extend*): Require register_operand for operand 0. 2412: 2413: * stdarg.h (va_start): Alternate defn for sparc. 2414: 2415: Thu Sep 15 11:39:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2416: 2417: * c-parse.y (yylex): When atof gives ERANGE, check for "0.0", etc. 2418: 2419: * assert.h (__assert): Alternative definition for -traditional. 2420: 2421: * output-sparc.c (output_block_move): Initialize xoperands. 2422: 2423: * combine.c (try_combine): Never subst for a reg that is incremented. 2424: 2425: * m68k.md (cmpm pattern): Make the match_operands match memrefs 2426: and check that they are pushes in the extra condition. 2427: This makes reloading handle the pushes properly. 2428: 2429: * expr.c (MOVE_RATIO): Make it 15. Allow overriding it. 2430: 1.1.1.8 root 2431: Wed Sep 14 09:50:08 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2432: 1.1.1.9 root 2433: * c-decl.c (build_enumerator): Use saveable_tree_cons. 2434: 2435: * vax.md (movdf): Use movq when safe. 2436: 1.1.1.8 root 2437: * Version 1.28 released. 2438: 2439: * tm-sparc.h (FIRST_PARM_CALLER_OFFSET): Defined. 2440: 2441: Tue Sep 13 00:11:37 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) 2442: 2443: * tree.c (saveable_tree_cons): New function. 2444: * c-decl.c (pushtag): Use it; lists of tags needed for inlining. 2445: (get_parm_info): Likewise. 2446: 2447: * print-tree.c (dump): Handle each kind of statement node individually. 2448: 2449: * integrate.c (copy_decl_tree): Don't pass DECL_RTL through 2450: copy_rtx_and_substitute if it's a memref with constant address. 2451: 2452: * sdbout.c (sdbout_symbol): Don't output garbage when DECL_RTL 2453: has a form we don't understand. 2454: 2455: * reload.c (find_reloads_address_1): Don't reload an autoincrement 2456: if it has a suitable hard reg already. 2457: 2458: * c-typeck.c (process_init_constructor): Error check after digest_init. 2459: 2460: * c-parse.y (is_reserved_word): Now static. 2461: 2462: Mon Sep 12 19:19:28 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2463: 2464: * i386.md (all push insns): Use `<' for the constraint, 2465: since a push_operand won't fit an `m' constraint on this machine. 2466: 2467: * expr.c (expand_call): If fn name is `__builtin_alloca', 2468: it may be alloca. This case arises if the user redeclares 2469: `__builtin_alloca'. 2470: 2471: Sun Sep 11 01:47:01 1988 Richard Stallman (rms at gluteus.ai.mit.edu) 2472: 2473: * Eliminate MAX_SETS_PER_INSN. 2474: * cse.c (cse_insn): Combine all the tables and dynamically allocate. 2475: (cse_main): Count the actual number of SETs; don't estimate. 2476: * genconfig.c: Don't calculate MAX_SETS_PER_INSN. 2477: * stmt.c (expand_asm_operands): No limit on # of output operands. 2478: 2479: * expr.c (expand_call): 2480: Store all non-reg parms first, then store all partially-in-reg 2481: parms, then all the (precomputed) wholly-in-reg parms. 2482: Special hair for BLKmode parms which must be passed entirely 2483: in memory; also for BLKmode parms initialized from function calls, 2484: for which it is best to allocate the space before computing value. 2485: Use macro FIRST_PARM_CALLER_OFFSET to handle machines where reg 2486: parms "take up space" on the stack below the stack pointer. 2487: (store_one_arg): Handle case of preallocated stack loc for BLKmode. 2488: Update current_args_size here, not in caller. 2489: 2490: Sat Sep 10 19:58:03 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2491: 2492: * output-sparc.c (output_scc_insn): Changed asm templates. 2493: Use common code to emit the move insns and label at the end of fn. 2494: (output_mul_by_constant): Use %g1 as temporary reg. 2495: 2496: * sparc.md (indexed load pattern): Deleted. 2497: (fix_truncdfsi2): Don't ignore value of output_fp_move_double. 2498: (cse'd multiply): Operand 1 predicate is general_operand. 2499: (return peepholes): Conditionalize on ! TARGET_EPILOGUE. 2500: 2501: * tm-sparc.h (INIT_CUMULATIVE_ARGS,FUNCTION_ARG...): 2502: Use partial regs for args that start in regs but won't entirely fit. 2503: 2504: * tm-sparc.h (CONST_COSTS): 0 for args that can be immediate. 2505: (STRUCTURE_SIZE_BOUNDARY): Now 8. 2506: (STRUCT_VALUE_OFFSET): Defined as symbolic name for `64'. 2507: 2508: * expr.c (struct arg_data): New component `stack' says where in the 2509: stack to put a BLKmode arg (if it's nonzero). 2510: (store_one_arg): Handle case where it's nonzero. 2511: (target_for_arg): New fn, precompute stack locn for BLKmode arg. 2512: 2513: Fri Sep 9 01:41:13 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) 2514: 2515: * cse.c (fold_rtx): Misnested ifs screwed SUBREG case. 2516: 2517: * reload.c (find_reloads_toplev): Special case for (SUBREG REG) 2518: where REG is equivalent to a CONST_INT. 2519: (find_reloads): Don't ignore the value returned by find_reloads_toplev. 2520: Treat a (SUBREG constant) like a (SUBREG MEM): set force_reload. 2521: 2522: * reload.c (push_reload): Abort if memory subreg is not 2523: paradoxical; the MEM mode should be narrower than the SUBREG. 2524: 2525: * stmt.c (fixup_var_ref_1): Fixup memory subregs in an insn 2526: copying VAR to or from a register. 2527: 2528: * m68k.md (movdi, movdf): the x-reg constraint accidentally allowed 2529: moving rm to rm with no &. 2530: 2531: * vax.md (call_value): Typo. 2532: 2533: * expr.c (emit_block_move, emit_push_insn): prefer movstrqi to movstrsi 2534: 2535: * m68k.md (FPA multiply): bad opcodes for 3-operand multiply insns. 2536: 2537: Thu Sep 8 18:22:14 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2538: 2539: * c-parse.y: Use YYERROR instead of synonym YYFAIL. 2540: BISON VERSIONS PRIOR TO THIS DATE WON'T WORK! 2541: 2542: * c-typeck.c (digest_init): Use TYPE_MAIN_VARIANT of array elt type. 2543: 2544: * tm-sun[23].h (CPP_SPEC, ASM_SPEC): Let -m(c|)680[12]0 control 2545: options for CPP and assembler. 2546: 2547: Wed Sep 7 13:44:59 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2548: 2549: * New handling of reloading of PRE_DEC, etc. 2550: Now reload_in is the PRE_DEC, etc, and reload_inc is always positive. 2551: * reload.c (push_reloads): Old code to set reload_inc deleted. 2552: (find_reloads_address_1): Call push_reload the new way. 2553: (find_inc_amount): Value always positive. 2554: * reload1.c (choose_reload_targets): Detect this case. 2555: (inc_for_reload): New fn; does the real work for this case. 2556: * m68k.md (call, call_value): Fn address must be offsetable. 2557: 2558: * combine.c (try_distrib): Reject strange cases such as if 2559: result of PREV1 or PREV2 is used in a memory address in INSN. 2560: 2561: * vax.md (movsf): Generate movl instead of movf. 2562: 2563: * expr.c (expand_call): If have regparms, store all BLKmode args 2564: before all the other args. 2565: (store_one_arg): New subroutine broken out. 2566: 2567: * output-sparc.c (output_block_move): Complete rewrite. 2568: 2569: * sparc.md (cse'd multiply insn): Typo in asm-output code. 2570: 2571: Tue Sep 6 20:05:48 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2572: 2573: * c-parse.y (yylex, etc.) Install Schmidt's perfect hash table. 2574: 2575: * gcc.c: handle extension `.cc'. 2576: 1.1.1.7 root 2577: Mon Sep 5 12:09:58 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2578: 2579: * Version 1.27 released. 2580: 1.1.1.13! root 2581: * tm-i386.h (PREFERRED_RELOAD_REG): When reloading a QImode, 1.1.1.7 root 2582: make sure the class doesn't include %esi or %edi. 2583: * i386.md (movqi): Eliminate only use of the class `x', 2584: for which PREFERRED_RELOAD_REG cannot work. 2585: (In next version, get rid of INDEX_CLASS). 2586: Also use `*' to cause preferencing of Q_REGS. 1.1.1.13! root 2587: * tm-m68k.h (PREFERRED_RELOAD_REG): When reloading a QImode, 1.1.1.7 root 2588: use DATA_REGS. 2589: 2590: * reload.c (push_reloads): Braino in last change when IN == 0. 2591: 2592: * flow.c (mark_used_regs, mark_set_1): Bug if HARD_REGNO_NREGS 2593: returns 0 for VOIDmode reg (inside a CLOBBER). 2594: 2595: * c-parse.y (asm_operand): Handle `("REGNAME")' as an operand. 2596: * recog.c (decode_asm_operands, asm_noperands): Ignore any CLOBBERs. 2597: * regclass.c (reg_names): Variable now global. 2598: * stmt.c (expand_asm_operands): Generate CLOBBERS when appropriate. 2599: 2600: * stmt.c (assign_parms): Ignore parms that aren't PARM_DECLs. 2601: 2602: * varasm.c (assemble_variable): Do ASM_OUTPUT_EXTERNAL for functions. 2603: 2604: * c-parse.y (yylex): floatflag is now an enum. 2605: Detect invalid use of decimal points (> 1, or in exponent) 2606: and multiple exponent letters. 2607: 2608: * expr.c (expand_call): If inlining fails, set TREE_ADDRESSABLE. 2609: 2610: Sun Sep 4 00:36:30 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) 2611: 2612: * c-decl.c (grokdeclarator): A const array becomes an array of consts. 2613: * c-typeck.c (build_array_ref): Array ref is const if array elts are. 2614: 2615: * output-sparc.c (output_move_double): Change criteria for ldd, std. 2616: (output_fp_move_double): New alternatives avoid ldd, std for 2617: stack refs that aren't aligned. 2618: (output_block_move): Use %g1 as temp reg. 2619: 2620: * sparc.md (floating point load from constant mem address): 2621: Use %g1 as temp reg. Use output_move_double in DF case, not ldd. 2622: (movsf): Asm insn typo in FPreg to FPreg case. 2623: (floatsi{s,d}f2): Constraint changed. 2624: Also new special case pattern in front of it. 2625: (fix_truncdfsi2): Use output_move_double, not ldd. 2626: (addsi3, subsi3): Use %g1 as temp reg. 2627: (cse-optimized multiply): Constraint now `g'; output generalized. 2628: (andsi3, orsi3, xorsi3): Use %g1 as temp reg. 2629: 2630: * reload.c (find_reloads): Force int constants into memory just 2631: like floating ones, if memory is allowed and no regs are. 2632: 2633: * expr.c (expand_call): Don't treat structure_value_addr like a parm 2634: if the first parm would be passed in a register. 2635: Also, write comments for all local vars. 2636: 2637: * tm-386v.h (START_SPEC): Use {g,m}crt1.o, not {g,m}crt0.o. 2638: (LIB_SPEC): Always use crtn.o. 2639: 2640: Sat Sep 3 13:05:50 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2641: 2642: * explow.c (plus_constant): Don't put CONST around lone SYMBOL_REF. 2643: 2644: * combine.c (subst): Simplify zero- or sign-extend of a constant. 2645: 2646: * expr.c (expand_expr): for REAL_CST, etc., check for invalid 2647: memory addresses and copy into registers. 2648: 2649: * integrate.c (expand_inline_function): If incoming struct value addr 2650: is in memory, map it like a memory parameter. 2651: 2652: * tm-*.h (FIRST_PARM_OFFSET): Now takes fndecl as argument. 2653: * integrate.c (expand_inline_function): Calc., use and save 2654: this fns value of FIRST_PARM_OFFSET. 2655: (copy_rtx_and_substitute): Use that value. 2656: * stmt.c (assign_parms): Likewise. 2657: 2658: * tm-sparc.h (FIRST_PARM_OFFSET): Make it 64 if value is BLKmode. 2659: (STRUCT_VALUE{,_INCOMING}): Put the value in 64(fp). 2660: 2661: * tm-sparc.h (PRINT_OPERAND_ADDRESS): Print offsets in decimal. 2662: Avoid excess `+' before a negative offset. 2663: 2664: * stmt.c (expand_function_start): Create the return value rtl 2665: before making the tail-recursion loop point. 2666: 2667: * combine.c (gen_lowpart_for_combine): Generate a paradoxical subreg 2668: rather than a wider memref. 2669: 2670: * reload.c (push_reload): Extend last change to case where OUT != 0. 2671: 2672: Fri Sep 2 11:43:20 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2673: 2674: * stmt.c (fixup_var_refs): Adjust last_parm_insn when deleting insns. 2675: 2676: * expr.c (emit_push_insn): calling memcpy, bump TEMP 2 pointers worth. 2677: 2678: Thu Sep 1 16:39:57 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2679: 2680: * reload1.c (choose_reload_targets): Test for canceled reload 2681: before looking inside reload_out. 2682: 2683: * jump.c (jump_optimize): Bug in last change. 2684: 2685: * m68k.md (return): Pattern disabled; confuses Aug 29 stmt.c change. 2686: * ns32k.md, i386.md: likewise. 2687: 2688: * emit-rtl.c (emit_note_force): New, like emit_note but always do it. 2689: * stmt.c (expand_function_end): Use emit_note_force. 2690: 2691: Wed Aug 31 11:34:08 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2692: 2693: * reload1.c (alter_reg): New arg FROM_REG is hard reg that the pseudo 2694: was spilled from. Works with spill_stack_slot. Callers changed. 2695: Now all pseudos spilled from one hard reg get the same slot. 2696: (reload): Initialize new variable spill_stack_slot. 2697: 2698: * cse.c (cse_insn): Don't insert floating point mems if -ffloat-store. 2699: 2700: * reload.c (find_equiv_reg): Allow no equivs for volatile memrefs. 2701: Also none for floating mem refs if -ffloat-store. 2702: 2703: * output-sparc.c (output_mul_by_constant): make `p' and `log' unsigned. 2704: 2705: Tue Aug 30 13:47:12 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2706: 2707: * jump.c (jump_optimize): Ignore other NOTEs while looking for 2708: a NOTE_INSN_FUNCTION_END. 2709: 2710: * integrate.c (save_for_inline): Flush extra call to max_reg_num. 2711: Don't copy NOTEs that are NOTE_INSN_FUNCTION_END. 2712: (copy_for_inline): Don't copy NOTEs that are NOTE_INSN_FUNCTION_END. 2713: 2714: * stmt.c (optimize_bit_field): If bit field is SRC, strip subregs 2715: from the DEST. 2716: 2717: * expmed.c (expand_mult): Special case for -1 as one operand. 2718: 2719: Mon Aug 29 12:14:51 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2720: 2721: * stmt.c (expand_goto_internal, expand_fixup): New arg LAST_INSN. 2722: (expand_return): Pass that arg in tail-recursive case. 2723: (other callers): Pass 0 for that arg. 2724: (expand_null_return): Handle HAVE_return nonzero w/ FUNCTION_EPILOGUE. 2725: (expand_null_return_1): New fn, has guts of old expand_null_return. 2726: (expand_return): Call expand_null_return_1 to pass LAST_INSN arg. 2727: (expand_return): Handle HAVE_return nonzero w/ FUNCTION_EPILOGUE. 2728: (expand_function_{start,end}): Likewise. 2729: (expand_cleanups): Fix typo in recursive-list case. 2730: (move_cleanups_up): New fn. 2731: 2732: * expr.c (expand_call): Execute cleanups_of_this_call on exiting. 2733: Notice calls to __builtin_new (but don't do anything about them yet). 2734: 2735: * reload.c (push_reload): If reloading a (SUBREG (MEM ...) ...), 2736: really reload just the MEM in the MEM's own mode. 2737: 2738: * sparc.md: Define patterns for insns that set the ccs. 2739: Define set-flag insns. 2740: New patterns for indexed load, and for optimizing signed bit fields. 2741: (mulsi3, umulsi3): Give "r" constraint to operand 0. 2742: Peephole optimizers recognize some cases where delay insns are safe. 2743: Changed patterns for call and return insns as well. 2744: 2745: * output-sparc.c (single_insn_src_p): New fn. 2746: (output_delay_insn): New fn. 2747: 2748: * tm-sparc.h (TARGET_EPILOGUE): New target flag. 2749: (NOTICE_UPDATE_CC): New clause for funny PARALLEL with a REG in it. 2750: 2751: * m68k.md (movqi): Use *'s to ensure preferencing d-regs. 2752: 2753: * c-parse.y (datadef): If traditional, no warning about no specs. 2754: 2755: Sun Aug 28 14:34:33 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2756: 2757: * tm-i386.h: Define PROMOTE_PROTOTYPES. 2758: POINTER_BOUNDARY now 32. 2759: 2760: * regclass.c (reg_scan): Compute `max_parallel', max # of sets and 2761: clobbers in any insn in this function. 2762: * global-alloc.c (global_conflicts): Use that, not MAX_SETS_PER_INSN. 2763: 2764: * stmt.c (expand_asm_operands): MAX_SETS_PER_INSN limits # output ops. 2765: 2766: * emit-rtl.c (init_emit_once): Make elt 2 of {f,d}const0_rtx nonzero. 2767: 2768: * c-decl.c (lang_decode_option): Handle -Wwrite-string. 2769: * c-parse.y (combine_strings): If that flag, make array of const char. 2770: 2771: * expr.c (expand_expr): for INTEGER_CST, always use immed_double_const; 2772: never do output_constant_def (it didn't work). 2773: Also heed WORDS_BIG_ENDIAN. 2774: 2775: * varasm.c (output_constant): Handle integer CONST_DOUBLEs. 2776: (output_constant_def): Abort if arg is an INTEGER_CST. 2777: 2778: * emit-rtl.c (gen_rtx): Don't return {f,d}const0_rtx for DImode. 2779: 2780: Sat Aug 27 12:37:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2781: 2782: * c-decl.c (pushdecl): Global extern decls set TREE_PUBLIC 2783: like local ones. 2784: 2785: * integrate.c (expand_inline_function): Handle parms that were 2786: passed in registers but whose homes are on the stack. 2787: 2788: * varasm.c (force_const_mem): Output ints according to spec'd mode. 2789: ({record,compare}_constant_rtx,const_hash_rtx,decode_rtx_const): 2790: Take mode as argument; pass it along. 2791: 2792: * c-parse.y (read_escape): No warning for `\{' or `\['. 2793: 2794: Fri Aug 26 12:23:07 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2795: 2796: * stmt.c (fixup_memory_subreg): Typo calculating big-endian adjust. 2797: 2798: * vax.md (call_value): Handle >255 args as in `call'. 2799: 2800: Thu Aug 25 16:00:51 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2801: 2802: * jump.c (delete_jump): Don't delete the cc-setter if it has autoinc. 2803: 2804: Wed Aug 24 16:33:37 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2805: 2806: * expr.c (expand_expr): For sun with a COND_EXPR, use SUBTARGET 2807: if validate_subtarget says ok. 2808: 2809: * tree.c (build_index_type): make_index_type moved here and renamed. 2810: 2811: * combine.c (move_deaths_2): New function. 2812: (try_distrib): Use that, not move_deaths. 2813: 2814: * tm-sparc.h (SHIFT_COUNT_TRUNCATED, STORE_FLAG_VALUE): Define them. 2815: 2816: * tm-sparc.h: FUNCTION_{PRO,EPI}LOGUE: Save room for ins and 2817: locals to spill to the frame if any ins *or* locals are live. 2818: 2819: * tm-sparc.h (NOTICE_UPDATE_CC): Delete the clause that always 2820: cleared the cc's for unrecognized insns. 2821: 2822: * reload1.c (reload_as_needed): Don't try to use a spill-reg 2823: in a basic block that wasn't spilled: ignore optional reloads. 2824: 2825: Tue Aug 23 09:45:05 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2826: 2827: * output-sparc.c (output_scc_insn): New function. 2828: 2829: * expr.c (expand_builtin, alloca): Round result of alloca 2830: up to a multiple of STACK_BYTES. 2831: 2832: * toplev.c (compile_file): Default main_input_filename is cc1 input. 2833: 2834: * tm-i386.h (FUNCTION_BOUNDARY): 32 avoids extra prefetch. 2835: 2836: * i386.md (movdi, movdf): Add `&' where needed in constraints. 2837: 2838: Mon Aug 22 11:57:51 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2839: 2840: * symout.c (symout_finish): Allocate typevector after the symout_types. 2841: 2842: Sun Aug 21 16:10:54 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2843: 2844: * tm-3b1.h (ASM_FORMAT_PRIVATE_NAME): Use a `_' as well as `%'. 2845: 2846: * expr.c (expand_expr): Typo setting MODE for MAX_EXPR. 2847: 2848: * Makefile (stage*): If ln fails, copy gnulib to stage*. 2849: (realclean): Do `clean' and then some. 2850: (install): new var USER_H specifies headers to copy. 2851: 2852: * c-typeck.c (build_binary_op_nodefault): LT_EXPR, etc. 2853: on ptr vs int failed to set result_type. 2854: (build_conditional_expr): Don't replace nonzero int 2855: with null_pointer_node. 2856: 2857: * combine.c (remove_links, try_distrib): New fns. 2858: (subst): New simplifications for ZERO_EXTEND, SIGN_EXTEND. 2859: (combine_instructions): Call try_distrib. 2860: (FAKE_EXTEND_SAFE_P): Allow SUBREGs. 2861: 2862: * m68k.md (non-FPA pattern for floatsisf2): Typo, had DF for SF. 2863: 2864: Sat Aug 20 12:04:37 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2865: 2866: * integrate.c (copy_address): Variant of copy_rtx_and_substitute. 2867: (copy_rtx_and_substitute): Use copy_address for MEM address that 2868: doesn't satisfy memory_address_p. 2869: 2870: * reload.c (find_reloads): If force_reload set, don't set WIN 2871: for a MEM even if `m', `o' or `g' in constraint. 2872: 2873: * i386.md (expendqihi2): Typo in asm template. 2874: 2875: * toplev.c (rest_of_compilation): Call clear_const_double_mem. 2876: * varasm.c (init_const_rtx_hash_table): Don't call it here. 2877: (immed_real_const): Don't record the rtx in the REAL_CST node. 2878: (force_const_double_mem, clear_const_double_mem): Use cc0_rtx, not 0, 2879: as flag for a CONST_DOUBLE not on the chain. 2880: 2881: * cccp.c (handle_directive): If traditional, do scan strings 2882: but accept unterminated ones. 2883: (collect_expansion): -traditional: Don't recognize comments in strings. 2884: Stringify arguments that appear within strings. 2885: (skip_quoted_string): -traditional: Always exit at newline. 2886: (macroexpand): -traditional: Don't put `"'s around stringified arg. 2887: (macarg): Set stringified_length accordingly. 2888: 2889: * c-decl.c (duplicate_decls): Avoid error redeclaring fcn after 2890: implicit decl if -traditional. 2891: 2892: * toplev.c (announce_function, report_error_function): 2893: Change communication logic between these fcns. 2894: 2895: * c-decl.c (lang_decode_options): Handle -Wall here. 2896: * toplev.c (main): not here. 2897: 2898: * tm-bsd386.h: Don't include tm-i386.h--be like tm-att386.h 2899: 2900: Fri Aug 19 11:08:36 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2901: 2902: * config-sun4.h: If sparc, include config-sparc.h. 2903: Never include alloca.h. 2904: 2905: * tm-m68k.h (TARGET_SWITCHES): Define `-mc68020', `-mc68000'. 2906: 2907: * c-decl.c (init_decl_processing): If traditional, use signed sizetype. 2908: 2909: * gcc.c (main): Use stderr for printing version. 2910: 1.1.1.6 root 2911: Thu Aug 18 14:42:36 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2912: 2913: * Version 1.26 released. 2914: 2915: * m68k.md (movsi): Constraint change for fpa regs. 2916: 2917: * reload1.c (choose_reload_targets): Clear reg_reloaded_contents 2918: for all regs of a multi-reg group. 2919: 2920: * reload.c (find_equiv_reg): HARD_REGNO_NREGS wants mode, not size. 2921: Check properly for overlap against multiword reload regs. 2922: 2923: Tue Aug 16 14:54:18 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2924: 2925: * varasm.c, expr.c (immed_double_const): immed_real_const_2 renamed. 2926: 2927: * tm-i386.h (SFVALUE): Should be `double'. 2928: * tm-i386v.h (SFVALUE): Don't override it. 2929: 2930: * tm-i386.h (ASM_OUTPUT_ASCII): Don't define it. 2931: * tm-att386.h: Definition moved here. 2932: 2933: * tm-bsd386.h: New file, for Sequent. 2934: * tm-seq386.h: New file, for Sequent. 2935: * config-i386.h: New file, for Sequent. 2936: 2937: * expr.c (push_block): Take account of STACK_POINTER_OFFSET. 2938: (expand_call): Therefore need not do so here. 2939: 2940: * optabs.c (expand_fix): Typo if going via DImode. 2941: 2942: * reload1.c (choose_reload_targets): Don't * reload_reg_rtx if 0. 2943: 2944: Mon Aug 15 01:11:49 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2945: 2946: * integrate.c (copy_for_inline): Don't try copying 0-length vector. 2947: (copy_rtx_and_substitute): Likewise. 2948: 2949: * m68k.md (andsi3): use clrw instead of andw #0. 2950: 2951: * print-tree.c (walk): Don't omit permanent nodes reach from temps. 2952: 2953: * m68k.md (zero_extend...): Reinstall the old zero-extend insns 2954: without names, so they can help the combiner. 2955: 2956: * expr.c (expand_expr): Don't use hard regs as subtargets. 2957: * combine.c (FAKE_EXTEND_SAFE_P): Always consider MEMs safe. 2958: * reload.c (find_reloads): For (SUBREG (MEM ...)) set force_reload. 2959: 2960: * c-parse.y (redescape): Don't warn for `\('. 2961: 2962: * reload.c (find_reloads_address): #if was backwards. 2963: 2964: Sun Aug 14 16:52:22 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 2965: 2966: * c-typeck.c (shorten_compare): Change switch to chain of ifs. 2967: 2968: * tm-ns32k.h (PRINT_OPERAND): CONST_DOUBLE contains a double 2969: even if it's SFmode. 2970: (FUNCTION_PROLOGUE): If MAIN_FUNCTION_PROLOGUE defined, run it. 2971: 2972: * cccp.c (file_buf): Rename field `free' to `free_ptr'. 2973: 2974: * Makefile (ALLOCA, MALLOC, LIBDEPS): New variables for easier 2975: customization. Executables depend on LIBDEPS instead of OBSTACK1. 2976: (cccp): Deps and libs now work like the others. 2977: 2978: * output-i386.c (notice_update_cc): Rewritten for clarity. 2979: 2980: * tm-i386.h (OUTPUT_JUMP): If CC_IN_OVERFLOW, abort. 2981: 2982: * recog.c (push_operand): Test for stack_pointer_rtx. 2983: 2984: * integrate.c (copy_rtx_and_substitute): Don't submit push-operands 2985: to `memory_address'--it would lose on machines where pushing is 2986: a special insn, not an addressing mode. 2987: 2988: * output-i386.c (top_dead_p): No more redundancy--that didn't work. 2989: Now one method if optimized, one for call_insns if noopt, one for 2990: other insns if noopt. 2991: (call_top_dead_p): fp_top_dead_p renamed 2992: and only the call-insn clause remains. 2993: 2994: * i386.md (cmpsf, cmpdf): Output was backwards. 2995: (", tstsf, tstdf): Set CC_IN_80387. 2996: (incb pattern): Restrict allowable registers. 2997: (movsf, movdf): Call top_dead_p only when absolutely necessary. 2998: (call_value): Use top_dead_p, not subroutine. 2999: 3000: Sat Aug 13 15:19:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3001: 3002: * stupid.c (stupid_life_analysis): If only 1 reg class, 3003: call stupid_find_reg only once. 3004: 3005: * stmt.c (expand_function_start): 3006: Clear current_function_pretend_args_size. 3007: 3008: * expr.c (store_constructor): If target is hard reg, go via a pseudo. 3009: 3010: * varasm.c (real_constant_chain): Now static in this file. 3011: (force_const_double_mem): Put R on chain if not already on. 3012: (clear_const_double_mem): Set XEXP (,2) to 0; 3013: also clear real_constant_chain and the chain links. 3014: * emit-rtl.c (init_emit_once): Put 0 in XEXP (,2) of {d,f}const0_rtx. 3015: * cse.c (canon_hash): For CONST_DOUBLE, ignore elts other than 0,1. 3016: 3017: Fri Aug 12 11:48:38 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3018: 3019: * reload1.c (order_regs_for_reload): Handle REG_ALLOC_ORDER more spots. 3020: 3021: * global-alloc.c (find_reg): error handling REG_ALLOC_ORDER; 3022: also error skipping regs known to be hopeless. 3023: * local-alloc.c (find_free_reg): error skipping hopeless regs. 3024: * stupid.c (stupid_find_reg): likewise. 3025: 3026: * local-alloc.c (qty_compare_1): typo, had q1 for q2. 3027: 3028: * expr.c (expand_expr): Don't use supplied target when optimizing 3029: arithmetic using a comparison or conditional; that target could be 3030: needed for the result of the comparison. 3031: 3032: * reload1.c (reload): Don't set reg_equiv_constant for hard regs. 3033: 3034: * stupid.c (stupid_life_analysis): Ignore reg R if regno_reg_rtx[R]==0. 3035: 3036: * symout.c (symout_finish): Use perm. links in permanent_fwd_refs. 3037: 3038: * i386.md (movhi, movqi): Check no_labels_between_p. 3039: 3040: Thu Aug 11 10:44:46 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3041: 3042: * c-parse.y (yylex): Out-of-range float is just a warning. 3043: 3044: * tm-gnx-v3.h: New file for Genix. 3045: * ns32k.md (movsi, call, call_value): GNX_V3 conditionals. 3046: * tm-ns32k.h (PRINT_OPERAND_ADDRESS): Changes for Genix. 3047: 3048: * ns32k.md (insv patterns): Operand 0 is read-write. 3049: 3050: * i386.md (tstsf, tstdf): Don't push the arg if already in st(0). 3051: 3052: * varasm.c (output_constant_def): If EXP is permanent, the rtl is too. 3053: 3054: * tm-*.h (ASM_OUTPUT_{LOCAL,COMMON}): New 4th arg, rounded size 3055: vs unrounded size. 3056: * varasm.c (assemble_variable): Pass new arg. 3057: * symout.c (symout_init): Likewise. 3058: 3059: * cccp.c (rescan): Don't let char const cross lines. 3060: (skip_quoted_string, macarg1, discard_comments): Likewise. 3061: 3062: * expr.c (expand_expr, VAR_DECL case): handle flag_force_addr. 3063: 3064: * tm-i386v.h (TAREGT_DEFAULT): Assume 80387. 3065: * config-i386v.h (alloca): Use __builtin_alloca under GNU C. 3066: 3067: Wed Aug 10 11:23:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3068: 3069: * reload.c (find_reloads): Alternative loses 3070: if it has no regs for a reg operand. 3071: 3072: * tm-sun3.h (STARTFILE_SPEC): Define, for fpa's sake. 3073: * tm-m68k.h: New hard regs, reg classes, reg class letters, 3074: target flag and switch, operand syntax and CC handling for fpa. 3075: * m68k.md: Add fpa insn patterns. 3076: * output-m68k.c (standard_SunFPA_constant_p): New fn. 3077: (output_move_const_{single,double}): Handle fpa regs. 3078: (singlemove_string): Handle fpa regs. 3079: 3080: * stmt.c (fixup_memory_subreg): Result had wrong mode. 3081: 3082: * ns32k.md (insv patterns): Adjust bit-number along with address. 3083: 3084: * sparc.md (negdf2, absdf2): Order of the words was backwards. 3085: 3086: * reload1.c (new_spill_reg): End confusion about meaning of 1st arg. 3087: Arg counted_for_nongroups had wrong type. 3088: 3089: * tm-m68k.h (FUNCTION_{PRO,EPI}LOGUE): Round frame size to word bdry. 3090: 3091: Tue Aug 9 07:53:59 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3092: 3093: * tm-i386.h (ASM_OUTPUT_ASCII): Don't lose the sign bit. 3094: 3095: * tm-i386v.h (STARTFILE_SPEC, LIB_SPEC): Use crt1.o, crtn.o. 3096: 3097: * stmt.c (fixup_var_refs_1): fixup all memory subregs. 3098: 3099: * reload1.c (choose_reload_targets): Don't strip paradoxical 3100: subregs from values to be reloaded. 3101: 3102: * cccp.c: Comment out text after #endif. 3103: 3104: * c-parse.y (init): Allow empty braces as init; warn if pedantic. 3105: 3106: * c-decl.c: Move C-specific options from toplev.c. 3107: * c-tree.h: Move their externs from flags.h. 3108: * c-decl.c (lang_decode_option): New fn called by `main'. 3109: * toplev.c (sorry, really_sorry): New error reporting fns. 3110: * c-decl.c (language_string): New var, name of this language. 3111: 3112: * c-parse.y: Don't include flags.h. 3113: * dbxout.c: Do include it. 3114: 3115: * dbxout.c (dbxout_type): Handle function fields and static fields 3116: and basetypes. Handle METHOD_TYPE and REFERENCE_TYPE. 3117: Abort on unexpected tree code. 3118: (dbxout_args): New fn to output prototype arg types. 3119: (everywhere): Use IDENTIFIER_LENGTH instead of strlen. 3120: (dbxout_type_name): Cleanup; avoid strlen. 3121: 3122: * local-alloc.c (reg_is_set): Don't call {post_,}mark_life for pseudos. 3123: 3124: * tree.h (TYPE_BASECLASSES): New field in type nodes. 3125: 3126: * ns32k.md (insv patterns): Was adjusting the address wrong. 3127: 3128: * c-decl.c (grokdeclarator): Just a warning for inline varargs fn. 3129: 3130: Mon Aug 8 08:16:46 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3131: 3132: * varasm.c (immed_real_const_2): Guts of creating a CONST_DOUBLE. 3133: * expr.c (expand_expr): Use that for 64-bit int constants. 3134: 3135: * loop.c (invariant_p): Don't check x->unchanging; it's not safe. 3136: 3137: * c-typeck.c (build_indirect_ref): Handle flag_volatile here 3138: so that it propagates to component_refs. 3139: * expr.c (expand_expr): No need to handle it here. 3140: 3141: * integrate.c (save_for_inline, expand_inline_function): 3142: Set up insn_map to record mapping of old uids to copied insns. 3143: (copy_for_inline, copy_rtx_and_substitute): Map 'u' refs via insn_map. 3144: 3145: * emit-rtl (emit_label, emit_barrier): Return what was emitted. 3146: 3147: * sdbout.c (sdbout_filename): Split off from sdbout_init. 3148: * tm-encore.h, tm-3b1.h, tm-vaxv.h, tm-att386.h (ASM_FILE_START): 3149: Call sdbout_filename. 3150: 3151: * toplev.c: Better messages for invalid options. 3152: 3153: * tm-m68k.h (PRINT_OPERAND_ADDRESS): Handle labelref+basereg. 3154: 3155: * tm-3b1.h (PUT_SDB_DIM): Override sdbout's definition. 3156: (ASM_FORMAT_PRIVATE_NAME): Override tm-hp...s definition. 3157: (PUT_SDB_PLAIN_DEF): Prepend `~' to specified name. 3158: (SDB_GENERATE_FAKE): Prepend `~'. 3159: 3160: * gcc.c: Include config.h before obstack.h. 3161: 3162: Sun Aug 7 11:17:56 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3163: 3164: * stor-layout.c (layout_decl): Do nothing with CONST_DECL. 3165: Treat FRIEND_DECLs like variables. 3166: (layout_record): Handle VAR_DECLs and FUNCTION_DECLs in the fieldlist. 3167: Handle basetypes (almost like fields). 3168: (layout_type): Handle REFERENCE_TYPE and METHOD_TYPE. 3169: 3170: * tree.c (temp_tree_cons): New fn. 3171: (array_type_nelts, simple_cst_equal): New fns. 3172: (lvalue_p): CALL_EXPR is an lvalue if it returns REFERENCE_TYPE. 3173: () Manage TYPE_REFERENCE_TO. 3174: (TYPE_HASH_SIZE): Bigger. 3175: (type_list_equal): Compare the TREE_PURPOSE fields. 3176: (build_reference_type, build_method_type): New fns. 3177: 3178: * stmt.c (block_stack): Add field `cleanups' to each element. 3179: (expand_{start,end}_bindings, expand_decl): Update that field. 3180: (stack_block_stack): Now includes blocks that have cleanups. 3181: (goto_fixup_chain): Add field `cleanup_list_list'. 3182: (expand_goto_internal): Execute cleanups for blocks being exited. 3183: (expand_fixup): Make a fixup if any block has cleanups. 3184: (fixup_gotos): New args CLEANUPS and DONT_JUMP_IN. 3185: Execute cleanups for blocks being exited, or add to cleanup_list_list. 3186: (expand_end_bindings): New arg DONT_JUMP_IN. Execute any cleanups. 3187: (expand_decl): New arg CLEANUP. 3188: (expand_cleanups, fixup_cleanups): New functions. 3189: * c-decl.c: Calls to expand_decl pass new arg. 3190: * c-parse.y: Calls to expand_end_bindings pass new arg. 3191: 3192: * stmt.c (expand_return): Handle INIT_EXPR, or bare RESULT_DECL. 3193: 3194: * stmt.c (case_stack): Add field `has_default' to each element. 3195: (pushcase,expand_end_case): Maintain and use that field. 3196: 3197: * stmt.c (pushcase): Handle RANGE_EXPR cases. 3198: (pushcase_range): Create RANGE_EXPR cases. 3199: 3200: * final.c (final): Always pass 3 args to ASM_OUTPUT_CASE_END. 3201: * tm-3b1.h: Delete offending spaces. 3202: 3203: Fri Aug 5 16:17:16 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3204: 3205: * integrate.c (copy_rtx_and_substitute): Don't make fp+reg+const 3206: without an intermediate temporary reg. 3207: 3208: * print-tree.c (dump): Don't print an identifier's chain. 3209: 3210: * toplev.c (compile_file): Treat `.i' suffix like `.co'. 3211: 3212: * gcc.c: New config macro CC1_SPEC: extra switches for cc1. 3213: Make a new spec for `.i' files. 3214: 3215: * c-decl.c (pushdecl, finish_decl): Delete duplicate tests. 3216: 3217: * varargs.h: Maybe include va-sparc.h or va-spur.h. 3218: * va-sparc.h: New file. 3219: * va-spur.h: renamed file. 3220: 3221: * tree.h ({TYPE,DECL}_LANG_SPECIFIC): Types and decls can point to 3222: language-specific structures containing other info. 3223: * print-tree.c (dump): Hooks for printing the language-specific 3224: data in types and decls. 3225: 3226: Thu Aug 4 08:54:30 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3227: 3228: * tree.def: Add some tree codes for C++. 3229: 3230: * Rename files: parse.[yh] -> c-parse.[yh], decl.c -> c-decl.c, 3231: typecheck.c -> c-typeck.c. 3232: Part of tree.c split out to c-convert.c. 3233: 3234: * expr.c (push_block): No longer static. 3235: (expand_expr): Handle REFERENCE_EXPR and INIT_EXPR. 3236: (expand_call): Turn a METHOD_TYPE to a FUNCTION_TYPE. 3237: This is probably not all that is required. 3238: 3239: * parse.y (yylex): Use p->rid to check for `signed' and `inline'. 3240: 3241: * tm-sparc.h (ASM_OUTPUT_SOURCE_LINE): typo. 3242: 3243: * sparc.md: Add a pattern for andcc. 3244: (cmpsf): Clobber reg 32 in DFmode. 3245: (branches): There are no unsigned floating branches; abort. 3246: (bgt): Correct name of floating variant. 3247: (mov?i): Load small constants via mov. 3248: (movdf for constants): Use mov, not add, to move regs. 3249: (movsf, floatsi*, fix*): Simplify reg-to-reg-via-mem move generation. 3250: (trunc*): Use mov, not or, to move regs. 3251: (negsi2, one_cmplsi2): Avoid "neg" and "not" assembler syntax. 3252: (call...): Generate "call" insns; handle #-reg-parms value. 3253: * Define some peepholes for return insns. 3254: 3255: * tm-sparc.h (TARGET_SUN_ASM): New target flag. 3256: (TARGET_DEFAULT): Now 1. 3257: (FRAME_POINTER_REQUIRED): Now 1. 3258: (STARTING_FRAME_OFFSET): Now -16. 3259: (LEGITIMATE_CONSTANT_P): Only CONST_DOUBLEs fail. 3260: (FUNCTION_{PROLOGUE,EPILOGUE}): Rewritten. 3261: 3262: * output-sparc.c (small_int): Test for int that mov can load. 3263: (singlemove_string): Use mov, not add. 3264: (output_move_double): Changes for overlap and for use of ldd, std. 3265: (output_fp_move_double): Use ldd, std when safe. 3266: (make_f0_contain_0): Simplify. 3267: 3268: * integrate.c (expand_inline_function): Some special CALL_INSN 3269: handling no longer needed due to REG_FUNCTION_VALUE_P. 3270: 3271: * m68k.md (movqi): Constraints allow moving areg to areg. 3272: 1.1.1.5 root 3273: Wed Aug 3 08:29:31 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3274: 1.1.1.6 root 3275: * Version 1.25 released. 3276: 1.1.1.5 root 3277: * integrate.c (expand_inline_function): Don't let MEM be inline_target. 3278: 3279: Tue Aug 2 09:13:37 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3280: 3281: * integrate.c (INTEGRATE_THRESHOLD): New macro, default dfn here. 3282: (function_cannot_inline_p): Use it. 3283: 3284: * rtl.h (REG_FUNCTION_VALUE_P): New macro. 3285: * stmt.c (expand_function_start): Set that flag in the return reg. 3286: * integrate.c (expand_inline_function, copy_rtx_and_substitute): 3287: Test that flag to test for the return value. 3288: * expmed.c (expand_fixed_bit_field, expand_mult, expand_divmod): ditto. 3289: FUNCTION_VALUE_OUTGOING_REGNO_P no longer needed. 3290: 3291: Mon Aug 1 02:46:08 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3292: 3293: * integrate.c (copy_rtx_and_substitute): If NO_FUNCTION_CSE, 3294: don't break out constant fcn addresses here. 3295: 3296: * expmed.c (expand_fixed_bit_field): Tests of FUNCTION_VALUE_REGNO_P 3297: were backwards. 3298: 3299: Sun Jul 31 13:10:07 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 3300: 3301: * recog.c (indirect_operand): New function. 3302: 3303: * output-i386.c (print_operand): define %*. eliminate %s. 3304: (fp_top_dead_p): In nonopt case, skip stack-adjusts while looking 3305: for the insn that uses the function value. 3306: 3307: * varasm.c (text_section, data_section): New functions. 3308: Replaced explicit printfs elsewhere with calls to them. 3309: * final.c (final_start_function): Use these fns. 3310: * sdbout.c (sdbout_one_type): Use text_section. 3311: * tm-att386.h (ASM_OUTPUT_LOCAL): Use data_section. 3312: 3313: * expr.c (prepare_call_address): Don't pass const via reg if no -O. 3314: 3315: * tm-sparc.h (FUNCTION_{PROLOGUE,EPILOGUE}) Round the size of saved 3316: registers. Fix bug counting saved registers. 3317: 3318: * tm-sparc.h (ASM_OUTPUT_SOURCE_LINE): Define this macro. 3319: 3320: * tm-sparc.h (DEFAULT_SIGNED_CHAR): Now 1. 3321: 3322: * expr.c (expand_builtin, alloca case): Adding stack offset needs 3323: special code if TARGET is a MEM. 3324: 3325: * dbxout.c (dbxout_init): Define Ltext: after the reference to it. 3326: 3327: * tm-3b1.h (ASM_OUTPUT_CASE_LABEL): `short 0' triggers assembler bug; 3328: `short L%nn-L%nn' supposedly works. 3329: 3330: Sat Jul 30 00:25:52 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3331: 3332: * sparc.md (floatsidf2): Minor change in output. 3333: (fix_trunc{sf,df}si2): Similar. 3334: 3335: * output-sparc.c (output_fp_move_double): Minor change in output. 3336: 3337: * stmt.c (assign_parms): Don't count stack space for struct value 3338: address if the function does not have one. 3339: 3340: * sdbout.c: Output .dim's and total size for arrays. 3341: Detect bit-fields properly. 3342: Changed handling of structure tags. 3343: 3344: * reload1.c (new_spill_reg): counted_for_nongroups is a new arg; 3345: store 1 in it if this reg is needed for max_nongroups. 3346: 3347: * reload1.c (choose_reload_targets): Allow inheritance of DFmode 3348: if it needs only one register. 3349: 3350: * reload1.c (choose_reload_targets): Delete the death-note from the 3351: store-insn of an inherited reload if PRESERVE_DEATH_INFO_REGNO_P. 3352: 3353: * reload.c (push_reload): Crash if PREFERRED_RELOAD_CLASS is NO_REGS. 3354: (find_reloads): Smarter handling of forcing CONST_DOUBLE into mem. 3355: Check PREFERRED_RELOAD_CLASS & do this if it says NO_REGS. 3356: 3357: * reload.c (subst_indexed_address): Handle case with 2 regs 3358: and no constant term. 3359: 3360: * local-alloc.c: New variable qty_n_refs, set from reg_n_refs 3361: and tested in qty_compare{,_1}. 3362: (combine_regs): Update qty_n_refs. 3363: Update qty_preferred_or_nothing more intelligently. 3364: 3365: * regclass.c (regclass, reg_class_record, record_address_regs): 3366: Count the number of refs to each reg along with the costs, 3367: and use it when computing the preferred_or_nothing flag. 3368: (Can't use reg_n_refs since that is weighted by loop depth). 3369: 3370: * global-alloc.c (global_alloc): Enable test of OVERLAPPING_REGNO_P 3371: for setting no_global_alloc_regs. 3372: 3373: * expr.c (prepare_call_address): Use force_reg, so it gets a REG_EQUIV. 3374: 3375: * optabs.c (can_{fix,float}_p): Return enum insn_code, not a function. 3376: (init_{fix,float}_tab): Store enum insn_code's in fixtab and floattab. 3377: (expand_{fix,float}): Change calls to can_{fix,float}_p. 3378: Also, use emit_unop_insn to make the actual insns. 3379: 3380: Fri Jul 29 02:42:40 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3381: 3382: * cccp.c (initialize_char_syntax): If dollars_in_identifiers is 0, 3383: set entries for `$' to 0. 3384: Set entries to 1 rather than incrementing them. 3385: 3386: Tue Jul 26 11:14:22 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3387: 3388: * varasm.c (assemble_variable): Make SDB output only if top-level. 3389: 3390: * local-alloc.c (reg_is_set): Arg to mark_life is regno, not qty. 3391: 3392: * output-ns32k.c (print_operand_address): New flag SEQUENT_BASE_REGS 3393: * tm-sequent.h: Define that flag. 3394: 3395: * Makefile: add some missing deps. 3396: 3397: * tm-encore.h (ASM_FILE_START): Changed to do nothing. 3398: 3399: * sdbout.c (sdbout_init): Fix two dumb errors. 3400: 3401: * sdbout.c (sdbout_end_epilogue): No longer takes arg. 3402: Examine current_function_decl here, not in caller. 3403: * final.c: Call changed. 3404: 3405: Mon Jul 25 01:32:54 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3406: 3407: * stor-layout.c (layout_record): Handle PCC_BITFIELD_TYPE_MATTERS. 3408: 3409: * tm-3b1.h (__PTR_TO_INT, __INT_TO_PTR): Define these, to alter 3410: parts of obstack.h. 3411: 3412: Sun Jul 24 17:56:53 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3413: 3414: * Padding for an arg may now go below or above it; new macro 3415: FUNCTION_ARG_PADDING can now choose which, or can inhibit padding. 3416: This makes for compatibility with PCC. 3417: * expr.h: Default definition of that macro. 3418: * expr.c (emit_push_insn): Put the padding above or below. 3419: (expand_call): Don't count the padding if none wanted. 3420: * stmt.c (assign_parms): Adjust parm stack addr if padded below. 3421: Don't count the padding if none wanted. 3422: * tm-3b1.h: Define FUNCTION_ARG_PADDING: no padding for > 4 bytes. 3423: 3424: * final.c (alter_subreg): Now returns the altered value 3425: (but may still modify the original structure). 3426: Handles (SUBREG:DI (CONST_DOUBLE:DF...)) by returning the CONST_DOUBLE. 3427: 3428: * m68k.md (DImode push): now allows `F'. 3429: * ns32k.md (movdi): now allows `F'. 3430: 3431: * tm-m68k.h (FIX_FRAME_POINTER_ADDRESS): 3432: Handle indexed references to frame pointer. 3433: * tm-i386.h, tm-m88k.h, tm-sparc.h: Likewise. 3434: 3435: * cse.c (predecide_loop_entry): Must search for the loop top label. 3436: 3437: Sat Jul 23 08:53:01 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 3438: 3439: * parse.y (yylex): typo in wide strings. 3440: 3441: * tm-vaxv.h, config-vaxv.h: New files for sysV on vax. 3442: 3443: * config-sun4.h: If sparc and not compiling with GCC, include alloca.h. 3444: 3445: Fri Jul 22 02:38:02 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 3446: 3447: * tree.c (build_real_from_int_cst): CHECK_FLOAT_VALUE at proper place. 3448: 3449: * tm-hp9k320.h ({TEXT,DATA}_SECTION_ASM_OP): Should not include a tab. 3450: * final.c (final_start_function): Don't output a tab before those. 3451: 3452: * sdbout.c (PUT_SDB_EPILOGUE_END): New macro. 3453: * sdbout.c (sdbout_end_epilogue): New function to output the C_EFCN. 3454: Like former sdbout_mark_end_function. Uses that macro. 3455: * final.c (final_end_function): Call that function. 3456: * tm-3b1.h: Override PUT_SDB_EPILOGUE_END like the other PUT_SDB... 3457: 3458: * tm-3b1.h (PRINT_OPERAND_ADDRESS, ASM_OUTPUT_INTERNAL_LABEL, 3459: ASM_OUTPUT_CASE_{LABEL,END}): Put a % in names of internal labels. 3460: (ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_ADDR_{VEC,DIFF}_ELT): 3461: New macros, for same reason. 3462: (FUNCTION_PROFILER): New macro, for % and also to put addr in a0. 3463: 3464: * final.c (output_source_line): For fcn's first line, use lineno 1. 3465: * sdbout.c (sdbout_end_function): Clear sdb_begin_function_line 3466: so can recognize first line of next function. 3467: 3468: * sdbout.c (sdbout_init): Output the .file pseudo here. 3469: * tm-3b1.h, tm-att386.h (ASM_FILE_START): Don't do it here. 3470: 3471: * sdbout.c (PUT_SDB_VAL): Output leading tab, like the other macros. 3472: * tm-3b1.h (PUT_SDB_VAL): Likewise. 3473: 3474: * regclass.c (regclass): Cast enums to int, not char. 3475: * varasm.c (record_constant): Likewise. Avoids 3b1 PCC bug. 3476: 3477: * decl.c (pushdecl): Better choice of error message for extern/static. 3478: 3479: * emit-rtl.c: Do look for STRUCT_VALUE_INCOMING_REGNUM. 3480: 3481: Thu Jul 21 02:13:03 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3482: 3483: * cse.c (canon_hash): CONST_INT case failed to add to prev. value 3484: of HASH; was inconsistent with cse_insn mem address hashing. 3485: 3486: * m68k.md (divide insns): Alternate 3B1 syntax for `swap' insn. 3487: 3488: Wed Jul 20 18:27:10 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3489: 3490: * m68k.md: In shift-by-24 patterns, rejects autoincrement memrefs 3491: since they are mode-dependent. 3492: 3493: Tue Jul 19 13:01:38 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3494: 3495: * parse.y (check_newline): Handle #ident by writing .ident to output. 3496: * cccp.c: Don't handle #ident; delete IDENT_DIRECTIVE conditionals. 3497: 3498: * stmt.c (expand_end_case): In compares, put constant arg second. 3499: 3500: * jump.c (jump_optimize): Delete conditional jump if followed by 3501: an unconditional jump to the same place. 3502: 3503: Mon Jul 18 17:49:13 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3504: 3505: * emit-rtl.c (init_emit_once): Now STRUCT_VALUE_INCOMING is an 3506: expression for an rtx. It can make a MEM. Likewise STRUCT_VALUE 3507: for outgoing structure value addresses. 3508: 3509: * stmt.c (assign_parms): If incoming struct addr on stack, leave room. 3510: * expr.c (expand_call): If outgoing addr on stack, push it like an arg. 3511: 3512: * PROMOTE_PROTOTYPES means if proto says `char', pass `int'. 3513: * decl.c (get_parm_info): Alter DECL_ARG_TYPE to do this. 3514: * typecheck.c (actualparameterlist): Convert value for this. 3515: * tm-m68k.h: Define PROMOTE_PROTOTYPES. 3516: 3517: Sun Jul 17 14:25:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3518: 3519: * jump.c (jump_optimize): peephole can delete insns following INSN. 3520: Set NEXT after peephole. 3521: 3522: * decl.c (finish_decl): Always restart perm alloc if global. 3523: 3524: * stmt.c (assign_parms): When a float is passed as double, store the 3525: float in low-numbered word. Avoids trouble with parm_map in integrate. 3526: 3527: * vax.md: New pattern for decrement and compare against -1. 3528: 3529: Sat Jul 16 14:18:00 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3530: 3531: * decl.c (pushdecl): Ignore previous decl if it's really an error_mark. 3532: 3533: * stmt.c (expand_start_case): Make sure case_stmt.start is a NOTE. 3534: 3535: * combine.c (subst): In the simplification for 3536: (set (zero_extract ...) (and/or/xor (zero_extract ...) const)), 3537: require same memory location in both extracts. 3538: 3539: * *386*: New files. 3540: 3541: * cse.c (fold_rtx): Save time in memory address if it didn't change. 3542: Don't replace cheaper expression with coslier one. 3543: (cse_insn): Reenable generation of REG_WAS_0. It wasn't obsolete. 3544: 3545: * cccp.c: `ident' has 5 letters. 3546: 3547: * final.c (output_source_line): SDB can't handle multiple source 3548: files, so ignore line-NOTEs for other files. 3549: 3550: * hard-reg-set.h: New var reg_class_size (# regs in the class). 3551: * regclass.c (init_reg_class): Set it up. 3552: 3553: * reload.c (find_reloads): If an earlyclobber is in a class of size 1 3554: as an output, reload it as input instead of as output. 3555: 3556: * reload1.c (choose_reload_targets): Improve elimimation of spilled 3557: pseudos made dead by reloading: if pseudo is limited to one block 3558: and that block contains just stores, delete all the stores. 3559: 3560: * reload1.c (choose_reload_targets): reg_has_output_reload is now 3561: static and survives through reload pass. 3562: (forget_old_reloads): Don't cancel data on spilled regs of output 3563: reloads of the insn just made. 3564: 3565: * sdbout.c (sdbout_one_type): Go to .text before defining a type. 3566: (sdbout_block): Test against do_block was backwards. 3567: 3568: * stmt.c (expand_end_function): New args to make a NOTE for last line. 3569: * decl.c (finish_function): Pass the args. 3570: 3571: * rtl.c (no_labels_between): New function. 3572: * vax.md (movsi): Call it. 3573: 3574: * print-tree.c (dump): Don't follow chain of a decl. 3575: 3576: * rtl.c (volatile_refs_p): Moved from flow.c. 3577: 3578: Fri Jul 15 13:36:20 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 3579: 3580: * sdbout.c (PUT_SDB...): Allow config to override any of them. 3581: * sdbout.c (PUT_SDB_{BLOCK,FUNCTION}_{START,END}): New macros. 3582: * tm-3b1.h: Override all of them. 3583: * sdbout.c (SDB_GENERATE_FAKE): New macro to create dummy tag name. 3584: (gen_fake_label): Use SDB_GENERATE_FAKE. 3585: * tm-3b1.h: Override its defn. 3586: 3587: * sdbout.c (sdbout_mark_function_end): Unused; deleted. 3588: 3589: * tm-3b1.h: Define SDB_DEBUGGING_INFO. 3590: 3591: Thu Jul 14 01:55:15 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 3592: 3593: * config-sunv4.h: New file for Sunos version 4. 3594: 3595: * tm-sun3.h (CPP_SPEC): Define mc68010 or mc68020, depending. 3596: 3597: Tue Jul 12 15:31:30 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3598: 3599: * stmt.c (expand_fixup, expand_goto_internal): New functions to 3600: emit a jump that can restore the stack level, even without tree node. 3601: (expand_null_return, expand_exit_loop, etc.): Use expand_goto_internal. 3602: (expand_end_function): Do fixup_gotos after emitting return_label. 3603: 3604: * cse.c (predecide_loop_entry): Avoid using JUMP_LABEL. 3605: * flow.c (find_basic_blocks): Avoid using JUMP_LABEL. 3606: 3607: * flow.c (insn_dead_p): Delete special case for stack-adjust insns. 3608: (life_analysis): Mark those insns with INSN_VOLATILE here. 3609: (mark_used_regs): a SET of a hard reg, in a volatile insn, 3610: always makes its source live. 3611: 3612: Mon Jul 11 10:46:26 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3613: 3614: * ns32k.md (floatqidf2): Commented out since assemblers warn about it. 3615: 3616: Sun Jul 10 11:49:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3617: 3618: * decl.c (xref_tag): Default the TYPE_MODE of enum xrefs 3619: to avoid making MEM and REG with VOIDmode. 3620: 3621: * vax.md (call): If > 255 args, pop them explicitly. 3622: 3623: Sat Jul 9 10:53:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3624: 3625: * symout.c (symout_types): Fix up forward refs to previously 3626: undefined structure types. 3627: (filter_undefined_types): New function. 3628: (symout_finish, symout_function_end): Output any never-defined structs. 3629: * toplev.c (rest_of_compilation): call symout_function_end. 3630: 3631: * parse.y: Don't declare errno if it's a macro. 3632: 3633: * tm-hp9k320 (FUNCTION_PROFILER): Pass ptr in a0, not d0. 3634: 3635: * typecheck.c (truthvalue_conversion): Flush unnec recursive call. 3636: (build_cond_expr): Bug testing zeroness of IFEXP with TREE_LITERAL. 3637: 3638: * cse.c (fold_cc0): Constants not CONST_INT are certainly nonzero. 3639: * fold-const.c (fold): ADDR_EXPR is not equal to zero. 3640: 3641: * cccp.c (macroexpand): Disable the macro even if traditional. 3642: (rescan): Error if use a disabled macro. 3643: 3644: * combine.c (try_combine): Don't substitute a different reg into 3645: an auto-increment. Handle multiple REG_INC notes in I1 or I2. 3646: 3647: * decl.c (implicitly_declare): Don't reuse old implicit decl. 3648: 3649: * varasm.c (assemble_variable): Avoid syntax err if no DBX and no SDB. 3650: * final.c (output_source_line): likewise. 3651: 3652: * fold-const.c (fold): PLUS/MINUS_EXPR: in case of cancellation, 3653: convert result to original type. 3654: 3655: * regclass.c (reg_class_record): Changed arguments include address 3656: of entire vector of constraints. 3657: 3658: Fri Jul 8 07:59:00 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3659: 3660: * reload1.c (reload): Find groups of more than 2 registers. 3661: 3662: Thu Jul 7 08:33:07 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3663: 3664: * expr.c (emit_push_insn): Typo adjusting arg for bcopy 3665: if not STACK_GROWS_DOWNWARD. 3666: 3667: * gnulib.c (_cmpsf2): Value is int, not SFVALUE. 3668: 3669: Wed Jul 6 11:53:46 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3670: 3671: * tm-encore.h, tm-3b1.h: Replace ASM_FILE_START; output a .file. 3672: 3673: * *m88*: New files for Motorola 88000. They don't really work. 3674: 3675: Tue Jul 5 14:40:03 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3676: 3677: * local-alloc.c (combine_regs): Don't tie a reg to itself. 3678: 3679: * finxincludes: Make a variable LIB for the target dir. 3680: 3681: * m68k.md (movhi, addhi3, addsi3): Micro-optimize choice of asm insns. 3682: 3683: * expr.c (expand_expr): Use new macros NO_DEFER_POP, OK_DEFER_POP 3684: in several places, to keep stack predictable. 3685: 3686: Mon Jul 4 09:50:18 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3687: 3688: * integrate.c (function_cannot_inline_p): Increase threshold size. 3689: 3690: * flags.h (use_gdb_dbx_extensions): New variable. 3691: * toplev.c: 3692: 3693: * sdbout.c (PUT_SDB_TAG): Delete duplicate defn. 3694: 3695: * expr.c (expand_expr): For FIX_TRUNC_EXPR to unsigned short/char, 3696: REALLY go via signed int. 3697: 3698: * loop.c (may_trap_p): Was detecting floating arithmetic incorrectly. 3699: 3700: * tm-news800.h (CPP_PREDEFINES): Add sony and sony_news. 3701: 3702: * parse.y (check_newline): Avoid infinite loop at eof. 3703: 1.1.1.4 root 3704: Sat Jul 2 10:35:17 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3705: 3706: * Version 1.24 released. 3707: 3708: * stmt.c (expand_asm_operands): Produce proper no-outputs insn. 3709: * recog.c (asm_noperands): Detect no-outputs insns. 3710: (decode_asm_operands): Likewise. 3711: * reload.c (find_reloads): Likewise (add case ASM_OPERANDS:). 3712: 3713: * local-alloc.c (block_alloc): Tests of qty_compare were backwards. 3714: 3715: * flow.c (life_analysis): Turn off code that finds regs live at 3716: function start and marks them not local to any basic block. 3717: 3718: * cse.c (insert_regs): Fix typo (UNITS_PER_WORD). 3719: 3720: * cccp.c: Define max. 3721: 3722: * expr.c (expand_expr): Put each SAVE_EXPR's reg on save_expr_regs, 3723: if not optimizing. 3724: * stmt.c (expand_function_end): Mark each of those regs live 3725: at the end and also retroactively at the beginning of the function. 3726: 3727: * output-vax.c (print_operand_address): New function from old macro. 3728: * tm-vax.h (PRINT_OPERAND_ADDRESS): Call that function. 3729: 3730: * config-vms.h: If not under GNU C, define X_OK, etc. 3731: 3732: * expr.c (move_by_pieces_1): Use * to call GENFUN. 3733: (expand_expr): Compare DECL_FUNCTION_CODE against an enum const. 3734: (preexpand_calls): Likewise. 3735: * genrecog.c (write_tree): Likewise. 3736: * final.c (final): Use * to call the output function. 3737: * reload.c (push_reload): Rename `noshare' to `dont_share'. 3738: 3739: * genoutput.c (output_epilogue): Put more newlines in insn_outfun. 3740: * genemit (gen_exp): Put in more newlines. 3741: 3742: Fri Jul 1 00:23:57 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3743: 3744: * global-alloc.c (allocno_compare): Avoid comparisons of floats 3745: since that is sensitive to roundoff errors. 3746: 3747: Thu Jun 30 09:25:40 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3748: 3749: * sdbout.c (PUT_SDB_{DEF,TAG}): Use ASM_OUTPUT_LABELREF. 3750: (PUT_SDB_PLAIN_DEF): New name for old defn of PUT_SDB_DEF 3751: (sdbout_one_type): Use PUT_SDB_PLAIN_DEF for `.eos'. 3752: 3753: * tree.c (allocation_temporary_p): New fcn. 3754: (all_types_permanent): New variable. 3755: (make_node): If that's set, make each ...TYPE node permanent. 3756: * decl.c (grokdeclarator): If traditional, make decl data permanent. 3757: (finish_decl): Make the rtl permanent too. 3758: * stor-layout.c (layout_type): If type is permanent, 3759: make its layout data permanent too. 3760: 3761: * cccp.c: Choose C++ or C at run time via var `cplusplus'. 3762: Separate cplusplus_include_default from include_default. 3763: Get GNU-specific include directory names from macros 3764: GCC_INCLUDE_DIR and GPLUSPLUS_INCLUDE_DIR. 3765: (main): Initialize based on CPLUSPLUS; `-+' sets it. 3766: * Makefile: Set *_INCLUDE_DIR based on $(libdir). 3767: 3768: Tue Jun 28 09:25:49 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3769: 3770: * tree.c (copy_node): Round LENGTH up to multiple of sizeof (int). 3771: 3772: * expr.c (emit_push_insn): Avoid using PUSH_ROUNDING if not defined. 3773: 3774: * sparc.md (floatsisf2): Insert missing brace. 3775: (mulsi3): Replace reg_o0_rtx, reg_o1_rtx. 3776: 3777: * tm-sparc.h: Define DBX_DEBUGGING_INFO. 3778: 3779: * parse.y (yylex): If traditional, no error for out-of-range float. 3780: 3781: * Makefile: Comment saying how to compile on an Apollo. 3782: 3783: * tm-sparc.h (ASM_FILE_START): Switch to new calling convention. 3784: 3785: * decl.c (init_decl_processing): Create type nodes for 64-bit ints. 3786: (grokdeclarator): use them for `long long'. Warn only if pedantic. 3787: 3788: * optabs.c (init_optabs): Add missing DImode insn names. 3789: 3790: * expr.c (emit_block_move, emit_push_insn): Use movstrqi if appro. 3791: 3792: * expr.c (convert_move): use extendsidi if appropriate. 3793: 3794: * cccp.c (initialize_builtins): Don't install __STDC__ if traditional. 3795: (main): Call initialize_builtins after option processing. 3796: 3797: * integrate.c (output_inline_function): Set current_function_decl. 3798: 3799: * cse.c (fold_rtx): Typo in avoiding 32-bit shifts. 3800: 3801: * cccp.c: Add forward-decl. 3802: 1.1.1.3 root 3803: Mon Jun 27 18:06:42 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3804: 3805: * hard-reg-set.h (reg_alloc_order): New variable 3806: based on REG_ALLOC_ORDER, a new machine-description macro. 3807: * regclass.c (reg_alloc_order): Define it. 3808: * local-alloc.c (find_free_reg): Handle reg_alloc_order. 3809: * global-alloc.c (find_reg): Likewise. 3810: * stupid.c (stupid_find_reg): Likewise. 3811: 3812: Sun Jun 26 10:47:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3813: 3814: * Version 1.23 released. 3815: 3816: * tm-3b1.h: Define IDENT_DIRECTIVE. 3817: 3818: * tm-encore.h: Define SDB_DEBUGGING_INFO. 3819: Define SCCS_DIRECTIVE and IDENT_DIRECTIVE. 3820: 3821: * output-ns32k.c: Decl of paren_base_reg_printed must be outside fcns. 3822: 3823: * tm-encore.h (ASM_OUTPUT_DOUBLE): Do 0f, not 0l. 3824: (CPP_PREDEFINES): No -Dns32032. 3825: 3826: * sdbout.c: Include syms.h, not storclass.h. 3827: (unnamed_struct_member): Decl was missing. 3828: (PUT_SDB_INT_VAL, PUT_SDB_VAL): Fix typos. 3829: (sdbout_types, sdbout_one_type, sdbout_parms): Fix typos. 3830: 3831: * Makefile: Add file sdbout.o. 3832: Changed comments pertaining to sysV. 3833: Make a separate target `doc' to make the info files. 3834: 3835: * m68k.md (bit-field insns): Use nonimmediate_operand for the thing 3836: to extract from. 3837: * vax.md (QImode bit-field insns): Likewise. 3838: 3839: * recog.c (nonimmediate_operand): Accept any nonconst general operand. 3840: 3841: Sat Jun 25 07:54:42 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3842: 3843: * cse.c (lookup_as_function): arg to exp_equiv_p was missing. 3844: 3845: Fri Jun 24 09:14:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3846: 3847: * recog.c (memory_operand): Allow (subreg (mem...)). 3848: 3849: Thu Jun 23 07:34:07 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3850: 3851: * decl.c (finish_enum): Compute minimum value like maximum. 3852: If minimum is negative, install it in the type and make it signed. 3853: 3854: * stor-layout.c (layout_record): STRUCTURE_SIZE_BOUNDARY is minimum. 3855: (layout_type): A RECORD_TYPE or UNION_TYPE must be BLKmode if 3856: any member is BLKmode. This is to prevent putting it in a register. 3857: (layout_decl): If decl's type is BLKmode, the decl *must* be BLKmode. 3858: 3859: * local-alloc.c (find_free_reg): Never allocate the frame pointer reg. 3860: 3861: * tm-sequent.h (PRINT_OPERAND): Bug in SFmode CONST_DOUBLE. 3862: * tm-encore.h: Likewise. 3863: 3864: * flow.c (flow_analysis): Bug in n_basic_blocks error check. 3865: 3866: * stmt.c (expand_asm_operands): Emit no insn if an arg is erroneous. 3867: 3868: Tue Jun 21 08:34:24 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3869: 3870: * reload.c (find_reloads_address): Write back *loc even if 3871: subst_reg_equivs makes no change, in case subst_index_address did. 3872: 3873: * flow.c: Define macros for -1 and -2 as values of reg_basic_block. 3874: (mark_used_regs): Add an `else'; no change in behavior. 3875: (mark_label_ref): Abort if LABEL_REF doesn't contain a CODE_LABEL. 3876: (find_basic_blocks): Extra error check. 3877: 3878: * output-ns32k.c (print_operand_address): Changes in handling of 3879: register-indirect, and of indexing by sb register. 3880: 3881: Mon Jun 20 04:55:38 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3882: 3883: * cccp.c (collect_definition): Compute needed space more accurately. 3884: Abort if use more space than was allocated. 3885: (rescan) [USE_C_ALLOCA]: Do alloca (0) after handle_directive. 3886: 3887: * genflags.c (gen_insn): Put parens around defns of HAVE_... macros. 3888: 3889: Sun Jun 19 02:52:53 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3890: 3891: * expr.c (emit_push_insn): Consider PARM_BOUNDARY when compensating 3892: for size of a pushed arg to bcopy. 3893: 3894: Sat Jun 18 07:20:54 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3895: 3896: * New files sparc.md, tm-sparc.h, config-sparc.h, output-sparc.c. 3897: 3898: * final.c (final): After an ADDR_{,DIFF_}VEC, do ASM_OUTPUT_CASE_END. 3899: * tm-3b1.h: Define ASM_OUTPUT_CASE_END. 3900: (PRINT_OPERAND_ADDRESS): Ref the case tables via an intermediate symbol 3901: `LDnnn' whose def. is output by ASM_OUTPUT_CASE_END. 3902: (ASM_OUTPUT_CASE_LABEL): Add missing newline. 3903: 3904: * reload.c (find_equiv_reg): Reject a MEM containing an autoincrement. 3905: 3906: Fri Jun 17 06:58:37 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 3907: 3908: * genpeep.c (main): Write `extern' in the decl for `peep_operand'. 3909: 3910: * flow.c (propagate_block): When a dead insn has a REG_RETVAL note, 3911: call mark_set_regs anyway, so that `significant' is updated. 3912: 3913: * jump.c (follow_jumps): New arg IGNORE_LOOPS. If 0, don't follow 3914: the insn at the beginning of a loop that enters the loop; this avoids 3915: interference with loop optimizer. 3916: (jump_optimize, tension_vector_labels): Pass that arg. 3917: 3918: * loop.c (loop_optimize): Mention invalid multiple-entry loops in log. 3919: 3920: * m68k.md (extv, extzv): Fix # of alternatives mismatch in constraints. 3921: 3922: Thu Jun 16 03:06:48 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) 3923: 3924: * genrecog.c (change_state): Was mishandling printing XVECEXP indices 3925: greater than 9. 3926: 3927: * combine.c (subst, simplify_and_const_int): Avoid making SUBREG 3928: of a non-REG. 3929: 3930: * expr.c (expand_expr): For FIX_TRUNC_EXPR to unsigned short/char, 3931: go via signed int. 3932: 3933: * optabs.c (expand_fix): Copy hard_libcall_value reg only once. 3934: 3935: * reload1.c (order_regs_for_reload): Init all elements 3936: of potential_reload_regs to -1. 3937: 3938: * Prevent generation of (set (reg) (plus ... (label_ref ...))). 3939: * explow.c (memory_address_noforce): Like `memory_address' but 3940: never force it into a register. 3941: * expr.c (do_tablejump): Use that. 3942: * m68k.md (casesi): Use that. 3943: 3944: * rtl.h (struct rtx_def, GET_CODE, PUT_CODE): If SHORT_ENUM_BUG, 3945: define the `code' field as a short. 3946: 3947: Wed Jun 15 01:25:57 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3948: 3949: * gcc.c (CPP_SPEC): New spec set by config.h gives flags to cpp. 3950: * tm-*.h for m68k: Define CPP_SPEC to define __HAVE_FPU__ on 3951: appropriate conditions. 3952: 3953: * combine.c (subst): Simplify (not (minus x 1)) and (neg (minus x y)). 3954: 3955: Mon Jun 13 02:22:43 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) 3956: 3957: * typecheck.c (build_array_ref): Avoid duplicate errmsg if index 3958: is an error-mark. 3959: 3960: Sun Jun 12 23:04:39 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) 3961: 3962: * cccp.c (handle_directive): If -traditional, quotes aren't special. 3963: (rescan): Assume newline ends a string constant. 3964: 3965: * cccp.c, cexp.y: Make all fcns non-static; add some forward decls. 3966: 3967: * various: add static forward-decls for various functions. 3968: 3969: Fri Jun 10 00:25:18 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 3970: 3971: * reload1.c (choose_reload_targets): When writing back an incremented 3972: value (handling reload_inc), write back to the real place, not to 3973: OLDEQUIV (a register that holds the same value). 3974: 3975: * tm-m68k.h (LEGITIMIZE_ADDRESS): Don't give force_operand a target. 3976: This can cause the use of multiple insns with same output reg, 3977: which can confuse cse. 3978: 3979: * loop.c (consec_sets_invariant_p): 3980: If invariant_p ever returns 2, we return 2. 3981: New arg is # of consecutive sets to look for, 3982: since this info is no longer in n_times_set at move_movables. 3983: (scan_loop): If consec_sets_invariant_p returns 2, set m->cond. 3984: (move_movables): check consecutive insns if m->consec && m->cond. 3985: 3986: * tm*.h: ASM_DECLARE_FUNCTION_NAME now takes 3rd arg, 3987: the FUNCTION_DECL node. 3988: * varasm.c (assemble_function): Pass this arg. 3989: 3990: * expr.c (expand_call, expand_builtin [alloca]): 3991: If STACK_POINTER_OFFSET is defined, add it to stack pointer contents 3992: before using it as address of actual data on the stack. 3993: * stmt.c (expand_decl): Likewise. 3994: 3995: * stmt.c (assign_parms): If 1st parm named `__builtin_va_alist' 3996: came in regs, pretend it came on stack. 3997: Handle pretending a BLKmode var came on the stack. 3998: If REG_PARM_STACK_SLOT, count stack space for each parm 3999: even if the parm came in a register; and use that stack space 4000: if the parm needs to be addressable or is BLKmode. 4001: Rearrange to simplify conditionals. 4002: 4003: Thu Jun 9 01:21:29 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 4004: 4005: * local-alloc.c: 4006: `qty_...' vectors' elements for hard-reg-numbers now aren't used. 4007: `reg_qty' elements for hard-reg numbers now aren't used, 4008: and the element for a pseudo is never a hard-reg number. 4009: (local_alloc): No need to reset those elements. 4010: No need to reset elements out of range of prev block's NEXT_QTY. 4011: (reg_is_born, reg_is_set, wipe_dead_reg): 4012: Divide labor in same way for hard regs and pseudos; 4013: simplify using fact that locality-to-basic-block has been precomputed 4014: and recorded in reg_qty; avoid refs to reg_qty[HARDREG]. 4015: (reg_is_born, wipe_dead_regs): Block-number arg no longer needed. 4016: 4017: * local-alloc.c (combine_regs): Remove old code for tying hard regs 4018: to pseudos; great simplification results. 4019: Use find_regno_note, not regno_dead_p. 4020: 4021: Wed Jun 8 00:18:04 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 4022: 4023: * reload.c (subst_reg_equivs): Set a flag if anything is changed. 4024: (find_reloads_address): Check that flag to avoid extra work. 4025: Also check early for safe reg+const address and avoid work. 4026: 4027: * reload.c (find_reloads): Use loops instead of bcopy. 4028: Check early for insn with no real constraints, and return. 4029: Also check for move from hard reg to hard reg and return. 4030: 4031: * cse.c (canon_reg): Rewrite for speed; use a switch. 4032: (cse_insn): Don't call find_reg_note if REG_NOTES is 0. 4033: 4034: * cse.c (cse_insn): Store modified SET_SRC even if there's a REG_EQUIV. 4035: Inhibition was needed when the SET_SRC was the only place to find the 4036: equivalent value; now it is in the REG_EQUIV note. 4037: 4038: * stmt.c (expand_asm_operands): If NINPUTS is 0, make vec of no elts. 4039: * regclass.c (reg_scan_mark_refs): Don't lose if XVEC (x,i) is 0. 4040: 4041: Tue Jun 7 03:51:28 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 4042: 4043: * stmt.c (assign_stack_local): If big-endian and MODE is narrow, 4044: the bytes actually used are the least significant. 4045: 4046: * parse.y (skip_white_space): Accept char as arg; let caller read it. 4047: (yylex): Change call. 4048: (check_newline): Return 1st nonwhite char after skipping lines. 4049: (skip_white_space): Change call. 4050: * toplev.c (compile_file): Change call. 4051: 4052: * gcc.c: Pass -traditional to cc1. 4053: 4054: * cse.c (cse_insn): Return very early for (set (reg) (call...)). 4055: Mainly to save time. 4056: (cse-insn) Old code to add REG_WAS_0 note wasted time but did nothing. 4057: 4058: * expr.c (clear_pending_stack_adjust): Really do clear it, 4059: if current fcn doesn't want to be inline. 4060: 4061: * cse.c (cse_insn): Speedup: instead of safe_hash, use canon_hash 4062: or HASHREG. 4063: 4064: Mon Jun 6 21:47:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 4065: 4066: * jump.c (rtx_renumbered_equal_p): Reject ADDR_VEC fast. 4067: 4068: * cse.c (cse_insn): Ignore a REG_EQUIV or REG_EQUAL note if the 4069: equivalent value is the same as the SET_SRC of the insn. 4070: 4071: * flow.c (life_analysis): Don't call volatile_refs_p for a CALL_INSN; 4072: just assume value is 1. 4073: (propagate_block): Don't call mark_{used,set}_regs for a stack-pop 4074: since if it isn't dead it has no effect on any useful life data. 4075: (mark_set_1): Return quickly if setting stack-ptr, and almost as 4076: quickly if setting any hard reg. 4077: (mark_used_regs): Likewise for refs. 4078: Also don't scan the vector of an ADDR_VEC or ADDR_DIFF_VEC. 4079: (volatile_refs_p): Likewise. 4080: 4081: * varasm.c (output_constant): Discard NOP_EXPR and CONVERT_EXPR 4082: in integer case (they were for casting a pointer). 4083: 4084: * parse.y (compstmt_or_error): Parse a compstmt after ignoring error. 4085: Use this for fctn body so that an error after store_parm_decls 4086: won't recover to xdecls and call store_parm_decls again. 4087: Typical cause was missing semi at end of last parmdecl. 4088: 4089: * parse.y: Add missing semicolons in actions. 4090: (yylex): Don't use yylloc. 4091: 4092: Sun Jun 5 16:14:40 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 4093: 4094: * typecheck.c (build_array_ref): Check arg types here, to make 4095: error message more accurate (not about "addition"). 4096: 4097: Thu Jun 2 02:41:40 1988 Richard Stallman (rms at rice-krispies.ai.mit.edu) 4098: 4099: * cccp.c (collect_expansion): `#' isn't special if -traditional. 4100: 4101: * dbxout.c (dbxout_parms): Don't output a regparm symbol 4102: unless the parm got a hard reg assigned. 4103: 4104: * tm-encore.h (ASM_OUTPUT_DOUBLE): Use 0f... not 0d... 4105: 4106: * tm-vax.h (CHECK_FLOAT_VALUE): Define this. 4107: 4108: Wed Jun 1 17:13:00 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 4109: 4110: * expr.c (expand_call): Have sequence points between args. 4111: 4112: Tue May 31 00:27:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 4113: 4114: * expmed.c (store_fixed_bit_field): Avoid shifting by 32. 4115: * cse.c (fold_rtx): 4116: * symout.c (subrange_p): likewise. 4117: 4118: * local-alloc.c (block_alloc): If operands 1 and 2 commute, 4119: try tying output to operand 2 if operand 1 won't do. 4120: 4121: * toplev.c (compile_file): Pass main_input_file to symout_init. 4122: 4123: * tree.c (build_real, build_real_from_int_cst): 4124: Call CHECK_FLOAT_VALUE if it's defined, to report out-of-range values. 4125: 4126: * tree.c (build_real, build_real_from_int_cst): New 1st arg TYPE. 4127: * parse.y (yylex): Pass this arg; requires parsing suffixes first. 4128: * fold-const.c (fold, combine, fold_convert): Pass this arg. 4129: Handling of float binops in `combine' simplified. 4130: 4131: * tm-encore.h (CPP_PREDEFINES): Remove -Dencore since CC lacks it. 4132: 4133: * final.c (output_source_line): Let ASM_OUTPUT_SOURCE_LINE 4134: be used for SDB also. 4135: 4136: Mon May 30 00:21:15 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 4137: 4138: * cse.c (insert): Was inserting in wrong place in list. 4139: (exp_equiv_p): Was failing to check validity when x == y. 4140: 4141: * tree.c (build_pointer_type): Handle saveable_obstack 4142: like current_obstack. 4143: 4144: * decl.c (finish_decl): Error in test for zero-size array warning. 4145: 4146: * reload.c (find_equiv_reg): New arg MODE specifies mode in which 4147: an equivalent value is needed. Equivalence must be good in that mode. 4148: In addition, notice overlap with multiword register modes. 4149: Simplify, knowing that registers have already been renumbered. 4150: It was invalidating memory-goals too easily; setting a reg 4151: only invalidates memory-goal if its address varies. 4152: * reload.c, reload1.c, jump.c: Calls pass the new argument. 4153: 4154: * cccp.c: For correct ANSI, must reject `$' in identifiers. 4155: (dollars_in_ident): Variable says whether to allow them. 4156: (rescan): Handle `$' as randomchar if that's 0. 4157: (main): dollars_in_ident is set to 0 by -$, to 1 by -traditional. 4158: (rescan, do_define): Delete former pedantic warnings for `$'. 4159: (initialize_char_syntax, initialize_builtins): Inits split to two 4160: functions; former is called after options are scanned 4161: so `$' is in is_idchar conditionally. 4162: * gcc.c: For -ansi, pass -$ to cccp. 4163: * toplev.c, flags.h: Define dollars_in_ident. 4164: * parse.y (yylex): Treat $ as punctuation unless dollars_in_ident. 4165: Delete old pedantic warning about $. 4166: * tm-vms.h: Define DOLLARS_IN_IDENTIFIERS as 1. 4167: 4168: * cccp.c (rescan): Preprocessing numbers can have signs, after `e'. 4169: 4170: * integrate.c (expand_inline_function): Abort, don't return failure, 4171: if max_regno is too low. I believe this can't happen. 4172: 4173: * typecheck.c (build_binary_op_nodefault): 4174: For ordered comparisons, no pedantic warning about void *. 4175: For MAX, MIN, ditto, and also don't allow pointer vs 0. 4176: 4177: * typecheck.c (build_unary_op): Don't allow pointer for +. 4178: 4179: * typecheck.c (convert_for_assignment): 4180: Add missing warning for case of unrelated pointer types. 4181: Change criteria for new ANSI C draft. 4182: 4183: * optabs.c (expand_binop): Don't set unused target_is_not_an_operand. 4184: 4185: * fold-const.c (fold_convert): Don't set unused inprec, outprec. 4186: 4187: * emit-rtl.c, parse.y: Delete unused var. 4188: 4189: * stor-layout.c (add_vc_sizes): Unused function deleted. 4190: * loop.c (constant_high_bytes): #if 0 this unused function. 4191: 4192: * gcc.c (fatal): Add missing arg to delete_temp_files. 4193: 4194: * cccp.c (dump_defn_1): Add missing arg to skip_quoted_string. 4195: 4196: * reload.c (find_reloads): If constraints don't fit in an `asm', 4197: print error instead of aborting. 4198: 4199: * regclass.c (reg_class_record): Ignore `&' in constraint. 4200: 4201: Sun May 29 00:20:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 4202: 4203: * Makefile: Run ranlib only if /usr/bin/ranlib exists. 4204: Add comment saying what to do on system V. 4205: 4206: * tree.c (suspend_momentary): Switch to the saveable_obstack 4207: for the sake of inline functions. 4208: 4209: * flags.h (enum debugger): New enum for write_symbols. 4210: * toplev.c, varasm.c, final.c: Use the enum constants where appro. 4211: Add calls to sdbout paralleling the calls to dbxout; 4212: put each in the appropriate conditional {SDB,DBX}_DEBUGGING_INFO. 4213: 4214: * toplev.c (main): Delete -noreg option; it's now the default. 4215: Make -O an alias for -opt. Rename -g to -gg. -g is alias for -G. 4216: Accept and ignore -Wtrigraphs. 4217: * gcc.c: Simplify the specs. 4218: 4219: * toplev.c (compile_file), tm-*.h: 4220: ASM_FILE_START is now a statement, not just a string to be output. 4221: Output it *after* determining the real source file name. 4222: 4223: * fold-const.c (fold): Simplify x >= CST to x > CST-1 (CST positive). 4224: To simplify this, canonicalize relationals to put constat last. 4225: 4226: * decl.c (duplicate_decls): Make a 2nd errmsg to show previous decl. 4227: 4228: * cccp.c (file_size_and_mode): Delete temporary VMS bootstrap patch. 4229: 4230: * tm-att386.h: New file. 4231: 4232: * decl.c (pushdecl): Warn if a local `extern' decl precedes 4233: a file-scope `static' decl. 4234: 4235: * expr.c (expand_call): No warning for failure to inline. 4236: 4237: * expmed.c (extract_bit_field): copy operand 1 of extv or extzv 4238: into register if memory isn't allowed. 4239: 4240: Sat May 28 02:10:56 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) 4241: 4242: * gnulib.c, Makefile: Delete va_end. 4243: 4244: * final.c, symout.c: Check DBX_DEBUGGING_INFO, not NO_DBX_FORMAT. 4245: 4246: * genemit.c (gen_expand): Notice a CALL inside a PARALLEL. 4247: 4248: * regclass.c (init_reg_sets_1): Part of init_reg_set is put in this 4249: new fn which is called after options are scanned. 4250: Now CONDITIONAL_REGISTER_USAGE can depend on the options. 4251: (fix_register): Just alter the data that init_reg_sets_1 will look at. 4252: 4253: * reload1.c (reload): Don't complain if two different but tieable 4254: modes require groups of the same regclass (assuming same size group). 4255: 4256: * cccp.c: Add 3rd arg to all `open' calls. 4257: 4258: * parse.y (check_newline): Typo prevented ignoring whitespace. 4259: 4260: * cccp.c (perror_with_name): fprintf had harmful extra arg. 4261: 4262: * cccp.c (main, trigraph_pcp): -Wtrigraphs means warn if any trigraphs. 4263: 4264: * emit-rtl.c (gen_sequence): If LEN is 1, avoid looking at PATTERN 4265: of something that doesn't have one. 4266: 4267: * reload1.c (alter_frame_pointer_addresses): frame pointer can 4268: occur by itself, not just inside a PLUS. 4269: (reload): Call eliminate_frame_pointer before reload_as_needed. 4270: Otherwise the latter can make reload insns that copy the frame ptr 4271: to a data reg, but 68k can't copy sp+const to a data reg. 4272: 4273: * decl.c (implicitly_declare): Always save the implicit decl 4274: permanently. Reuse an old one if it exists. 4275: * tree.c (resume_temporary_allocation): Used after `end_temporary...' 4276: to go back to temporary allocation. 4277: 4278: * stor-layout (layout_{type,decl}): Call variable_size. 4279: (variable_size): Turn a size into a SAVE_EXPR and either compute 4280: it right away or put it on a list to be computed later. 4281: (get_pending_sizes): Return that list and clear it out. 4282: * stmt.c (expand_start_function): Tell `variable_size' to compute 4283: sizes right away, and compute those saved on the list. 4284: (expand_end_function): Tell it to put them on a list. 4285: 4286: Fri May 27 00:02:34 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4287: 4288: * dbxout.c (dbxout_symbol): For local static var, use 'V', not 'v'. 4289: 4290: * gcc.c (main): Don't handle SIGHUP or SIGTERM if shell ignored it. 4291: 4292: * Makefile, gcc.c: Propagate Make var `libdir' to gcc search path. 4293: 4294: * expr.c (expand_expr): a PARM_DECL with no rtl can occur in size of 4295: `a' in `foo (a,i) int i; struct {int x[i];} a;', so report an error. 4296: 4297: * flow.c (insn_dead_p): insn that makes stack bigger is never dead. 4298: * combine.c (try_combine): Don't splice out stores into stack ptr. 4299: 4300: * reload.c (find_equiv_reg): Test given regno for OVERLAPPING_REGNO_P. 4301: 4302: * varasm.c (assemble_variable): Use saveable_obstack for allocation. 4303: 4304: Thu May 26 01:17:00 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4305: 4306: * integrate.c (save_for_inline): Clear unused slots in parmdecl_map. 4307: (There may be some non-parm regs below max_parm_regno.) 4308: * integrate.c (copy_for_inline): Don't crash if parmdecl_map elt is 0. 4309: 4310: * Don't fail to output a static inline function that was referenced 4311: via a local extern decl before its definition. 4312: * expr.c (expand_call): If need to mark a fcn decl addressable, 4313: mark the identifier addressable also. 4314: * typecheck.c (mark_addressable): If marking fcn addressable, 4315: mark the identifier as well. 4316: * decl.c (start_function): If identifier was marked addressable, 4317: propagate it to the function. 4318: 4319: * parse.y (yylex): Check for ERANGE after atof is called. 4320: (Sun doesn't report ERANGE.) 4321: 4322: * loop.c (may_trap_p): Any floating arithmetic may trap. 4323: 4324: Wed May 25 00:03:34 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4325: 4326: * parse.y: Delete `noalias'. 4327: (asm_operand): Don't allow this to be empty. 4328: (asm_operands): Do allow this to be empty. 4329: 4330: * reload.c (operands_match_p): Don't let REG and SUBREG match 4331: if the reg isn't a hard reg. 4332: No longer nec. to check reg_renumber, now that reload 4333: substitutes the hard regno. 4334: 4335: * reload1.c (reload): Counting existing spilled groups, 4336: check HARD_REGNO_MODE_OK so we don't get fooled by an odd-even pair. 4337: Spill entire need for new groups before spilling any solitary regs. 4338: Reg already counted against max_nongroups can't become part of a group. 4339: (new_spill_reg): Do bookkeeping associated with a new spill-reg. 4340: (n_spills): This var is now static, no longer passed as arg 4341: within the file. 4342: 4343: (reload_reg_class_lower): Handle all group-reloads before solitaries. 4344: (choose_reload_targets): therefore #if 0 the special code for 4345: finding solitary registers that aren't suitable for groups. 4346: But fix two bugs in it: braino deciding whether a reload 4347: is looking for 1 register (not a group). Use CLASS_MAX_NREGS. 4348: Also braino deciding whether a spill reg can be in a group. 4349: Did not fix bug that it fails to test HARD_REGNO_MODE_OK, 4350: so it might split up an even-odd pair. 4351: 4352: * vax.md: Special patterns for 8 and 16-bit fields, to make 4353: move-insns (like the ones for the 68k). 4354: 4355: * tree.c (convert_to_integer): Pass truncation down thru COND_EXPR 4356: as through a binary operator. 4357: 4358: * typecheck.c (build_cond_expr): If unpromoted operand types match, 4359: don't promote them--let containing expression promote (just once). 4360: 4361: Tue May 24 14:46:26 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4362: 4363: * combine.c (subst): Simplify (subreg (sign_extend X) 0). 4364: 4365: * tm-hp9k320.h: Delete NO_DBX_FORMAT. 4366: * Most tm...h files: Define DBX_DEBUGGING_INFO. 4367: * dbxout.c: Change conditional to DBX_DEBUGGING_INFO. 4368: 4369: * integrate.c (expand_inline_function): If inline fcn was declared to 4370: return QI, but actually computes an SI, use SImode for INLINE_TARGET 4371: but actually return a QI. 4372: 4373: * varasm.c (force_const_mem): Failed to determine alignment bdry 4374: from machine mode. 4375: 4376: * jump.c (jump_optimize): Don't delete (move X Y) if X or Y is a 4377: PRESERVE_DEATH_INFO_REGNO_P register. 4378: 4379: * final.c (output_addr_const): In PLUS, output constant term last. 4380: 4381: * final.c (final): Before outputting an insn, do FINAL_PRESCAN_INSN. 4382: 4383: * final.c (next_block_index): No longer static. 4384: (final): Add SDB_DEBUGGING_INFO cases for outputing NOTEs 4385: for beginning and end of a block. 4386: (output_source_line): Add SDB_DEBUGGING_INFO case for line number. 4387: * varasm.c (assemble_function): Add code for SDB symbol output. 4388: 4389: * gnulib.c: Allow config to override INTIFY. 4390: New macro SFVALUE for data type to return a single-float in. 4391: 4392: * combine.c (remove_death): No longer `static'. 4393: 4394: * reload1. (choose_reload_targets): PRESERVE_DEATH_INFO_REGNO_P 4395: selects hard regs for which death info should be updated for final. 4396: 4397: * reload1.c (reload_as_needed): Let INSN_CLOBBERS_REGNO_P 4398: prevent inheritance of certain reloads. 4399: 4400: * reload.c (find_equiv_reg): Let OVERLAPPING_REGNO_P reject 4401: an equiv reg. Needed for funny float regs on 80387. 4402: 4403: * cccp.c (do_ident): Define #ident as a no-op if IDENT_DIRECTIVE. 4404: Warn if pedantic. 4405: (do_sccs): Warn if pedantic. 4406: 4407: * emit-rtl.c (restore_reg_data): Set cur_insn_uid--prevent duplicates. 4408: 1.1.1.9 root 4409: See file OChangeLog. 1.1 root 4410: 4411: Local Variables: 4412: mode: indented-text 4413: left-margin: 8 4414: fill-column: 76 4415: version-control: never 4416: End:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.