|
|
1.1 root 1: 1.1.1.2 ! root 2: Wed Dec 21 02:46:34 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3: ! 4: * Version 1.32 released. ! 5: ! 6: * toplev.c (main): Vax pcc enforces goto-less programming ! 7: with fatal error. ! 8: ! 9: * stmt.c (fixup_memory_subreg): New arg INSN says where to emit insns. ! 10: (walk_fixup_memory_subreg): Likewise. All callers changed. ! 11: ! 12: Tue Dec 20 01:26:56 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 13: ! 14: * c-decl.c (start_function): Don't clear TREE_PERMANENT in fn decl. ! 15: Make the result decl a permanent node. ! 16: (finish_function): Don't clear DECL_RESULT in an inline function. ! 17: (duplicate_decls): Don't lose DECL_RESULT or DECL_SAVED_INSNS ! 18: or old decl, when defn is followed by redeclaration. ! 19: Likewise DECL_ARGUMENTS and DECL_RESULT_TYPE. ! 20: ! 21: * stmt.c (expand_function_end): End any sequences left unterminated. ! 22: ! 23: * cse.c (predecide_loop_entry): If "loop" has no label, do nothing. ! 24: ! 25: * recog.c (asm_noperands): Now return -1 if not that kind of insn. ! 26: All callers changed. ! 27: * combine.c (check_asm_operands): Calling changes not quite trivial. ! 28: * final.c (final): Likewise. ! 29: * reload.c (find_reloads): Likewise. ! 30: * recog.c (asm_noperands): Other changes: ! 31: Loop computing # of SETs in a PARALLEL was off by 1. ! 32: Validate all elts of any PARALLEL, to block invalid combinations. ! 33: ! 34: * ns32k.md (andsi3, andhi3): Make new CONST_INTs; don't clobber old. ! 35: ! 36: * integrate.c (copy_rtx_and_substitute): When looking in `parm_map', ! 37: if our mode mismatches parm's mode, use change_address to extract part. ! 38: On BYTES_BIG_ENDIAN machines, adjust the offset. ! 39: ! 40: Mon Dec 19 23:50:14 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 41: ! 42: * cexp.y ('/' and '%' ops): If divide by 0, print error, don't die. ! 43: ! 44: Sun Dec 18 14:03:02 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 45: ! 46: * toplev.c (main): Avoid shadowing I in inner block. ! 47: ! 48: * flow.c (propagate_block): The insn at the end of a libcall ! 49: may be dead, but the libcall might still be needed if the ! 50: hard return reg is used later. Detect this case. ! 51: (libcall_dead_p): New fn used to check that the libcall is dead. ! 52: ! 53: * output-m68k.c, tm-m68k.h (standard_sun_fpa_constant_p): Fn renamed. ! 54: ! 55: Sat Dec 17 13:23:51 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 56: ! 57: * stmt.c (expand_end_bindings): error_with_file_and_line => ..._decl. ! 58: ! 59: * combine.o (try_combine): Accept combination making a valid ! 60: asm with operands. ! 61: (check_asm_operands): Recognize asm with operands that are valid. ! 62: ! 63: * loop.c (strength_reduce): Don't accept a reg as a giv ! 64: if the reg was made by loop-optimize. ! 65: ! 66: * stmt.c (balance_case_nodes): A list of 3 always splits in middle. ! 67: ! 68: Fri Dec 16 17:22:07 1988 Tiemann (rms at sugar-bombs.ai.mit.edu) ! 69: ! 70: * sparc.md (fetch from constant address): Split into two patterns, ! 71: one fixed point and one floating. ! 72: (store at constant address): Handle remembered hi-half differently. ! 73: Other bug fixes. ! 74: (fix_truncsfsi2): Use f1, not f0, as temp. ! 75: (fix_truncdfsi2): Don't clear CC_F1_IS_0. ! 76: ! 77: * output-sparc.c (singlemove_string): Changed handling of case ! 78: where op1 is not memory and op0 has varying address. ! 79: (output_fp_move_double): Avoid reloading high half address ! 80: in the ldd and std cases with constant address. ! 81: (make_f0_contain_0): Handle f0 and f1 individually. ! 82: ! 83: * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): CONST is now illegitimate. ! 84: ! 85: * rtl.c (note_stores): Pass entire SET rtx, not flag, as 2nd arg to FN. ! 86: * local-alloc.c (reg_is_set): New type for 2nd arg. ! 87: ! 88: * Makefile: Comment out cc1plus, since not ready for release. ! 89: ! 90: Thu Dec 15 16:39:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 91: ! 92: * local-alloc.c (reg_is_set): If a hard reg is clobbered, make it free ! 93: before and after the insn. ! 94: * stupid.c (stupid_mark_refs): Likewise. ! 95: * global-alloc.c (global_conflicts): Likewise. ! 96: Use note_stores to call mark_reg_{store,clobber}. ! 97: (mark_reg_store): Changed calling conventions ! 98: All work done on set/clobbered regs is now done here. ! 99: Ignore CLOBBERs. ! 100: (mark_reg_clobber): Similar fn, but ignore SETs and handle CLOBBERs. ! 101: (regs_set, n_regs_set): New static vars for comm. among the above. ! 102: ! 103: * stmt.c (expand_asm_operands): call protect_from_queue on operands. ! 104: This requires preexpanding the outputs into a vector of rtx's. ! 105: ! 106: * Makefile (install): cd to $(libdir) before ranlib. ! 107: ! 108: * c-typeck.c (c_expand_asm_operands): emit_queue at the end. ! 109: ! 110: * reload.c (find_reloads): Count # alternatives properly for ! 111: an asm insn, and check that all operands correspond. ! 112: ! 113: * loop.c (verify_loop): Reject loops containg setjmps. ! 114: * cse.c (cse_main): Don't cse across a call to setjmp. ! 115: ! 116: * expr.c (expand_expr): Permit any non0 DECL_RTL for a VAR_DECL. ! 117: ! 118: * stmt.c (balance_case_nodes): Count ranges double when balancing. ! 119: ! 120: Wed Dec 14 13:50:45 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 121: ! 122: * final.c (output_addr_const): Output just `-', not `+-'. ! 123: ! 124: * make-cc1.com: Update filenames changed to `c-'. ! 125: * make-cccp.com: Pass needed -D options when compiling cccp.c. ! 126: Use /nomap when linking. ! 127: ! 128: * loop.c (strength_reduce): Paraphrase setting NEW_REG, for Iris cc. ! 129: ! 130: * output-m68k.c (output_move_const_single): %'s must be doubled twice. ! 131: ! 132: * loop.c (record_giv): A giv can be replaceable if its uses are ! 133: all in the same basic block as its sole setting. ! 134: (last_use_this_basic_block): Subroutine to test that. ! 135: ! 136: Tue Dec 13 13:41:57 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 137: ! 138: * expr.c (do_store_flag): Allow for COMPARISON to be a const_int. ! 139: ! 140: * c-decl.c (pushdecl): Warn if type mismatch with another external decl ! 141: in a global scope. ! 142: ! 143: * fixincludes: Fix typo in msg of deleting unchanged file. ! 144: ! 145: * Makefile (insn-*): Use two-step rules with a separate time-stamp file ! 146: to avoid rerunning gen* unless md has changed again. ! 147: ! 148: Mon Dec 12 13:32:05 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 149: ! 150: * i386.md (tstsf, tstdf, cmpsf, cmpdf): Use fnstsw, not fstsw. Faster. ! 151: ! 152: * tm-vax.h (ASM_OUTPUT_REG_POP): Use correct asm syntax for pop insn. ! 153: ! 154: * combine.c (subst): Handle (subreg (mem)) by making a changed mem. ! 155: This avoids producing any (subreg (mem))s except in the special ! 156: case they are supposed to be made here. ! 157: Also set undo_storage in a couple of cases that forgot to. ! 158: ! 159: * reload.c (push_reload): When handling (SUBREG (MEM)) for IN, ! 160: if there is an OUT, make that a separate reload. ! 161: Return its number in `output_reloadnum' ! 162: (find_reloads): When pushing matching-reloads, note that the ! 163: two operands can have different reload-numbers. ! 164: ! 165: * tm-3b1.h (ASM_OUTPUT_CASE_END): Test flag on TABLE, not its pattern. ! 166: (ASM_OUTPUT_CASE_LABEL): If /i flag set, don't output the dummy entry ! 167: since the fetcher-insn will not be off by 2 in this case. ! 168: * m68k.md (casesi_2 recognizer): For 3b1 syntax, compensate for that. ! 169: ! 170: Sun Dec 11 12:51:49 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 171: ! 172: * genrecog.c (try_merge_2): No longer put all explicit decompositions ! 173: before all predicates. Patterns are now tested in the order written. ! 174: * vax.md: Move the push-or-move-address patterns to the end. ! 175: * m68k.md: Move load-address pattern to end. ! 176: Rearrange the special-case movsi patterns. ! 177: * ns32k.md: Move special load-reg-17 pattern before movsi. ! 178: * i386.md: Move the QI and DI push patterns to logical places. ! 179: This should not actually change anything. ! 180: ! 181: * stmt.c: Add Andy Hitchins's binary-tree case statement code. ! 182: (struct case_stmt): case_list field is now a case_node chain. ! 183: Replace has_default field with default_label field. ! 184: (pushcase, pushcase_range): Build case_list in its new type, ! 185: and keep it sorted. ! 186: (expand_end_case): Use case_list in its new type. ! 187: Count a range of > 1 as two cases, when choosing strategy. ! 188: (group_case_nodes, balance_case_nodes): New fns, rearrange case_list. ! 189: (node_has_{low,high}_bound, node_is_bounded): New fns test ! 190: relationships of values of various case_list tree nodes. ! 191: (emit_jump_if_reachable): New fn. ! 192: (emit_case_nodes): Emit compares and jumps based on tree of case_list. ! 193: ! 194: * cccp.c (finclude): Handle nonordinary files (stat doesn't give size). ! 195: ! 196: * tm-3b1.h (PRINT_OPERAND_ADDRESS): Handle case of breg and no ireg. ! 197: ! 198: Sat Dec 10 16:30:32 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 199: ! 200: * sparc.md (movstrsi): Separate define_expand and define_insn; ! 201: clobber some pseudos to get temp regs to use in the output. ! 202: * output-sparc.c (output_block_move): Use those temp regs, ! 203: guaranteed to be free. ! 204: ! 205: * sparc.md (andcc patterns for bitfields from memory): ! 206: Test immed. arg for being in range. ! 207: (load DFmode constant): Use %m for output in one case. ! 208: * output-sparc.c (singlemove_string, output_move_double): Likewise. ! 209: ! 210: * output-sparc.c (singlemove_string): New case for mem-to-mem move. ! 211: ! 212: Fri Dec 9 11:42:15 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 213: ! 214: * stupid.c (stupid_mark_refs): for CLOBBER of a pseudo, ! 215: it is born just before this insn and dies just after. ! 216: ! 217: * tm-vax.h (NOTICE_UPDATE_CC): For aob, sob insns, forget the cc's. ! 218: ! 219: * basic-block.h (REG_BLOCK_UNKNOWN, REG_BLOCK_GLOBAL): Move defn here. ! 220: * local-alloc.c: Use them. ! 221: ! 222: * c-decl.c (store_parm_decls): Additional explanatory message ! 223: for some prototype mismatches. ! 224: ! 225: * gnulib.c (SItype): New macro used instead of `int' ! 226: for SImode operands and values. Definition is `long int'. ! 227: ! 228: Thu Dec 8 18:45:48 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 229: ! 230: * reload.c (operands_match_p): Move the label `slow' so that ! 231: it doesn't cause a REG and a SUBREG to be compared wrong. ! 232: ! 233: * toplev.c (compile_file): Output a label `gcc_compiled.' for GDB. ! 234: If new macro ASM_IDENTIFY_GCC is defined, run that instead. ! 235: * tm-3b1.h (ASM_IDENTIFY_GCC): Define this as no-op. ! 236: ! 237: Wed Dec 7 12:20:42 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 238: ! 239: * i386.md (adddf3): Typo: paren was in a constraint. ! 240: ! 241: * c-decl.c (grokparms): Avoid duplicate msgs for incomplete type ptrs. ! 242: ! 243: * gnulib.c: Rename all fns to start with `__'. ! 244: * optabs.c, expr.c: Rename all references. ! 245: ! 246: * gnulib.c (__cmpdi2, __ucmpdi2): New fns. ! 247: * optabs.c (emit_cmp_insn): Use them. ! 248: ! 249: * Makefile (stage*): Ignore errors on the main `mv' (for cc1plus). ! 250: Run ranlib if we have to copy gnulib. ! 251: ! 252: * expmed.c (expand_divmod): Split `label' into several local vars. ! 253: ! 254: * jump.c (jump_back_p): Do nothing unless cc's were set from integers. ! 255: ! 256: Tue Dec 6 12:00:21 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 257: ! 258: * c-parse.y (extend_token_buffer): Use xrealloc, not realloc. ! 259: ! 260: * integrate.c (output_inline_function): fix args of expand_function_end ! 261: (expand_inline_function): Add missing arg to expand_end_bindings. ! 262: ! 263: * cse.c (cse_insn): Add missing MODE arg to canon_hash. ! 264: ! 265: * reload1.c (reload_as_needed): Del. extra arg of choose_reload_targets ! 266: (reload): Add missing MODE arg to immediate_operand. ! 267: ! 268: * expmed.c (expand_mult): Delete extra arg to expand_unop. ! 269: ! 270: * c-typeck.c (default_conversion): ! 271: Add missing NOCONVERT arg to build_unary_op. ! 272: ! 273: * c-decl.c (duplicate_decls, finish_struct): Add missing arg ! 274: KNOWN_ALIGMENT to layout_decl. ! 275: * stor-layout.c (layout_record): Likewise. ! 276: * varasm.c (assemble_variable): Likewise. ! 277: ! 278: * dbxout.c (dbxout_init): Add missing LOCAL arg to dbxout_symbol. ! 279: ! 280: * expr.c (clear_storage): Remove excess arg to emit_move_insn. ! 281: ! 282: * loop.c (consec_sets_invariant_p): Add parens in hairy if-condition. ! 283: ! 284: * fold-const.c (fold): Typo, missing `case'. ! 285: ! 286: * cccp.c (main): Typo handling `-I-' option. ! 287: ! 288: * tm-i386.h (NO_FUNCTION_CSE): Define this; cse is said to slow ! 289: things down with less than 7 calls. ! 290: ! 291: * stmt.c (fixup_var_refs_insn): When scanning the reg-notes, ! 292: don't touch other insns they point at. ! 293: ! 294: * expr.c (do_jump): Use invert_exp, not reverse_condition, ! 295: to invert sense of a jump. ! 296: * jump.c reverse_condition now static, invert_exp now global. ! 297: ! 298: Mon Dec 5 10:51:39 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 299: ! 300: * tm-sun386.h (ASM_FILE_START): In the .file arg, exclude directories. ! 301: ! 302: * stmt.c (expand_expr_stmt): If -W, warn if stmt has no side effect. ! 303: ! 304: * cccp.c (monthnames): Capitalize each name. ! 305: ! 306: * rtl.def: New code MATCH_OPERATOR. ! 307: * genconfig.c (walk_insn_part): Handle it. ! 308: * genextract.c (walk_rtx): Handle it. ! 309: * genpeep.c (match_rtx): Handle it. ! 310: * genrecog.c (add_to_sequence): Handle it. ! 311: * genemit.c (max_operand_1, gen_exp, gen_expand): Handle it. ! 312: * genoutput.c (scan_operands): Handle it. ! 313: (insn_n_alternatives): New array in the output. ! 314: (struct data): New slots n_alternatives and op_n_alternatives. ! 315: (scan_operands, gen_insn, gen_peephole): ! 316: Record op_n_alternatives for each operand. ! 317: (output_epilogue): Verify that all operands have same # of alternatives ! 318: Also output insn_n_alternatives. ! 319: ! 320: * reload.c (find_reloads): use insn_n_alternatives to control ! 321: the loop over all alternatives. ! 322: An empty constraint or empty alternative in a constraint ! 323: is always satisfied. ! 324: * recog.c (constrain_operands): Likewise. ! 325: ! 326: * c-decl.c (lang_decode_option): For each -f option, recognize a form ! 327: with `no-' and a form without, as contraries. ! 328: ! 329: * toplev.c (main): Decode -f options using a table ! 330: so that each option automatically has a `no-' variant. ! 331: ! 332: * combine.c (try_combine): Give up if I1 or I2 follows a compare insn. ! 333: ! 334: Sun Dec 4 12:00:36 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 335: ! 336: * varasm.c (data_section): If flag_shared, use SHARED_SECTION_ASM_OP ! 337: if that is defined. ! 338: ! 339: * cccp.c (include_default): Add /usr/local/include. ! 340: ! 341: * Makefile (install): Install the makefile. ! 342: ! 343: * varasm.c (assemble_external): New fn to declare an external. ! 344: (assemble_variable): Output nothing for externals. ! 345: * c-parse.y (primary => identifier): Call assemble_variable on 1st use. ! 346: ! 347: * toplev.c (main): Print version info on stderr, not stdout. ! 348: * tm-*.h (TARGET_VERSION): Likewise. ! 349: ! 350: * tm-isi68.h, tm-news800.h: Rename __HAVE_FPU__ to __HAVE_68881__. ! 351: ! 352: * sparc.md (seq, etc): Entire page rewritten by Tiemann ! 353: to avoid incorrect use of PARALLEL. ! 354: * output-sparc.c (gen_scc_insn): Corresponding changes. ! 355: ! 356: Sat Dec 3 00:03:19 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 357: ! 358: * gcc.c (do_spec_1): %P is an ANSIfied form of %p: ! 359: put __ at beg and end of each predefined macro name. ! 360: ! 361: * tm-sun3.h (CPP_SPEC): Don't define -Dmc68010, etc., if -ansi. ! 362: * tm-sun2.h (CPP_SPEC): Likewise. ! 363: ! 364: * c-decl.c (shadow_tag): Don't complain if declare a new tag ! 365: at top level, or if redeclare a tag. ! 366: ! 367: * c-decl.c (grokparms): Warn if parm points to incomplete type. ! 368: (We already err if its own type is incomplete.) ! 369: ! 370: * stmt.c (fixup_var_refs_insns): Fix any (SUBREG (MEM)) in REG_NOTES. ! 371: (walk_fixup_memory_subreg): New subroutine used for this. ! 372: ! 373: * integrate.c (copy_rtx_and_substitute): Handle MEM refs to the middle ! 374: of a stack-parm--at least in the case of reading the parm. ! 375: ! 376: * rtl.c (rtx_equal_p): REG_FUNCTION_VALUE_P is significant ! 377: only until end of reload pass. ! 378: * toplev.c (rest_of_compilation): ! 379: Control that by setting new var rtx_equal_function_value_matters. ! 380: ! 381: * c-decl.c (init_decl_processing): Don't declare the builtins ! 382: that aren't really implemented. ! 383: ! 384: * output-sparc.c (output_move_double): "in structure" implies ! 385: 8-byte alignment only for DFmode, not for DImode. ! 386: ! 387: * final.c (output_operand_lossage): Cleaner text for error msg. ! 388: No longer need to write text into .s file, now that linenum is correct. ! 389: ! 390: * c-decl.c (pushdecl): -traditional stops warning ! 391: about "declared extern, later static". ! 392: ! 393: * c-typeck.c (build_indirect_ref): Don't handle flag_volatile here. ! 394: * expr.c (expand_expr): Handle it here, in INDIRECT_REF case. ! 395: This prevents -fvolatile from causing additional warnings. ! 396: ! 397: * output-sparc.c (output_load_address): Allow REG+REG for operands[3]. ! 398: ! 399: * m68k.md (movsi): If we output the label LIn, ! 400: set the RTL_INTEGRATED flag in the switch table's pattern. ! 401: * tm-3b1.h (ASM_OUTPUT_CASE_END): Define LD%n only if LI%n was output. ! 402: ! 403: * i386.md (push-and-add pattern): Comment it out. ! 404: It's said to result in slower code. ! 405: ! 406: * i386.md (tstqi, tsthi, tstsi): Output real `test' insn if op is reg. ! 407: ! 408: * i386.md (push for DI): Allow `oiF' for 2nd operand. ! 409: ! 410: Fri Dec 2 13:57:35 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 411: ! 412: * i386.md (movdi): Allow F constraint for 2nd operand. ! 413: ! 414: * i386.md (push for QI): define pattern to push a QImode ! 415: which really uses pushw and therefore really pushes a halfword. ! 416: * tm-i386.h (PUSH_ROUNDING): Round up to multiple of 2. ! 417: ! 418: * gcc.c (do_spec_1): Handle %e, which means report an error. ! 419: Use it to prohibit -pg with -fomit-frame-pointer. ! 420: ! 421: * tree.h (DECL_RESULT_TYPE): New field in FUNCTION_DECL holds the type ! 422: of the widened returned value (not nec. the declared return type). ! 423: * c-decl.c (start_function): Set DECL_RESULT_TYPE. ! 424: * integrate.c (expan_inline_function): Use that, not DECL_RESULT. ! 425: ! 426: Thu Dec 1 16:44:10 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 427: ! 428: * cse.c (fold_rtx): When reordering constant args, insist on ! 429: manifest constants; regs with known contents won't do. ! 430: ! 431: * i386.md (mulsi3): Don't use rtx_equal_p to compare regs. ! 432: ! 433: * expr.c (move_by_pieces_1): Don't call change_address ! 434: if address is autoinc, since that may not be memory_address_p. ! 435: Subroutine-macro add_offset deleted. ! 436: ! 437: * optabs.c (bcc_gen_fctn, setcc_gen_fctn): Moved to this file. ! 438: (init_optabs): Init those tables here. ! 439: * expr.c (init_conditions): Not here. ! 440: ! 441: * stmt.c (assign_stack_local): Make a list of all stack slots. ! 442: * emit-rtl.c (unshare_all_rtl): Unshare all the stack slots. ! 443: ! 444: * final.c (final): Handle BARRIER with ASM_OUTPUT_ALIGN_CODE. ! 445: * tm-ns32k.h (ASM_OUTPUT_ALIGN_CODE): Align to 4-byte bdry. ! 446: ?? * tm-sequent.h (ASM_OUTPUT_ALIGN_CODE): Override: just 2-byte bdry. ! 447: ! 448: * tm-m68k.h (PRINT_OPERAND): use new macros to print floats. ! 449: (ASM_OUTPUT_FLOAT_OPERAND): New macro. ! 450: (ASM_OUTPUT_DOUBLE_OPERAND): New macro. ! 451: * tm-sun3.h: Override those macros, to check for infinities. ! 452: ! 453: Wed Nov 30 06:35:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 454: ! 455: * tm-ns32k.h (FUNCTION_{PRO,EPI}LOGUE): if no frame pointer, ! 456: do explicit push or pop insns. ! 457: ! 458: * tm-genix.h (PRINT_OPERAND): Fix typo `file'. ! 459: Extedn decl for paren_base_reg_printed. ! 460: (MAIN_FUNCTION_PROLOGUE): Deleted. ! 461: (ASM_OUTPUT_EXTERNAL): Defined. ! 462: ! 463: * c-parse.y (yyerror): Better error msg for unprintable char in token. ! 464: (primary => identifier): Set TREE_USED if implicit decl made. ! 465: ! 466: * Makefile (cleanlinks): New target. ! 467: (INSTALL): New variable, has program used for installing files in sys. ! 468: ! 469: * output-ns32k.c (print_operand_address): If addr is sum of 2 consts, ! 470: output ADDR first, then OFFSET. ! 471: ! 472: * ns32k.md (addsi3): Allow adding const+reg with result in another reg. ! 473: ! 474: * tm-seq386.h (FUNCTION_PROFILER): Provide overriding definition. ! 475: ! 476: * tm-hp9k320.h: Alternate ASM_SPEC if using GAS. ! 477: Define STANDARD_STARTFILE_PREFIX if using GAS. ! 478: (FUNCTION_PROLOGUE): on 68020 for big stack frame use link.l. ! 479: ! 480: * gcc.c (STANDARD_STARTFILE_PREFIX): New cust. macro replaces `/lib/'. ! 481: ! 482: * va-sparc.h, va-spur.h: Prefix non-interface identifiers with `__'. ! 483: ! 484: * optabs.c (init_optabs): Don't set up libcalls for ftrunc_optab ! 485: because (1) they aren't supported and (2) they are never used. ! 486: ! 487: * gnulib.c (__builtin_saveregs): If not sparc, define the symbol anyway ! 488: to avoid a warning in ranlib. ! 489: ! 490: Mon Nov 28 01:46:12 1988 Michael Tiemann (mdt at choctaw) ! 491: ! 492: * c-parse.y (yylex): Typo, `=' for `==' making wide strings. ! 493: ! 494: * sparc.md (various places): make sure that all patterns which store ! 495: can store using const0_rtx (i.e., make all operands to `st' %rx). ! 496: ! 497: * output-sparc.c (various places): changed dispatches on SYMBOL_REF ! 498: to dispatches on CONSTANT_ADDRESS_P since we now recognize any CONST ! 499: (and not just SYMBOL_REFs). Don't recognize special case CONST for ! 500: output_block_move. Compiler doesn't have enough information to use ! 501: it. ! 502: ! 503: * stmt.c (expand_fixup): If the control stack is nested within the ! 504: nesting stack, then no fixup is needed. Otherwise, compiler must ! 505: check for possible fixups between the current nesting stack and the ! 506: nesting stack that immediately contains the control stack. ! 507: ! 508: * stmt.c (expand_function_start): functions which are nested use ! 509: DECL_CONTEXT. For these functions, test that their DECL_CONTEXT is ! 510: a LET_STMT node. ! 511: ! 512: * tree.h: declare `build_offset_type'. ! 513: ! 514: Sun Nov 27 10:34:53 1988 Richard Stallman (mdt at yahi) ! 515: ! 516: * output-sparc.c (output_move_double): ! 517: Don't try to use ldd/std if OP1 is a constant. ! 518: * sparc.md (movdi): Allow immediate args moved into general regs. ! 519: ! 520: * c-decl.c (grokparms): Reject incomplete parm types even if just ! 521: declarating, not defining. Change types to error_mark_node ! 522: in both the PARM_DECL and the list of types. ! 523: ! 524: * dbxout.c (dbxout_type): It's not a bug if a RECORD_TYPE ! 525: has a typedef as its TYPE_NAME. That happens in C++. ! 526: ! 527: * Make each `asm' with operands record its source file/line ! 528: with reg-notes. It doesn't work to emit a special note before the insn ! 529: because the insn can be moved by loop_optimize. ! 530: * stmt.c (expand_asm_operands): New args FILENAME, LINE. ! 531: Record them in the insn, in reg notes. ! 532: * c-typeck.c (c_expand_asm_operands): New args, passed along. ! 533: * c-parse.y: Pass those args. ! 534: (maybe_type_qual): Line #s for asm stmts emitted like all others. ! 535: * rtl.h (REG_ASM_FILE, REG_ASM_LINE): New kinds of reg notes. ! 536: * toplev.c (error_for_asm): Get the info from those notes. ! 537: ! 538: * reload.c (find_reloads): Don't clear BADOP for a reg letter ! 539: if the alternative ultimately doesn't allow any regs. ! 540: ! 541: * reload.c (find_reloads): If an `asm' insn gets an error, ! 542: change it to a USE to avoid duplicate error msgs or later trouble. ! 543: ! 544: * reload.c (find_reloads_address): Reloading a constant address, ! 545: specify Pmode as the mode for push_reloads, in case of CONST_INT. ! 546: ! 547: * expr.c (emit_push_insn): Fix calc. of space needed when PARTIAL > 0. ! 548: Both scalar case and BLKmode case needed fixing. ! 549: ! 550: * sparc.md (load/store constant address): ! 551: Moving DF from mem to cpu regs, don't go via %f0. ! 552: Don't use std/ltd if alignment is wrong or uncertain. ! 553: ! 554: Sun Nov 27 10:34:53 1988 Michael Tiemann (mdt at yahi) ! 555: ! 556: * reload.c (push_reload): Allow VOIDmode for INMODE, OUTMODE; ! 557: default the mode from the operand values. ! 558: ! 559: * sparc.md: remove patterns which generate annulled branch insns. ! 560: They are correct, but those insns confuse GDB. ! 561: ! 562: * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): ! 563: Treat any constant address like a SYMBOL_REF. ! 564: * sparc.md: Check for CONSTANT_ADDRESS_P rather than SYMBOL_REF. ! 565: ! 566: * sparc.md: Peepholes now accept SYMBOL_REF addresses. ! 567: The output routine can now split them properly even as delay insns. ! 568: ! 569: * print-tree.c (dump): added entry for METHOD_TYPE and ! 570: METHOD_CALL_EXPR. Also added entry for WITH_CLEANUP_EXPR. Suggest ! 571: that we make first_rtl of WITH_CLEANUP_EXPR 2 instead of 1. ! 572: ! 573: Sun Nov 27 00:15:33 1988 Michael Tiemann (mdt at yahi) ! 574: ! 575: * print-tree.c (dump): added entry for OP_IDENTIFIER. ! 576: ! 577: * tree.c (build_op_identifier): new function. Needed because ! 578: `build_nt' expects an "e" node, but OP_IDENTIFIER is an "x" node. ! 579: ! 580: * store_layout.c (layout_record): use DECL_FIELD_CONTEXT instead of ! 581: DECL_CONTEXT. ! 582: ! 583: * tree.h (DECL_FIELD_CONTEXT): new macro. Points to the type that a ! 584: FIELD_DECL is a member of. For C, this is just DECL_CONTEXT. ! 585: ! 586: * tree.c (build_method_type): typo used "==" to assign basetype to ! 587: TYPE_METHOD_BASETYPE with predictably poor results. ! 588: ! 589: Sat Nov 26 22:55:32 1988 Michael Tiemann (mdt at yahi) ! 590: ! 591: * output-sparc.c (output_sized_memop): new function to output a load ! 592: or store insn based on the size of the operand loaded or stored. ! 593: (make_f0_contain_0): use info from condition codes to decide whether ! 594: the register %f0 needs to have 0 loaded from memory or not in order ! 595: to contain zero. ! 596: (gen_scc_insn): new function used by define_expands for ! 597: set-on-condition-code insns. ! 598: (output_delay_insn): now knows how to handle load and store ! 599: scheduling when the load or store operation takes two insns instead ! 600: of one. The rewrite is now understands is this: ! 601: ! 602: sethi %hi(address),%g1 -> sethi %hi(address),%g1 ! 603: ld/st [%g1+%lo(address)],%reg -> b target ! 604: b target -> ld/st [%g1+%lo(address)],%reg ! 605: nop -> ;; gone ! 606: ! 607: * jump.c (reverse_condition): make this function publicly visible, ! 608: now needed in expr.c. ! 609: ! 610: * output-sparc.c (reg_or_0_operand): new function, returns nonzero ! 611: if operand is const0_rtx or a register of specified mode. ! 612: (hardreg): deleted. ! 613: ! 614: * expr.c, stmt.c: fixed random syntax errors. ! 615: ! 616: * tree.c (build_method_type): now corresponds to defn in tree.def ! 617: expr.c (expand_call): removed code to get FUNCTION_TYPE from ! 618: METHOD_TYPE. This should probably be looked at harder. ! 619: ! 620: * tree.def (METHOD_TYPE): Changed definition so that TREE_TYPE (m) ! 621: (where m is a METHOD_TYPE) is the type of the return value of the ! 622: method, not the FUNCTION_TYPE from which the METHOD_TYPE is derived. ! 623: ! 624: * Makefile: Changed target of BINDIR from /usr/local to ! 625: /usr/local/bin. ! 626: ! 627: Sat Nov 26 16:29:22 1988 Michael Tiemann (mdt at chickasaw) ! 628: ! 629: * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): Allow any SYMBOL_REF. ! 630: (NOTICE_UPDATE_CC): Remember high half of %g1 as a "condition code" ! 631: to avoid reloading it if it does not change. ! 632: (NOTICE_UPDATE_CC): Test SET_SRC, not SET_DEST, for a CALL rtx. ! 633: (PRINT_OPERAND): New code-letter `m' says output operand as an address. ! 634: ! 635: * toplev.c (flag_syntax_only): New flag variable. ! 636: * flags.h: Likewise. ! 637: ! 638: * toplev.c (error_with_decl): Extra arg, passed to fprintf. ! 639: (warning_with_decl): Likewise. ! 640: ! 641: * tree.c (build_offset_type): New function. ! 642: ! 643: * tree.h (TYPE_METHOD_BASETYPE): New name for TYPE_METHOD_CLASS. ! 644: Uses in tree.c and... renamed. ! 645: ! 646: * combine.c (SUBST_INT): New macro, for replacing an int. ! 647: (subst): Collapse nested SUBREGs even if SUBREG_WORDs are not 0. ! 648: ! 649: * expr.c (bcc_gen_fctn, setcc_gen_fctn): new tables, ! 650: initialized in init_comparisons. ! 651: Used in expand_expr, do_jump, do_store_flag ! 652: instead of explicit construction of a jump. ! 653: ! 654: * expr.c (save_noncopied_parts): New function. ! 655: ! 656: * expr.c (expand_expr): ! 657: ARRAY_REF: Special case for array of constants. ! 658: WITH_CLEANUP_EXPR: Handle it. ! 659: INIT_EXPR: Case deleted. ! 660: MODIFY_EXPR: Use save_noncopied_parts. ! 661: ! 662: * expr.c (expand_call): blkmode_parms_forced can be >0 ! 663: even when no stack arg space otherwise needed. ! 664: Don't use a hard reg as a target if there are cleanups. ! 665: ! 666: * stmt.c (struct block): New elt. outer_cleanups. ! 667: (struct case): New elt. num_ranges. ! 668: (struct fixup): Changed meaning of cleanup_list_list. ! 669: Changes in expand_fixup, fixup_gotos. ! 670: (expand_fixup): Detect some internal forward-jumps ! 671: that need no fixups--for speed. ! 672: (fixup_gotos): New arg THISBLOCK. ! 673: (expand_expr_stmt): Handle flag_syntax_only. ! 674: (use_variable): No longer static. ! 675: (use_variable_after): new fn. ! 676: (expand_end_bindings): handle cleanups like a stack level. ! 677: (expand_decl): Handle a cleanup with no decl. ! 678: (move_cleanups_up): Preserve relative order of cleanups. ! 679: (expand_anon_union_decl): New fn. ! 680: (pushcase): New fast clause if no ranges yet. ! 681: (pushcase_range): Turned on. ! 682: (expand_function_start): New temp var `fntype'. ! 683: Set TREE_USED for a parm we are ignoring. ! 684: (expand_function_end): Really use the `filename' arg. ! 685: Use use_variable_after for SAVE_EXPR regs. ! 686: ! 687: * dbxout.c (dbxout_type): Handle OFFSET_TYPE. ! 688: ! 689: * gnulib.c (__builtin_new, etc.): Support for C++. ! 690: ! 691: * emit-rtl.c (next_insn, prev_insn): New fns. ! 692: ! 693: Sat Nov 26 16:29:22 1988 Richard Stallman (mdt at chickasaw) ! 694: ! 695: * tree.h (TREE_LANG_FLAG_[1234]): New attributes. ! 696: (TYPE_METHOD_BASETYPE): New name for TYPE_METHOD_CLASS. ! 697: (TYPE_OFFSET_BASETYPE): New macro. ! 698: (NUM_TREE_CODE): New macro. ! 699: (TYPE_NONCOPIED_PARTS): new field in a type-node. ! 700: ! 701: * varasm.c (make_decl_rtl): Split out from assemble_variable. ! 702: (assemble_variable): No longer creates the rtl. ! 703: No longer handles policy of whether to output tentative decl yet. ! 704: (output_constant_def): Don't lose if wasn't temp allocation ! 705: when this was called. ! 706: (output_constant): Handle REFERENCE_EXPR. ! 707: ! 708: * Makefile (BISONFLAGS): new variable. ! 709: (prefix): New variable, used in bindir and libdir. ! 710: (C_OBJS, CPLUS_OBJS): New vars, split off from OBJS. ! 711: (LIBFUNCS): C++ support functions added. ! 712: (CPLUS_TREE_H): New variable. ! 713: (cc1plus): New target. ! 714: (lang_c, lang_cplus): Combines all targets for one language. ! 715: (gplus.info): New target. ! 716: (cplus-*.o): New targets. ! 717: (realclean): Handle new C++ files and recent renamings. ! 718: (install, TAGS): Likewise. ! 719: ! 720: * print-tree.c (prtypeinfo): Handle TREE_LANG_FLAG_[1-4]. ! 721: ! 722: * tm-sparc.h (ASM_OUTPUT_DOUBLE): Special case for infinity. ! 723: (ASM_OUTPUT_FLOAT): Likewise. ! 724: ! 725: * gcc.c: Don't define __GNU__. ! 726: For .cc files, pass -+ to cpp, and don't handle -ansi. ! 727: Use cc1plus as name of compiler for .cc files. ! 728: ! 729: * stor-layout.c (layout_type): abort if given a LANG_TYPE node. ! 730: (layout_union): Complain if union has basetypes or static members. ! 731: (layout_record): Handle anonymous union members. ! 732: ! 733: * tree.def (LANG_TYPE): New tree code for language-specific purposes. ! 734: (WITH_CLEANUP_EXPR): New tree code for expressions whose values ! 735: need to be cleaned up when they are deallocated. ! 736: (OP_IDENTIFIER): New tree code for certain C++ purposes. ! 737: ! 738: * toplev.c (rest_of_decl_compilation): Call make_var_rtl ! 739: before assemble_variable. ! 740: ! 741: Wed Nov 23 02:15:45 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 742: ! 743: * xm-sunos4.h: Rename included config files to xm-*. ! 744: * xm-*.h: Likewise. ! 745: ! 746: * fixincludes: Avoid altering args to names other than CTRL ! 747: that end in ...CTRL. ! 748: If a file isn't actually changed, delete the copy. ! 749: ! 750: Mon Nov 21 12:48:22 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 751: ! 752: * loop.c (move_movables): Never move a reg w/ # > old_max_reg. ! 753: (strength_reduce): For nonreplaceable giv, put insn to load it ! 754: after the insn that used to compute it, in case the latter ! 755: is the last of a libcall sequence. ! 756: ! 757: * stmt.c (expand_function_end): If returning BLKmode, also copy ! 758: address where value is returned to the place that GDB will ! 759: expect to see it after the return. ! 760: ! 761: * c-parse.y (readescape): Warn about hex constant out of range ! 762: for a target integer. ! 763: (yylex): Warn about escape out of range for non-wide char or string. ! 764: Use a buffer of ints to read a wide string. ! 765: ! 766: Sat Nov 19 02:18:02 1988 Richard Stallman (rms at apple-gunkies.ai.mit.edu) ! 767: ! 768: * Version 1.31 released. ! 769: ! 770: * sparc.md: Change `K' to `I' in all constraints. ! 771: ! 772: * loop.c (gen_iv_mult): Handle TARGET==0. ! 773: ! 774: * c-decl.c (duplicate_decls): Undo last change. ! 775: ! 776: * c-decl.c (pushdecl): Instead of that change, ! 777: save old-decl's file/line before calling duplicate_decls, ! 778: and pass them later to warning_with_file_and_line. ! 779: * toplev.c (warning_with_file_and_line): New fn. ! 780: ! 781: Fri Nov 18 13:07:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 782: ! 783: * stmt.c (fixup_var_refs_1): (SUBREG (MEM)) was slipping through ! 784: in case where a SET was writing in the variable being fixed. ! 785: ! 786: * recog.c (register_operand, nonmemory_operand, memory_operand): ! 787: Changes to handle new var reload_completed: 1 means that ! 788: (SUBREG (MEM)) now counts as a mem-ref, since alter_subreg ! 789: will make it one. ! 790: * toplev.c (rest_of_compilation): Set and clear reload_completed. ! 791: ! 792: * sparc.md (call patterns): If TARGET_SUN_ASM, and address in reg, ! 793: output a jmpl rather than a call. ! 794: * tm-sun4os3.h: Like tm-sparc.h but turn on TARGET_SUN_ASM. ! 795: ! 796: * reload.c (push_reloads): Reinstate handling of reg_equiv_constant. ! 797: ! 798: Thu Nov 17 09:48:14 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 799: ! 800: * reload1.c (constraint_accepts_reg_p): Name changed from ! 801: constraint_all_regs_p; new arg is reg we are concerned with, ! 802: and condition tested takes some advantage of that reg. ! 803: ! 804: * gcc.c (main): Rename var `error' to `error_count' for name conflict. ! 805: ! 806: * emit-rtl.c (emit_note): Output line #s even if no debug info wanted. ! 807: (emit_line_note): New fn, does what emit_note did. ! 808: (emit_line_note_force): New name for emit_note_force. ! 809: * stmt.c, c-parse.y: Call emit_line_note instead of emit_note. ! 810: ! 811: * c-parse.y (maybe_type_qual): Call emit_note instead of emit_line_note ! 812: Now we can find the line # of every `asm' from the RTL. ! 813: * toplev.c (error_for_asm): New fn, gets line # by searching for NOTE. ! 814: * reload.c (find_reloads): Use error_for_asm. ! 815: * reload1.c (choose_reload_targets): Likewise. ! 816: * final.c (output_operand_lossage): Likewise. ! 817: Variable this_is_asm_operands is now current insn if it's nonzero. ! 818: ! 819: * loop.c (move_movables): When a reg is moved, update regno_first_uid ! 820: and regno_last_uid; say life span includes entire loop. ! 821: * Decrement THRESHOLD per reg moved, not per insn moved. ! 822: ! 823: Wed Nov 16 08:41:32 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 824: ! 825: * gnulib.c (___builtin_saveregs): New fn, for sparc. ! 826: ! 827: * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): Don't recognize ! 828: SYMBOL_REFs, except for the constants pool. ! 829: But do recognize REG+REG and SMALLINT+REG. ! 830: * sparc.md: New patterns for fetching and storing memory ! 831: whose address is symbolic and not "legitimate". ! 832: ! 833: * sparc.md (movsi): Add `f' to op1 constraint. ! 834: New output clause for result in fp reg. ! 835: (Floating point fetch patterns): Output sethi insns. ! 836: (call_value, related patterns): value-register has `register_operand'. ! 837: ! 838: * output-sparc.c (hardreg): New function. ! 839: (COMPATIBLE): Clause added for n_regs == 2. ! 840: (single_insn_src_p): Return 0 for MEM whose address is absolute. ! 841: ! 842: * tm-genix.h (GO_IF_LEGITIMATE_ADDRESS subroutines): ! 843: Redefine, to exclude any possibility of SB-referencing addresses. ! 844: ! 845: * loop.c (strength_reduce): Can't eliminate a biv if used before ! 846: start of the loop. Used before is same as used after, if contained ! 847: in another loop. ! 848: ! 849: * recog.c (asm_noperands, decode_asm_operands): ! 850: Handle case of no outputs, but some clobbers. ! 851: * stmt.c (expand_asm_operands): Generate right stuff for that case. ! 852: ! 853: * tm-sun3.h (CPP_SPEC): Don't define __HAVE_68881__ if using fpa. ! 854: ! 855: Tue Nov 15 00:10:26 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 856: ! 857: * loop.c (gen_iv_mult): Arg OP0 may not be a constant. ! 858: Pay attention to return value of expand_mult. ! 859: (eliminate_biv): Call changed. ! 860: ! 861: * output-m88k.c, output-sparc.c (output_move_double): ! 862: Fix typo `optype0' for `optype1'. ! 863: ! 864: * c-decl.c (duplicate_decls): Don't alter file, line of old decl. ! 865: ! 866: * c-parse.y (skip_white_space): Don't recognize comments; rely on cpp. ! 867: ! 868: * rtl.c (rtx_equal_p): Handle vectors. ! 869: ! 870: * loop.c (scan_loop): Change elts of n_times_set back to positive ! 871: for candidates that weren't moved, before doing strength reduction. ! 872: ! 873: * ns32k.md (movdi, movdf): Use `&' constraint for first operand. ! 874: ! 875: * reload1.c (reload): Initialize spill_indirect_ok here. ! 876: ! 877: * config-sun4.h: Recognize `-static' switch. ! 878: ! 879: * global-alloc.c (set_preference): Avoid using nonsense hard reg #s ! 880: that result from adding OFFSET. ! 881: ! 882: * sdbout.c (sdbout_end_function): Line # in .ef should be relative. ! 883: ! 884: * final.c (output_source_line): For SDB, don't output negative #s. ! 885: ! 886: * tm-encore.h (ASM_OUTPUT_LOCAL): Don't ignore SIZE arg. ! 887: ! 888: Mon Nov 14 11:03:16 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 889: ! 890: * reload.c: Don't declare refers_to_regno_p. ! 891: ! 892: * gcc.c (main): Warn if any input files are for the linker ! 893: but the linker is not being run. ! 894: ! 895: * jump.c (sets_cc0_p): Dumb bug fetching elts of a PARALLEL. ! 896: ! 897: * local-alloc.c: qty_birth, qty_death elements are now -1, not 0, ! 898: when the value is not known. ! 899: ! 900: * expmed.c (extract_bit_field): Bug computing xbitpos, xoffset ! 901: when changing units from bytes to words. ! 902: ! 903: * loop.c: Rename `times_used' field in `struct movable' to `savings'. ! 904: (scan_loop): When scanning the consecutive sets, for each libcall, ! 905: increment `savings'--leave `consec'. ! 906: When making movable for (SET (REG) 0) which is part of zero-extension, ! 907: set `savings' to 1 initially, since only 1 insn will be moved. ! 908: And don't let any other reg force that insn. ! 909: Reduce initial THRESHOLDs. ! 910: (move_movables): Don't add `consec' into `savings' ! 911: since the initial `savings' was proportional to `consec'. ! 912: Decrement THRESHOLD by 3 (not 2) for each move done. ! 913: ! 914: * reload1.c (choose_reload_targets): Strip subregs from OLD ! 915: before writing the output-reload move-insn. ! 916: ! 917: * reload1.c (reload): counted_for_groups and counted_for_nongroups ! 918: are now file-scope. Update them both when spilling. ! 919: (new_spill_reg): No need for counted_for_nongroups as arg. ! 920: (choose_reload_targets): Don't use for a group ! 921: any spill regs for which counted_for_nongroups is set. ! 922: ! 923: * dbxout.c (dbxout_symbol): Indirect-symbol case checked erroneously ! 924: for PARM_DECL. ! 925: ! 926: Sun Nov 13 08:13:49 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 927: ! 928: * cse.c (fold_rtx): Don't alter MULT by -1 if arg mode != result mode. ! 929: ! 930: * loop.c (move_movables): If moving a CALL_INSN, make a new CALL_INSN. ! 931: * emit-rtl.c (emit_call_insn_before): New fn. ! 932: ! 933: * config-sun4.h (LINK_SPEC): Avoid shared libraries if -g. ! 934: ! 935: * expr.c (store_one_arg): Stabilize ARG->stack so it doesn't use SP ! 936: before computing the arg value. ! 937: ! 938: * combine.c (use_crosses_set_p): Moving a ref to stack ptr ! 939: is always forbidden if machine has push insns, since might cross one. ! 940: ! 941: * vax.md (movqi): Avoid out-of-range immed ops in mcomb. ! 942: ! 943: * expmed.c (extract_bit_field): Don't say `extzv' in the ! 944: clause for `extv'. ! 945: ! 946: * emit-rtl.c (copy_rtx_if_shared): Even if a MEM can be shared, ! 947: unshare its address from everything outside that MEM. ! 948: ! 949: * expr.c (expand_builtin): Fix omitted arg to `convert_to_mode'. ! 950: ! 951: * expr.c (store_expr): In case where will not return TARGET ! 952: and must do type conversion, don't fail to store into TARGET. ! 953: ! 954: * dbxout.c (FORCE_TEXT): New macro used before output `.stabs' ! 955: to go to the text section on targets that require it. ! 956: (DEBUG_SYMS_TEXT): Target macro which turns on that feature. ! 957: ! 958: * reload1.c (reload): Index in spill_regs was wrong ! 959: when checking counted_for_groups. ! 960: (choose_reload_targets): When calling find_equiv_reg looking for ! 961: a reload reg, reject all spill regs, even those not in use now. ! 962: ! 963: * tm-sun386.h, tm-sun386i.h, config-sun386i.h: New files. ! 964: ! 965: * cccp.c (main): Don't die if no output file arg given. ! 966: ! 967: * fixincludes: Tell `find' to find only ordinary files. ! 968: ! 969: * config.gcc: If symlink fails, make a hard link. ! 970: ! 971: Sat Nov 12 20:43:20 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 972: ! 973: * Makefile (gnulib): Use cp to make the temporary .c files; ! 974: less likely to fail than ln. ! 975: ! 976: Sat Nov 5 12:46:39 1988 Randall Smith (randy at sugar-bombs.ai.mit.edu) ! 977: ! 978: * tm-m68k.h (HARD_REGNO_MODE_OK): Disallowed d7:a0 as an allowable ! 979: pair of registers to hold a double value. This is correct for the ! 980: fpa but incorrect for the 68881. It was, however, simpler than ! 981: defining a new regclass. ! 982: ! 983: Tue Oct 25 12:03:49 1988 Randall Smith (randy at gluteus.ai.mit.edu) ! 984: ! 985: * m68k.md: Added some thoughts (comments) on best method to allow ! 986: 68881 code with fpa code. ! 987: ! 988: Thu Oct 13 14:19:17 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 989: ! 990: * Version 1.30 released. ! 991: ! 992: * stupid.c (stupid_life_analysis): Init last_call_suid with ! 993: largest possible value, not 0. ! 994: ! 995: Wed Oct 12 04:40:18 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 996: ! 997: * output-i386.c (output_asm_insn_double_reg_op): Compensate for ! 998: assembler bug that interchanges fsub and fsubr. ! 999: ! 1000: * reload1.c (order_regs_for_reload): Undo 29 Sept change. ! 1001: It breaks the 386. ! 1002: ! 1003: * varasm.c (decode_rtx_const): Don't example value->addr ! 1004: if what was stored in was value->d. ! 1005: ! 1006: * toplev.c (set_float_handler): New fn, specify where to jump ! 1007: on floating exception signal. ! 1008: * fold-const.c (combine): Use that to handle overflow in arithmetic. ! 1009: ! 1010: * c-decl.c (grokdeclarator): Don't clear CONSTP, VOLATILEP ! 1011: when making an array type. ! 1012: ! 1013: * dbxout.c (dbxout_symbol): Ignore VAR_DECLs in memory whose ! 1014: addresses we can't represent. ! 1015: ! 1016: * fold-const.c (fold): don't convert >= to > if both args are constant. ! 1017: When converting >= to >, don't fail to change CODE. ! 1018: ! 1019: Tue Oct 11 04:13:40 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1020: ! 1021: * vax.md (movhi): Error in truncating mcomw, addh3 args to 16 bits. ! 1022: ! 1023: * final.c: Better error checking for %-specs in templates. ! 1024: (output_operand_lossage): new fn to report errors. ! 1025: (insn_noperands): new var: # operands in current fn. ! 1026: (this_insn_asm_operands): new var: 1 for `asm', 0 otherwise. ! 1027: (output_asm_insn): Check for operand # out of range. ! 1028: (output_asm_label, output_operand): Call new fn to report errors. ! 1029: ! 1030: * reload.c (push_reloads): An input reload for (REG N) can match one ! 1031: for (POST_INC (REG N)) or (PRE_INC (REG N)), since the value ! 1032: reloaded is the same in any case. ! 1033: ! 1034: Mon Oct 10 06:19:05 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1035: ! 1036: * recog.c (next_insns_test_no_inequality): Like next_insn_tests... ! 1037: but check all insns that follow this one and can use it's cc's. ! 1038: * output-m68k.c (output_btst): Use that. ! 1039: ! 1040: * vax.md (movsf, movdf): Undo last change; movq/movl set the cc wrong. ! 1041: ! 1042: * expr.c (expand_call): Set current_function_calls_setjmp if appro. ! 1043: * stmt.c (setjmp_protect): New fn: move all vars into stack ! 1044: unless declared `register'. ! 1045: * c-decl.c (finish_function): Call it if -traditional and setjmp used. ! 1046: ! 1047: * cccp.c (main): Open output after the input. ! 1048: Handle `-o -'. ! 1049: ! 1050: Sun Oct 9 00:28:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1051: ! 1052: * tm-sun3.h (CPP_SPEC): Define __HAVE_FPA__ if appropriate. ! 1053: ! 1054: * c-decl.c (pushdecl): After duplicate_decls, maybe warn about ! 1055: "declared extern and later static". ! 1056: ! 1057: * expmed.c (store_bit_field): In insv case, avoid turning ! 1058: VALUE into a subreg of a subreg. ! 1059: ! 1060: * loop.c (move_movables): When moving a libcall, ! 1061: un-cse the function address; put it into the call insn. ! 1062: ! 1063: Sat Oct 8 01:48:03 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1064: ! 1065: * cse.c (equiv_constant): Subroutine to find the constant equivalent ! 1066: of a reg. Now handles SUBREGs too. ! 1067: (fold_rtx, fold_cc0): Use that function. ! 1068: Don't handle SUBREGs like arithmetic. ! 1069: ! 1070: * reload1.c (choose_reload_targets): Don't call reg_overlap_mentioned_p ! 1071: if arg is 0. ! 1072: ! 1073: Fri Oct 7 01:00:19 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1074: ! 1075: * assert.h: Typo declaring __eprintf. ! 1076: ! 1077: * config.gcc: New file for making the links. ! 1078: Fixed bugs for sun-[23]-os4. Added sun-[234] for sunos 3. ! 1079: Added sequent-i386. ! 1080: ! 1081: * emit-rtl.c (gen_rtx): Return const0_rtx for 0 in DImode. ! 1082: * varasm.c (immed_double_const): Don't be confused by this. ! 1083: ! 1084: * expmed.c (negate_rtx): New 1st arg MODE. ! 1085: * expr.c (push_block): Calls changed. ! 1086: * m68k.md, ns32k.md, vax.md: Calls changed. ! 1087: ! 1088: * c-decl.c (duplicate_decls): Don't discard DECL_BLOCK_SYMTAB_ADDRESS. ! 1089: ! 1090: * tree.c (staticp): INDIRECT_REF with constant address is static. ! 1091: COMPONENT_REF may not be, if component offset isn't constant. ! 1092: ! 1093: * c-typeck.c (default_conversion): Converting array to ptr, if array ! 1094: isn't a VAR_DECL, go through build_unary_op so that COMPONENT_REFs ! 1095: will be simplified away. ! 1096: ! 1097: * ns32k.md (tbitd patterns): op 0 constraint: reject constants. ! 1098: * ns32k.md (extzv for SImode and HImode): ! 1099: Use adj_offsetable_operand; plus_constant was the wrong thing. ! 1100: ! 1101: Thu Oct 6 00:10:41 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1102: ! 1103: * Version 1.29 released. ! 1104: ! 1105: * loop.c (scan_loop): Don't think a `return' insn enters the loop. ! 1106: ! 1107: * ns32k.md (ashrsi3, etc): New define_expands for right shift. ! 1108: ! 1109: * reload1.c (choose_reload_targets): Change in the `force_group' ! 1110: logic to avoid crashes. ! 1111: ! 1112: Wed Oct 5 04:09:19 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) ! 1113: ! 1114: * expr.c (expand_expr, MINUS_EXPR): When negating integer op1, ! 1115: truncate it to its mode. ! 1116: ! 1117: * expmed.c (extract_bit_field): SUBREG error check was wrong; ! 1118: SImode SUBREGs are possible and ok in extzv, extv. ! 1119: ! 1120: * tm-ns32k.h (REGISTER_NAMES): Had two excess elements; deleted. ! 1121: ! 1122: Mon Oct 3 01:15:51 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) ! 1123: ! 1124: * toplev.c (main, compile_file): If no files spec'd, use stdin, stdout. ! 1125: ! 1126: * flow.c (propagate_block): When checking for stack-adjust insns, ! 1127: exclude non-SET patterns. ! 1128: ! 1129: * jump.c (jump_optimize): When changing jump=>return to return, ! 1130: must rerecognize the insn. ! 1131: ! 1132: * toplev.c (compile_file): Allow `-' for main input or output filename. ! 1133: ! 1134: Sun Oct 2 10:30:09 1988 Richard Stallman (rms at apple-gunkies.ai.mit.edu) ! 1135: ! 1136: * final.c (final): NOTICE_UPDATE_CC has extra arg, INSN. ! 1137: * tm-*.h: Change definitions. ! 1138: ! 1139: * stmt.c (optimize_bit_field): Use gen_lowpart to make subregs. ! 1140: ! 1141: * stmt.c (assign_parms): Don't obey regdecls in inline function. ! 1142: Don't lose existing REG_NOTES when adding one. ! 1143: ! 1144: * stmt.c (expand_function_start): Make return rtx before ! 1145: marking parms live. ! 1146: (expand_function_end): Use use_variable to emit USEs for SAVE_EXPRs. ! 1147: ! 1148: * stmt.c (expand_return): Handle TRUTH_AND_EXPR like ANDIF; OR also. ! 1149: ! 1150: * stmt.c (expand_end_stmt_expr): Always set TREE_VOLATILE, ! 1151: sometimes TREE_THIS_VOLATILE. ! 1152: ! 1153: * jump.c (delete_insn): When finding PREV, skip deleted insns. ! 1154: ! 1155: * varasm.c (output_constant): WORDS_BIG_ENDIAN test was backwards. ! 1156: ! 1157: * emit-rtl.c (gen_lowpart): Allow MODE > 1 word if X is same size. ! 1158: ! 1159: * final.c (final): Don't delete no-op moves (jump did it if appro.). ! 1160: ! 1161: * final.c: Support prescan pass. ! 1162: (final_start_function): init_recog and CC_STATUS_INIT mvd to `final'. ! 1163: (final): New arg PRESCAN. Do no output if prescanning. ! 1164: Don't alter conditionals if PRESCAN < 0 (prescan already done). ! 1165: If jump becomes no-op, change it to a NOTE. ! 1166: Remember to free the temp space for ASM_OPERANDS. ! 1167: ! 1168: * final.c (final): Altering store-flag must check STORE_FLAG_VALUE. ! 1169: Don't try to do it if that isn't defined. ! 1170: Don't try it if condition doesn't test CC0. ! 1171: (alter_cond): No need to check COND != 0. ! 1172: Handle CC_Z_IN_NOT_N and CC_Z_IN_N. ! 1173: (m68k.md): Delete code that handled CC_Z_IN_NOT_N. ! 1174: ! 1175: * conditions.h: New flag CC_Z_IN_N. ! 1176: * tm-*.h: Renumber all CC_... flags to make room. ! 1177: ! 1178: * combine.c (use_crosses_set_p): Loop start was 1 off. ! 1179: ! 1180: * local-alloc.c (reg_is_set): When a reg is CLOBBERed and dies in ! 1181: one insn, make it live immediately before and after that insn. ! 1182: ! 1183: * global-alloc.c: Hard reg preferences for global pseudos. ! 1184: Var allocno_preferred_reg deleted; new vars hard_reg_preferences ! 1185: and regs_someone_prefers. ! 1186: (global_alloc): Init those vars. Pass hard_reg_preferences elt ! 1187: to find_reg. ! 1188: (set_preference): New function makes entries in those vars. ! 1189: (global_conflicts): new arg to mark_reg_store. Call set_preference. ! 1190: (find_reg): Last arg now a preferred hard_reg_set. ! 1191: Scan that set first of all. ! 1192: (mark_reg_store): New arg is offset for renumbered regno. ! 1193: But the code to use it is turned off. ! 1194: ! 1195: * global_alloc (check_frame_pointer_required): Handle reg_equiv_address ! 1196: like reg_equiv_mem. Don't try to allocate pseudos with equiv mems ! 1197: that don't use the frame pointer. ! 1198: * reload1.c (reload): Call changed. ! 1199: ! 1200: * jump.c (sets_cc0_p): Tests whether rtx sets cc0, and whether ! 1201: it does nothing but set cc0. ! 1202: (find_cross_jump, delete_jump): Use that fn for these tests. ! 1203: * loop.c (loop_skip_over): Likewise. ! 1204: * reload.c (push_reload): Likewise. ! 1205: ! 1206: * genoutput.c: Output `const' before the data arrays. ! 1207: Define it as nothing if not __STDC__. ! 1208: ! 1209: Sat Oct 1 02:19:29 1988 Richard Stallman (rms at apple-gunkies.ai.mit.edu) ! 1210: ! 1211: * expr.c (store_one_arg): 3rd arg to emit_block_move is in bytes. ! 1212: ! 1213: * cse.c (fold_rtx): Handling ZERO_EXTEND or SIGN_EXTEND of constant, ! 1214: if the arg width is too wide to handle, return safely. ! 1215: ! 1216: * combine.c (FAKE_EXTEND_SAFE_P): Don't allow extend to > 1 word. ! 1217: ! 1218: * rtl.c (refers_to_regno_p): Moved from reload.c. Not static. ! 1219: (reg_overlap_mentioned_p): New function, calls the above. ! 1220: * output-*.c: Use that instead of reg_mentioned_p. ! 1221: * tm-*.h (NOTICE_UPDATE_CC): Likewise. ! 1222: * reload.c (push_reload, combine_reloads): Likewise. ! 1223: * reload1.c (choose_reload_targets): Use it to check earlyclobbers. ! 1224: ! 1225: * reload1.c (choose_reload_targets): Elimination of previous ! 1226: output-reload feeding our input now limited to pseudo-regs. ! 1227: ! 1228: * flow.c (life_analysis): Delete any insn copying reg to itself. ! 1229: (propagate_block): Move update of OLD after special life and death ! 1230: for CALL_INSNs. ! 1231: ! 1232: * vax.md (ashrsi3, ashrdi3, rotrsi3): define_expands to negate ! 1233: the shift count. ! 1234: * expmed.c (expand_shift): Eliminate negate-the-shift-count feature. ! 1235: ! 1236: * vax.md (and*i3): define_expands which use complement and bit-clear. ! 1237: * expmed.c (expand_bit_and): Eliminate feature to do that. ! 1238: This function could be eliminated. ! 1239: ! 1240: * expmed.c (store_bit_field): Handle nested subregs. ! 1241: Allow gen_insv to fail; if it does, delete what we did and then ! 1242: use store_fixed_bit_field. ! 1243: (store_fixed_bit_field): Use gen_lowpart to make SUBREGs. ! 1244: Do that for SUBREGs just as for REGs. ! 1245: Error check OFFSET must be 0 for REGs. ! 1246: (store_split_bit_field): Error check OP0 is a SUBREG when expected. ! 1247: (extract_bit_field): Allow gen_ext{,z}v to fail. ! 1248: Use gen_lowpart to make subregs. ! 1249: (expand_shift): If a try fails, delete any insns it made. ! 1250: ! 1251: * expmed.c (expand_mult): Use expand_unop to negate. ! 1252: When adding 2 powers of 2, do serial shifts, not parallel. ! 1253: Handle absval==1 like other powers of 2. ! 1254: ! 1255: * explow.c (force_reg): Don't lose any existing reg notes. ! 1256: ! 1257: * stmt.c (expand_start_stmt_expr): Eliminate return value. ! 1258: (expand_end_stmt_expr): No need for argument. ! 1259: * c-parse.y (primary): Change calls. ! 1260: ! 1261: Fri Sep 30 01:50:22 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) ! 1262: ! 1263: * integrate.c (copy_rtx_and_substitute, copy_address): ! 1264: 'u' case erroneously returned the translated single element. ! 1265: (copy_address): Special cases for frame-ptr and sums containing it. ! 1266: MEM and LABEL_REF cases passed wrong arg to copy_rtx_and_substitute. ! 1267: (copy_rtx_and_substitute): adjust mode of inline_target for context. ! 1268: ! 1269: * jump.c (true_regnum): For SUBREG of pseudo, use pseudo's # unchanged. ! 1270: ! 1271: Thu Sep 29 02:50:46 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) ! 1272: ! 1273: * i386.md (movsi, mov{q,h}i): Use find_reg_note to look for REG_WAS_0. ! 1274: * vax.md (movsi, movhi): Likewise. ! 1275: ! 1276: * varasm.c (decode_rtx_const): Was setting un.addr.base wrong ! 1277: for a CONST. Should be symbol name, not the SYMBOL_REF. ! 1278: ! 1279: * rtl.c (rtx_equal_p): When comparing registers, check ! 1280: REG_FUNCTION_VALUE_P. If there are `u'-slots in the rtx, ignore them. ! 1281: ! 1282: * rtl.c (reg_mentioned_p): Some rtx types were mistakenly treated ! 1283: as uniquified (various constants). ! 1284: ! 1285: * rtl.c (read_rtx): Element type 'S' is string that may be omitted. ! 1286: * rtl.def (define_insn, define_peephole): Add a last element, type 'S'. ! 1287: * genoutput.c: Collect these optional last elements and output as ! 1288: array `insn_machine_info' of structs `INSN_MACHINE_INFO'. ! 1289: The last must be defined as a macro. ! 1290: * recog.h (insn_machine_info): Declare it if appropriate. ! 1291: ! 1292: * regclass.c (record_address_regs): In PLUS case, look inside SUBREGs. ! 1293: ! 1294: * reload1.c (reload): Use reg_equiv_address for REG_EQUIVs with ! 1295: invalid memory addresses. ! 1296: When changing pseudos to mem refs at end, do FIX_FRAME_POINTER_ADDRESS ! 1297: on their addresses. ! 1298: (alter_reg): Check that with reg_equiv_mem. ! 1299: (spill_hard_reg): If fp reg, spill regardless of basic_block_needs. ! 1300: ! 1301: * reload1.c (order_regs_for_reload): Don't put invalid regs into ! 1302: potential_reload_regs at all. (They used to go at the end.) ! 1303: ! 1304: * reload.c (find_reloads): Store all earlyclobber operand in ! 1305: reload_earlyclobbers (# in n_earlyclobbers): ! 1306: * reload.1 (choose_reload_targets): Don't use value of find_equiv_reg ! 1307: if it matches an earlyclobber operand. ! 1308: ! 1309: * reload.c (find_reloads_address for REG): ! 1310: No need for explicitly excluding hard regs in these tests. ! 1311: (find_reloads, find_reloads_address_1 for REG): likewise. ! 1312: ! 1313: * reload.c (push_reload): Code testing reg_equiv_constant should ! 1314: be obsolete; add error check to verify this. ! 1315: ! 1316: * reload.c (hard_reg_set_here_p): Handle CLOBBERs, SUBREGs, overlap. ! 1317: (refers_to_regno_p): Handle CLOBBERS. Handle overlap. ! 1318: New arg ENDREGNO specs end of range to check for; ! 1319: all callers changed (all in this file). ! 1320: ! 1321: * reload.c (find_reloads): SUBREG like REG in alternate recovery ! 1322: for earlyclobber conflict. ! 1323: The operands to unswap are those that are supposed to commute. ! 1324: When operands match, copy the regclass of earlier one for later one. ! 1325: ! 1326: * stmt.c (optimize_bit_field): Don't use gen_extend_insn; ! 1327: use convert_move, then reorder the insns. ! 1328: * optabs.c (gen_extend_insn): Deleted. ! 1329: ! 1330: * optabs.c (emit_cmp_insn): Don't emit queue before recursion. ! 1331: Don't convert size to SImode for cmpstrqi. ! 1332: ! 1333: * optabs.c (expand_binop): Keep any old REG_NOTES when adding them. ! 1334: Always delete_insns_since if returning failure. ! 1335: (expand_unop, emit_unop_insn): Keep any old REG_NOTES when adding them. ! 1336: * spur.md (movhi): likewise. ! 1337: ! 1338: * RTL_EXPR_SEQUENCE is now a chain of insns, not a SEQUENCE. ! 1339: * emit-rtl.c (emit_insns): New fn, emit a chain of insns. ! 1340: * expr.c (expand_expr): Use that. ! 1341: Also put const0_rtx in the RTL_EXPR_SEQUENCE (mark RTL_EXPR as output). ! 1342: * stmt.c (expand_end_stmt_expr): Use get_insns to get the chain. ! 1343: ! 1344: * stmt.c (expand_end_stmt_expr): Put the RTL_EXPR on rtl_expr_chain. ! 1345: (fixup_var_refs): Scan all waiting RTL_EXPRs not yet output. ! 1346: Also scan all stacked sequences on sequence_stack. ! 1347: ! 1348: * genemit.c (gen_expand): Generate calls to {start,end}_sequence. ! 1349: Use `emit' to handle a PARALLEL. ! 1350: (FAIL, DONE): Change to fit gen_expand changes. ! 1351: ! 1352: * emit-rtl.c (change_address): abort if arg isn't a MEM. ! 1353: ! 1354: * emit-rtl.c: Sequences work now by saving and restoring first_insn ! 1355: and last_insn. So these variables are used even when in a sequence. ! 1356: emit_to_sequence has been deleted. ! 1357: (start_sequence, end_sequence): Save and restore first_insn, last_insn. ! 1358: (get_last_insn, add_insn): Sequences no longer need special treatment. ! 1359: (delete_insns_since, reorder_insns): likewise. ! 1360: (push_to_sequence): Set up to emit to a given existing insn chain. ! 1361: ! 1362: * emit-rtl.c (copy_rtx_if_shared): Don't copy INSNs. ! 1363: Insert missing return stmt in MEM case (for MEMs ok to share). ! 1364: (unshare_all_rtx): Now can copy the REG_NOTES simply. ! 1365: Copy the LOG_LINKS too. ! 1366: ! 1367: * emit-rtl.c (make_safe_from): Treat SUBREG as X like a REG. ! 1368: (delete_insns_since): Don't lose if FROM is the first insn. ! 1369: (emit): Declare void, since no useful value. ! 1370: Call simplejump_p properly. ! 1371: (restore_reg_data_1): When a reg is an address, do mark_reg_pointer. ! 1372: ! 1373: * dbxout.c (dbxout_types): Call dbxout_symbol to do the work. ! 1374: (dbxout_type_def): Deleted. ! 1375: (dbxout_symbol): Set TREE_ASM_WRITTEN when a TYPE_DECL is output. ! 1376: Don't output the same one twice. ! 1377: ! 1378: * cse.c (fold_cc0): LABEL_REF is not zero. ! 1379: ! 1380: * cse.c (cse_insn): Don't insert src, dest if they are the same place. ! 1381: ! 1382: * cse.c (lookup_as_function): Return entire rtx, not just operand. ! 1383: (cse_insn): Caller changed. Also, copy the result before inserting it. ! 1384: ! 1385: * cse.c (fold_rtx): Put constant arg last if commutative op. ! 1386: Handle idempotents and identities for mult, div, booleans, shifts. ! 1387: ! 1388: * cse.c (canon_hash): Parens were missing around shifts in "rotates". ! 1389: ! 1390: * c-convert.c (convert_to_integer): Truncate TRUTH_ANDIF_EXPR ! 1391: like TRUTH_AND_EXPR; OR also. ! 1392: ! 1393: * c-typeck.c (build_binary_op_nodefault): Do truthvalue_conversion ! 1394: for TRUTH_ANDIF, etc. ! 1395: (build_unary_op): More simplifications for TRUTH_NOT_EXPR; ! 1396: uses new fn `invert_truthvalue'. ! 1397: ! 1398: * recog.c (reg_fits_class_p): New name for reg_renumbered_fits_class_p ! 1399: since it no longer needs to renumber. Also it now really assumes ! 1400: arg is a REG. Callers changed. ! 1401: * reload.c: Callers changed. ! 1402: ! 1403: * recog.c (general_operand): (SUBREG (MEM...)) need not alter mode. ! 1404: (register_operand, nonmemory_operand): (SUBREG (MEM...)) is allowed. ! 1405: (memory_operand): (SUBREG (MEM...)) is *not* allowed. ! 1406: (mode_independent_operand): Operand names were backwards! ! 1407: (No change in effect of this function.) ! 1408: ! 1409: * print-tree.c (dump): Some expr nodes contain rtx's. Print as rtx's. ! 1410: ! 1411: Wed Sep 28 18:51:12 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1412: ! 1413: * reload1.c (choose_reload_targets): If a reload wanted a group, ! 1414: don't allow a single register for it. ! 1415: ! 1416: Tue Sep 27 11:43:56 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1417: ! 1418: * final.c (output_addr_const): Handle DImode CONST_DOUBLEs. ! 1419: * tm-*.h (PRINT_OPERAND): Treat DImode CONST_DOUBLE like a CONST_INT. ! 1420: ! 1421: * vax.md (rotldi3): Insn deleted; it doesn't really exist. ! 1422: ! 1423: * toplev.c (report_error_function): Also mention the file name, ! 1424: for parallel makes. New arg FILE; all callers changed. ! 1425: ! 1426: Mon Sep 26 15:44:18 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1427: ! 1428: * expmed.c (expand_shift): When using extzv, convert OP1 to SImode. ! 1429: * c-typeck.c (build_binary_op_nodefault): Convert shift-count ! 1430: to int regardless of result type. ! 1431: ! 1432: * output-spur.c (output_move_double): Fix typo, optype0=>optype1. ! 1433: ! 1434: * expr.c (expand_call): Avoid null deref on result of FUNCTION_ARG. ! 1435: ! 1436: * tm-i386.h (FUNCTION_PROFILER): Use correct assembler syntax. ! 1437: ! 1438: Sun Sep 25 12:13:56 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1439: ! 1440: * fixincludes: Handle some files in netdnet, netdna, vaxif, vaxuba. ! 1441: ! 1442: * reload.c (find_reloads): Make no optional reloads if not -O. ! 1443: ! 1444: * loop.c (strength_reduce): Can't eliminate a biv if it's used ! 1445: to compute a DEST_ADDR giv. Only DEST_REG givs are safe. ! 1446: ! 1447: * loop.c (general_induction_var): Shift & divide ops are linear ! 1448: only in 1st operand; don't look for biv or giv in 2nd operand. ! 1449: ! 1450: * vax.md (fix_truncdfqi2): Use `%#'. ! 1451: ! 1452: Sat Sep 24 00:25:48 1988 Richard Stallman (rms at gluteus.ai.mit.edu) ! 1453: ! 1454: * loop.c (n_times_set, n_times_used): Now file-scope; ! 1455: no longer passed as args to several functions. ! 1456: ! 1457: * loop.c (basic_induction_var): Accept reg as source value ! 1458: only if it's invariant. ! 1459: (strength_reduce): Benefit calculation and threshold changed. ! 1460: Check reducibility of givs before trying to reduce them. ! 1461: Check eliminability of biv before considering the givs; ! 1462: let this affect the threshold. ! 1463: (record_giv): New subroutine adds a giv to the chain. ! 1464: ! 1465: * ns32k.md (incrementing sp): Use cmpd insns to increment by 4 or 8. ! 1466: ! 1467: * integrate.c (expand_inline_function): Rename return_label ! 1468: to local_return_label; avoid shadowing. ! 1469: ! 1470: Fri Sep 23 13:57:52 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1471: ! 1472: * loop.c (loop_skip_over): Put the new label after the note that ends ! 1473: the loop. ! 1474: ! 1475: * loop.c: New function strength_reduce and subroutines. ! 1476: * toplev.c: New var flag_strength_reduce, set from -fstrength-reduce. ! 1477: ! 1478: * vax.md (sob insns): They were broken, with plus in one place ! 1479: and minus in another. Use plus consistently. ! 1480: ! 1481: * rtl.h (REG_LIBCALL, REG_NONNEG): Two new kinds of reg-note. ! 1482: * optabs.c (expand_binop, expand_unop): Make REG_LIBCALL notes. ! 1483: * loop.c (scan_loop, move_movables): Move entire library calls. ! 1484: Use m->set_src to get the expression, in case it's from a REG_EQUAL. ! 1485: (consec_sets_invariant_p): Likewise. ! 1486: ! 1487: * loop.c (scan_loop): Start scan from loop_top, if entry is rearranged. ! 1488: Watch out for pseudo regs created by strength_reduce; ! 1489: they can't index regno_last_uid. ! 1490: (replace_regs): # regs mapped is now an arg. ! 1491: ! 1492: * loop.c (count_loop_regs_set): Don't increment n_times_set past 127. ! 1493: (consec_sets_invariant_p): Reject if N_SETS arg is 127. ! 1494: ! 1495: * toplev.c (rest_of_compilation): NREGS arg of loop_optimize deleted. ! 1496: ! 1497: * c-decl.c (store_parm_decls): Anything but an IDENTIFIER_NODE ! 1498: in SPECPARMS indicates a parmlist, not an identifier list. ! 1499: (get_parm_info): Use only PARM_DECLs when making the list of arg types. ! 1500: ! 1501: * combine.c (try_distrib): Boolean ops can't distribute through PLUS. ! 1502: MULT can distribute through PLUS and only PLUS. ! 1503: ! 1504: Thu Sep 22 15:57:41 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1505: ! 1506: * jump.c (jump_optimize): uncond jump to a return becomes a return. ! 1507: ! 1508: * integrate.c (copy_parm_decls, copy_decl_tree): Set TREE_USED. ! 1509: Avoid inevitable "unused" warning for these decls. ! 1510: ! 1511: * c-typeck.c (comptypes): When comparing array types, ! 1512: ignore qualifiers of element type. ! 1513: ! 1514: * tm-*.h (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Define new macros. ! 1515: * final.c (final_start_function): Use them to protect around ! 1516: the call to the profiling function. ! 1517: * stmt.c (expand_function_start): Set current_function_needs_context ! 1518: and current_function_returns_struct. ! 1519: ! 1520: * stmt.c (expand_null_return_1): If clear_pending_stack_adjust ! 1521: doesn't clear it, do the adjust now. ! 1522: * expr.c (clear_pending_stack_adjust): No-op if -finline-functions. ! 1523: ! 1524: * cccp.c (macarg1, skip_if_group): Backslash makes next char ordinary. ! 1525: ! 1526: * reload.c (find_reloads): Delete code to look for an equiv reg ! 1527: for a reg being input-reloaded. This isn't safe. ! 1528: * reload1.c (choose_reload_targets): Do it here. ! 1529: ! 1530: Wed Sep 21 00:36:22 1988 Richard Stallman (rms at hobbes.ai.mit.edu) ! 1531: ! 1532: * tm-sun3.h (CPP_SPEC): Define it based on TARGET_DEFAULT. ! 1533: (STARTFILE_SPEC): Likewise. ! 1534: ! 1535: * reload1.c (choose_reload_targets): When redirecting prev insn ! 1536: into this insn's reload-reg, check this doesn't break the prev insn ! 1537: by giving it a reg it can't accept. Use new fn constraint_all_regs_p. ! 1538: ! 1539: * tm-sparc.h (ASM_OUTPUT_LOCAL): Use .reserve, not .common. ! 1540: ! 1541: * tree.h (TREE_USED): New attribute macro. ! 1542: * c-parse.y (primary): Set TREE_USED in ..._DECL nodes. ! 1543: * toplev.c, flags.h: Define and set warn_unused. ! 1544: * stmt.c (expand_end_bindings): Warn if any var is unused. ! 1545: * print-tree.c (prtypeinfo): Print this attribute. ! 1546: ! 1547: Tue Sep 20 15:29:01 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1548: ! 1549: * assert.h: `assert' must expand to an expression. ! 1550: Error message should show arg before expansion, not after. ! 1551: ! 1552: * c-decl.c (implicitly_declare): Make decl perm if !warn_implicit ! 1553: since start_function needs to look inside it in that case. ! 1554: ! 1555: * toplev.c (announce_function): If we don't print, don't record we did. ! 1556: ! 1557: Mon Sep 19 15:21:11 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1558: ! 1559: * c-parse.y (structsp): If pedantic, warn if comma at end of enumlist. ! 1560: ! 1561: * reload.c (find_reloads): Check insn_code_number >= 0 when ! 1562: looking in insn_operand_strict_low. ! 1563: ! 1564: * tm-sun[23].h (CPP_SPEC): Rename __HAVE_FPU__ to __HAVE_68881__ ! 1565: and put a space after that option. ! 1566: ! 1567: Sun Sep 18 01:12:56 1988 Richard Stallman (rms at hobbes.ai.mit.edu) ! 1568: ! 1569: * reload.c (find_reloads): Make optional reloads for explicit MEMs. ! 1570: ! 1571: * tm-m68k.h (MODES_TIEABLE_P): If no 68881, can tie fixed to floating. ! 1572: * m68k.md (movdi): Allow F's (can be DImode now). ! 1573: Don't allow f-regs (experiment). Don't preference x-regs. ! 1574: (DImode push): Allow y-regs. ! 1575: (DFmode push): Allow y-regs, not x-regs. ! 1576: ! 1577: * reload1.c (modes_equiv_for_class_p): New function. ! 1578: (reload): Compare multiple modes for reg group with that function. ! 1579: Allows differing modes in some cases when not tieable. ! 1580: ! 1581: * c-parse.y (check_newline): Let ASM_OUTPUT_IDENT override .ident. ! 1582: * tm-3b1.h (ASM_OUTPUT_IDENT): Define this as no-op. ! 1583: ! 1584: * emit-rtl.c (reorder_insns): Update sequence_{first,last}_insn if nec. ! 1585: (get_last_insn): If in a sequence, return last insn of sequence. ! 1586: (delete_insns_since): If in a sequence, set sequence_last_insn. ! 1587: ! 1588: * spur.md (CONST_DOUBLE load insn): Use & for most dests. ! 1589: (cond branches): pass additional args to output_compare. ! 1590: (movdf, movdi): Use & loading reg from mem. ! 1591: (trunc*): Enable these. ! 1592: (add): New pattern for adding large immediate operand. ! 1593: (shifts): A define_expand for each kind of shift, ! 1594: plus a recognizer which outputs repeated insns if necessary. ! 1595: (call*): Use r9 as temp, not r2. ! 1596: ! 1597: * output-spur.c (output_compare): New args NEG_{EXCHANGE_,}OPCODE. ! 1598: (singlemove_string): Handle reg as operand 1. ! 1599: (output_add_large_offset): Fake add insn with large immediate arg. ! 1600: (big_immediate_operand): Match such an arg. ! 1601: ! 1602: * tm-spur.h (FUNCTION_PROLOGUE): Align the stack pointer. ! 1603: Handle bigger frames. ! 1604: (TARGET_LONG_JUMP, TARGET_EXPAND_SHIFT): New target flags. ! 1605: ! 1606: * va-spur.h: Track position in regs and stack separately. ! 1607: ! 1608: * c-decl.c (duplicate_decls): Warn if prototype follows ! 1609: non-prototype definition. ! 1610: ! 1611: Sat Sep 17 14:30:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1612: ! 1613: * expr.c (expand_builtin): Avoid crash if arg isn't integer type. ! 1614: ! 1615: * c-decl.c (duplicate_decls): Just warn if redeclaring a builtin, ! 1616: and leave it built in unless it is redefined. ! 1617: ! 1618: * vax.md (ashlsi3): Use addl3, moval or movad when useful. ! 1619: (addsi3): Avoid pushab, movab for constants < 64. ! 1620: Do use movab when > 64 when operands match. ! 1621: (mov*i): Use mcom* rather than mneg*. ! 1622: Use add*3 with two quick immediate args when useful. ! 1623: (movhi): Don't use movzbw or cvtbw; said to be slow. ! 1624: ! 1625: * rtl.h: New macros MEM_VOLATILE_P, MEM_IN_STRUCT_P, ! 1626: INSN_DELETED_P, REG_USER_VAR_P, RTX_UNCHANGING_P, RTX_INTEGRATED_P, ! 1627: CONSTANT_POOL_ADDRESS_P. ! 1628: Most places changed to use them. ! 1629: ! 1630: Fri Sep 16 11:50:15 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1631: ! 1632: * jump.c (jump_optimize): Was testing volatil on non-MEMs erroneously ! 1633: when looking for no-op move insns. ! 1634: ! 1635: * cccp.c (handle_directive): Ignore comments between # and directive. ! 1636: ! 1637: * integrate.c (copy_rtx_and_substitute): Stack-push memrefs need ! 1638: to be copied. ! 1639: ! 1640: * tm-bsd386.h (ASM_OUTPUT_DOUBLE): Undef previous def. ! 1641: ! 1642: * reload1.c (alter_reg): Don't reuse spill_stack_slot ! 1643: if it isn't big enough for this reg's mode. ! 1644: ! 1645: * expr.c (emit_move_insn): After force_const_mem, ensure ! 1646: mem address is valid. ! 1647: (move_block_to_reg, move_block_from_reg): Likewise. ! 1648: ! 1649: * expr.c (expand_call): Spurious TREE_VALUE on args[i].tree_value. ! 1650: ! 1651: * m68k.md (zero_extend*): Require register_operand for operand 0. ! 1652: ! 1653: * stdarg.h (va_start): Alternate defn for sparc. ! 1654: ! 1655: Thu Sep 15 11:39:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1656: ! 1657: * c-parse.y (yylex): When atof gives ERANGE, check for "0.0", etc. ! 1658: ! 1659: * assert.h (__assert): Alternative definition for -traditional. ! 1660: ! 1661: * output-sparc.c (output_block_move): Initialize xoperands. ! 1662: ! 1663: * combine.c (try_combine): Never subst for a reg that is incremented. ! 1664: ! 1665: * m68k.md (cmpm pattern): Make the match_operands match memrefs ! 1666: and check that they are pushes in the extra condition. ! 1667: This makes reloading handle the pushes properly. ! 1668: ! 1669: * expr.c (MOVE_RATIO): Make it 15. Allow overriding it. ! 1670: ! 1671: Wed Sep 14 09:50:08 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1672: ! 1673: * c-decl.c (build_enumerator): Use saveable_tree_cons. ! 1674: ! 1675: * vax.md (movdf): Use movq when safe. ! 1676: ! 1677: * Version 1.28 released. ! 1678: ! 1679: * tm-sparc.h (FIRST_PARM_CALLER_OFFSET): Defined. ! 1680: ! 1681: Tue Sep 13 00:11:37 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) ! 1682: ! 1683: * tree.c (saveable_tree_cons): New function. ! 1684: * c-decl.c (pushtag): Use it; lists of tags needed for inlining. ! 1685: (get_parm_info): Likewise. ! 1686: ! 1687: * print-tree.c (dump): Handle each kind of statement node individually. ! 1688: ! 1689: * integrate.c (copy_decl_tree): Don't pass DECL_RTL through ! 1690: copy_rtx_and_substitute if it's a memref with constant address. ! 1691: ! 1692: * sdbout.c (sdbout_symbol): Don't output garbage when DECL_RTL ! 1693: has a form we don't understand. ! 1694: ! 1695: * reload.c (find_reloads_address_1): Don't reload an autoincrement ! 1696: if it has a suitable hard reg already. ! 1697: ! 1698: * c-typeck.c (process_init_constructor): Error check after digest_init. ! 1699: ! 1700: * c-parse.y (is_reserved_word): Now static. ! 1701: ! 1702: Mon Sep 12 19:19:28 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1703: ! 1704: * i386.md (all push insns): Use `<' for the constraint, ! 1705: since a push_operand won't fit an `m' constraint on this machine. ! 1706: ! 1707: * expr.c (expand_call): If fn name is `__builtin_alloca', ! 1708: it may be alloca. This case arises if the user redeclares ! 1709: `__builtin_alloca'. ! 1710: ! 1711: Sun Sep 11 01:47:01 1988 Richard Stallman (rms at gluteus.ai.mit.edu) ! 1712: ! 1713: * Eliminate MAX_SETS_PER_INSN. ! 1714: * cse.c (cse_insn): Combine all the tables and dynamically allocate. ! 1715: (cse_main): Count the actual number of SETs; don't estimate. ! 1716: * genconfig.c: Don't calculate MAX_SETS_PER_INSN. ! 1717: * stmt.c (expand_asm_operands): No limit on # of output operands. ! 1718: ! 1719: * expr.c (expand_call): ! 1720: Store all non-reg parms first, then store all partially-in-reg ! 1721: parms, then all the (precomputed) wholly-in-reg parms. ! 1722: Special hair for BLKmode parms which must be passed entirely ! 1723: in memory; also for BLKmode parms initialized from function calls, ! 1724: for which it is best to allocate the space before computing value. ! 1725: Use macro FIRST_PARM_CALLER_OFFSET to handle machines where reg ! 1726: parms "take up space" on the stack below the stack pointer. ! 1727: (store_one_arg): Handle case of preallocated stack loc for BLKmode. ! 1728: Update current_args_size here, not in caller. ! 1729: ! 1730: Sat Sep 10 19:58:03 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1731: ! 1732: * output-sparc.c (output_scc_insn): Changed asm templates. ! 1733: Use common code to emit the move insns and label at the end of fn. ! 1734: (output_mul_by_constant): Use %g1 as temporary reg. ! 1735: ! 1736: * sparc.md (indexed load pattern): Deleted. ! 1737: (fix_truncdfsi2): Don't ignore value of output_fp_move_double. ! 1738: (cse'd multiply): Operand 1 predicate is general_operand. ! 1739: (return peepholes): Conditionalize on ! TARGET_EPILOGUE. ! 1740: ! 1741: * tm-sparc.h (INIT_CUMULATIVE_ARGS,FUNCTION_ARG...): ! 1742: Use partial regs for args that start in regs but won't entirely fit. ! 1743: ! 1744: * tm-sparc.h (CONST_COSTS): 0 for args that can be immediate. ! 1745: (STRUCTURE_SIZE_BOUNDARY): Now 8. ! 1746: (STRUCT_VALUE_OFFSET): Defined as symbolic name for `64'. ! 1747: ! 1748: * expr.c (struct arg_data): New component `stack' says where in the ! 1749: stack to put a BLKmode arg (if it's nonzero). ! 1750: (store_one_arg): Handle case where it's nonzero. ! 1751: (target_for_arg): New fn, precompute stack locn for BLKmode arg. ! 1752: ! 1753: Fri Sep 9 01:41:13 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) ! 1754: ! 1755: * cse.c (fold_rtx): Misnested ifs screwed SUBREG case. ! 1756: ! 1757: * reload.c (find_reloads_toplev): Special case for (SUBREG REG) ! 1758: where REG is equivalent to a CONST_INT. ! 1759: (find_reloads): Don't ignore the value returned by find_reloads_toplev. ! 1760: Treat a (SUBREG constant) like a (SUBREG MEM): set force_reload. ! 1761: ! 1762: * reload.c (push_reload): Abort if memory subreg is not ! 1763: paradoxical; the MEM mode should be narrower than the SUBREG. ! 1764: ! 1765: * stmt.c (fixup_var_ref_1): Fixup memory subregs in an insn ! 1766: copying VAR to or from a register. ! 1767: ! 1768: * m68k.md (movdi, movdf): the x-reg constraint accidentally allowed ! 1769: moving rm to rm with no &. ! 1770: ! 1771: * vax.md (call_value): Typo. ! 1772: ! 1773: * expr.c (emit_block_move, emit_push_insn): prefer movstrqi to movstrsi ! 1774: ! 1775: * m68k.md (FPA multiply): bad opcodes for 3-operand multiply insns. ! 1776: ! 1777: Thu Sep 8 18:22:14 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1778: ! 1779: * c-parse.y: Use YYERROR instead of synonym YYFAIL. ! 1780: BISON VERSIONS PRIOR TO THIS DATE WON'T WORK! ! 1781: ! 1782: * c-typeck.c (digest_init): Use TYPE_MAIN_VARIANT of array elt type. ! 1783: ! 1784: * tm-sun[23].h (CPP_SPEC, ASM_SPEC): Let -m(c|)680[12]0 control ! 1785: options for CPP and assembler. ! 1786: ! 1787: Wed Sep 7 13:44:59 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1788: ! 1789: * New handling of reloading of PRE_DEC, etc. ! 1790: Now reload_in is the PRE_DEC, etc, and reload_inc is always positive. ! 1791: * reload.c (push_reloads): Old code to set reload_inc deleted. ! 1792: (find_reloads_address_1): Call push_reload the new way. ! 1793: (find_inc_amount): Value always positive. ! 1794: * reload1.c (choose_reload_targets): Detect this case. ! 1795: (inc_for_reload): New fn; does the real work for this case. ! 1796: * m68k.md (call, call_value): Fn address must be offsetable. ! 1797: ! 1798: * combine.c (try_distrib): Reject strange cases such as if ! 1799: result of PREV1 or PREV2 is used in a memory address in INSN. ! 1800: ! 1801: * vax.md (movsf): Generate movl instead of movf. ! 1802: ! 1803: * expr.c (expand_call): If have regparms, store all BLKmode args ! 1804: before all the other args. ! 1805: (store_one_arg): New subroutine broken out. ! 1806: ! 1807: * output-sparc.c (output_block_move): Complete rewrite. ! 1808: ! 1809: * sparc.md (cse'd multiply insn): Typo in asm-output code. ! 1810: ! 1811: Tue Sep 6 20:05:48 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1812: ! 1813: * c-parse.y (yylex, etc.) Install Schmidt's perfect hash table. ! 1814: ! 1815: * gcc.c: handle extension `.cc'. ! 1816: ! 1817: Mon Sep 5 12:09:58 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1818: ! 1819: * Version 1.27 released. ! 1820: ! 1821: * tm-i386.h (PREFERRED_RELOAD_REG): When reloading a QImode, ! 1822: make sure the class doesn't include %esi or %edi. ! 1823: * i386.md (movqi): Eliminate only use of the class `x', ! 1824: for which PREFERRED_RELOAD_REG cannot work. ! 1825: (In next version, get rid of INDEX_CLASS). ! 1826: Also use `*' to cause preferencing of Q_REGS. ! 1827: * tm-m68k.h (PREFERRED_RELOAD_REG): When reloading a QImode, ! 1828: use DATA_REGS. ! 1829: ! 1830: * reload.c (push_reloads): Braino in last change when IN == 0. ! 1831: ! 1832: * flow.c (mark_used_regs, mark_set_1): Bug if HARD_REGNO_NREGS ! 1833: returns 0 for VOIDmode reg (inside a CLOBBER). ! 1834: ! 1835: * c-parse.y (asm_operand): Handle `("REGNAME")' as an operand. ! 1836: * recog.c (decode_asm_operands, asm_noperands): Ignore any CLOBBERs. ! 1837: * regclass.c (reg_names): Variable now global. ! 1838: * stmt.c (expand_asm_operands): Generate CLOBBERS when appropriate. ! 1839: ! 1840: * stmt.c (assign_parms): Ignore parms that aren't PARM_DECLs. ! 1841: ! 1842: * varasm.c (assemble_variable): Do ASM_OUTPUT_EXTERNAL for functions. ! 1843: ! 1844: * c-parse.y (yylex): floatflag is now an enum. ! 1845: Detect invalid use of decimal points (> 1, or in exponent) ! 1846: and multiple exponent letters. ! 1847: ! 1848: * expr.c (expand_call): If inlining fails, set TREE_ADDRESSABLE. ! 1849: ! 1850: Sun Sep 4 00:36:30 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) ! 1851: ! 1852: * c-decl.c (grokdeclarator): A const array becomes an array of consts. ! 1853: * c-typeck.c (build_array_ref): Array ref is const if array elts are. ! 1854: ! 1855: * output-sparc.c (output_move_double): Change criteria for ldd, std. ! 1856: (output_fp_move_double): New alternatives avoid ldd, std for ! 1857: stack refs that aren't aligned. ! 1858: (output_block_move): Use %g1 as temp reg. ! 1859: ! 1860: * sparc.md (floating point load from constant mem address): ! 1861: Use %g1 as temp reg. Use output_move_double in DF case, not ldd. ! 1862: (movsf): Asm insn typo in FPreg to FPreg case. ! 1863: (floatsi{s,d}f2): Constraint changed. ! 1864: Also new special case pattern in front of it. ! 1865: (fix_truncdfsi2): Use output_move_double, not ldd. ! 1866: (addsi3, subsi3): Use %g1 as temp reg. ! 1867: (cse-optimized multiply): Constraint now `g'; output generalized. ! 1868: (andsi3, orsi3, xorsi3): Use %g1 as temp reg. ! 1869: ! 1870: * reload.c (find_reloads): Force int constants into memory just ! 1871: like floating ones, if memory is allowed and no regs are. ! 1872: ! 1873: * expr.c (expand_call): Don't treat structure_value_addr like a parm ! 1874: if the first parm would be passed in a register. ! 1875: Also, write comments for all local vars. ! 1876: ! 1877: * tm-386v.h (START_SPEC): Use {g,m}crt1.o, not {g,m}crt0.o. ! 1878: (LIB_SPEC): Always use crtn.o. ! 1879: ! 1880: Sat Sep 3 13:05:50 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1881: ! 1882: * explow.c (plus_constant): Don't put CONST around lone SYMBOL_REF. ! 1883: ! 1884: * combine.c (subst): Simplify zero- or sign-extend of a constant. ! 1885: ! 1886: * expr.c (expand_expr): for REAL_CST, etc., check for invalid ! 1887: memory addresses and copy into registers. ! 1888: ! 1889: * integrate.c (expand_inline_function): If incoming struct value addr ! 1890: is in memory, map it like a memory parameter. ! 1891: ! 1892: * tm-*.h (FIRST_PARM_OFFSET): Now takes fndecl as argument. ! 1893: * integrate.c (expand_inline_function): Calc., use and save ! 1894: this fns value of FIRST_PARM_OFFSET. ! 1895: (copy_rtx_and_substitute): Use that value. ! 1896: * stmt.c (assign_parms): Likewise. ! 1897: ! 1898: * tm-sparc.h (FIRST_PARM_OFFSET): Make it 64 if value is BLKmode. ! 1899: (STRUCT_VALUE{,_INCOMING}): Put the value in 64(fp). ! 1900: ! 1901: * tm-sparc.h (PRINT_OPERAND_ADDRESS): Print offsets in decimal. ! 1902: Avoid excess `+' before a negative offset. ! 1903: ! 1904: * stmt.c (expand_function_start): Create the return value rtl ! 1905: before making the tail-recursion loop point. ! 1906: ! 1907: * combine.c (gen_lowpart_for_combine): Generate a paradoxical subreg ! 1908: rather than a wider memref. ! 1909: ! 1910: * reload.c (push_reload): Extend last change to case where OUT != 0. ! 1911: ! 1912: Fri Sep 2 11:43:20 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1913: ! 1914: * stmt.c (fixup_var_refs): Adjust last_parm_insn when deleting insns. ! 1915: ! 1916: * expr.c (emit_push_insn): calling memcpy, bump TEMP 2 pointers worth. ! 1917: ! 1918: Thu Sep 1 16:39:57 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1919: ! 1920: * reload1.c (choose_reload_targets): Test for canceled reload ! 1921: before looking inside reload_out. ! 1922: ! 1923: * jump.c (jump_optimize): Bug in last change. ! 1924: ! 1925: * m68k.md (return): Pattern disabled; confuses Aug 29 stmt.c change. ! 1926: * ns32k.md, i386.md: likewise. ! 1927: ! 1928: * emit-rtl.c (emit_note_force): New, like emit_note but always do it. ! 1929: * stmt.c (expand_function_end): Use emit_note_force. ! 1930: ! 1931: Wed Aug 31 11:34:08 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1932: ! 1933: * reload1.c (alter_reg): New arg FROM_REG is hard reg that the pseudo ! 1934: was spilled from. Works with spill_stack_slot. Callers changed. ! 1935: Now all pseudos spilled from one hard reg get the same slot. ! 1936: (reload): Initialize new variable spill_stack_slot. ! 1937: ! 1938: * cse.c (cse_insn): Don't insert floating point mems if -ffloat-store. ! 1939: ! 1940: * reload.c (find_equiv_reg): Allow no equivs for volatile memrefs. ! 1941: Also none for floating mem refs if -ffloat-store. ! 1942: ! 1943: * output-sparc.c (output_mul_by_constant): make `p' and `log' unsigned. ! 1944: ! 1945: Tue Aug 30 13:47:12 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1946: ! 1947: * jump.c (jump_optimize): Ignore other NOTEs while looking for ! 1948: a NOTE_INSN_FUNCTION_END. ! 1949: ! 1950: * integrate.c (save_for_inline): Flush extra call to max_reg_num. ! 1951: Don't copy NOTEs that are NOTE_INSN_FUNCTION_END. ! 1952: (copy_for_inline): Don't copy NOTEs that are NOTE_INSN_FUNCTION_END. ! 1953: ! 1954: * stmt.c (optimize_bit_field): If bit field is SRC, strip subregs ! 1955: from the DEST. ! 1956: ! 1957: * expmed.c (expand_mult): Special case for -1 as one operand. ! 1958: ! 1959: Mon Aug 29 12:14:51 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1960: ! 1961: * stmt.c (expand_goto_internal, expand_fixup): New arg LAST_INSN. ! 1962: (expand_return): Pass that arg in tail-recursive case. ! 1963: (other callers): Pass 0 for that arg. ! 1964: (expand_null_return): Handle HAVE_return nonzero w/ FUNCTION_EPILOGUE. ! 1965: (expand_null_return_1): New fn, has guts of old expand_null_return. ! 1966: (expand_return): Call expand_null_return_1 to pass LAST_INSN arg. ! 1967: (expand_return): Handle HAVE_return nonzero w/ FUNCTION_EPILOGUE. ! 1968: (expand_function_{start,end}): Likewise. ! 1969: (expand_cleanups): Fix typo in recursive-list case. ! 1970: (move_cleanups_up): New fn. ! 1971: ! 1972: * expr.c (expand_call): Execute cleanups_of_this_call on exiting. ! 1973: Notice calls to __builtin_new (but don't do anything about them yet). ! 1974: ! 1975: * reload.c (push_reload): If reloading a (SUBREG (MEM ...) ...), ! 1976: really reload just the MEM in the MEM's own mode. ! 1977: ! 1978: * sparc.md: Define patterns for insns that set the ccs. ! 1979: Define set-flag insns. ! 1980: New patterns for indexed load, and for optimizing signed bit fields. ! 1981: (mulsi3, umulsi3): Give "r" constraint to operand 0. ! 1982: Peephole optimizers recognize some cases where delay insns are safe. ! 1983: Changed patterns for call and return insns as well. ! 1984: ! 1985: * output-sparc.c (single_insn_src_p): New fn. ! 1986: (output_delay_insn): New fn. ! 1987: ! 1988: * tm-sparc.h (TARGET_EPILOGUE): New target flag. ! 1989: (NOTICE_UPDATE_CC): New clause for funny PARALLEL with a REG in it. ! 1990: ! 1991: * m68k.md (movqi): Use *'s to ensure preferencing d-regs. ! 1992: ! 1993: * c-parse.y (datadef): If traditional, no warning about no specs. ! 1994: ! 1995: Sun Aug 28 14:34:33 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 1996: ! 1997: * tm-i386.h: Define PROMOTE_PROTOTYPES. ! 1998: POINTER_BOUNDARY now 32. ! 1999: ! 2000: * regclass.c (reg_scan): Compute `max_parallel', max # of sets and ! 2001: clobbers in any insn in this function. ! 2002: * global-alloc.c (global_conflicts): Use that, not MAX_SETS_PER_INSN. ! 2003: ! 2004: * stmt.c (expand_asm_operands): MAX_SETS_PER_INSN limits # output ops. ! 2005: ! 2006: * emit-rtl.c (init_emit_once): Make elt 2 of {f,d}const0_rtx nonzero. ! 2007: ! 2008: * c-decl.c (lang_decode_option): Handle -Wwrite-string. ! 2009: * c-parse.y (combine_strings): If that flag, make array of const char. ! 2010: ! 2011: * expr.c (expand_expr): for INTEGER_CST, always use immed_double_const; ! 2012: never do output_constant_def (it didn't work). ! 2013: Also heed WORDS_BIG_ENDIAN. ! 2014: ! 2015: * varasm.c (output_constant): Handle integer CONST_DOUBLEs. ! 2016: (output_constant_def): Abort if arg is an INTEGER_CST. ! 2017: ! 2018: * emit-rtl.c (gen_rtx): Don't return {f,d}const0_rtx for DImode. ! 2019: ! 2020: Sat Aug 27 12:37:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2021: ! 2022: * c-decl.c (pushdecl): Global extern decls set TREE_PUBLIC ! 2023: like local ones. ! 2024: ! 2025: * integrate.c (expand_inline_function): Handle parms that were ! 2026: passed in registers but whose homes are on the stack. ! 2027: ! 2028: * varasm.c (force_const_mem): Output ints according to spec'd mode. ! 2029: ({record,compare}_constant_rtx,const_hash_rtx,decode_rtx_const): ! 2030: Take mode as argument; pass it along. ! 2031: ! 2032: * c-parse.y (read_escape): No warning for `\{' or `\['. ! 2033: ! 2034: Fri Aug 26 12:23:07 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2035: ! 2036: * stmt.c (fixup_memory_subreg): Typo calculating big-endian adjust. ! 2037: ! 2038: * vax.md (call_value): Handle >255 args as in `call'. ! 2039: ! 2040: Thu Aug 25 16:00:51 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2041: ! 2042: * jump.c (delete_jump): Don't delete the cc-setter if it has autoinc. ! 2043: ! 2044: Wed Aug 24 16:33:37 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2045: ! 2046: * expr.c (expand_expr): For sun with a COND_EXPR, use SUBTARGET ! 2047: if validate_subtarget says ok. ! 2048: ! 2049: * tree.c (build_index_type): make_index_type moved here and renamed. ! 2050: ! 2051: * combine.c (move_deaths_2): New function. ! 2052: (try_distrib): Use that, not move_deaths. ! 2053: ! 2054: * tm-sparc.h (SHIFT_COUNT_TRUNCATED, STORE_FLAG_VALUE): Define them. ! 2055: ! 2056: * tm-sparc.h: FUNCTION_{PRO,EPI}LOGUE: Save room for ins and ! 2057: locals to spill to the frame if any ins *or* locals are live. ! 2058: ! 2059: * tm-sparc.h (NOTICE_UPDATE_CC): Delete the clause that always ! 2060: cleared the cc's for unrecognized insns. ! 2061: ! 2062: * reload1.c (reload_as_needed): Don't try to use a spill-reg ! 2063: in a basic block that wasn't spilled: ignore optional reloads. ! 2064: ! 2065: Tue Aug 23 09:45:05 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2066: ! 2067: * output-sparc.c (output_scc_insn): New function. ! 2068: ! 2069: * expr.c (expand_builtin, alloca): Round result of alloca ! 2070: up to a multiple of STACK_BYTES. ! 2071: ! 2072: * toplev.c (compile_file): Default main_input_filename is cc1 input. ! 2073: ! 2074: * tm-i386.h (FUNCTION_BOUNDARY): 32 avoids extra prefetch. ! 2075: ! 2076: * i386.md (movdi, movdf): Add `&' where needed in constraints. ! 2077: ! 2078: Mon Aug 22 11:57:51 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2079: ! 2080: * symout.c (symout_finish): Allocate typevector after the symout_types. ! 2081: ! 2082: Sun Aug 21 16:10:54 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2083: ! 2084: * tm-3b1.h (ASM_FORMAT_PRIVATE_NAME): Use a `_' as well as `%'. ! 2085: ! 2086: * expr.c (expand_expr): Typo setting MODE for MAX_EXPR. ! 2087: ! 2088: * Makefile (stage*): If ln fails, copy gnulib to stage*. ! 2089: (realclean): Do `clean' and then some. ! 2090: (install): new var USER_H specifies headers to copy. ! 2091: ! 2092: * c-typeck.c (build_binary_op_nodefault): LT_EXPR, etc. ! 2093: on ptr vs int failed to set result_type. ! 2094: (build_conditional_expr): Don't replace nonzero int ! 2095: with null_pointer_node. ! 2096: ! 2097: * combine.c (remove_links, try_distrib): New fns. ! 2098: (subst): New simplifications for ZERO_EXTEND, SIGN_EXTEND. ! 2099: (combine_instructions): Call try_distrib. ! 2100: (FAKE_EXTEND_SAFE_P): Allow SUBREGs. ! 2101: ! 2102: * m68k.md (non-FPA pattern for floatsisf2): Typo, had DF for SF. ! 2103: ! 2104: Sat Aug 20 12:04:37 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2105: ! 2106: * integrate.c (copy_address): Variant of copy_rtx_and_substitute. ! 2107: (copy_rtx_and_substitute): Use copy_address for MEM address that ! 2108: doesn't satisfy memory_address_p. ! 2109: ! 2110: * reload.c (find_reloads): If force_reload set, don't set WIN ! 2111: for a MEM even if `m', `o' or `g' in constraint. ! 2112: ! 2113: * i386.md (expendqihi2): Typo in asm template. ! 2114: ! 2115: * toplev.c (rest_of_compilation): Call clear_const_double_mem. ! 2116: * varasm.c (init_const_rtx_hash_table): Don't call it here. ! 2117: (immed_real_const): Don't record the rtx in the REAL_CST node. ! 2118: (force_const_double_mem, clear_const_double_mem): Use cc0_rtx, not 0, ! 2119: as flag for a CONST_DOUBLE not on the chain. ! 2120: ! 2121: * cccp.c (handle_directive): If traditional, do scan strings ! 2122: but accept unterminated ones. ! 2123: (collect_expansion): -traditional: Don't recognize comments in strings. ! 2124: Stringify arguments that appear within strings. ! 2125: (skip_quoted_string): -traditional: Always exit at newline. ! 2126: (macroexpand): -traditional: Don't put `"'s around stringified arg. ! 2127: (macarg): Set stringified_length accordingly. ! 2128: ! 2129: * c-decl.c (duplicate_decls): Avoid error redeclaring fcn after ! 2130: implicit decl if -traditional. ! 2131: ! 2132: * toplev.c (announce_function, report_error_function): ! 2133: Change communication logic between these fcns. ! 2134: ! 2135: * c-decl.c (lang_decode_options): Handle -Wall here. ! 2136: * toplev.c (main): not here. ! 2137: ! 2138: * tm-bsd386.h: Don't include tm-i386.h--be like tm-att386.h ! 2139: ! 2140: Fri Aug 19 11:08:36 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2141: ! 2142: * config-sun4.h: If sparc, include config-sparc.h. ! 2143: Never include alloca.h. ! 2144: ! 2145: * tm-m68k.h (TARGET_SWITCHES): Define `-mc68020', `-mc68000'. ! 2146: ! 2147: * c-decl.c (init_decl_processing): If traditional, use signed sizetype. ! 2148: ! 2149: * gcc.c (main): Use stderr for printing version. ! 2150: ! 2151: Thu Aug 18 14:42:36 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2152: ! 2153: * Version 1.26 released. ! 2154: ! 2155: * m68k.md (movsi): Constraint change for fpa regs. ! 2156: ! 2157: * reload1.c (choose_reload_targets): Clear reg_reloaded_contents ! 2158: for all regs of a multi-reg group. ! 2159: ! 2160: * reload.c (find_equiv_reg): HARD_REGNO_NREGS wants mode, not size. ! 2161: Check properly for overlap against multiword reload regs. ! 2162: ! 2163: Tue Aug 16 14:54:18 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2164: ! 2165: * varasm.c, expr.c (immed_double_const): immed_real_const_2 renamed. ! 2166: ! 2167: * tm-i386.h (SFVALUE): Should be `double'. ! 2168: * tm-i386v.h (SFVALUE): Don't override it. ! 2169: ! 2170: * tm-i386.h (ASM_OUTPUT_ASCII): Don't define it. ! 2171: * tm-att386.h: Definition moved here. ! 2172: ! 2173: * tm-bsd386.h: New file, for Sequent. ! 2174: * tm-seq386.h: New file, for Sequent. ! 2175: * config-i386.h: New file, for Sequent. ! 2176: ! 2177: * expr.c (push_block): Take account of STACK_POINTER_OFFSET. ! 2178: (expand_call): Therefore need not do so here. ! 2179: ! 2180: * optabs.c (expand_fix): Typo if going via DImode. ! 2181: ! 2182: * reload1.c (choose_reload_targets): Don't * reload_reg_rtx if 0. ! 2183: ! 2184: Mon Aug 15 01:11:49 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2185: ! 2186: * integrate.c (copy_for_inline): Don't try copying 0-length vector. ! 2187: (copy_rtx_and_substitute): Likewise. ! 2188: ! 2189: * m68k.md (andsi3): use clrw instead of andw #0. ! 2190: ! 2191: * print-tree.c (walk): Don't omit permanent nodes reach from temps. ! 2192: ! 2193: * m68k.md (zero_extend...): Reinstall the old zero-extend insns ! 2194: without names, so they can help the combiner. ! 2195: ! 2196: * expr.c (expand_expr): Don't use hard regs as subtargets. ! 2197: * combine.c (FAKE_EXTEND_SAFE_P): Always consider MEMs safe. ! 2198: * reload.c (find_reloads): For (SUBREG (MEM ...)) set force_reload. ! 2199: ! 2200: * c-parse.y (redescape): Don't warn for `\('. ! 2201: ! 2202: * reload.c (find_reloads_address): #if was backwards. ! 2203: ! 2204: Sun Aug 14 16:52:22 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2205: ! 2206: * c-typeck.c (shorten_compare): Change switch to chain of ifs. ! 2207: ! 2208: * tm-ns32k.h (PRINT_OPERAND): CONST_DOUBLE contains a double ! 2209: even if it's SFmode. ! 2210: (FUNCTION_PROLOGUE): If MAIN_FUNCTION_PROLOGUE defined, run it. ! 2211: ! 2212: * cccp.c (file_buf): Rename field `free' to `free_ptr'. ! 2213: ! 2214: * Makefile (ALLOCA, MALLOC, LIBDEPS): New variables for easier ! 2215: customization. Executables depend on LIBDEPS instead of OBSTACK1. ! 2216: (cccp): Deps and libs now work like the others. ! 2217: ! 2218: * output-i386.c (notice_update_cc): Rewritten for clarity. ! 2219: ! 2220: * tm-i386.h (OUTPUT_JUMP): If CC_IN_OVERFLOW, abort. ! 2221: ! 2222: * recog.c (push_operand): Test for stack_pointer_rtx. ! 2223: ! 2224: * integrate.c (copy_rtx_and_substitute): Don't submit push-operands ! 2225: to `memory_address'--it would lose on machines where pushing is ! 2226: a special insn, not an addressing mode. ! 2227: ! 2228: * output-i386.c (top_dead_p): No more redundancy--that didn't work. ! 2229: Now one method if optimized, one for call_insns if noopt, one for ! 2230: other insns if noopt. ! 2231: (call_top_dead_p): fp_top_dead_p renamed ! 2232: and only the call-insn clause remains. ! 2233: ! 2234: * i386.md (cmpsf, cmpdf): Output was backwards. ! 2235: (", tstsf, tstdf): Set CC_IN_80387. ! 2236: (incb pattern): Restrict allowable registers. ! 2237: (movsf, movdf): Call top_dead_p only when absolutely necessary. ! 2238: (call_value): Use top_dead_p, not subroutine. ! 2239: ! 2240: Sat Aug 13 15:19:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2241: ! 2242: * stupid.c (stupid_life_analysis): If only 1 reg class, ! 2243: call stupid_find_reg only once. ! 2244: ! 2245: * stmt.c (expand_function_start): ! 2246: Clear current_function_pretend_args_size. ! 2247: ! 2248: * expr.c (store_constructor): If target is hard reg, go via a pseudo. ! 2249: ! 2250: * varasm.c (real_constant_chain): Now static in this file. ! 2251: (force_const_double_mem): Put R on chain if not already on. ! 2252: (clear_const_double_mem): Set XEXP (,2) to 0; ! 2253: also clear real_constant_chain and the chain links. ! 2254: * emit-rtl.c (init_emit_once): Put 0 in XEXP (,2) of {d,f}const0_rtx. ! 2255: * cse.c (canon_hash): For CONST_DOUBLE, ignore elts other than 0,1. ! 2256: ! 2257: Fri Aug 12 11:48:38 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2258: ! 2259: * reload1.c (order_regs_for_reload): Handle REG_ALLOC_ORDER more spots. ! 2260: ! 2261: * global-alloc.c (find_reg): error handling REG_ALLOC_ORDER; ! 2262: also error skipping regs known to be hopeless. ! 2263: * local-alloc.c (find_free_reg): error skipping hopeless regs. ! 2264: * stupid.c (stupid_find_reg): likewise. ! 2265: ! 2266: * local-alloc.c (qty_compare_1): typo, had q1 for q2. ! 2267: ! 2268: * expr.c (expand_expr): Don't use supplied target when optimizing ! 2269: arithmetic using a comparison or conditional; that target could be ! 2270: needed for the result of the comparison. ! 2271: ! 2272: * reload1.c (reload): Don't set reg_equiv_constant for hard regs. ! 2273: ! 2274: * stupid.c (stupid_life_analysis): Ignore reg R if regno_reg_rtx[R]==0. ! 2275: ! 2276: * symout.c (symout_finish): Use perm. links in permanent_fwd_refs. ! 2277: ! 2278: * i386.md (movhi, movqi): Check no_labels_between_p. ! 2279: ! 2280: Thu Aug 11 10:44:46 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2281: ! 2282: * c-parse.y (yylex): Out-of-range float is just a warning. ! 2283: ! 2284: * tm-gnx-v3.h: New file for Genix. ! 2285: * ns32k.md (movsi, call, call_value): GNX_V3 conditionals. ! 2286: * tm-ns32k.h (PRINT_OPERAND_ADDRESS): Changes for Genix. ! 2287: ! 2288: * ns32k.md (insv patterns): Operand 0 is read-write. ! 2289: ! 2290: * i386.md (tstsf, tstdf): Don't push the arg if already in st(0). ! 2291: ! 2292: * varasm.c (output_constant_def): If EXP is permanent, the rtl is too. ! 2293: ! 2294: * tm-*.h (ASM_OUTPUT_{LOCAL,COMMON}): New 4th arg, rounded size ! 2295: vs unrounded size. ! 2296: * varasm.c (assemble_variable): Pass new arg. ! 2297: * symout.c (symout_init): Likewise. ! 2298: ! 2299: * cccp.c (rescan): Don't let char const cross lines. ! 2300: (skip_quoted_string, macarg1, discard_comments): Likewise. ! 2301: ! 2302: * expr.c (expand_expr, VAR_DECL case): handle flag_force_addr. ! 2303: ! 2304: * tm-i386v.h (TAREGT_DEFAULT): Assume 80387. ! 2305: * config-i386v.h (alloca): Use __builtin_alloca under GNU C. ! 2306: ! 2307: Wed Aug 10 11:23:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2308: ! 2309: * reload.c (find_reloads): Alternative loses ! 2310: if it has no regs for a reg operand. ! 2311: ! 2312: * tm-sun3.h (STARTFILE_SPEC): Define, for fpa's sake. ! 2313: * tm-m68k.h: New hard regs, reg classes, reg class letters, ! 2314: target flag and switch, operand syntax and CC handling for fpa. ! 2315: * m68k.md: Add fpa insn patterns. ! 2316: * output-m68k.c (standard_SunFPA_constant_p): New fn. ! 2317: (output_move_const_{single,double}): Handle fpa regs. ! 2318: (singlemove_string): Handle fpa regs. ! 2319: ! 2320: * stmt.c (fixup_memory_subreg): Result had wrong mode. ! 2321: ! 2322: * ns32k.md (insv patterns): Adjust bit-number along with address. ! 2323: ! 2324: * sparc.md (negdf2, absdf2): Order of the words was backwards. ! 2325: ! 2326: * reload1.c (new_spill_reg): End confusion about meaning of 1st arg. ! 2327: Arg counted_for_nongroups had wrong type. ! 2328: ! 2329: * tm-m68k.h (FUNCTION_{PRO,EPI}LOGUE): Round frame size to word bdry. ! 2330: ! 2331: Tue Aug 9 07:53:59 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2332: ! 2333: * tm-i386.h (ASM_OUTPUT_ASCII): Don't lose the sign bit. ! 2334: ! 2335: * tm-i386v.h (STARTFILE_SPEC, LIB_SPEC): Use crt1.o, crtn.o. ! 2336: ! 2337: * stmt.c (fixup_var_refs_1): fixup all memory subregs. ! 2338: ! 2339: * reload1.c (choose_reload_targets): Don't strip paradoxical ! 2340: subregs from values to be reloaded. ! 2341: ! 2342: * cccp.c: Comment out text after #endif. ! 2343: ! 2344: * c-parse.y (init): Allow empty braces as init; warn if pedantic. ! 2345: ! 2346: * c-decl.c: Move C-specific options from toplev.c. ! 2347: * c-tree.h: Move their externs from flags.h. ! 2348: * c-decl.c (lang_decode_option): New fn called by `main'. ! 2349: * toplev.c (sorry, really_sorry): New error reporting fns. ! 2350: * c-decl.c (language_string): New var, name of this language. ! 2351: ! 2352: * c-parse.y: Don't include flags.h. ! 2353: * dbxout.c: Do include it. ! 2354: ! 2355: * dbxout.c (dbxout_type): Handle function fields and static fields ! 2356: and basetypes. Handle METHOD_TYPE and REFERENCE_TYPE. ! 2357: Abort on unexpected tree code. ! 2358: (dbxout_args): New fn to output prototype arg types. ! 2359: (everywhere): Use IDENTIFIER_LENGTH instead of strlen. ! 2360: (dbxout_type_name): Cleanup; avoid strlen. ! 2361: ! 2362: * local-alloc.c (reg_is_set): Don't call {post_,}mark_life for pseudos. ! 2363: ! 2364: * tree.h (TYPE_BASECLASSES): New field in type nodes. ! 2365: ! 2366: * ns32k.md (insv patterns): Was adjusting the address wrong. ! 2367: ! 2368: * c-decl.c (grokdeclarator): Just a warning for inline varargs fn. ! 2369: ! 2370: Mon Aug 8 08:16:46 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2371: ! 2372: * varasm.c (immed_real_const_2): Guts of creating a CONST_DOUBLE. ! 2373: * expr.c (expand_expr): Use that for 64-bit int constants. ! 2374: ! 2375: * loop.c (invariant_p): Don't check x->unchanging; it's not safe. ! 2376: ! 2377: * c-typeck.c (build_indirect_ref): Handle flag_volatile here ! 2378: so that it propagates to component_refs. ! 2379: * expr.c (expand_expr): No need to handle it here. ! 2380: ! 2381: * integrate.c (save_for_inline, expand_inline_function): ! 2382: Set up insn_map to record mapping of old uids to copied insns. ! 2383: (copy_for_inline, copy_rtx_and_substitute): Map 'u' refs via insn_map. ! 2384: ! 2385: * emit-rtl (emit_label, emit_barrier): Return what was emitted. ! 2386: ! 2387: * sdbout.c (sdbout_filename): Split off from sdbout_init. ! 2388: * tm-encore.h, tm-3b1.h, tm-vaxv.h, tm-att386.h (ASM_FILE_START): ! 2389: Call sdbout_filename. ! 2390: ! 2391: * toplev.c: Better messages for invalid options. ! 2392: ! 2393: * tm-m68k.h (PRINT_OPERAND_ADDRESS): Handle labelref+basereg. ! 2394: ! 2395: * tm-3b1.h (PUT_SDB_DIM): Override sdbout's definition. ! 2396: (ASM_FORMAT_PRIVATE_NAME): Override tm-hp...s definition. ! 2397: (PUT_SDB_PLAIN_DEF): Prepend `~' to specified name. ! 2398: (SDB_GENERATE_FAKE): Prepend `~'. ! 2399: ! 2400: * gcc.c: Include config.h before obstack.h. ! 2401: ! 2402: Sun Aug 7 11:17:56 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2403: ! 2404: * stor-layout.c (layout_decl): Do nothing with CONST_DECL. ! 2405: Treat FRIEND_DECLs like variables. ! 2406: (layout_record): Handle VAR_DECLs and FUNCTION_DECLs in the fieldlist. ! 2407: Handle basetypes (almost like fields). ! 2408: (layout_type): Handle REFERENCE_TYPE and METHOD_TYPE. ! 2409: ! 2410: * tree.c (temp_tree_cons): New fn. ! 2411: (array_type_nelts, simple_cst_equal): New fns. ! 2412: (lvalue_p): CALL_EXPR is an lvalue if it returns REFERENCE_TYPE. ! 2413: () Manage TYPE_REFERENCE_TO. ! 2414: (TYPE_HASH_SIZE): Bigger. ! 2415: (type_list_equal): Compare the TREE_PURPOSE fields. ! 2416: (build_reference_type, build_method_type): New fns. ! 2417: ! 2418: * stmt.c (block_stack): Add field `cleanups' to each element. ! 2419: (expand_{start,end}_bindings, expand_decl): Update that field. ! 2420: (stack_block_stack): Now includes blocks that have cleanups. ! 2421: (goto_fixup_chain): Add field `cleanup_list_list'. ! 2422: (expand_goto_internal): Execute cleanups for blocks being exited. ! 2423: (expand_fixup): Make a fixup if any block has cleanups. ! 2424: (fixup_gotos): New args CLEANUPS and DONT_JUMP_IN. ! 2425: Execute cleanups for blocks being exited, or add to cleanup_list_list. ! 2426: (expand_end_bindings): New arg DONT_JUMP_IN. Execute any cleanups. ! 2427: (expand_decl): New arg CLEANUP. ! 2428: (expand_cleanups, fixup_cleanups): New functions. ! 2429: * c-decl.c: Calls to expand_decl pass new arg. ! 2430: * c-parse.y: Calls to expand_end_bindings pass new arg. ! 2431: ! 2432: * stmt.c (expand_return): Handle INIT_EXPR, or bare RESULT_DECL. ! 2433: ! 2434: * stmt.c (case_stack): Add field `has_default' to each element. ! 2435: (pushcase,expand_end_case): Maintain and use that field. ! 2436: ! 2437: * stmt.c (pushcase): Handle RANGE_EXPR cases. ! 2438: (pushcase_range): Create RANGE_EXPR cases. ! 2439: ! 2440: * final.c (final): Always pass 3 args to ASM_OUTPUT_CASE_END. ! 2441: * tm-3b1.h: Delete offending spaces. ! 2442: ! 2443: Fri Aug 5 16:17:16 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2444: ! 2445: * integrate.c (copy_rtx_and_substitute): Don't make fp+reg+const ! 2446: without an intermediate temporary reg. ! 2447: ! 2448: * print-tree.c (dump): Don't print an identifier's chain. ! 2449: ! 2450: * toplev.c (compile_file): Treat `.i' suffix like `.co'. ! 2451: ! 2452: * gcc.c: New config macro CC1_SPEC: extra switches for cc1. ! 2453: Make a new spec for `.i' files. ! 2454: ! 2455: * c-decl.c (pushdecl, finish_decl): Delete duplicate tests. ! 2456: ! 2457: * varargs.h: Maybe include va-sparc.h or va-spur.h. ! 2458: * va-sparc.h: New file. ! 2459: * va-spur.h: renamed file. ! 2460: ! 2461: * tree.h ({TYPE,DECL}_LANG_SPECIFIC): Types and decls can point to ! 2462: language-specific structures containing other info. ! 2463: * print-tree.c (dump): Hooks for printing the language-specific ! 2464: data in types and decls. ! 2465: ! 2466: Thu Aug 4 08:54:30 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2467: ! 2468: * tree.def: Add some tree codes for C++. ! 2469: ! 2470: * Rename files: parse.[yh] -> c-parse.[yh], decl.c -> c-decl.c, ! 2471: typecheck.c -> c-typeck.c. ! 2472: Part of tree.c split out to c-convert.c. ! 2473: ! 2474: * expr.c (push_block): No longer static. ! 2475: (expand_expr): Handle REFERENCE_EXPR and INIT_EXPR. ! 2476: (expand_call): Turn a METHOD_TYPE to a FUNCTION_TYPE. ! 2477: This is probably not all that is required. ! 2478: ! 2479: * parse.y (yylex): Use p->rid to check for `signed' and `inline'. ! 2480: ! 2481: * tm-sparc.h (ASM_OUTPUT_SOURCE_LINE): typo. ! 2482: ! 2483: * sparc.md: Add a pattern for andcc. ! 2484: (cmpsf): Clobber reg 32 in DFmode. ! 2485: (branches): There are no unsigned floating branches; abort. ! 2486: (bgt): Correct name of floating variant. ! 2487: (mov?i): Load small constants via mov. ! 2488: (movdf for constants): Use mov, not add, to move regs. ! 2489: (movsf, floatsi*, fix*): Simplify reg-to-reg-via-mem move generation. ! 2490: (trunc*): Use mov, not or, to move regs. ! 2491: (negsi2, one_cmplsi2): Avoid "neg" and "not" assembler syntax. ! 2492: (call...): Generate "call" insns; handle #-reg-parms value. ! 2493: * Define some peepholes for return insns. ! 2494: ! 2495: * tm-sparc.h (TARGET_SUN_ASM): New target flag. ! 2496: (TARGET_DEFAULT): Now 1. ! 2497: (FRAME_POINTER_REQUIRED): Now 1. ! 2498: (STARTING_FRAME_OFFSET): Now -16. ! 2499: (LEGITIMATE_CONSTANT_P): Only CONST_DOUBLEs fail. ! 2500: (FUNCTION_{PROLOGUE,EPILOGUE}): Rewritten. ! 2501: ! 2502: * output-sparc.c (small_int): Test for int that mov can load. ! 2503: (singlemove_string): Use mov, not add. ! 2504: (output_move_double): Changes for overlap and for use of ldd, std. ! 2505: (output_fp_move_double): Use ldd, std when safe. ! 2506: (make_f0_contain_0): Simplify. ! 2507: ! 2508: * integrate.c (expand_inline_function): Some special CALL_INSN ! 2509: handling no longer needed due to REG_FUNCTION_VALUE_P. ! 2510: ! 2511: * m68k.md (movqi): Constraints allow moving areg to areg. ! 2512: ! 2513: Wed Aug 3 08:29:31 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2514: ! 2515: * Version 1.25 released. ! 2516: ! 2517: * integrate.c (expand_inline_function): Don't let MEM be inline_target. ! 2518: ! 2519: Tue Aug 2 09:13:37 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2520: ! 2521: * integrate.c (INTEGRATE_THRESHOLD): New macro, default dfn here. ! 2522: (function_cannot_inline_p): Use it. ! 2523: ! 2524: * rtl.h (REG_FUNCTION_VALUE_P): New macro. ! 2525: * stmt.c (expand_function_start): Set that flag in the return reg. ! 2526: * integrate.c (expand_inline_function, copy_rtx_and_substitute): ! 2527: Test that flag to test for the return value. ! 2528: * expmed.c (expand_fixed_bit_field, expand_mult, expand_divmod): ditto. ! 2529: FUNCTION_VALUE_OUTGOING_REGNO_P no longer needed. ! 2530: ! 2531: Mon Aug 1 02:46:08 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2532: ! 2533: * integrate.c (copy_rtx_and_substitute): If NO_FUNCTION_CSE, ! 2534: don't break out constant fcn addresses here. ! 2535: ! 2536: * expmed.c (expand_fixed_bit_field): Tests of FUNCTION_VALUE_REGNO_P ! 2537: were backwards. ! 2538: ! 2539: Sun Jul 31 13:10:07 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) ! 2540: ! 2541: * recog.c (indirect_operand): New function. ! 2542: ! 2543: * output-i386.c (print_operand): define %*. eliminate %s. ! 2544: (fp_top_dead_p): In nonopt case, skip stack-adjusts while looking ! 2545: for the insn that uses the function value. ! 2546: ! 2547: * varasm.c (text_section, data_section): New functions. ! 2548: Replaced explicit printfs elsewhere with calls to them. ! 2549: * final.c (final_start_function): Use these fns. ! 2550: * sdbout.c (sdbout_one_type): Use text_section. ! 2551: * tm-att386.h (ASM_OUTPUT_LOCAL): Use data_section. ! 2552: ! 2553: * expr.c (prepare_call_address): Don't pass const via reg if no -O. ! 2554: ! 2555: * tm-sparc.h (FUNCTION_{PROLOGUE,EPILOGUE}) Round the size of saved ! 2556: registers. Fix bug counting saved registers. ! 2557: ! 2558: * tm-sparc.h (ASM_OUTPUT_SOURCE_LINE): Define this macro. ! 2559: ! 2560: * tm-sparc.h (DEFAULT_SIGNED_CHAR): Now 1. ! 2561: ! 2562: * expr.c (expand_builtin, alloca case): Adding stack offset needs ! 2563: special code if TARGET is a MEM. ! 2564: ! 2565: * dbxout.c (dbxout_init): Define Ltext: after the reference to it. ! 2566: ! 2567: * tm-3b1.h (ASM_OUTPUT_CASE_LABEL): `short 0' triggers assembler bug; ! 2568: `short L%nn-L%nn' supposedly works. ! 2569: ! 2570: Sat Jul 30 00:25:52 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2571: ! 2572: * sparc.md (floatsidf2): Minor change in output. ! 2573: (fix_trunc{sf,df}si2): Similar. ! 2574: ! 2575: * output-sparc.c (output_fp_move_double): Minor change in output. ! 2576: ! 2577: * stmt.c (assign_parms): Don't count stack space for struct value ! 2578: address if the function does not have one. ! 2579: ! 2580: * sdbout.c: Output .dim's and total size for arrays. ! 2581: Detect bit-fields properly. ! 2582: Changed handling of structure tags. ! 2583: ! 2584: * reload1.c (new_spill_reg): counted_for_nongroups is a new arg; ! 2585: store 1 in it if this reg is needed for max_nongroups. ! 2586: ! 2587: * reload1.c (choose_reload_targets): Allow inheritance of DFmode ! 2588: if it needs only one register. ! 2589: ! 2590: * reload1.c (choose_reload_targets): Delete the death-note from the ! 2591: store-insn of an inherited reload if PRESERVE_DEATH_INFO_REGNO_P. ! 2592: ! 2593: * reload.c (push_reload): Crash if PREFERRED_RELOAD_CLASS is NO_REGS. ! 2594: (find_reloads): Smarter handling of forcing CONST_DOUBLE into mem. ! 2595: Check PREFERRED_RELOAD_CLASS & do this if it says NO_REGS. ! 2596: ! 2597: * reload.c (subst_indexed_address): Handle case with 2 regs ! 2598: and no constant term. ! 2599: ! 2600: * local-alloc.c: New variable qty_n_refs, set from reg_n_refs ! 2601: and tested in qty_compare{,_1}. ! 2602: (combine_regs): Update qty_n_refs. ! 2603: Update qty_preferred_or_nothing more intelligently. ! 2604: ! 2605: * regclass.c (regclass, reg_class_record, record_address_regs): ! 2606: Count the number of refs to each reg along with the costs, ! 2607: and use it when computing the preferred_or_nothing flag. ! 2608: (Can't use reg_n_refs since that is weighted by loop depth). ! 2609: ! 2610: * global-alloc.c (global_alloc): Enable test of OVERLAPPING_REGNO_P ! 2611: for setting no_global_alloc_regs. ! 2612: ! 2613: * expr.c (prepare_call_address): Use force_reg, so it gets a REG_EQUIV. ! 2614: ! 2615: * optabs.c (can_{fix,float}_p): Return enum insn_code, not a function. ! 2616: (init_{fix,float}_tab): Store enum insn_code's in fixtab and floattab. ! 2617: (expand_{fix,float}): Change calls to can_{fix,float}_p. ! 2618: Also, use emit_unop_insn to make the actual insns. ! 2619: ! 2620: Fri Jul 29 02:42:40 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2621: ! 2622: * cccp.c (initialize_char_syntax): If dollars_in_identifiers is 0, ! 2623: set entries for `$' to 0. ! 2624: Set entries to 1 rather than incrementing them. ! 2625: ! 2626: Tue Jul 26 11:14:22 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2627: ! 2628: * varasm.c (assemble_variable): Make SDB output only if top-level. ! 2629: ! 2630: * local-alloc.c (reg_is_set): Arg to mark_life is regno, not qty. ! 2631: ! 2632: * output-ns32k.c (print_operand_address): New flag SEQUENT_BASE_REGS ! 2633: * tm-sequent.h: Define that flag. ! 2634: ! 2635: * Makefile: add some missing deps. ! 2636: ! 2637: * tm-encore.h (ASM_FILE_START): Changed to do nothing. ! 2638: ! 2639: * sdbout.c (sdbout_init): Fix two dumb errors. ! 2640: ! 2641: * sdbout.c (sdbout_end_epilogue): No longer takes arg. ! 2642: Examine current_function_decl here, not in caller. ! 2643: * final.c: Call changed. ! 2644: ! 2645: Mon Jul 25 01:32:54 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2646: ! 2647: * stor-layout.c (layout_record): Handle PCC_BITFIELD_TYPE_MATTERS. ! 2648: ! 2649: * tm-3b1.h (__PTR_TO_INT, __INT_TO_PTR): Define these, to alter ! 2650: parts of obstack.h. ! 2651: ! 2652: Sun Jul 24 17:56:53 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2653: ! 2654: * Padding for an arg may now go below or above it; new macro ! 2655: FUNCTION_ARG_PADDING can now choose which, or can inhibit padding. ! 2656: This makes for compatibility with PCC. ! 2657: * expr.h: Default definition of that macro. ! 2658: * expr.c (emit_push_insn): Put the padding above or below. ! 2659: (expand_call): Don't count the padding if none wanted. ! 2660: * stmt.c (assign_parms): Adjust parm stack addr if padded below. ! 2661: Don't count the padding if none wanted. ! 2662: * tm-3b1.h: Define FUNCTION_ARG_PADDING: no padding for > 4 bytes. ! 2663: ! 2664: * final.c (alter_subreg): Now returns the altered value ! 2665: (but may still modify the original structure). ! 2666: Handles (SUBREG:DI (CONST_DOUBLE:DF...)) by returning the CONST_DOUBLE. ! 2667: ! 2668: * m68k.md (DImode push): now allows `F'. ! 2669: * ns32k.md (movdi): now allows `F'. ! 2670: ! 2671: * tm-m68k.h (FIX_FRAME_POINTER_ADDRESS): ! 2672: Handle indexed references to frame pointer. ! 2673: * tm-i386.h, tm-m88k.h, tm-sparc.h: Likewise. ! 2674: ! 2675: * cse.c (predecide_loop_entry): Must search for the loop top label. ! 2676: ! 2677: Sat Jul 23 08:53:01 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) ! 2678: ! 2679: * parse.y (yylex): typo in wide strings. ! 2680: ! 2681: * tm-vaxv.h, config-vaxv.h: New files for sysV on vax. ! 2682: ! 2683: * config-sun4.h: If sparc and not compiling with GCC, include alloca.h. ! 2684: ! 2685: Fri Jul 22 02:38:02 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) ! 2686: ! 2687: * tree.c (build_real_from_int_cst): CHECK_FLOAT_VALUE at proper place. ! 2688: ! 2689: * tm-hp9k320.h ({TEXT,DATA}_SECTION_ASM_OP): Should not include a tab. ! 2690: * final.c (final_start_function): Don't output a tab before those. ! 2691: ! 2692: * sdbout.c (PUT_SDB_EPILOGUE_END): New macro. ! 2693: * sdbout.c (sdbout_end_epilogue): New function to output the C_EFCN. ! 2694: Like former sdbout_mark_end_function. Uses that macro. ! 2695: * final.c (final_end_function): Call that function. ! 2696: * tm-3b1.h: Override PUT_SDB_EPILOGUE_END like the other PUT_SDB... ! 2697: ! 2698: * tm-3b1.h (PRINT_OPERAND_ADDRESS, ASM_OUTPUT_INTERNAL_LABEL, ! 2699: ASM_OUTPUT_CASE_{LABEL,END}): Put a % in names of internal labels. ! 2700: (ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_ADDR_{VEC,DIFF}_ELT): ! 2701: New macros, for same reason. ! 2702: (FUNCTION_PROFILER): New macro, for % and also to put addr in a0. ! 2703: ! 2704: * final.c (output_source_line): For fcn's first line, use lineno 1. ! 2705: * sdbout.c (sdbout_end_function): Clear sdb_begin_function_line ! 2706: so can recognize first line of next function. ! 2707: ! 2708: * sdbout.c (sdbout_init): Output the .file pseudo here. ! 2709: * tm-3b1.h, tm-att386.h (ASM_FILE_START): Don't do it here. ! 2710: ! 2711: * sdbout.c (PUT_SDB_VAL): Output leading tab, like the other macros. ! 2712: * tm-3b1.h (PUT_SDB_VAL): Likewise. ! 2713: ! 2714: * regclass.c (regclass): Cast enums to int, not char. ! 2715: * varasm.c (record_constant): Likewise. Avoids 3b1 PCC bug. ! 2716: ! 2717: * decl.c (pushdecl): Better choice of error message for extern/static. ! 2718: ! 2719: * emit-rtl.c: Do look for STRUCT_VALUE_INCOMING_REGNUM. ! 2720: ! 2721: Thu Jul 21 02:13:03 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2722: ! 2723: * cse.c (canon_hash): CONST_INT case failed to add to prev. value ! 2724: of HASH; was inconsistent with cse_insn mem address hashing. ! 2725: ! 2726: * m68k.md (divide insns): Alternate 3B1 syntax for `swap' insn. ! 2727: ! 2728: Wed Jul 20 18:27:10 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2729: ! 2730: * m68k.md: In shift-by-24 patterns, rejects autoincrement memrefs ! 2731: since they are mode-dependent. ! 2732: ! 2733: Tue Jul 19 13:01:38 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2734: ! 2735: * parse.y (check_newline): Handle #ident by writing .ident to output. ! 2736: * cccp.c: Don't handle #ident; delete IDENT_DIRECTIVE conditionals. ! 2737: ! 2738: * stmt.c (expand_end_case): In compares, put constant arg second. ! 2739: ! 2740: * jump.c (jump_optimize): Delete conditional jump if followed by ! 2741: an unconditional jump to the same place. ! 2742: ! 2743: Mon Jul 18 17:49:13 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2744: ! 2745: * emit-rtl.c (init_emit_once): Now STRUCT_VALUE_INCOMING is an ! 2746: expression for an rtx. It can make a MEM. Likewise STRUCT_VALUE ! 2747: for outgoing structure value addresses. ! 2748: ! 2749: * stmt.c (assign_parms): If incoming struct addr on stack, leave room. ! 2750: * expr.c (expand_call): If outgoing addr on stack, push it like an arg. ! 2751: ! 2752: * PROMOTE_PROTOTYPES means if proto says `char', pass `int'. ! 2753: * decl.c (get_parm_info): Alter DECL_ARG_TYPE to do this. ! 2754: * typecheck.c (actualparameterlist): Convert value for this. ! 2755: * tm-m68k.h: Define PROMOTE_PROTOTYPES. ! 2756: ! 2757: Sun Jul 17 14:25:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2758: ! 2759: * jump.c (jump_optimize): peephole can delete insns following INSN. ! 2760: Set NEXT after peephole. ! 2761: ! 2762: * decl.c (finish_decl): Always restart perm alloc if global. ! 2763: ! 2764: * stmt.c (assign_parms): When a float is passed as double, store the ! 2765: float in low-numbered word. Avoids trouble with parm_map in integrate. ! 2766: ! 2767: * vax.md: New pattern for decrement and compare against -1. ! 2768: ! 2769: Sat Jul 16 14:18:00 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2770: ! 2771: * decl.c (pushdecl): Ignore previous decl if it's really an error_mark. ! 2772: ! 2773: * stmt.c (expand_start_case): Make sure case_stmt.start is a NOTE. ! 2774: ! 2775: * combine.c (subst): In the simplification for ! 2776: (set (zero_extract ...) (and/or/xor (zero_extract ...) const)), ! 2777: require same memory location in both extracts. ! 2778: ! 2779: * *386*: New files. ! 2780: ! 2781: * cse.c (fold_rtx): Save time in memory address if it didn't change. ! 2782: Don't replace cheaper expression with coslier one. ! 2783: (cse_insn): Reenable generation of REG_WAS_0. It wasn't obsolete. ! 2784: ! 2785: * cccp.c: `ident' has 5 letters. ! 2786: ! 2787: * final.c (output_source_line): SDB can't handle multiple source ! 2788: files, so ignore line-NOTEs for other files. ! 2789: ! 2790: * hard-reg-set.h: New var reg_class_size (# regs in the class). ! 2791: * regclass.c (init_reg_class): Set it up. ! 2792: ! 2793: * reload.c (find_reloads): If an earlyclobber is in a class of size 1 ! 2794: as an output, reload it as input instead of as output. ! 2795: ! 2796: * reload1.c (choose_reload_targets): Improve elimimation of spilled ! 2797: pseudos made dead by reloading: if pseudo is limited to one block ! 2798: and that block contains just stores, delete all the stores. ! 2799: ! 2800: * reload1.c (choose_reload_targets): reg_has_output_reload is now ! 2801: static and survives through reload pass. ! 2802: (forget_old_reloads): Don't cancel data on spilled regs of output ! 2803: reloads of the insn just made. ! 2804: ! 2805: * sdbout.c (sdbout_one_type): Go to .text before defining a type. ! 2806: (sdbout_block): Test against do_block was backwards. ! 2807: ! 2808: * stmt.c (expand_end_function): New args to make a NOTE for last line. ! 2809: * decl.c (finish_function): Pass the args. ! 2810: ! 2811: * rtl.c (no_labels_between): New function. ! 2812: * vax.md (movsi): Call it. ! 2813: ! 2814: * print-tree.c (dump): Don't follow chain of a decl. ! 2815: ! 2816: * rtl.c (volatile_refs_p): Moved from flow.c. ! 2817: ! 2818: Fri Jul 15 13:36:20 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) ! 2819: ! 2820: * sdbout.c (PUT_SDB...): Allow config to override any of them. ! 2821: * sdbout.c (PUT_SDB_{BLOCK,FUNCTION}_{START,END}): New macros. ! 2822: * tm-3b1.h: Override all of them. ! 2823: * sdbout.c (SDB_GENERATE_FAKE): New macro to create dummy tag name. ! 2824: (gen_fake_label): Use SDB_GENERATE_FAKE. ! 2825: * tm-3b1.h: Override its defn. ! 2826: ! 2827: * sdbout.c (sdbout_mark_function_end): Unused; deleted. ! 2828: ! 2829: * tm-3b1.h: Define SDB_DEBUGGING_INFO. ! 2830: ! 2831: Thu Jul 14 01:55:15 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) ! 2832: ! 2833: * config-sunv4.h: New file for Sunos version 4. ! 2834: ! 2835: * tm-sun3.h (CPP_SPEC): Define mc68010 or mc68020, depending. ! 2836: ! 2837: Tue Jul 12 15:31:30 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2838: ! 2839: * stmt.c (expand_fixup, expand_goto_internal): New functions to ! 2840: emit a jump that can restore the stack level, even without tree node. ! 2841: (expand_null_return, expand_exit_loop, etc.): Use expand_goto_internal. ! 2842: (expand_end_function): Do fixup_gotos after emitting return_label. ! 2843: ! 2844: * cse.c (predecide_loop_entry): Avoid using JUMP_LABEL. ! 2845: * flow.c (find_basic_blocks): Avoid using JUMP_LABEL. ! 2846: ! 2847: * flow.c (insn_dead_p): Delete special case for stack-adjust insns. ! 2848: (life_analysis): Mark those insns with INSN_VOLATILE here. ! 2849: (mark_used_regs): a SET of a hard reg, in a volatile insn, ! 2850: always makes its source live. ! 2851: ! 2852: Mon Jul 11 10:46:26 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2853: ! 2854: * ns32k.md (floatqidf2): Commented out since assemblers warn about it. ! 2855: ! 2856: Sun Jul 10 11:49:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2857: ! 2858: * decl.c (xref_tag): Default the TYPE_MODE of enum xrefs ! 2859: to avoid making MEM and REG with VOIDmode. ! 2860: ! 2861: * vax.md (call): If > 255 args, pop them explicitly. ! 2862: ! 2863: Sat Jul 9 10:53:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2864: ! 2865: * symout.c (symout_types): Fix up forward refs to previously ! 2866: undefined structure types. ! 2867: (filter_undefined_types): New function. ! 2868: (symout_finish, symout_function_end): Output any never-defined structs. ! 2869: * toplev.c (rest_of_compilation): call symout_function_end. ! 2870: ! 2871: * parse.y: Don't declare errno if it's a macro. ! 2872: ! 2873: * tm-hp9k320 (FUNCTION_PROFILER): Pass ptr in a0, not d0. ! 2874: ! 2875: * typecheck.c (truthvalue_conversion): Flush unnec recursive call. ! 2876: (build_cond_expr): Bug testing zeroness of IFEXP with TREE_LITERAL. ! 2877: ! 2878: * cse.c (fold_cc0): Constants not CONST_INT are certainly nonzero. ! 2879: * fold-const.c (fold): ADDR_EXPR is not equal to zero. ! 2880: ! 2881: * cccp.c (macroexpand): Disable the macro even if traditional. ! 2882: (rescan): Error if use a disabled macro. ! 2883: ! 2884: * combine.c (try_combine): Don't substitute a different reg into ! 2885: an auto-increment. Handle multiple REG_INC notes in I1 or I2. ! 2886: ! 2887: * decl.c (implicitly_declare): Don't reuse old implicit decl. ! 2888: ! 2889: * varasm.c (assemble_variable): Avoid syntax err if no DBX and no SDB. ! 2890: * final.c (output_source_line): likewise. ! 2891: ! 2892: * fold-const.c (fold): PLUS/MINUS_EXPR: in case of cancellation, ! 2893: convert result to original type. ! 2894: ! 2895: * regclass.c (reg_class_record): Changed arguments include address ! 2896: of entire vector of constraints. ! 2897: ! 2898: Fri Jul 8 07:59:00 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2899: ! 2900: * reload1.c (reload): Find groups of more than 2 registers. ! 2901: ! 2902: Thu Jul 7 08:33:07 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2903: ! 2904: * expr.c (emit_push_insn): Typo adjusting arg for bcopy ! 2905: if not STACK_GROWS_DOWNWARD. ! 2906: ! 2907: * gnulib.c (_cmpsf2): Value is int, not SFVALUE. ! 2908: ! 2909: Wed Jul 6 11:53:46 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2910: ! 2911: * tm-encore.h, tm-3b1.h: Replace ASM_FILE_START; output a .file. ! 2912: ! 2913: * *m88*: New files for Motorola 88000. They don't really work. ! 2914: ! 2915: Tue Jul 5 14:40:03 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2916: ! 2917: * local-alloc.c (combine_regs): Don't tie a reg to itself. ! 2918: ! 2919: * finxincludes: Make a variable LIB for the target dir. ! 2920: ! 2921: * m68k.md (movhi, addhi3, addsi3): Micro-optimize choice of asm insns. ! 2922: ! 2923: * expr.c (expand_expr): Use new macros NO_DEFER_POP, OK_DEFER_POP ! 2924: in several places, to keep stack predictable. ! 2925: ! 2926: Mon Jul 4 09:50:18 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2927: ! 2928: * integrate.c (function_cannot_inline_p): Increase threshold size. ! 2929: ! 2930: * flags.h (use_gdb_dbx_extensions): New variable. ! 2931: * toplev.c: ! 2932: ! 2933: * sdbout.c (PUT_SDB_TAG): Delete duplicate defn. ! 2934: ! 2935: * expr.c (expand_expr): For FIX_TRUNC_EXPR to unsigned short/char, ! 2936: REALLY go via signed int. ! 2937: ! 2938: * loop.c (may_trap_p): Was detecting floating arithmetic incorrectly. ! 2939: ! 2940: * tm-news800.h (CPP_PREDEFINES): Add sony and sony_news. ! 2941: ! 2942: * parse.y (check_newline): Avoid infinite loop at eof. ! 2943: ! 2944: Sat Jul 2 10:35:17 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2945: ! 2946: * Version 1.24 released. ! 2947: ! 2948: * stmt.c (expand_asm_operands): Produce proper no-outputs insn. ! 2949: * recog.c (asm_noperands): Detect no-outputs insns. ! 2950: (decode_asm_operands): Likewise. ! 2951: * reload.c (find_reloads): Likewise (add case ASM_OPERANDS:). ! 2952: ! 2953: * local-alloc.c (block_alloc): Tests of qty_compare were backwards. ! 2954: ! 2955: * flow.c (life_analysis): Turn off code that finds regs live at ! 2956: function start and marks them not local to any basic block. ! 2957: ! 2958: * cse.c (insert_regs): Fix typo (UNITS_PER_WORD). ! 2959: ! 2960: * cccp.c: Define max. ! 2961: ! 2962: * expr.c (expand_expr): Put each SAVE_EXPR's reg on save_expr_regs, ! 2963: if not optimizing. ! 2964: * stmt.c (expand_function_end): Mark each of those regs live ! 2965: at the end and also retroactively at the beginning of the function. ! 2966: ! 2967: * output-vax.c (print_operand_address): New function from old macro. ! 2968: * tm-vax.h (PRINT_OPERAND_ADDRESS): Call that function. ! 2969: ! 2970: * config-vms.h: If not under GNU C, define X_OK, etc. ! 2971: ! 2972: * expr.c (move_by_pieces_1): Use * to call GENFUN. ! 2973: (expand_expr): Compare DECL_FUNCTION_CODE against an enum const. ! 2974: (preexpand_calls): Likewise. ! 2975: * genrecog.c (write_tree): Likewise. ! 2976: * final.c (final): Use * to call the output function. ! 2977: * reload.c (push_reload): Rename `noshare' to `dont_share'. ! 2978: ! 2979: * genoutput.c (output_epilogue): Put more newlines in insn_outfun. ! 2980: * genemit (gen_exp): Put in more newlines. ! 2981: ! 2982: Fri Jul 1 00:23:57 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2983: ! 2984: * global-alloc.c (allocno_compare): Avoid comparisons of floats ! 2985: since that is sensitive to roundoff errors. ! 2986: ! 2987: Thu Jun 30 09:25:40 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 2988: ! 2989: * sdbout.c (PUT_SDB_{DEF,TAG}): Use ASM_OUTPUT_LABELREF. ! 2990: (PUT_SDB_PLAIN_DEF): New name for old defn of PUT_SDB_DEF ! 2991: (sdbout_one_type): Use PUT_SDB_PLAIN_DEF for `.eos'. ! 2992: ! 2993: * tree.c (allocation_temporary_p): New fcn. ! 2994: (all_types_permanent): New variable. ! 2995: (make_node): If that's set, make each ...TYPE node permanent. ! 2996: * decl.c (grokdeclarator): If traditional, make decl data permanent. ! 2997: (finish_decl): Make the rtl permanent too. ! 2998: * stor-layout.c (layout_type): If type is permanent, ! 2999: make its layout data permanent too. ! 3000: ! 3001: * cccp.c: Choose C++ or C at run time via var `cplusplus'. ! 3002: Separate cplusplus_include_default from include_default. ! 3003: Get GNU-specific include directory names from macros ! 3004: GCC_INCLUDE_DIR and GPLUSPLUS_INCLUDE_DIR. ! 3005: (main): Initialize based on CPLUSPLUS; `-+' sets it. ! 3006: * Makefile: Set *_INCLUDE_DIR based on $(libdir). ! 3007: ! 3008: Tue Jun 28 09:25:49 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3009: ! 3010: * tree.c (copy_node): Round LENGTH up to multiple of sizeof (int). ! 3011: ! 3012: * expr.c (emit_push_insn): Avoid using PUSH_ROUNDING if not defined. ! 3013: ! 3014: * sparc.md (floatsisf2): Insert missing brace. ! 3015: (mulsi3): Replace reg_o0_rtx, reg_o1_rtx. ! 3016: ! 3017: * tm-sparc.h: Define DBX_DEBUGGING_INFO. ! 3018: ! 3019: * parse.y (yylex): If traditional, no error for out-of-range float. ! 3020: ! 3021: * Makefile: Comment saying how to compile on an Apollo. ! 3022: ! 3023: * tm-sparc.h (ASM_FILE_START): Switch to new calling convention. ! 3024: ! 3025: * decl.c (init_decl_processing): Create type nodes for 64-bit ints. ! 3026: (grokdeclarator): use them for `long long'. Warn only if pedantic. ! 3027: ! 3028: * optabs.c (init_optabs): Add missing DImode insn names. ! 3029: ! 3030: * expr.c (emit_block_move, emit_push_insn): Use movstrqi if appro. ! 3031: ! 3032: * expr.c (convert_move): use extendsidi if appropriate. ! 3033: ! 3034: * cccp.c (initialize_builtins): Don't install __STDC__ if traditional. ! 3035: (main): Call initialize_builtins after option processing. ! 3036: ! 3037: * integrate.c (output_inline_function): Set current_function_decl. ! 3038: ! 3039: * cse.c (fold_rtx): Typo in avoiding 32-bit shifts. ! 3040: ! 3041: * cccp.c: Add forward-decl. ! 3042: ! 3043: Mon Jun 27 18:06:42 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3044: ! 3045: * hard-reg-set.h (reg_alloc_order): New variable ! 3046: based on REG_ALLOC_ORDER, a new machine-description macro. ! 3047: * regclass.c (reg_alloc_order): Define it. ! 3048: * local-alloc.c (find_free_reg): Handle reg_alloc_order. ! 3049: * global-alloc.c (find_reg): Likewise. ! 3050: * stupid.c (stupid_find_reg): Likewise. ! 3051: ! 3052: Sun Jun 26 10:47:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3053: ! 3054: * Version 1.23 released. ! 3055: ! 3056: * tm-3b1.h: Define IDENT_DIRECTIVE. ! 3057: ! 3058: * tm-encore.h: Define SDB_DEBUGGING_INFO. ! 3059: Define SCCS_DIRECTIVE and IDENT_DIRECTIVE. ! 3060: ! 3061: * output-ns32k.c: Decl of paren_base_reg_printed must be outside fcns. ! 3062: ! 3063: * tm-encore.h (ASM_OUTPUT_DOUBLE): Do 0f, not 0l. ! 3064: (CPP_PREDEFINES): No -Dns32032. ! 3065: ! 3066: * sdbout.c: Include syms.h, not storclass.h. ! 3067: (unnamed_struct_member): Decl was missing. ! 3068: (PUT_SDB_INT_VAL, PUT_SDB_VAL): Fix typos. ! 3069: (sdbout_types, sdbout_one_type, sdbout_parms): Fix typos. ! 3070: ! 3071: * Makefile: Add file sdbout.o. ! 3072: Changed comments pertaining to sysV. ! 3073: Make a separate target `doc' to make the info files. ! 3074: ! 3075: * m68k.md (bit-field insns): Use nonimmediate_operand for the thing ! 3076: to extract from. ! 3077: * vax.md (QImode bit-field insns): Likewise. ! 3078: ! 3079: * recog.c (nonimmediate_operand): Accept any nonconst general operand. ! 3080: ! 3081: Sat Jun 25 07:54:42 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3082: ! 3083: * cse.c (lookup_as_function): arg to exp_equiv_p was missing. ! 3084: ! 3085: Fri Jun 24 09:14:47 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3086: ! 3087: * recog.c (memory_operand): Allow (subreg (mem...)). ! 3088: ! 3089: Thu Jun 23 07:34:07 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3090: ! 3091: * decl.c (finish_enum): Compute minimum value like maximum. ! 3092: If minimum is negative, install it in the type and make it signed. ! 3093: ! 3094: * stor-layout.c (layout_record): STRUCTURE_SIZE_BOUNDARY is minimum. ! 3095: (layout_type): A RECORD_TYPE or UNION_TYPE must be BLKmode if ! 3096: any member is BLKmode. This is to prevent putting it in a register. ! 3097: (layout_decl): If decl's type is BLKmode, the decl *must* be BLKmode. ! 3098: ! 3099: * local-alloc.c (find_free_reg): Never allocate the frame pointer reg. ! 3100: ! 3101: * tm-sequent.h (PRINT_OPERAND): Bug in SFmode CONST_DOUBLE. ! 3102: * tm-encore.h: Likewise. ! 3103: ! 3104: * flow.c (flow_analysis): Bug in n_basic_blocks error check. ! 3105: ! 3106: * stmt.c (expand_asm_operands): Emit no insn if an arg is erroneous. ! 3107: ! 3108: Tue Jun 21 08:34:24 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3109: ! 3110: * reload.c (find_reloads_address): Write back *loc even if ! 3111: subst_reg_equivs makes no change, in case subst_index_address did. ! 3112: ! 3113: * flow.c: Define macros for -1 and -2 as values of reg_basic_block. ! 3114: (mark_used_regs): Add an `else'; no change in behavior. ! 3115: (mark_label_ref): Abort if LABEL_REF doesn't contain a CODE_LABEL. ! 3116: (find_basic_blocks): Extra error check. ! 3117: ! 3118: * output-ns32k.c (print_operand_address): Changes in handling of ! 3119: register-indirect, and of indexing by sb register. ! 3120: ! 3121: Mon Jun 20 04:55:38 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3122: ! 3123: * cccp.c (collect_definition): Compute needed space more accurately. ! 3124: Abort if use more space than was allocated. ! 3125: (rescan) [USE_C_ALLOCA]: Do alloca (0) after handle_directive. ! 3126: ! 3127: * genflags.c (gen_insn): Put parens around defns of HAVE_... macros. ! 3128: ! 3129: Sun Jun 19 02:52:53 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3130: ! 3131: * expr.c (emit_push_insn): Consider PARM_BOUNDARY when compensating ! 3132: for size of a pushed arg to bcopy. ! 3133: ! 3134: Sat Jun 18 07:20:54 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3135: ! 3136: * New files sparc.md, tm-sparc.h, config-sparc.h, output-sparc.c. ! 3137: ! 3138: * final.c (final): After an ADDR_{,DIFF_}VEC, do ASM_OUTPUT_CASE_END. ! 3139: * tm-3b1.h: Define ASM_OUTPUT_CASE_END. ! 3140: (PRINT_OPERAND_ADDRESS): Ref the case tables via an intermediate symbol ! 3141: `LDnnn' whose def. is output by ASM_OUTPUT_CASE_END. ! 3142: (ASM_OUTPUT_CASE_LABEL): Add missing newline. ! 3143: ! 3144: * reload.c (find_equiv_reg): Reject a MEM containing an autoincrement. ! 3145: ! 3146: Fri Jun 17 06:58:37 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) ! 3147: ! 3148: * genpeep.c (main): Write `extern' in the decl for `peep_operand'. ! 3149: ! 3150: * flow.c (propagate_block): When a dead insn has a REG_RETVAL note, ! 3151: call mark_set_regs anyway, so that `significant' is updated. ! 3152: ! 3153: * jump.c (follow_jumps): New arg IGNORE_LOOPS. If 0, don't follow ! 3154: the insn at the beginning of a loop that enters the loop; this avoids ! 3155: interference with loop optimizer. ! 3156: (jump_optimize, tension_vector_labels): Pass that arg. ! 3157: ! 3158: * loop.c (loop_optimize): Mention invalid multiple-entry loops in log. ! 3159: ! 3160: * m68k.md (extv, extzv): Fix # of alternatives mismatch in constraints. ! 3161: ! 3162: Thu Jun 16 03:06:48 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) ! 3163: ! 3164: * genrecog.c (change_state): Was mishandling printing XVECEXP indices ! 3165: greater than 9. ! 3166: ! 3167: * combine.c (subst, simplify_and_const_int): Avoid making SUBREG ! 3168: of a non-REG. ! 3169: ! 3170: * expr.c (expand_expr): For FIX_TRUNC_EXPR to unsigned short/char, ! 3171: go via signed int. ! 3172: ! 3173: * optabs.c (expand_fix): Copy hard_libcall_value reg only once. ! 3174: ! 3175: * reload1.c (order_regs_for_reload): Init all elements ! 3176: of potential_reload_regs to -1. ! 3177: ! 3178: * Prevent generation of (set (reg) (plus ... (label_ref ...))). ! 3179: * explow.c (memory_address_noforce): Like `memory_address' but ! 3180: never force it into a register. ! 3181: * expr.c (do_tablejump): Use that. ! 3182: * m68k.md (casesi): Use that. ! 3183: ! 3184: * rtl.h (struct rtx_def, GET_CODE, PUT_CODE): If SHORT_ENUM_BUG, ! 3185: define the `code' field as a short. ! 3186: ! 3187: Wed Jun 15 01:25:57 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3188: ! 3189: * gcc.c (CPP_SPEC): New spec set by config.h gives flags to cpp. ! 3190: * tm-*.h for m68k: Define CPP_SPEC to define __HAVE_FPU__ on ! 3191: appropriate conditions. ! 3192: ! 3193: * combine.c (subst): Simplify (not (minus x 1)) and (neg (minus x y)). ! 3194: ! 3195: Mon Jun 13 02:22:43 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) ! 3196: ! 3197: * typecheck.c (build_array_ref): Avoid duplicate errmsg if index ! 3198: is an error-mark. ! 3199: ! 3200: Sun Jun 12 23:04:39 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) ! 3201: ! 3202: * cccp.c (handle_directive): If -traditional, quotes aren't special. ! 3203: (rescan): Assume newline ends a string constant. ! 3204: ! 3205: * cccp.c, cexp.y: Make all fcns non-static; add some forward decls. ! 3206: ! 3207: * various: add static forward-decls for various functions. ! 3208: ! 3209: Fri Jun 10 00:25:18 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3210: ! 3211: * reload1.c (choose_reload_targets): When writing back an incremented ! 3212: value (handling reload_inc), write back to the real place, not to ! 3213: OLDEQUIV (a register that holds the same value). ! 3214: ! 3215: * tm-m68k.h (LEGITIMIZE_ADDRESS): Don't give force_operand a target. ! 3216: This can cause the use of multiple insns with same output reg, ! 3217: which can confuse cse. ! 3218: ! 3219: * loop.c (consec_sets_invariant_p): ! 3220: If invariant_p ever returns 2, we return 2. ! 3221: New arg is # of consecutive sets to look for, ! 3222: since this info is no longer in n_times_set at move_movables. ! 3223: (scan_loop): If consec_sets_invariant_p returns 2, set m->cond. ! 3224: (move_movables): check consecutive insns if m->consec && m->cond. ! 3225: ! 3226: * tm*.h: ASM_DECLARE_FUNCTION_NAME now takes 3rd arg, ! 3227: the FUNCTION_DECL node. ! 3228: * varasm.c (assemble_function): Pass this arg. ! 3229: ! 3230: * expr.c (expand_call, expand_builtin [alloca]): ! 3231: If STACK_POINTER_OFFSET is defined, add it to stack pointer contents ! 3232: before using it as address of actual data on the stack. ! 3233: * stmt.c (expand_decl): Likewise. ! 3234: ! 3235: * stmt.c (assign_parms): If 1st parm named `__builtin_va_alist' ! 3236: came in regs, pretend it came on stack. ! 3237: Handle pretending a BLKmode var came on the stack. ! 3238: If REG_PARM_STACK_SLOT, count stack space for each parm ! 3239: even if the parm came in a register; and use that stack space ! 3240: if the parm needs to be addressable or is BLKmode. ! 3241: Rearrange to simplify conditionals. ! 3242: ! 3243: Thu Jun 9 01:21:29 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3244: ! 3245: * local-alloc.c: ! 3246: `qty_...' vectors' elements for hard-reg-numbers now aren't used. ! 3247: `reg_qty' elements for hard-reg numbers now aren't used, ! 3248: and the element for a pseudo is never a hard-reg number. ! 3249: (local_alloc): No need to reset those elements. ! 3250: No need to reset elements out of range of prev block's NEXT_QTY. ! 3251: (reg_is_born, reg_is_set, wipe_dead_reg): ! 3252: Divide labor in same way for hard regs and pseudos; ! 3253: simplify using fact that locality-to-basic-block has been precomputed ! 3254: and recorded in reg_qty; avoid refs to reg_qty[HARDREG]. ! 3255: (reg_is_born, wipe_dead_regs): Block-number arg no longer needed. ! 3256: ! 3257: * local-alloc.c (combine_regs): Remove old code for tying hard regs ! 3258: to pseudos; great simplification results. ! 3259: Use find_regno_note, not regno_dead_p. ! 3260: ! 3261: Wed Jun 8 00:18:04 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3262: ! 3263: * reload.c (subst_reg_equivs): Set a flag if anything is changed. ! 3264: (find_reloads_address): Check that flag to avoid extra work. ! 3265: Also check early for safe reg+const address and avoid work. ! 3266: ! 3267: * reload.c (find_reloads): Use loops instead of bcopy. ! 3268: Check early for insn with no real constraints, and return. ! 3269: Also check for move from hard reg to hard reg and return. ! 3270: ! 3271: * cse.c (canon_reg): Rewrite for speed; use a switch. ! 3272: (cse_insn): Don't call find_reg_note if REG_NOTES is 0. ! 3273: ! 3274: * cse.c (cse_insn): Store modified SET_SRC even if there's a REG_EQUIV. ! 3275: Inhibition was needed when the SET_SRC was the only place to find the ! 3276: equivalent value; now it is in the REG_EQUIV note. ! 3277: ! 3278: * stmt.c (expand_asm_operands): If NINPUTS is 0, make vec of no elts. ! 3279: * regclass.c (reg_scan_mark_refs): Don't lose if XVEC (x,i) is 0. ! 3280: ! 3281: Tue Jun 7 03:51:28 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3282: ! 3283: * stmt.c (assign_stack_local): If big-endian and MODE is narrow, ! 3284: the bytes actually used are the least significant. ! 3285: ! 3286: * parse.y (skip_white_space): Accept char as arg; let caller read it. ! 3287: (yylex): Change call. ! 3288: (check_newline): Return 1st nonwhite char after skipping lines. ! 3289: (skip_white_space): Change call. ! 3290: * toplev.c (compile_file): Change call. ! 3291: ! 3292: * gcc.c: Pass -traditional to cc1. ! 3293: ! 3294: * cse.c (cse_insn): Return very early for (set (reg) (call...)). ! 3295: Mainly to save time. ! 3296: (cse-insn) Old code to add REG_WAS_0 note wasted time but did nothing. ! 3297: ! 3298: * expr.c (clear_pending_stack_adjust): Really do clear it, ! 3299: if current fcn doesn't want to be inline. ! 3300: ! 3301: * cse.c (cse_insn): Speedup: instead of safe_hash, use canon_hash ! 3302: or HASHREG. ! 3303: ! 3304: Mon Jun 6 21:47:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3305: ! 3306: * jump.c (rtx_renumbered_equal_p): Reject ADDR_VEC fast. ! 3307: ! 3308: * cse.c (cse_insn): Ignore a REG_EQUIV or REG_EQUAL note if the ! 3309: equivalent value is the same as the SET_SRC of the insn. ! 3310: ! 3311: * flow.c (life_analysis): Don't call volatile_refs_p for a CALL_INSN; ! 3312: just assume value is 1. ! 3313: (propagate_block): Don't call mark_{used,set}_regs for a stack-pop ! 3314: since if it isn't dead it has no effect on any useful life data. ! 3315: (mark_set_1): Return quickly if setting stack-ptr, and almost as ! 3316: quickly if setting any hard reg. ! 3317: (mark_used_regs): Likewise for refs. ! 3318: Also don't scan the vector of an ADDR_VEC or ADDR_DIFF_VEC. ! 3319: (volatile_refs_p): Likewise. ! 3320: ! 3321: * varasm.c (output_constant): Discard NOP_EXPR and CONVERT_EXPR ! 3322: in integer case (they were for casting a pointer). ! 3323: ! 3324: * parse.y (compstmt_or_error): Parse a compstmt after ignoring error. ! 3325: Use this for fctn body so that an error after store_parm_decls ! 3326: won't recover to xdecls and call store_parm_decls again. ! 3327: Typical cause was missing semi at end of last parmdecl. ! 3328: ! 3329: * parse.y: Add missing semicolons in actions. ! 3330: (yylex): Don't use yylloc. ! 3331: ! 3332: Sun Jun 5 16:14:40 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3333: ! 3334: * typecheck.c (build_array_ref): Check arg types here, to make ! 3335: error message more accurate (not about "addition"). ! 3336: ! 3337: Thu Jun 2 02:41:40 1988 Richard Stallman (rms at rice-krispies.ai.mit.edu) ! 3338: ! 3339: * cccp.c (collect_expansion): `#' isn't special if -traditional. ! 3340: ! 3341: * dbxout.c (dbxout_parms): Don't output a regparm symbol ! 3342: unless the parm got a hard reg assigned. ! 3343: ! 3344: * tm-encore.h (ASM_OUTPUT_DOUBLE): Use 0f... not 0d... ! 3345: ! 3346: * tm-vax.h (CHECK_FLOAT_VALUE): Define this. ! 3347: ! 3348: Wed Jun 1 17:13:00 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3349: ! 3350: * expr.c (expand_call): Have sequence points between args. ! 3351: ! 3352: Tue May 31 00:27:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3353: ! 3354: * expmed.c (store_fixed_bit_field): Avoid shifting by 32. ! 3355: * cse.c (fold_rtx): ! 3356: * symout.c (subrange_p): likewise. ! 3357: ! 3358: * local-alloc.c (block_alloc): If operands 1 and 2 commute, ! 3359: try tying output to operand 2 if operand 1 won't do. ! 3360: ! 3361: * toplev.c (compile_file): Pass main_input_file to symout_init. ! 3362: ! 3363: * tree.c (build_real, build_real_from_int_cst): ! 3364: Call CHECK_FLOAT_VALUE if it's defined, to report out-of-range values. ! 3365: ! 3366: * tree.c (build_real, build_real_from_int_cst): New 1st arg TYPE. ! 3367: * parse.y (yylex): Pass this arg; requires parsing suffixes first. ! 3368: * fold-const.c (fold, combine, fold_convert): Pass this arg. ! 3369: Handling of float binops in `combine' simplified. ! 3370: ! 3371: * tm-encore.h (CPP_PREDEFINES): Remove -Dencore since CC lacks it. ! 3372: ! 3373: * final.c (output_source_line): Let ASM_OUTPUT_SOURCE_LINE ! 3374: be used for SDB also. ! 3375: ! 3376: Mon May 30 00:21:15 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3377: ! 3378: * cse.c (insert): Was inserting in wrong place in list. ! 3379: (exp_equiv_p): Was failing to check validity when x == y. ! 3380: ! 3381: * tree.c (build_pointer_type): Handle saveable_obstack ! 3382: like current_obstack. ! 3383: ! 3384: * decl.c (finish_decl): Error in test for zero-size array warning. ! 3385: ! 3386: * reload.c (find_equiv_reg): New arg MODE specifies mode in which ! 3387: an equivalent value is needed. Equivalence must be good in that mode. ! 3388: In addition, notice overlap with multiword register modes. ! 3389: Simplify, knowing that registers have already been renumbered. ! 3390: It was invalidating memory-goals too easily; setting a reg ! 3391: only invalidates memory-goal if its address varies. ! 3392: * reload.c, reload1.c, jump.c: Calls pass the new argument. ! 3393: ! 3394: * cccp.c: For correct ANSI, must reject `$' in identifiers. ! 3395: (dollars_in_ident): Variable says whether to allow them. ! 3396: (rescan): Handle `$' as randomchar if that's 0. ! 3397: (main): dollars_in_ident is set to 0 by -$, to 1 by -traditional. ! 3398: (rescan, do_define): Delete former pedantic warnings for `$'. ! 3399: (initialize_char_syntax, initialize_builtins): Inits split to two ! 3400: functions; former is called after options are scanned ! 3401: so `$' is in is_idchar conditionally. ! 3402: * gcc.c: For -ansi, pass -$ to cccp. ! 3403: * toplev.c, flags.h: Define dollars_in_ident. ! 3404: * parse.y (yylex): Treat $ as punctuation unless dollars_in_ident. ! 3405: Delete old pedantic warning about $. ! 3406: * tm-vms.h: Define DOLLARS_IN_IDENTIFIERS as 1. ! 3407: ! 3408: * cccp.c (rescan): Preprocessing numbers can have signs, after `e'. ! 3409: ! 3410: * integrate.c (expand_inline_function): Abort, don't return failure, ! 3411: if max_regno is too low. I believe this can't happen. ! 3412: ! 3413: * typecheck.c (build_binary_op_nodefault): ! 3414: For ordered comparisons, no pedantic warning about void *. ! 3415: For MAX, MIN, ditto, and also don't allow pointer vs 0. ! 3416: ! 3417: * typecheck.c (build_unary_op): Don't allow pointer for +. ! 3418: ! 3419: * typecheck.c (convert_for_assignment): ! 3420: Add missing warning for case of unrelated pointer types. ! 3421: Change criteria for new ANSI C draft. ! 3422: ! 3423: * optabs.c (expand_binop): Don't set unused target_is_not_an_operand. ! 3424: ! 3425: * fold-const.c (fold_convert): Don't set unused inprec, outprec. ! 3426: ! 3427: * emit-rtl.c, parse.y: Delete unused var. ! 3428: ! 3429: * stor-layout.c (add_vc_sizes): Unused function deleted. ! 3430: * loop.c (constant_high_bytes): #if 0 this unused function. ! 3431: ! 3432: * gcc.c (fatal): Add missing arg to delete_temp_files. ! 3433: ! 3434: * cccp.c (dump_defn_1): Add missing arg to skip_quoted_string. ! 3435: ! 3436: * reload.c (find_reloads): If constraints don't fit in an `asm', ! 3437: print error instead of aborting. ! 3438: ! 3439: * regclass.c (reg_class_record): Ignore `&' in constraint. ! 3440: ! 3441: Sun May 29 00:20:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3442: ! 3443: * Makefile: Run ranlib only if /usr/bin/ranlib exists. ! 3444: Add comment saying what to do on system V. ! 3445: ! 3446: * tree.c (suspend_momentary): Switch to the saveable_obstack ! 3447: for the sake of inline functions. ! 3448: ! 3449: * flags.h (enum debugger): New enum for write_symbols. ! 3450: * toplev.c, varasm.c, final.c: Use the enum constants where appro. ! 3451: Add calls to sdbout paralleling the calls to dbxout; ! 3452: put each in the appropriate conditional {SDB,DBX}_DEBUGGING_INFO. ! 3453: ! 3454: * toplev.c (main): Delete -noreg option; it's now the default. ! 3455: Make -O an alias for -opt. Rename -g to -gg. -g is alias for -G. ! 3456: Accept and ignore -Wtrigraphs. ! 3457: * gcc.c: Simplify the specs. ! 3458: ! 3459: * toplev.c (compile_file), tm-*.h: ! 3460: ASM_FILE_START is now a statement, not just a string to be output. ! 3461: Output it *after* determining the real source file name. ! 3462: ! 3463: * fold-const.c (fold): Simplify x >= CST to x > CST-1 (CST positive). ! 3464: To simplify this, canonicalize relationals to put constat last. ! 3465: ! 3466: * decl.c (duplicate_decls): Make a 2nd errmsg to show previous decl. ! 3467: ! 3468: * cccp.c (file_size_and_mode): Delete temporary VMS bootstrap patch. ! 3469: ! 3470: * tm-att386.h: New file. ! 3471: ! 3472: * decl.c (pushdecl): Warn if a local `extern' decl precedes ! 3473: a file-scope `static' decl. ! 3474: ! 3475: * expr.c (expand_call): No warning for failure to inline. ! 3476: ! 3477: * expmed.c (extract_bit_field): copy operand 1 of extv or extzv ! 3478: into register if memory isn't allowed. ! 3479: ! 3480: Sat May 28 02:10:56 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 3481: ! 3482: * gnulib.c, Makefile: Delete va_end. ! 3483: ! 3484: * final.c, symout.c: Check DBX_DEBUGGING_INFO, not NO_DBX_FORMAT. ! 3485: ! 3486: * genemit.c (gen_expand): Notice a CALL inside a PARALLEL. ! 3487: ! 3488: * regclass.c (init_reg_sets_1): Part of init_reg_set is put in this ! 3489: new fn which is called after options are scanned. ! 3490: Now CONDITIONAL_REGISTER_USAGE can depend on the options. ! 3491: (fix_register): Just alter the data that init_reg_sets_1 will look at. ! 3492: ! 3493: * reload1.c (reload): Don't complain if two different but tieable ! 3494: modes require groups of the same regclass (assuming same size group). ! 3495: ! 3496: * cccp.c: Add 3rd arg to all `open' calls. ! 3497: ! 3498: * parse.y (check_newline): Typo prevented ignoring whitespace. ! 3499: ! 3500: * cccp.c (perror_with_name): fprintf had harmful extra arg. ! 3501: ! 3502: * cccp.c (main, trigraph_pcp): -Wtrigraphs means warn if any trigraphs. ! 3503: ! 3504: * emit-rtl.c (gen_sequence): If LEN is 1, avoid looking at PATTERN ! 3505: of something that doesn't have one. ! 3506: ! 3507: * reload1.c (alter_frame_pointer_addresses): frame pointer can ! 3508: occur by itself, not just inside a PLUS. ! 3509: (reload): Call eliminate_frame_pointer before reload_as_needed. ! 3510: Otherwise the latter can make reload insns that copy the frame ptr ! 3511: to a data reg, but 68k can't copy sp+const to a data reg. ! 3512: ! 3513: * decl.c (implicitly_declare): Always save the implicit decl ! 3514: permanently. Reuse an old one if it exists. ! 3515: * tree.c (resume_temporary_allocation): Used after `end_temporary...' ! 3516: to go back to temporary allocation. ! 3517: ! 3518: * stor-layout (layout_{type,decl}): Call variable_size. ! 3519: (variable_size): Turn a size into a SAVE_EXPR and either compute ! 3520: it right away or put it on a list to be computed later. ! 3521: (get_pending_sizes): Return that list and clear it out. ! 3522: * stmt.c (expand_start_function): Tell `variable_size' to compute ! 3523: sizes right away, and compute those saved on the list. ! 3524: (expand_end_function): Tell it to put them on a list. ! 3525: ! 3526: Fri May 27 00:02:34 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) ! 3527: ! 3528: * dbxout.c (dbxout_symbol): For local static var, use 'V', not 'v'. ! 3529: ! 3530: * gcc.c (main): Don't handle SIGHUP or SIGTERM if shell ignored it. ! 3531: ! 3532: * Makefile, gcc.c: Propagate Make var `libdir' to gcc search path. ! 3533: ! 3534: * expr.c (expand_expr): a PARM_DECL with no rtl can occur in size of ! 3535: `a' in `foo (a,i) int i; struct {int x[i];} a;', so report an error. ! 3536: ! 3537: * flow.c (insn_dead_p): insn that makes stack bigger is never dead. ! 3538: * combine.c (try_combine): Don't splice out stores into stack ptr. ! 3539: ! 3540: * reload.c (find_equiv_reg): Test given regno for OVERLAPPING_REGNO_P. ! 3541: ! 3542: * varasm.c (assemble_variable): Use saveable_obstack for allocation. ! 3543: ! 3544: Thu May 26 01:17:00 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) ! 3545: ! 3546: * integrate.c (save_for_inline): Clear unused slots in parmdecl_map. ! 3547: (There may be some non-parm regs below max_parm_regno.) ! 3548: * integrate.c (copy_for_inline): Don't crash if parmdecl_map elt is 0. ! 3549: ! 3550: * Don't fail to output a static inline function that was referenced ! 3551: via a local extern decl before its definition. ! 3552: * expr.c (expand_call): If need to mark a fcn decl addressable, ! 3553: mark the identifier addressable also. ! 3554: * typecheck.c (mark_addressable): If marking fcn addressable, ! 3555: mark the identifier as well. ! 3556: * decl.c (start_function): If identifier was marked addressable, ! 3557: propagate it to the function. ! 3558: ! 3559: * parse.y (yylex): Check for ERANGE after atof is called. ! 3560: (Sun doesn't report ERANGE.) ! 3561: ! 3562: * loop.c (may_trap_p): Any floating arithmetic may trap. ! 3563: ! 3564: Wed May 25 00:03:34 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) ! 3565: ! 3566: * parse.y: Delete `noalias'. ! 3567: (asm_operand): Don't allow this to be empty. ! 3568: (asm_operands): Do allow this to be empty. ! 3569: ! 3570: * reload.c (operands_match_p): Don't let REG and SUBREG match ! 3571: if the reg isn't a hard reg. ! 3572: No longer nec. to check reg_renumber, now that reload ! 3573: substitutes the hard regno. ! 3574: ! 3575: * reload1.c (reload): Counting existing spilled groups, ! 3576: check HARD_REGNO_MODE_OK so we don't get fooled by an odd-even pair. ! 3577: Spill entire need for new groups before spilling any solitary regs. ! 3578: Reg already counted against max_nongroups can't become part of a group. ! 3579: (new_spill_reg): Do bookkeeping associated with a new spill-reg. ! 3580: (n_spills): This var is now static, no longer passed as arg ! 3581: within the file. ! 3582: ! 3583: (reload_reg_class_lower): Handle all group-reloads before solitaries. ! 3584: (choose_reload_targets): therefore #if 0 the special code for ! 3585: finding solitary registers that aren't suitable for groups. ! 3586: But fix two bugs in it: braino deciding whether a reload ! 3587: is looking for 1 register (not a group). Use CLASS_MAX_NREGS. ! 3588: Also braino deciding whether a spill reg can be in a group. ! 3589: Did not fix bug that it fails to test HARD_REGNO_MODE_OK, ! 3590: so it might split up an even-odd pair. ! 3591: ! 3592: * vax.md: Special patterns for 8 and 16-bit fields, to make ! 3593: move-insns (like the ones for the 68k). ! 3594: ! 3595: * tree.c (convert_to_integer): Pass truncation down thru COND_EXPR ! 3596: as through a binary operator. ! 3597: ! 3598: * typecheck.c (build_cond_expr): If unpromoted operand types match, ! 3599: don't promote them--let containing expression promote (just once). ! 3600: ! 3601: Tue May 24 14:46:26 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) ! 3602: ! 3603: * combine.c (subst): Simplify (subreg (sign_extend X) 0). ! 3604: ! 3605: * tm-hp9k320.h: Delete NO_DBX_FORMAT. ! 3606: * Most tm...h files: Define DBX_DEBUGGING_INFO. ! 3607: * dbxout.c: Change conditional to DBX_DEBUGGING_INFO. ! 3608: ! 3609: * integrate.c (expand_inline_function): If inline fcn was declared to ! 3610: return QI, but actually computes an SI, use SImode for INLINE_TARGET ! 3611: but actually return a QI. ! 3612: ! 3613: * varasm.c (force_const_mem): Failed to determine alignment bdry ! 3614: from machine mode. ! 3615: ! 3616: * jump.c (jump_optimize): Don't delete (move X Y) if X or Y is a ! 3617: PRESERVE_DEATH_INFO_REGNO_P register. ! 3618: ! 3619: * final.c (output_addr_const): In PLUS, output constant term last. ! 3620: ! 3621: * final.c (final): Before outputting an insn, do FINAL_PRESCAN_INSN. ! 3622: ! 3623: * final.c (next_block_index): No longer static. ! 3624: (final): Add SDB_DEBUGGING_INFO cases for outputing NOTEs ! 3625: for beginning and end of a block. ! 3626: (output_source_line): Add SDB_DEBUGGING_INFO case for line number. ! 3627: * varasm.c (assemble_function): Add code for SDB symbol output. ! 3628: ! 3629: * gnulib.c: Allow config to override INTIFY. ! 3630: New macro SFVALUE for data type to return a single-float in. ! 3631: ! 3632: * combine.c (remove_death): No longer `static'. ! 3633: ! 3634: * reload1. (choose_reload_targets): PRESERVE_DEATH_INFO_REGNO_P ! 3635: selects hard regs for which death info should be updated for final. ! 3636: ! 3637: * reload1.c (reload_as_needed): Let INSN_CLOBBERS_REGNO_P ! 3638: prevent inheritance of certain reloads. ! 3639: ! 3640: * reload.c (find_equiv_reg): Let OVERLAPPING_REGNO_P reject ! 3641: an equiv reg. Needed for funny float regs on 80387. ! 3642: ! 3643: * cccp.c (do_ident): Define #ident as a no-op if IDENT_DIRECTIVE. ! 3644: Warn if pedantic. ! 3645: (do_sccs): Warn if pedantic. ! 3646: ! 3647: * emit-rtl.c (restore_reg_data): Set cur_insn_uid--prevent duplicates. ! 3648: 1.1 root 3649: Sun May 22 12:25:06 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 3650: 3651: * Version 1.22 released. 3652: 3653: * reload1.c (reload): Spilling isn't finished till max_nongroups is 0. 3654: 3655: * tm-encore.h (PRINT_OPERAND): No `$' before a CONST. 3656: 3657: Sat May 21 13:08:54 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 3658: 3659: * fold-const.c (combine): Typo in MIN_EXPR, MAX_EXPR. 3660: 3661: * reload1.c (reload): Was counting insn_groups as total size of groups, 3662: not number of groups. 3663: A new spilled group counts against group-needs of superclasses. 3664: 3665: * parse.y (parmlist{,_or_identifiers}_1): In error case, 3666: return a tree list just as in the other cases. 3667: 3668: Fri May 20 02:14:51 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 3669: 3670: * config-vax.h, config-m68k.h: If __GNUC__, use builtin-alloca. 3671: 3672: * genpeep.c (match_rtx): Generated code was testing the wrong rtx 3673: when testing an int or string at a nonzero index in the rtx. 3674: 3675: * reload.c (find_reloads): Typo checking `modified' for conflict 3676: with an earlyclobber. 3677: 3678: * reload.c (find_equiv_reg): Reject stack ptr as return value. 3679: 3680: * expr.c (expand_builtin): Alloca must do pending stack adjust. 3681: 3682: Thu May 19 13:01:01 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 3683: 3684: * flow.c (propagate_block): Skipping back across libcall didn't happen 3685: due to failing to set PREV. 3686: 3687: * expr.c (emit_library_call): Code to increment and decrement 3688: current_args_size broke since emit_call_1 was changed to restore it. 3689: 3690: * combine.c (try_combine): When i1 or i2 auto-incs a reg, don't combine 3691: if i3 uses that reg. 3692: 3693: * config-hp9k3.h: #define bcopy, bcmp, bzero here. 3694: * conf-hp9k320.h: Delete file. 3695: 3696: * integrate.c: Don't include strings.h--no need. 3697: 3698: * stmt.c (expand_asm_operands): Don't make zero-length vectors. 3699: 3700: * loop.c (scan_loop): After a fcn call, maybe-trap insns can't move. 3701: The fcn call might exit and that would prevent the trap. 3702: 3703: * reload1.c (reload): Set reload_first_uid to next uid to be used. 3704: * reload.c (find_equiv_reg): Use reload_first_uid to ignore insns 3705: that are due to reloading--only if reload_reg_p is not 0 or 1. 3706: 3707: Wed May 18 22:11:20 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 3708: 3709: * typecheck.c (build_unary_op): Don't complain about array 3710: as argument to `!'. 3711: 3712: * decl.c (pushdecl): If locally declaring an extern function, 3713: check the identifier's global value in case it's an inline function. 3714: 3715: Mon May 16 03:06:08 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 3716: 3717: * output-ns32k.c (output_shift_insn): New fn, maybe turn shift to adds. 3718: (reg_or_mem_operand): Predicate for a non-immediate general_operand. 3719: * tm-ns32k.h (CONST_OK_FOR_LETTER_P): Define letter K. 3720: * ns32k.md: Use output_shift_insn for various addr insns that shift. 3721: Don't allow nonexplicit constants in lprd, multiply or truncate insns. 3722: Use reg_or_mem_operand for constraint in op1 of divide insns; 3723: a constant there causes regclass to screw up. 3724: Split alternative constraints on the bit-field insns to avoid 3725: out-of-range operands in exts, inss. Some cases of extraction 3726: can be done faster via memory. 3727: 3728: * flow.c (mark_set_1): When adding a REG_DEAD note, inc reg_n_deaths. 3729: 3730: * dbxout.c (dbxout_type_def): Do nothing for {integer,char}_type_node. 3731: 3732: Sun May 15 00:56:44 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 3733: 3734: * tm-sequent.h, tm-ns32k.h, tm-encore.h (PRINT_OPERAND): 3735: Was treating SF's as SI's. 3736: 3737: * expr.c (emit_move_insn): Check all CONST_DOUBLEs for 3738: LEGITIMATE_CONSTANT_P and put them in memory if not. 3739: 3740: * local-alloc.c (combine_regs): Allow a reg to be tied to a qty 3741: if the reg's class is contained in the qty's class 3742: (as well as if the reg's class contains the qty's class as before). 3743: Rename qty_reg_class to qty_min_class and make it the smallest 3744: class of any reg tied to the qty. 3745: (reg_class_subset_p, reg_meets_class_p, update_qty_class): 3746: New subroutines to implement this. 3747: (local_alloc): Init reg_qty to -1 for pseudos not in cur. basic block. 3748: (reg_is_born): Abort if pseudo not in basic block has -2 in reg_qty. 3749: 3750: * jump.c (rtx_renumbered_equal_p): Insist that modes of REGs match. 3751: 3752: Sat May 14 01:05:35 1988 Richard Stallman (rms at lucky-charms.ai.mit.edu) 3753: 3754: * stmt.c (expand_return): Empty frame frame_offset isn't nec. 0. 3755: 3756: * expr.c (emit_call_1): Use stack_size_rtx everywhere appropriate. 3757: 3758: * decl.c (init_decl_processing): Set sizetype to `unsigned long' 3759: if `int' is less than a word. 3760: 3761: * stddef.h (size_t, ptrdiff_t): Both are now long. 3762: 3763: Fri May 13 01:06:00 1988 Richard Stallman (rms at lucky-charms.ai.mit.edu) 3764: 3765: * emit-rtl.c (gen_lowpart): Handle non-lowpart subreg as arg. 3766: 3767: * recog.c (register_operand): VOIDmode means allow any mode. 3768: (immediate_operand, nonmemory_operand): Likewise. 3769: 3770: * emit-rtl.c (classify_insn): Update for changed CALL_INSN format. 3771: (emit): New function to emit an rtl pattern as the right kind of insn. 3772: * jump.c (simplejump_p): No longer static. 3773: 3774: * genemit.c (gen_expand): For match_operand at top level, call `emit'. 3775: Use `emit_call_insn' when appropriate. 3776: (gen_exp): Handle rtx's that contain strings. 3777: 3778: * final.c, symout.c: If not NO_DBX_FORMAT, include stab.h to get the 3779: N_... symbols. Use their default definitions only if they're undef. 3780: 3781: * expr.c (expand_call) [no PUSH_ROUNDING]: Always set argblock 3782: if there are any stack-passed arguments. 3783: 3784: * typecheck.c (build_unary_op): Mark all increment-exprs volatile. 3785: 3786: * recog.c (reg_renumbered_fits_class_p): Delete private copy of 3787: reg_class_contents. 3788: 3789: * reload1.c (forget_old_reloads): Handle PARALLEL case by recursion. 3790: Explicit store into a spilled reg invalidates old reloaded contents; 3791: this can occur when we drop through into a basic block whose need was 0 3792: (and so whose local pseudos were not spilled). 3793: 3794: * gcc.c (main): If -v, print gcc's own version; also no error msg 3795: if no input files. 3796: 3797: * loop.c (may_trap_p): Mem ref to nonconstant address may trap. 3798: (scan_loop): Check may_trap_p only when insn is in other respects ok. 3799: 3800: * cexp.y: #include config.h (for decl of alloca on some machines). 3801: 3802: Thu May 12 17:24:19 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 3803: 3804: * regclass.c (regclass): When inserting an insn at start of block, 3805: update basic_block_head. 3806: 3807: Wed May 11 00:47:09 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) 3808: 3809: * stmt.c (assign_parms): DECL_OFFSET should be offset as passed 3810: (not including big-endian width-change correction). 3811: 3812: * typecheck.c (shorten_compare): Set unsignedp[01] right in case 3813: where get_narrower makes no change. 3814: (build_binary_op_nodefault): Likewise for shortening shifts. 3815: 3816: * stmt.c (expand_end_case): Use type_for_size to get the type 3817: to convert the index to, since `int' is wrong if -mshort. 3818: 3819: * decl.c (grokdeclarator): Don't check PARM type for completeness. 3820: (grokparms): If fn definition, check all parm types for completeness. 3821: (store_parm_decls): Likewise. 3822: 3823: Tue May 10 22:42:13 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) 3824: 3825: * typecheck.c (store_init): For invalid init, store error_mark_node. 3826: * varasm.c (assemble_variable): Ignore error_mark as an init. 3827: * stmt.c (expand_decl): If init is error_mark, init to 0 if possible. 3828: This avoids a spurious "uninitialized variable" warning. 3829: 3830: Sun May 8 17:08:07 1988 Richard Stallman (rms at lucky-charms.ai.mit.edu) 3831: 3832: * tm-hp9k320.h: Define STRUCTURE_SIZE_BOUNDARY. 3833: 3834: * decl.c (get_parm_info): Replaces get_parm_types. Returns a tree_list 3835: containing parmdecls and tag list as well as type list. 3836: (grokparms): Accept that tree_list as argument. 3837: (grokdeclarator): Calling grokparms, say "not a definition" for the 3838: function declarators for arg or value types within a definition. 3839: 3840: * parse.y: Call get_parm_info. 3841: (parmlist_or_identifiers): If identifiers, make a tree_list 3842: like the one get_parm_info returns. 3843: 3844: Fri May 6 16:44:19 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 3845: 3846: * m68k.md (casesi): Delete template aside from match_operand's. 3847: 3848: * tm-encore.h: New file from Robert Brown. 3849: 3850: * ns32k.md: Use %c in some addr insns. 3851: (tst*): Use {d,f,}const0_rtx to make the constant 0; OS-independent. 3852: (call, call_value): Use %? before address in a bsr. 3853: 3854: * output-ns32k.c (print_operand_address): To output a local label, 3855: use `output_asm_label'. 3856: Make SEQUENT_ADDRESS_BUG conditionals happen at compile time. 3857: 3858: * tm-ns32k.h: Delete SEQUENT_HAS_FIXED_THEIR_BUG. 3859: (PRINT_OPERAND): Output nothing for `%?'. 3860: * tm-sequent.h: (PRINT_OPERAND): Output nothing for `%?'. 3861: 3862: * final.c (output_asm_label): No longer `static'. 3863: 3864: Thu May 5 09:03:37 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 3865: 3866: * explow.c (memory_address): Ignore flag_force_reg unless optimize. 3867: Also ignore it for addresses of stack slots (avoid invalid REG_EQUIVs). 3868: 3869: * typecheck.c (digest_init): If traditional, allow `char x[100]=0;'. 3870: 3871: * tree.c (get_unwidened): Don't alter a COMPONENT_REF if 3872: innerprec equals the precision of the existing type. 3873: It was changing pointers to integers. 3874: 3875: * m68k.md (movdi): Put all fpregs in separate constraint alternatives 3876: and handicap them so spill reg won't be an fp reg. 3877: 3878: * parse.y (yyerror): Use the arg as part of the error message. 3879: 3880: * decl.c (start_function): Give the RESULT_DECL type int rather 3881: than char or short. 3882: * typecheck.c (c_expand_return): Convert value from fn's return type 3883: to the RESULT_DECL's type. 3884: 3885: * Avoid generating dbx xrefs to enums, since dbx loses on them. 3886: Do this by outputting all types in order of definition. 3887: This is done only for top-level types; problem remains for local ones. 3888: 3889: * decl.c (finish_decl): Do rest_of_decl_compilation for TYPE_DECLs. 3890: * toplev.c (rest_of_decl_compilation): Do dbxout_symbol for them. 3891: 3892: * dbxout.c (dbxout_symbol): Check DECL_RTL only for fns and variables. 3893: For a TYPE_DECL, ignore it if the type was already output 3894: and its preferred name is the TYPE_DECL. Else output type in full. 3895: 3896: * decl.c (pushdecl): Don't prefer typedef names to type tag names. 3897: 3898: * stor-layout.c (chain_type): Build chain in forward order. 3899: 3900: 3901: * tm-3b1.h (ASM_OUTPUT_CASE_LABEL): Error getting length of table. 3902: 3903: * tm-3b1.h: #define SGS_3B1 was missing. 3904: 3905: * typecheck.c (build_compound_expr): Ignore non-volatile subexprs. 3906: 3907: * fold-const.c (fold): Simplify (unsigned) foo >= 0, etc. 3908: 3909: * stor-layout.c (layout_type): Set TYPE_PRECISION of ptr types. 3910: 3911: Wed May 4 08:06:25 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 3912: 3913: * parse.y: Don't use the Bison @ construct, since it makes parser slow. 3914: 3915: * decl.c (finish_function): Delete FILENAME and LINE args. 3916: 3917: * typecheck.c (digest_init): No pedantic warning for array="string". 3918: 3919: Tue May 3 09:09:30 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 3920: 3921: * toplev.c (main): Ignore `-Wcomment'. 3922: * gcc.c: Pass -Wall to cpp (which treats it like -Wcomment). 3923: 3924: * tm-isi68.h: Greatly simplified; now works only with GAS. 3925: 3926: * tm-m68k.h (EMPTY_FIELD_BOUNDARY): now 16 (right on Sun, ISI and HP). 3927: * tm-sun3.h: No need to redefine it. 3928: 3929: * decl.c (finish_struct): Don't ever make DECL_ALIGN smaller. 3930: 3931: * decl.c: Rename min, max to MIN, MAX. 3932: 3933: * typecheck.c (convert_for_assignment): Avoid warning if assigning 3934: a `void *' from a `const void *'. 3935: 3936: * combine.c (FAKE_EXTEND_SAFE_P): Turn off for mem refs; avoid faults. 3937: 3938: Mon May 2 07:28:27 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 3939: 3940: * tm-vax.h: Support -mg switch to use g-float instead of d-float. 3941: New macros TARGET_G_SWITCH, ASM_DOUBLE_CHAR. 3942: Changes in TARGET_SWITCHES, ASM_OUTPUT_DOUBLE. 3943: Define code `#' for PRINT_OPERAND. 3944: * vax.md: use `#' in opcodes for doubleword float. 3945: 3946: * tm-vax.h: Define UDIVSI3_LIBCALL and UMODSI3_LIBCALL. 3947: 3948: * cccp.c (main, do_include): Implement -I- switch. 3949: 3950: * jump.c (jump_optimize): When hunting NOTE_INSN_FUNCTION_END, 3951: skip final RETURN (found on the vax). 3952: 3953: * toplev.c (main): -Wall is equiv to all -W switches combined. 3954: 3955: * stmt.c (expand_decl, expand_end_bindings, 3956: expand_{start,end}_function). The -noreg treatment of `register' vars 3957: is extended to vars used as addresses of vars in memory (varying-size 3958: structures). 3959: (use_variable): Emit USE for regs used in specified rtx. 3960: 3961: * cse.c (fold_cc0): Stack-frame addresses are always nonzero. 3962: (fold_rtx): 0200 bit in prev_insn_cc0 means only zeroness is known. 3963: 3964: * parse.y (parmlist): poplevel needs 3 args. 3965: 3966: Sun May 1 07:20:34 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 3967: 3968: * decl.c (start_function): typo checking for incomplete return type. 3969: 3970: * emit-rtl.c (restore_reg_data): If a pseudo appears nowhere, 3971: don't leave its slot empty; create a pseudo for that slot. 3972: 3973: * Version 1.21 released. 3974: 3975: * expr.c (expand_call): Merge duplicate code for structure_value_addr. 3976: 3977: * emit-rtl.c (restore_reg_data): Delete error check; it's legit for 3978: a pseudo reg to appear nowhere in the rtl. 3979: 3980: Sat Apr 30 07:35:31 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 3981: 3982: * integrate.c (copy_rtx_and_substitute): Fix typo for arg_pointer_rtx. 3983: 3984: * decl.c (poplevel): Undo previous change with #if 0. 3985: 3986: * stmt.c: `struct nesting' now records the depth on the stack. 3987: Each expand_start... must update and record the depth; 3988: each expand_end... uses macro POPSTACK to pop. 3989: This way, if a level isn't explicitly popped, it won't cause 3990: circular structure. 3991: 3992: * dbxout.c (dbxout_type): Replace with main variant only if incomplete. 3993: 3994: * typecheck.c (build_unary_op): Test of `pedantic' was backwards. 3995: 3996: * expr.c (STACK_BYTES): Typo in definition. 3997: 3998: * typecheck.c (build_binary_op_nodefault): Rename code1 to code0, 3999: and likewise for code2, tt1, tt2. 4000: 4001: * expr.c (expand_call): Wrong arg order for warning_with_decl. 4002: 4003: Fri Apr 29 08:41:06 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4004: 4005: * integrate.c (copy_decl_tree): New arg is depth in recursion. 4006: Always discard the outermost LET_STMT being copied; never discard any 4007: others. This way the copied LET_STMTs correspond to the copied NOTEs. 4008: 4009: * varasm.c (decode_rtx_const): For SYMBOL_REF, use string address 4010: not address of the rtx. Library fns have only one copy of the name 4011: but many copies of the SYMBOL_REF. 4012: 4013: * expr.c (emit_call_1): New arg OLD_ARGS_SIZE is used to reset 4014: current_args_size. 4015: (emit_library_call, expand_call): Pass new arg; don't restore it here. 4016: 4017: * flow.c (life_analysis): Don't mark sp live at end if fn is empty. 4018: 4019: * parse.y (parse_or_identifiers_1): Handle `error' in here, not in 4020: callers notype_declarator etc. Also read the closeparen here. 4021: 4022: Thu Apr 28 12:43:52 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4023: 4024: * expmed.c (expand_shift): In extzv strategy, handle the operand 4025: predicates for operands 0, 1 and 3. (Not needed for 2.) 4026: * vax.md: extzv pattern for SImode op1 must recognize general_operand 4027: since the pattern named "extzv" allows them. 4028: 4029: Wed Apr 27 00:52:44 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4030: 4031: * expr.c (emit_call_1): New arg NEXT_ARG_REG describes # regs 4032: used for passing args. 4033: (emit_library_call, expand_call): Provide that argument. 4034: 4035: * explow.c (round_push): New fn: round arg up to STACK_BOUNDARY. 4036: * expr.c (expand_builtin): Use round_push on size for __builtin_alloca. 4037: * stmt.c (expand_decl): Likewise for variable-size objects. 4038: * expr.c (expand_call): Likewise for args_size.var. 4039: Also use STACK_BOUNDARY to round a constant arg-block size. 4040: Pass emit_call_1 that rounded value. 4041: (emit_library_call): Round arg_size with STACK_BOUNDARY. 4042: * tm-spur.h: Define STACK_BOUNDARY instead of ROUND_CALL_BLOCK_SIZE. 4043: * tm-m68k.h: Define STACK_BOUNDARY as 16. 4044: 4045: * expr.c (emit_call_1): Don't change current_args_size. 4046: (emit_library_call, expand_call): Always restore current_args_size 4047: to ambient value, after calling emit_call_1. 4048: 4049: * tm-hp9k320.h: Don't define USG here. 4050: * config-hp9k3.h: New file. USG defined here. 4051: 4052: * tm-3b1.h: #undef ASM_OUTPUT_ASCII (a defn came from tm-hp9k320.h). 4053: 4054: * decl.c (grokdeclarator primarily): Cast all RID_... to (int) before 4055: using them in arithmetic. Placates CC on Sequent. 4056: 4057: * emit-rtl.c (emit_jump_insn): Return proper value, for a SEQUENCE. 4058: * emit-rtl.c (emit_call_insn): Handle SEQUENCE like emit_jump_insn. 4059: 4060: Tue Apr 26 02:41:26 1988 Richard Stallman (rms at lucky-charms.ai.mit.edu) 4061: 4062: * cccp.c (macroexpand): If traditional, don't disable called macro. 4063: (macarg1): Was failing to count backslash-newline inside a string 4064: in a macro arg as part of file's linenumber. 4065: 4066: Mon Apr 25 18:46:53 1988 Richard Stallman (rms at lucky-charms.ai.mit.edu) 4067: 4068: * jump.c (jump_optimize): Don't do April 20 optimization on first 4069: iteration; let other simpler opts be done before this is considered. 4070: 4071: Sun Apr 24 02:45:28 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4072: 4073: * tree.c (staticp): a CONSTRUCTOR can be static. 4074: 4075: * varasm.c (output_constant_def): Always return memref, not address. 4076: 4077: * decl.c (complete_array_type): New fn, make an array type complete 4078: based on an initializer. 4079: (finish_decl): Use complete_array_type. 4080: * parse.y (expr_no_commas): When parsing a constructor, 4081: Use complete_array_type on constructors for incomplete array types. 4082: 4083: * typecheck.c (digest_init, store_init_value,process_init_constructor): 4084: It's now TREE_STATIC, not TREE_ADDRESSABLE, that records that all elts 4085: in a CONSTRUCTOR are simple constants. 4086: (digest_init): A CONSTRUCTOR with non-null type is treated as ordinary 4087: expression, not as a braced initializer. 4088: Allow init of an array from an array-valued expr; warn if pedantic. 4089: * expr.c (expand_expr, CONSTRUCTOR case): Put in memory only if static. 4090: Was making an extraneous level of MEM; output_constant_def does it all. 4091: 4092: * typecheck.c (build_unary_op): Allow ADDR_EXPR of static CONSTRUCTOR. 4093: (default_conversion): Likewise. 4094: (initializer_constant_valid_p): Constructor is ok if static. 4095: 4096: * gcc.c: Change -fnostd... to -nostd... 4097: * cccp.c (main): Likewise. 4098: 4099: * Everywhere: Use REG_NOTE_KIND to get the kind of a reg note. 4100: 4101: * rtl.c (find_regno_note): New function. 4102: * flow.c (flow_deadp): Deleted; caller uses find_regno_note. 4103: * global-alloc.c (reg_dead_p): Deleted. 4104: (global_conflicts): Use find_regno_note instead of reg_dead_p. 4105: 4106: * final.c (final) Use find_reg_note to look for a REG_INC. 4107: * combine.c (insn_has_inc_p): deleted; callers use find_reg_note. 4108: (try_combine): Use find_reg_note whenever looking for a REG_INC. 4109: (regno_dead_p, remove_death): Check the REG_NOTE_KIND before assuming 4110: that the datum in it is a REG. 4111: * reload1.c (reload): Use find_reg_note to find a REG_EQUIV. 4112: 4113: * gcc.c: Don't delete .o files if not all compilations succeed. 4114: (record_temp_file): New arg SUCCESS_ONLY--delete file only if succeed. 4115: (delete_temp_files): New arg SUCCESS says compilation succeeded. 4116: (store_arg): Now 3 possibilities for arg TEMPNAMEP; 2 = del on success. 4117: (do_spec_1): For %d, set delete_this_arg to 2. 4118: 4119: * decl.c (poplevel): Warn about any still-incomplete type-tags. 4120: 4121: Sat Apr 23 02:54:16 1988 Richard Stallman (rms at rice-krispies.ai.mit.edu) 4122: 4123: * expr.c (expand_builtin): For alloca, round arg up to multiple 4124: of PARM_BOUNDARY. Also to convert it to Pmode unless it already is. 4125: 4126: * stor-layout.c (layout_union): Bug in 14 April change: 4127: use caller-specified alignment as minimum, not as maximum. 4128: 4129: * parse.y (skip_white_space): Avoid infinite loop on unterm. comment. 4130: 4131: Fri Apr 22 00:22:59 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4132: 4133: * cccp.c: Text following #else or #endif is just a warning. 4134: (rescan): Digit-case was dropping into the $-case; reorder. 4135: 4136: * cccp.c (rescan): Comment start when -traditional was output as 4137: `/*'; should be nothing. 4138: 4139: * jump.c (jump_optimize): Fix prev change: 4140: do nothing if range1end == range2end; 4141: don't lose any NOTEs when splicing. 4142: 4143: * flow.c (propagate-block): For CALL_INSN, clobber the call-used regs 4144: only after mark_set_regs is done; avoids confusion about lifespan 4145: of function value reg. 4146: 4147: * gcc.c: Pass -Wcomment to cpp. 4148: 4149: * cccp.c (main, rescan): If -Wcomment, warn if `/*' inside comment. 4150: 4151: * decl.c (duplicate_decls): Ignore `inline' decl following definition. 4152: 4153: * m68k.md (casesi): Split it up into subroutines, so insns emitted 4154: by the call to memory_address (on 68000) come in the right place. 4155: 4156: * combine.c (record_dead_and_set_regs): Notice storing in a SUBREG. 4157: 4158: * integrate.c (expand_inline_function): Insn to copy a subroutine's 4159: return-value was being output twice, once incorrectly. 4160: 4161: * reload.c (find_equiv_reg): A stack-push insn does not invalidate 4162: an equiv for a goal in memory. 4163: Any other write to memory does invalidate any goal in memory 4164: (PARALLEL case failed to check for this). 4165: 4166: * expmed.c (expand_shift): In the extzv clause, force shifted value 4167: out of memory if -fforce-mem. 4168: 4169: * print-tree.c (prtypeinfo): Some attributes were missing. 4170: (dump): In ..._TYPE nodes, ignore the TREE_CHAIN field. 4171: 4172: * cse.c (note_mem_written): Pushing on stack does not invalidate mem. 4173: 4174: * vax.md (extv/andl peephole opt): Made incorrect code if output was 4175: pushed on stack. Added special case code. 4176: (extv, extzv for SImode operand): Require register_operand. 4177: 4178: Thu Apr 21 00:24:52 1988 Richard Stallman (rms at corn-chex.ai.mit.edu) 4179: 4180: * stmt.c (assign_parms): Round current_function_pretend_args_size up. 4181: 4182: * integrate.c: `pushlevel' arg was missing. 4183: 4184: * dbxout.c (dbxout_type): Undo rest of March 29 change: 4185: When a named type is first seen inside another type, output an xref 4186: and let the real definition come out later. 4187: It is strange that Sun dbx has sometimes appeared to demand 4188: one strategy and sometimes appeared to demand the other. 4189: 4190: * typecheck.c (convert_for_assignment): Allow conversion to or from 4191: `const void *', etc., unless pedantic. 4192: 4193: * decl.c (get_parm_types): For `foo (void){}', set last_function_parms 4194: to nil so store_parm_decls won't lose. 4195: 4196: * combine.c (subst): (plus (plus X N) -N) => X. 4197: 4198: * explow.c ({anti_,}adjust_stack): Don't make a copy of 4199: `stack_pointer_rtx'. 4200: 4201: * integrate.c (expand_inline_function): Typo testing for the 4202: USE that indicates a CALL_INSN's value is being returned. 4203: 4204: * expr.c (expand_builtin, alloca case): Copy arg to reg before 4205: adjusting stack, to avoid invalid insns on some machines. 4206: 4207: Wed Apr 20 00:15:14 1988 Richard Stallman (rms at rice-krispies.ai.mit.edu) 4208: 4209: * typecheck.c (build_binary_op_nodefault): When shortening, 4210: get_narrower may make no change because ARGn is already narrow. 4211: In this case, set UNSIGNEPn from ARGn's type. 4212: 4213: * typecheck.c: Rename ARG1,ARG2 to ARG0,ARG1, etc. in several fns. 4214: 4215: * tm-vax.h: Turn off continuation on DBX output. 4216: 4217: * typecheck.c (build_function_call): Don't change __builtin_ffs to an 4218: FFS_EXPR. Note that __builtin_alloca has always made a CALL_EXPR. 4219: * expr.c (expand_builtin): New function expands all CALL_EXPRs that 4220: are really built-in functions. 4221: (preexpand_calls): Do nothing to a CALL_EXPR for a built-in function. 4222: 4223: * loop.c (count_loop_regs_set): Don't move a reg that is in a CLOBBER. 4224: 4225: * stupid.c (stupid_mark_refs): Was getting hard reg's mode from 4226: the wrong place. 4227: 4228: * rtl.c (note_stores): Typo in checking vector elt for SET vs CLOBBER. 4229: 4230: * stmt.c (expand_end_bindings): If restoring stack level, 4231: first do pending stack adjust (so it won't be done erroneously after). 4232: (expand_goto): likewise. 4233: 4234: * rtl.h: LABEL_NUSES was an rtx. It should be an int. 4235: * stmt.c (expand_label, expand_goto): Delete frobbing with LABEL_NUSES; 4236: the value stored there was the same as the CODE_LABEL rtx. 4237: 4238: * jump.c (jump_optimize): Detect if (foo) ...; else { ... break;} 4239: and change to if (! foo) { ... break;} else ...; so can drop out. 4240: (next_label): New fn returns the next label after given insn. 4241: 4242: Tue Apr 19 21:30:05 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4243: 4244: * flow.c (insn_dead_p): Delete special handling for stack ptr. 4245: (mark_set_regs, mark_used_regs): Likewise. 4246: (life_analysis): Mark stack ptr live at end of fn if necessary. 4247: (propagate_block): Mark stack ptr live leading up to a CALL_INSN. 4248: 4249: * jump.c (jump_optimize): #if 0 around stack-adjust-deletion code. 4250: 4251: * cse.c (fold_rtx): Change const_arg from an array to 3 separate 4252: scalars for the first three operands. 4253: Handle SIGN_EXTEND and ZERO_EXTEND. 4254: 4255: * integrate.c (copy_rtx_and_substitute): If arg is 0, return 0. 4256: (expand_inline_function): Separate vars for old pattern and new insn. 4257: 4258: * expr.c (expand_call): Set TREE_ADDRESSABLE if call is not inlined. 4259: 4260: Tue Apr 19 02:25:22 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4261: 4262: * Version 1.20 released. 4263: 4264: * tm-ns32k.h: Define new reg class GEN_OR_FLOAT_REGS 4265: so that GENERAL_REGS and FLOAT_REGS have a union. 4266: 4267: * tm-ns32k.h (GO_IF_LEGITIMATE_ADDRESS): Recognize a stack-push. 4268: * ns32k.md: Many constraints must now allow or reject pushes. 4269: Delete the special patterns for pushing. 4270: 4271: Mon Apr 18 06:02:39 1988 Richard Stallman (rms at rice-krispies.ai.mit.edu) 4272: 4273: * reload1.c (forget_old_reloads): For a multiword hard reg, 4274: forget old reloads for each word. 4275: 4276: * reload.c (find_reloads): Typo in calling push_replacement. 4277: 4278: * tm-ns32k.h (HARD_REGNO_MODE_OK): Failed to allow fp regs for SFmode. 4279: 4280: Sun Apr 17 01:21:35 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4281: 4282: * tm-sequent.h (PRINT_OPERAND): Handle absolute integer memaddress. 4283: 4284: * ns32k.md: Add DImode push insns. Add QImode and HImode push insns. 4285: Supply missing statement in movsf. 4286: 4287: * dbxout.c (dbxout_type): Don't contin before 1st field of struct. 4288: 4289: * dbxout.c (dbx_continue): Use DBX_CONTIN_CHAR instead of backslash. 4290: 4291: * loop.c (scan_loop): Ov vax, the "loop-entry jump" can be a return, 4292: in which case perhaps there is no label following it. 4293: Detect phoniness of loop before looking for that label. 4294: 4295: * decl.c (init_decl_processing): Builtin fn names start with `__'. 4296: 4297: * typecheck.c (shorten_compare): Warn about constant result only in 4298: cases like (char)x < 0x80, where old C compilers made it -0x80. 4299: 4300: * vax.md: All jbs/jbc/jlbs/jlbc patters with op0 in SImode 4301: must reject mode-dependent memory addresses. 4302: 4303: * recog.c (mode_independent_operand): Test for general operand 4304: that doesn't have a mode-dependent memory address. 4305: 4306: * varasm.c (assemble_function): ASM_DECLARE_FUNCTION_NAME, if def, 4307: is now responsible for outputting the function name as a label. 4308: 4309: Sat Apr 16 05:02:55 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4310: 4311: * cccp.c (do_xifdef): Warn about punctuation or other junk in argument. 4312: Warn about no argument. If pedantic, warn if arg starts with digit. 4313: If traditional, ignore all after first non-idchar and never warn. 4314: 4315: Thu Apr 14 01:12:59 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4316: 4317: * integrate.c (expand_inline_function): Typo for addressable parms. 4318: 4319: * cse.c (insert_regs): Copying half a DImode into half of another 4320: does not make the two DImode regs equivalent. 4321: 4322: * recog.c (general_operand): Was failing to accept symbol_ref:SI 4323: when MODE arg was VOIDmode. 4324: 4325: * expr.c (preexpand_calls): For RTL_EXPR, do nothing. 4326: 4327: * decl.c (start_enum, build_enumerator): Remember default for next one 4328: as a tree node (so the high-half isn't lost in a negative one). 4329: 4330: * stor-layout.c (layout_{record,union}): Pay attn to initial value 4331: of TYPE_ALIGN in computing final alignment. 4332: (layout_union): Round size up to multiple of the alignment. 4333: 4334: * decl.c (finish_struct): Don't alter size after type is laid out. 4335: Instead, set TYPE_ALIGN before layout_type. 4336: 4337: * reload1.c (choose_reload_targets): Introduce reg_has_output_reload. 4338: If there are two separate reloads (one in and one out) 4339: for the same (hard or pseudo) reg, always set reg_last_reload_reg 4340: based on the output reload. 4341: 4342: Wed Apr 13 21:26:16 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4343: 4344: * reload.c (find_reloads_address_1): Always barf if a "constant" 4345: register is autoincremented. 4346: 4347: * parse.y (structsp): suspend_momentary before start_enum; 4348: else some nodes made by start_enum might be momentary. 4349: 4350: * stmt.c (expand_start_case): New arg is nominal type for comparison 4351: (which is the promoted type of the index expression). 4352: (pushcase): Always convert VALUE to that nominal type 4353: before validating it. 4354: * parse.y (case stmt): Promote each case-value before pushcase. 4355: * typecheck.c (c_expand_start_case): Promote the index-expr 4356: to determine the nominal type, before get_narrower. 4357: 4358: Wed Apr 13 12:43:08 1988 Chris Hanson (cph at kleph) 4359: 4360: * tm-hp9k320.h: Define ASM_FORMAT_PRIVATE_NAME. HPUX asm forbids 4361: `.' in identifiers, so use `___' (there is some danger in this choice). 4362: 4363: Tue Apr 12 23:26:48 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4364: 4365: * local-alloc.c (block_alloc): Make 1 extra slot in regs_live_at. 4366: 4367: * stmt.c (optimize_bit_field): Function moved from reload1.c. 4368: When need to generate a SIGN_EXTEND or ZERO_EXTEND, make it a separate 4369: insn and use gen_extend_insn to make it. 4370: * optabs.c (gen_extend_insn): New fn, construct body of an insn 4371: to extend Y and store in X. 4372: 4373: Mon Apr 11 19:20:57 1988 Richard Stallman (rms at rice-krispies.ai.mit.edu) 4374: 4375: * decl.c (finish_decl): Error if static var has variable size. 4376: 4377: * parse.y (yylex): Warn if int const is out of range. 4378: 4379: * parse.y: New keyword __alignof. 4380: * typecheck.c (c_alignof): Given a type, return its alignment in bytes. 4381: 4382: * typecheck.c (c_sizeof{,_nowarn)): Don't return integer_one_node; 4383: use build_int to make sure we get something with type `sizetype'. 4384: 4385: * Support variable-sized structures (containing var-sized arrays). 4386: 4387: * stmt.c (assign_parms): Handle parms whose size varies. 4388: Use `memory_address' when constructing memrefs to args; 4389: no need to set `invalid_stack_slot'. 4390: Don't make a REG_EQUIV note for a scalar arg at variable offset. 4391: * stor-layout.c (genop, build_int): No longer `static'. 4392: 4393: * stor-layout.c (convert_units): Optimize ceil (ceil(x,2)*2, 4) etc. 4394: 4395: * stmt.c (expand_decl): Don't abort if var-sized object has init. 4396: Convert variable size from units of DECL_SIZE_UNIT to units of bytes. 4397: 4398: * expr.c (emit_push_insn): Arg ARGS_SO_FAR is now an rtx. 4399: Pay attention to ARGS_ADDR even if machine has push insns. 4400: (expand_call): Handle variable-sized arguments. 4401: If have any such, push entire arg-block in advance. 4402: Record each arg's offset during first loop and don't change args_size 4403: during the actual pushing loop; this way the actual pushing loop 4404: works regardless of arg-order if arg-block was pushed in advance. 4405: (push_block): Copy SIZE to reg unless it's a reg or constant. 4406: 4407: * expmed.c (expand_divmod): If converting CEIL_DIV to FLOOR_DIV, 4408: make new pseudo for incremented value, to help cse understand. 4409: 4410: Sun Apr 10 00:07:45 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4411: 4412: * expr.c (emit_library_call): Two dumb bugs calling emit_call_1. 4413: 4414: * dbxout.c (dbxout_symbol): Handle case of (MEM (REG frameptr)). 4415: 4416: * cccp.c (skip_if_group): Ignore quote-chars if -traditional. 4417: (rescan): If -traditional, don't output a space for a comment. 4418: (handle_directive): If not -traditional, output a space for a comment. 4419: 4420: Sat Apr 9 21:26:51 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4421: 4422: * decl.c (get_parm_types): `void' type is error, except as entire list. 4423: * parse.y (parmlist_1): `void,...' is error. 4424: 4425: * typecheck.c (pointer_int_sum, pointer_diff): 4426: Use an integer type with at least POINTER_SIZE bits. 4427: * expr.c (expand_expr, ARRAY_REF): Likewise. 4428: * tree.c (type_precision): Prec of a pointer is POINTER_SIZE. 4429: (convert_to_pointer): Directly convert any int w/ width==POINTER_SIZE. 4430: Other int types convert via an int of that width. 4431: (convert_to_integer): Pointers convert via an int of that width. 4432: 4433: * decl.c (init_decl_processing): Use INT_TYPE_SIZE, if def, 4434: to set width of `int' and `unsigned int'. 4435: (make_index_type): Give new type the width of a long int. 4436: 4437: * tm-m68k.h: Add new -mshort which controls TARGET_SHORT. 4438: * tm-m68k.h: Define INT_TYPE_SIZE depending on TARGET_SHORT. 4439: 4440: Fri Apr 8 05:02:59 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4441: 4442: * typecheck.c (require_complete_type): Fix typo in detection of `void'. 4443: (build_function_call): Fix backward test to allow `void' values. 4444: 4445: * dbxout.c (dbxout_tags): Output each tag once even if type is defined. 4446: 4447: * m68k.md (movstrictqi): Reject addr-reg always, for both operands. 4448: 4449: * tm-vax.h (STRUCTURE_SIZE_BOUNDARY): Make this always 8, for BSD. 4450: * tm-ultrix.h: New file, overriding STRUCTURE_SIZE_BOUNDARY. 4451: [This change has been taken out; tm-ultrix.h is now equivalent to 4452: tm-vax.h. I must have been confused when testing PCC.] 4453: 4454: * integrate.c (expand_inline_function): Don't let inline_target 4455: be nonzero in BLKmode. 4456: 4457: * decl.c (grokdeclarator): Const array parm becomes ptr-to-const. 4458: 4459: Thu Apr 7 05:02:41 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4460: 4461: * genoutput.c (bcopy, bzero): Renamed to mybcopy, mybzero 4462: so variation in C library and config.h won't affect the results. 4463: * genrecog.c (bzero): likewise. 4464: * genextract.c (bcopy): Fn deleted; used only in a string constant. 4465: 4466: * varasm.c (force_const_mem): Fix typo in arg decl. 4467: 4468: * toplev.c (compile_file): init_file with main_input_filename 4469: so dbx output doesn't lack N_SOL symbols. 4470: 4471: * cccp.c (rescan) [CPLUSPLUS]: Put out // comments as // comments. 4472: 4473: Wed Apr 6 14:06:38 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4474: 4475: * expr.c: Delete SLOW_ZERO_EXTEND conditionals added March 3. 4476: Now that enums types can be unsigned, this isn't needed. 4477: 4478: * emit-rtl.c (emit_jump_insn): Handle SEQUENCEs. 4479: 4480: * genemit.c (gen_expand): Use emit_jump_insn, emit_label, emit_barrier 4481: when the insn rtl requires it. 4482: 4483: * m68k.md (subsi3): Prefer to avoid reverse-subtraction alternative. 4484: 4485: * stmt.c (expand_end_case): Let CASE_DROPS_THROUGH control what to 4486: emit after the table. 4487: * tm-vax.h: Define CASE_DROPS_THROUGH. 4488: 4489: Tue Apr 5 15:47:10 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4490: 4491: * genemit.c (gen_exp): Handle vectors within exprs. 4492: 4493: * stmt.c (expand_end_case): Pass 5th arg (default_label) to gen_casesi. 4494: * m68k.md: Define casesi insn rather than tablejump insn. 4495: 4496: * cccp.c (skip_if_group): For validate_else, pass BP (end of cmd name). 4497: Don't call validate_else if do_else or do_endif will detect error. 4498: 4499: * Bug: inline fcns can refer to the return reg with a strict_low_part 4500: which confuses expand_inline_function. Fix is to change return reg 4501: into inline_target *everywhere* except in or right after a call. 4502: * integrate.c (copy_rtx_and_substitute): Delete special case for SET. 4503: Replace return-value hard regs with INLINE_TARGET in all contexts. 4504: (expand_inline_function): special handling for insn after a CALL_INSN 4505: if it copies the function value out. 4506: Allow notes and stack adjust insns to intervene 4507: between the CALL_INSN and the value-copy. 4508: 4509: * expr.c (emit_call_1): New name for gen_call_1. 4510: 4511: * Bug: ({...}) insns were in wrong place for a subexpression 4512: after a sequence point, as in x ? y : ({...}). 4513: * tree.def: New tree-code RTL_EXPR holds a sequence. 4514: * expr.c (expand_expr): Handle RTL_EXPR by emitting the sequence. 4515: * stmt.c (expand_{start,end}_stmt_expr): Use emit_to_sequence 4516: to make a sequence from everything within the ({...}). 4517: (expand_{start,end,emit}_delayed_expr): Delete these functions. 4518: * parse.y (`for'-statements): Don't call them; nothing special needed. 4519: 4520: * parse.y (yylex): Handle syntax L"..." and L'...' 4521: (combine_strings): Handle wide strings being combined. 4522: * typecheck.c (digest_init): Reject wide string as init for char array. 4523: Allow it for an int array, but don't allow a narrow string. 4524: * decl.c (init_decl_processing): New var int_array_type_node. 4525: 4526: * parse.y: Define keyword `noalias'. 4527: * parse.h: Define RID_NOALIAS. 4528: 4529: * typecheck.c (compparms): Not all parmlists match an empty one; 4530: call `compparms1' to filter them. 4531: 4532: * decl.c (groktypename): Remove special case for `void' as parameter. 4533: (get_parm_types): Special case for list of one decl with type void. 4534: 4535: * decl.c (build_enumerator): Give enum constants the type `int'. 4536: Variable `current_enum_type' eliminated. 4537: (finish_enum): No need to repeat `fixup_unsigned_type' 4538: since the precision has not changed. 4539: * stor-layout.c (layout_type): Allow enum types to be unsigned. 4540: 4541: * emit-rtl.c (unshare_all_rtl): Unshare contents of all reg-notes. 4542: 4543: * parse.y (check_newline): filename is optional in #-lines. 4544: 4545: Mon Apr 4 14:36:54 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 4546: 4547: * typecheck.c (shorten_compare): When data type determines the value, 4548: eval the nonconstant arg anyway if it has side effects. 4549: (build_conditional_expr): When merging `foo *' with `void *', 4550: also allow `const void *'. Result type has merged set of qualifiers. 4551: (qualify_type): Merge qualifiers of two types. 4552: 4553: * decl.c (get_parm_types): Store any tags defined in parmlist 4554: into `last_function_parm_types'. 4555: (store_parm_decls): Add those tags into the current binding level. 4556: 4557: * parse.y (parmlist, parmlist_or_identifier): Pass 0 to pushlevel; 4558: no binding levels in C should be transparent to tags. 4559: 4560: * 3b1 support: 4561: * tm-3b1.h: New file. 4562: 4563: * m68k.md: Add HPUX_ASM conditionals for shift-by-24-and-compare. 4564: In one of the dbra patterns, a HPUX_ASM conditional was backwards. 4565: (movhi) [SGS_3B1]: Define the LI... label as in MIT syntax. 4566: (addsi3) [SGS]: Syntax for base-displacement differs from MOTOROLA. 4567: (subsi3) [SGS]: likewise. 4568: (tablejump) [ASM_OUTPUT_CASE_LABEL]: Use 6, not 2, as displacement. 4569: This assumes ASM_OUTPUT_CASE_LABEL on 68k is used for a `swbeg'. 4570: 4571: * final.c (final): Use ASM_OUTPUT_CASE_LABEL (if defined) to output 4572: any CODE_LABEL followed by an ADDR_VEC or ADDR_DIFF_VEC. 4573: It has 4 args; 4th is the insn which is the ADDR_VEC or ADDR_DIFF_VEC. 4574: 4575: * tm-*.h for 68000 (PRINT_OPERAND_ADDRESS): For unscaled indexing in 4576: fetch from a branch table, use L and LI symbols as in the scaled case. 4577: 4578: * cccp.c: If SCCS_DIRECTIVE, define #sccs as no-op. 4579: 4580: * integrate.c (output_inline_function): Real start of function 4581: is FIRST_PARM_INSN, not FIRST_FUNCTION_INSN. 4582: 4583: * tree.c (build_string): String contents must be saveable (for 4584: inline fcn). 4585: 4586: * cse.c (cse_insn): Don't forget to set dest_hash_code when dest 4587: is a stack slot (and so its address is not being optimized). 4588: 4589: * emit-rtl.c (restore_reg_data_1): reg_rtx_no must be 1+ largest REGNO. 4590: 4591: * m68k.md (non-SImode bit-field insns): Change constraint to "o,d" 4592: so a nonoffsetable memref is handled by reloading its address 4593: but a register can still be handled. 4594: 4595: * toplev.c (main): Execute OVERRIDE_OPTIONS, if it's defined. 4596: 4597: Sat Apr 2 00:55:21 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 4598: 4599: * expr.c (convert_move): Handle a SUBREG in direct truncation case. 4600: 4601: * cse.c (lookup_for_remove): Don't test machine mode of registers: 4602: Storing in (REG:SI 0) invalidates (REG:DF 0). 4603: 4604: * decl.c (pushlevel): New arg, nonzero means this level is for 4605: variables only, not for tags. All calls changed. 4606: (lookup_tag): Even if THIS_LEVEL_ONLY, skip variables-only levels. 4607: (pushtag): Define it in the first non-variables-only level. 4608: 4609: * dbxout.c (dbxout_type): Undo Mar 29 change, in the DBX_NO_XREFS case. 4610: So now each struct or union will contain only nameless cross-refs 4611: to any others it uses. The prior change is still in effect when 4612: DBX_NO_XREFS is not defined. 4613: 4614: * Implement variable array bounds for parameters. 4615: * decl.c (poplevel): Don't crash if DECL_NAME gives 0. 4616: * typecheck.c (comptypes): A variable array bound matches anything. 4617: * parse.y (parmlist): Call pushlevel, then pushdecl each parm as it 4618: is parsed; then poplevel after using get_parm_types to extract the 4619: results of the parmlist. 4620: * decl.c (get_parm_types): New function; reverse the current decls, 4621: put them in last_function_parms, and return a list of their types. 4622: (grokparms): Arg is now an idlist or a typelist. Do nothing if latter. 4623: (push_parm_decl): New function, like {start,finish}_decl combined 4624: for a parm in a parmlist. 4625: 4626: * dbxout.c (dbxout_symbol): Ignore sym if its DECL_RTL is 0. 4627: 4628: * symout.c (symout_block_symbols): Ignore sym if type is error_mark. 4629: 4630: Fri Apr 1 11:41:21 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 4631: 4632: * expr.c (prepare_call_address): New function; given two rtx's 4633: for function and context, copy the context to the right hard reg, 4634: put the function address in the right place and return an rtx for it. 4635: (gen_call_1): No longer do those things. Delete args CONTEXT, PROTECT. 4636: (emit_library_call, expand_call): Call `prepare_call_address'. 4637: In between that and `gen_call_1', USE the parm registers. 4638: 4639: * tm-hp9k320.h (ASM_OUTPUT_*): Flush uses of output_arith_constant. 4640: 4641: * varasm.c (assemble_variable): Use ASM_FORMAT_PRIVATE_NAME 4642: to make the name for a local static variable. 4643: * tm-m68k.h, tm-vax.h, tm-ns32k.h, tm-spur.h: 4644: Define ASM_FORMAT_PRIVATE_NAME. Use `.', not `$', to separate. 4645: 4646: * tm-m68k.h, tm-ns32k.h (FIX_FRAME_POINTER_ADDRESS): 4647: To refer to stack ptr, use stack_pointer_rtx, not a copy. 4648: 4649: * tree.c (build_real_from_string): Function deleted. 4650: * parse.y (yylex): Use build_real and atof. 4651: 4652: * parse.y: Allow string concatenation in arg of asm. 4653: 4654: * parse.y (yylex): Always allow `$' in ident, but warn if pedantic. 4655: * tm-vms.h: Delete DOLLARS_IN_IDENTIFIERS (no longer tested). 4656: 4657: * cccp.c (rescan, do_define, initialize_random_junk): 4658: Always allow `$', but warn if pedantic. 4659: (main): If -t, set `traditional'. 4660: (collect_expansion): If `traditional', no special handling for quotes 4661: and no whitespace added at end of macro definition. 4662: 4663: * expr.c (compare, compare1): Last arg to compare_constants 4664: must be a size in bits. 4665: 4666: Thu Mar 31 00:31:52 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 4667: 4668: * expmed.c (expand_mult, expand_divmod, extract_fixed_bit_field): 4669: Reject function return register as target if may need to read it. 4670: (Reading the return register in an inline function doesn't work.) 4671: 4672: * decl.c (start_function): Delete extra arg to `error'. 4673: 4674: * emit-rtl.c (last_parm_insn): Delete this unused var. 4675: 4676: * make-cc1.com: New version from Kashtan. 4677: 4678: * integrate.c (expand_inline_function): Always set up an INLINE_TARGET 4679: for a function that returns a nonvoid nonBLK value. 4680: Since `pushlevel' and `poplevel' are called, must also call 4681: `expand_{start,end}_bindings' to make a pair of NOTEs. 4682: Let them handle USEs at end of scope of formal parameter copies. 4683: 4684: * integrate.c (expand_inline_function): In a new-style CALL_INSN, 4685: don't change the result reg into INLINE_TARGET. Also, 4686: generate a move insn after the call only if INLINE_TARGET is non-0. 4687: 4688: * integrate.c (copy_decl_tree): Don't crash if DECL_RTL is 0. 4689: 4690: * integrate.c (copy_for_inline): Don't treat `return' rtx's specially. 4691: 4692: * stmt.c (expand_{start,end,emit}_delayed_expr): 4693: New fns to handle ({...})'s in expressions output not where parsed 4694: (such as third expression in a `for' statement). 4695: * parse.y: Call them to handle third expression in a `for'. 4696: 4697: * decl.c (duplicate_decls): Result is `inline' if either OLD or NEW is. 4698: 4699: * emit-rtl.c (emit_note): Return the note, or 0 if none. 4700: * stmt.c (expand_start_bindings): Use emit_note's value. 4701: 4702: Wed Mar 30 12:48:22 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 4703: 4704: * obstack.c (_obstack_begin): If ALIGNMENT is 0, use default. 4705: Compute default for the alignment of a `double'. 4706: * obstack.h (obstack_{begin,init}): Pass 0 for the alignment. 4707: 4708: * flow.c (mark_used_regs): Discard multiple SUBREGs, STRICT_LOW_PARTs. 4709: 4710: ** Call insns that return values are now represented as 4711: (set (reg ...) (call ...)), not just (call ...). 4712: 4713: * *.md: Define a "call_value" insn pattern. 4714: 4715: * tm-m68k.h, tm-vax.h, tm-ns32k.h: (NOTICE_UPDATE_CC): 4716: These insns invalidate the CC. 4717: 4718: * local-alloc.c (combine_regs): #if 0 special treatment of 4719: function value hard reg. 4720: (wipe_dead_reg): If hard reg, call reg_is_born so that the death 4721: will not be ignored. 4722: (reg_is_set): For reg that dies in this insn, mark it dead from now on 4723: and post_mark it live after this insn only. 4724: 4725: * combine.c (try_combine): Don't allow a call insn as I1 or I2. 4726: 4727: * loop.c (count_loop_regs_set): Move CALL_INSN into a separate 4728: clause. When finding regs that are function addresses, handle 4729: both old and new format call insns. 4730: 4731: * flow.c (insn_dead_p): A SET that contains a CALL can't be dead. 4732: (volatile_refs_p): Any CALL constitutes a volatile ref. 4733: (mark_used_regs): If setting a reg from a volatile ref, 4734: treat it like setting a reg whose value will be used. 4735: 4736: * expr.c (gen_call_1): New arg VALREG if nonzero means generate 4737: a call_value insn which stores in VALREG. 4738: (expand_call): Use `hard_function_value' to make the VALREG arg 4739: unless expression has type `void'. 4740: 4741: * expr.c (emit_library_call): New 2nd arg OUTMODE is mode of result. 4742: (So can give gen_call_1 the proper value-register.) 4743: All callers (here and optabs.c) pass this arg. 4744: 4745: * cse.c (canon_hash): Consider all CALL rtx's volatile. 4746: 4747: ** end of change in representation of call insns. 4748: 4749: * stmt.c (expand_asm_operands): Replace complex lvalues with 4750: SAVE_EXPRs here 4751: * typecheck.c (c_expand_asm_operands): rather than here. 4752: 4753: * typecheck.c (pointer_diff): Fix typo preventing use of FLOOR_DIV_EXPR 4754: when dividing by power of 2. 4755: (build_c_cast): Flush unused locals. 4756: (store_init_value): likewise. 4757: (process_init_constructor): Delete unused 4th arg `for_static'. 4758: 4759: * toplev.c (fatal_io_error): Arg to fprintf was missing. 4760: 4761: * tm-m68k.h (LEGITIMIZE_ADDRESS): Flush extra arg to `emit_move_insn'. 4762: 4763: * decl.c: Delete some unused local vars. 4764: 4765: * stor-layout.c (layout_decl): `packed_size' now unsigned. 4766: 4767: Tue Mar 29 14:47:07 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 4768: 4769: * Version 1.19 released. 4770: 4771: * loop.c (may_trap_p): Nonzero if X is a division that might trap. 4772: (scan_loop): If insn might trap, move only if loop always executes it. 4773: 4774: * dbxout.c (dbxout_type): Never output a cross-ref for 4775: a type whose definition is known. Sun dbx won't accept them. 4776: 4777: Mon Mar 28 12:34:46 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 4778: 4779: * tm-vms.h (TARGET_DEFAULT): Default is PCC alignment. 4780: The VMS compile driver controls the real default. 4781: 4782: * typecheck.c (c_expand_return): Don't ignore return value 4783: when its type is void. 4784: 4785: * final.c (final): Forget the condition codes after an `asm'. 4786: 4787: * typecheck.c (build_binary_op_nodefault): Warn about ptr < 0 4788: even if not pedantic, but not if traditional. 4789: 4790: * typecheck.c (convert_for_assignment): Don't warn about 4791: pointers volatile * vs nonvolatile * if -fvolatile specified. 4792: 4793: * decl.c (store_parm_decls): Among the old-style parm decls 4794: there can legitiately be other decls! For example, if a parm 4795: is declared `enum {foo, bar} x;', there are decls for `foo' and `bar'. 4796: Don't let anything but a PARM_DECL match a parm name; 4797: pass all the other decls through into the lexical context. 4798: 4799: * jump.c (jump_optimize): When deleting stack adjusts before a 4800: jump-to-return, don't be fooled by intervening NOTEs. 4801: 4802: * tm-sequent.h (PRINT_OPERAND): Output (MEM (MEM (REG))) properly. 4803: * output-ns32k.c (print_operand_address): Output (MEM (REG)) 4804: properly; output stack-pointer as `tos'. 4805: 4806: * flow.c (find_use_as_address): Reject uses within operand 0 4807: of a ZERO_EXTRACT or SIGN_EXTRACT reference. It's hard to reload 4808: an autoincrement inside these because they can refer to multiple bytes. 4809: 4810: * reload.c (find_reloads): `o' in constraint means any memref 4811: (except auto-increment) is acceptable with reloading. 4812: Braino: Clear BADOP, not BAD. 4813: 4814: * reload.c (push_reloads): Use rtx_equal_p (via macro MATCHES) 4815: when considering reuse of an old reload. Otherwise equal values 4816: may get reloaded into different registers, and two MEMs that 4817: originally matched may fail to match once reloaded. 4818: 4819: * m68k.md (sign_extract and zero_extract insns): 4820: If operand 0 is QI or HImode, don't allow register--only `o' 4821: (except in some bftst patterns where bitpos is < 8). 4822: And change `m' to `o' in all these patterns. 4823: 4824: Sun Mar 27 15:32:54 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 4825: 4826: * expr.c (expand_expr, case CONSTRUCTOR): 4827: Not all aggregates are BLKmode; use the type's mode. 4828: 4829: * gcc.c: Pass -y* to ld. 4830: 4831: * cse.c (struct hash): New member `equivalence_only'. 4832: (insert): Initialize it. 4833: (cse_insn): Set it to 1 when src_eqv is inserted. 4834: When finding cheapest equivalent of something, 4835: skip elts that are marked with `equivalence_only'. 4836: 4837: * decl.c (duplicate_decls): Don't call `layout_type' 4838: if the type is `error_mark_node'. 4839: 4840: * decl.c (implicitly_declare): If decl will be file-scope, 4841: make sure it's a permanent node, and its associated data too. 4842: 4843: Sat Mar 26 15:48:50 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 4844: 4845: * flow.c (insn_dead_p, mark_used_regs): Storing a reg via a 4846: ZERO_EXTRACT or SIGN_EXTRACT is dead if the reg isn't needed afterward. 4847: 4848: * stmt.c (expand_start_function): Set current_function_name 4849: to the name of this function. 4850: * tm-vms.h (MAYBE_VMS_FUNCTION_PROLOGUE): Use current_function_name. 4851: 4852: * expr.c (expand_increment): A SUBREG in op0 can also a be a copy. 4853: 4854: * ns32k.md: Correct range of args for `adjspb' insn. 4855: Use `adjspw' when appropriate. 4856: New pattern for `lprd' insn. 4857: Change some `const_int' predicates to GET_CODE tests. 4858: 4859: * expr.c (expand_call): Eval function before copying args to hard regs. 4860: 4861: * tree.c (make_node, copy_node): Don't get length of a REAL_CST 4862: from tree_code_length. 4863: 4864: * expmed.c (extract_fixed_bit_field): In memory-word case, abort 4865: if tm.h parms say word could fail to be well-aligned. 4866: * tm-ns32k.h: Define STRUCTURE_SIZE_BOUNDARY so they will be aligned. 4867: * tm-vax.h: Define STRUCTURE_SIZE_BOUNDARY since Unix CC seems to. 4868: 4869: * tm-vms.h (CPP_PREDEFINES): Predefine __GNU__ and __GNUC__. 4870: 4871: Fri Mar 25 13:23:27 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 4872: 4873: * gcc.c (main): Handle SIGHUP, SIGTERM. 4874: 4875: * expmed.c (expand_bit_and): Don't clobber OP1 when trying andcb. 4876: 4877: Thu Mar 24 21:59:09 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 4878: 4879: * stmt.c (assign_parms): Get size of BLKmode local from the type, 4880: not the mode. 4881: (expand_function_start): Init frame_offset before calling assign_parms. 4882: 4883: Wed Mar 23 23:50:37 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 4884: 4885: * expr.c (emit_push_insn): When making a move insn, 4886: go via emit_move_insn; else fails to put constants into memory. 4887: 4888: Tue Mar 22 15:45:10 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 4889: 4890: * expr.c (expand_increment): Flush special case for register_operand; 4891: actually call the predicate whatever it is. 4892: 4893: * genemit.c (gen_expand): Make `operands' a local variable, 4894: not a global static one, in the `gen_...' function. 4895: Avoids lossage when one `gen_...' fcn calls another indirectly. 4896: 4897: * genoutput.c (output_epilogue): Don't give printf a null string. 4898: 4899: Mon Mar 21 15:41:42 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 4900: 4901: * expmed.c (store_bit_field) [HAVE_insv]: 4902: Force VALUE1, not VALUE, into a register. 4903: 4904: * expmed.c (store_fixed_bit_field): Width of mask for clearing 4905: the bit-field depends on mode of OP0. 4906: 4907: * ns32k.md (branch and store-flag insns): 4908: Test cc_prev_status, not cc_status. 4909: 4910: * expmed.c (extract_bit_field): Delete unused var `omode'. 4911: 4912: * dbxout.c (dbxout_type, dbxout_tag): Use the main variant 4913: of the specified type. 4914: 4915: * reload.c (find_reloads): When an alternative succeeds without reload, 4916: initialize goal_alternative_matches from this_alternative_matches. 4917: 4918: Sun Mar 20 17:58:00 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 4919: 4920: * tm-sun*.h: Don't predefine `m68k'; Sun's compiler does not. 4921: 4922: Fri Mar 18 13:48:29 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 4923: 4924: * reload.c (find_reloads): Set up goal_alternative_matches 4925: *after* the label `finish'. 4926: 4927: * stmt.c (assign_parms): GET_MODE_SIZE needs a mode, not an rtx. 4928: 4929: * recog.c (constrain_operands): Set global var `which_alternative' 4930: to indicate which of the alternatives this insn matches. 4931: 4932: * typecheck.c (commontype): long int vs unsigned int 4933: gives long unsigned, if long and int are the same width. 4934: 4935: Thu Mar 17 15:39:45 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 4936: 4937: * emit-rtl.c, tree.c: include local version of varargs.h. 4938: 4939: * decl.c (start_function): Clear TREE_EXTERNAL and set TREE_STATIC 4940: here rather than in finish_function. Affects the case of 4941: `extern foo (); static foo (a) {...}' 4942: 4943: * gcc.c: Handle -fnostdinc and -fnostdlib switches in specs. 4944: 4945: * cccp.c (main): Handle -fnostdinc: don't put default dirs 4946: on the chain to be searched. 4947: 4948: * cccp.c (error, warning, error_with_line): No longer print 4949: charpos within file; lineno is enough. 4950: 4951: Wed Mar 16 16:56:36 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 4952: 4953: * expmed.c (expand_inc, expand_dec): Handy new subroutines 4954: to generate x+=y or x-=y, given x and y as rtl. 4955: * expmed.c (expand_divmod): Use them instead of gen_{add2,sub2}_insn. 4956: 4957: * expr.c (emit_move_insn): Return the move insn emitted. 4958: Eliminate the code here to move a DImode or DFmode by pieces. 4959: 4960: * emit-rtl.c (emit_insn): Return-value was wrong if emit_to_sequence; 4961: cannot use `last_insn' in that case. 4962: 4963: * regclass.c, stupid.c, local-alloc.c, global-alloc.c: 4964: Some vars of type HARD_REG_SET should be `register' only 4965: if HARD_REG_SET is a macro (ie a scalar). 4966: 4967: * expr.c (move_block_from_reg): New function, converse of 4968: move_block_from_reg. 4969: * stmt.c (assign_parms): If a BLKmode arrives in regs, 4970: copy to a stack slot using move_block_from_reg. 4971: 4972: Tue Mar 15 17:33:22 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 4973: 4974: * regclass.c (regclass): Don't convert to two-operand insns 4975: unless optimizing. 4976: 4977: * varasm.c (decode_rtx_const, const_hash_rtx): Fix typos. 4978: 4979: * stmt.c (fixup_var_1): Don't alter insn moving VAR to or from 4980: a subreg of a register. 4981: 4982: * cse.c (fold_rtx): Don't fold if result is not LEGITIMATE_CONSTANT_P. 4983: Construct all results in new local variable NEW; then test that 4984: and decide whether to return it or the original rtx. 4985: 4986: * cse.c (cse_insn): When SRC_EQV is non-0 but set[0] has been 4987: cleared, don't insert SRC_EQV in hash table. 4988: 4989: * All insns emitted by a define_expand become part of the SEQUENCE: 4990: * SEQUENCE now contains a vector of insns, not of bodies. 4991: * insn-emit.c (add_insn): If `emit_to_sequence' nonzero, add the 4992: insn to a separate chain, `sequence_first_insn'. 4993: (gen_sequence): Take everything on that chain and make a SEQUENCE. 4994: (emit_insn): Handle SEQUENCE differently since elts are now insns. 4995: (emit_insn_{before,after}): Handle SEQUENCE. 4996: (classify_insn): #if 0. 4997: * genemit.c (gen_expand): emit all the insns, then call gen_sequence 4998: to make the return value. 4999: Define two macros DONE and FAIL for use in a DEFINE_EXPAND: 5000: Use DONE to inhibit emission of the pattern of the DEFINE_EXPAND. 5001: Use FAIL to make the gen_... function return 0. 5002: 5003: Mon Mar 14 12:47:28 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5004: 5005: * expr.c (expand_expr): Extend the don't-sign-extend-enums hack 5006: to COMPONENT_REF. (See 3 March.) 5007: 5008: * tm-*.h (FUNCTION_ARG, etc.) New argument NAMED 5009: is nonzero for a named arg, zero for an anonymous extra arg. 5010: * expr.c (expand_call): Pass 1 for NAMED if appropriate. 5011: * expr.c (emit_library_call): Pass 1 for NAMED. 5012: * stmt.c (assign_parms): Pass 1 for NAMED. 5013: 5014: * cccp.c: Test __GNUC__, not __GNU__. 5015: 5016: * integrate.c (copy_and_substitute_rtx): 5017: Replacing a MEM parm with the parm value, convert mode if mismatch. 5018: Always use VOIDmode when generating SETs. 5019: Take heed of FIRST_PARM_OFFSET and distinguish arg-pointer 5020: from frame-pointer when they are different. 5021: (expand_inline_function): Handle (RETURN) insns, by creating a 5022: return_label which is output after the integrated code. 5023: 5024: * parse.y (yylex): Condition for ignoring `inline' was backwards. 5025: 5026: * flow.c (mark_used_regs): Ignore STRICT_LOW_PART, so that 5027: an insn that sets STRICT_LOW_PART (and its source values) may be dead. 5028: (propagate_block): Always pass 1 for strict_low_ok to insn_dead_p. 5029: 5030: * optabs.c (emit_unop_insn): Don't make a REG_RETVAL note. 5031: Change above deletes dead STRICT_LOW_PART stores without one. 5032: 5033: * optabs.c (expand_binop, expand_unop): If the library address 5034: is to be put in a pseudoreg, do it here, and make the REG_RETVAL 5035: note point after that. 5036: 5037: * expr.c (emit_library_call): Never defer stack-pops. 5038: Deletion of the library call by flow.c loses if they are deferred. 5039: 5040: * cse.c (cse_insn): Handling of 68k's zero-extend was broken: 5041: it made the actual source and the REG_EQUAL source equivalent. 5042: * If dest is a STRICT_LOW_PART, ignore the actual source and use 5043: the REG_EQUAL source in its place. src_eqv's mode may be different 5044: from src's, so use proper mode in lookups or inserts for src_eqv. 5045: * Don't forget to set src_eqv_elt if src_eqv already has an elt. 5046: * On use_related_value for src_eqv, use src_eqv_elt. 5047: 5048: * toplev.c (main_input_filename): Name of file mentioned in first 5049: #-line in the input. 5050: (compile_file): Pass it to dbxout_init as 2nd arg. 5051: * dbxout.c (dbxout_init): Use 2nd arg to make the N_SO symbol. 5052: * parse.y (check_newline): Store main_input_filename. 5053: 5054: * expr.c (move_block_to_reg): New function, copies a MEM:BLK 5055: to consecutive registers. 5056: (use_regs): New function to emit a USE for each reg in a series. 5057: (expand_call): Use the two new functions when a precomputed BLKmode 5058: arg is passed entirely in regs. 5059: (emit_push_insn): Use move_block_to_reg when PARTIAL > 0. 5060: Also, don't subtract USED from SIZE twice. 5061: Use plus_constant to add ARGS_SO_FAR so can use indexing on stack ptr. 5062: 5063: * varasm.c (assemble_integer_zero): Use rtx 0, not tree 0, 5064: to go with prev change in ASM_OUTPUT_INT. 5065: 5066: Sun Mar 13 01:16:17 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5067: 5068: * varasm.c (const_hash, compare_constant_1, record_constant_1): 5069: Handle NOP_EXPR and CONVERT_EXPR in constant expressions. 5070: 5071: * optabs.c (expand_binop, expand_unop): When widening operands, 5072: those with VOIDmode (like CONST_INT) may be left alone. 5073: 5074: Sat Mar 12 01:09:24 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5075: 5076: * varasm.c (assemble_variable): When making a .comm or .lcomm, 5077: round size up to multiple of BIGGEST_ALIGNMENT. 5078: 5079: * obstack.c (_obstack_newchunk): Eliminate fencepost causing copying 5080: to access the word past the end of the existing object. 5081: 5082: * tm-vax.h, tm-ns32k.h: Define {INIT_,}CUMULATIVE_ARGS 5083: and upgrade FUNCTION_ARGS for new calling convention. 5084: 5085: * gcc.c: If -O, define __OPTIMIZE__. 5086: (do_spec_1): %c now scans SIGNED_CHAR_SPEC: define __CHAR_UNSIGNED__ 5087: when appropriate whether or not it is the default. 5088: 5089: Fri Mar 11 16:49:25 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5090: 5091: * parse.y: Define YYDEBUG. 5092: 5093: * rtl.c (rtx_unstable_p): New function, same as old rtx_varies_p. 5094: * explow.c (stabilize): Use rtx_unstable_p. 5095: * rtl.c (rtx_varies_p): Ignore `unchanging' (undoing previous change 5096: in this function) because `unchanging' doesn't enable cse to compare 5097: the value with any particular constant value. 5098: * rtl.c (insn_store_addr_varies_p): Delete, since not used. 5099: 5100: * hard-reg-set.h (COPY_HARD_REG_SET, etc.) non-scalar case: 5101: Rename and rearrange temp variables to avoid name conflicts with args. 5102: 5103: * regclass.c (reg_class_record): Don't smash class to GENERAL_REGS 5104: and don't exit prematurely, when `r' or `g' is seen. Must merge 5105: GENERAL_REGS with previously determined desired class. 5106: 5107: * expr.c (expand_call) [no PUSH_ROUNDING]: When pushing the arg 5108: block, try to reuse some of the pending_stack_adjust. 5109: 5110: * cse.c: qty_const can now hold values (PLUS frame_pointer integer). 5111: Effect is that storing into a structure doesn't invalidate 5112: mem refs to scalar stack variables via addresses in registers. 5113: (insert): Load such values into qty_const, like true constants. 5114: (fold_rtx): Ignore qty_const if it isn't really a constant. 5115: 5116: * expr.c (expand_expr) VAR_DECL: Copy DECL_RTL before calling 5117: change_address, so it isn't permanently clobbered. 5118: 5119: * stmt.c (fixup_var_refs_1): Make sure the stack slot address 5120: is valid by calling fixup_stack_1 each time it is substituted. 5121: 5122: * stmt.c (fixup_stack_1): Return the altered rtx. 5123: If it's a MEM in the stack, return a copy of it. 5124: 5125: * stmt.c (fixup_stack_slots): #if 0. 5126: * stmt.c (expand_finish_function): Don't call fixup_stack_slots 5127: because fixup_stack_1 is called elsewhere when necessary. 5128: 5129: * reload.c (find_reloads_address): New arg is location of the MEM 5130: whose address is being reloaded. So we copy the MEM if it 5131: is one that can be shared. New arg 0 means no need to copy the MEM. 5132: All callers pass the new arg. 5133: 5134: * stmt.c (assign_parms): Determine parm stack-size from 5135: the DECL_ARG_TYPE, not from the TREE_TYPE. 5136: Else loses when parm is declared `float' but passed as `double'. 5137: 5138: * emit-rtl.c (make_safe_from): Constants are already safe. 5139: Use proper machine mode for temp reg when needed. 5140: 5141: Thu Mar 10 14:35:14 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5142: 5143: * expr.c (emit_push_insn): Don't pass wrong type to plus_constant 5144: (case where there is no PUSH_ROUNDING). 5145: 5146: * expr.c (expand_call): Round partial[i] down to multiple of 5147: PARM_BOUNDARY before subtracting it from arg size on stack. 5148: Compute these sizes just once and keep them in vector `arg_size'. 5149: * expr.c (emit_push_insn): Handle `partial' uniformly, in accord 5150: with this new convention for how it affects the stack size. 5151: * stmt.c (assign_parms): Round NREGS down to PARM_BOUNDARY likewise. 5152: 5153: * obstack.h (obstack_free macro) [Not __GNUC__ but __STDC__]: 5154: Don't cast result of (obstack_free) to (int); just ignore it. 5155: 5156: * reload.c (find_reloads): Initialize operand_reloadnum. 5157: 5158: * optabs.c (emit_unop_insn): New argument CODE, used to make 5159: a REG_EQUAL note from operand OP0 if more than one insn results. 5160: Also a REG_RETVAL note. 5161: * expr.c (convert_move): Pass CODE arg to emit_unop_insn. 5162: * flow.c (propagate_block): Use insn_dead_p to decide whether 5163: to handle a REG_RETVAL note by skipping some insns. 5164: Always pass 1 for STRICT_LOW_OK for an insn that has a REG_RETVAL note. 5165: Handle case where REG_RETVAL points at an insn that's deleted. 5166: * flow.c (insn_dead_p): New operand STRICT_LOW_OK says an insn 5167: that sets STRICT_LOW_PART may be considered dead. 5168: 5169: * expr.c (expand_expr): Once again canonicalize X-C to X+(-C). 5170: Change on March 1 made it stop doing this. 5171: 5172: Wed Mar 9 01:25:35 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5173: 5174: * loop.c (move_movables): Don't always mark the moved reg 5175: as equivalent to a constant value: not if it is being cleared 5176: to zero-extend something or if it is used outside the loop. 5177: 5178: * expr.c (move_by_pieces_1): Finish last change. 5179: 5180: * stmt.c (assign_parms): Update stack_args_size properly. 5181: Figure FIRST_PARM_OFFSET when making the stack mem refs. 5182: 5183: * cse.c (insert): Build the related_value lists in the opposite order 5184: so that the oldest element in the chain is the one that follows 5185: the most basic element. 5186: 5187: * expr.c (expand_expr): COMPONENT_REF case: criterion for 5188: converting the the result is if MODE1 (its mode of arrival) isn't 5189: a mode we want. 5190: 5191: * toplev.c (rest_of_compilation): Fix typo setting TREE_ASM_WRITTEN. 5192: 5193: Tue Mar 8 13:18:37 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5194: 5195: * cse'ing of library calls. 5196: 5197: * expr.h: type `optab' is now a ptr to a struct. 5198: The old contents are now the `handlers' element. 5199: The `code' element gives the RTL code for the kind of expression 5200: this optab makes (PLUS for add_optab, etc.) 5201: Every var formerly declared `struct optab *' is now just `optab'. 5202: 5203: * optabs.c (init_optab, init_optabs): New function to init an optab 5204: and set its `code'. Used in init_optabs. 5205: 5206: * optabs.c (expand_binop, expand_unop): Use the `code' field 5207: to add a REG_EQUAL note to the insn that copies a libcall's 5208: value into a pseudo. Also a REG_RETVAL note pointing at the 5209: first insn for setting up args for the call. 5210: 5211: * cse.c (cse_insn): Process REG_EQUIV and REG_EQUAL datum almost like 5212: another set-src; put the actual src into the equivalence class of that. 5213: 5214: * flow.c (propagate_block): If a dead insn has a REG_RETVAL reg-note, 5215: either ignore or delete all the insns back to the insn the REG_ARG 5216: note points to. 5217: 5218: * local-alloc.c (block_alloc): Don't refrain from allocating a 5219: "constant" register if the constant value isn't ok for an immediate op. 5220: 5221: 5222: * dbxout.c (CONTIN): If DBX_CONTIN_LENGTH is <= 0, do nothing. 5223: 5224: * cccp.c: Extra default include dirs for C++. 5225: * cccp.c (main): For -M, strip dirs from object file name. 5226: 5227: * rtl.c (find_reg_note): New function. 5228: 5229: * expmed.c (store_fixed_bit_field): Don't AND with VALUE 5230: if VALUE's original mode had no more bits than we want. 5231: 5232: * expr.c (emit_library_call): Use varargs. 5233: 5234: * integrate.c (copy_and_substitute_rtx): Recognize arg_pointer_rtx 5235: and translate it just like frame_pointer_rtx. 5236: 5237: Mon Mar 7 00:48:33 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5238: 5239: * expmed.c (extract_fixed_bit_field): 5240: Shift counts were wrong for narrow MODE in signed case. 5241: Do the sign-extending shifts in the narrowest mode possible. 5242: Reduce big-endian case to little-endian case. 5243: Delete SLOW_ZERO_EXTEND conditional. 5244: 5245: * Implement constants in memory for RISC machines 5246: with limited abilities for immediate args and constant addresses. 5247: 5248: * genoutput.c (output_epilogue): Empty predicate-name 5249: is output as 0 in insn_operand_predicate. 5250: 5251: * expr.c (expand_expr): Change 4th arg to an `enum expand_modifier' 5252: Value EXPAND_SUM corresponds to old nonzero 4th arg. 5253: Value EXPAND_CONST_ADDRESS means ok to return an invalid MEM 5254: whose address is a constant. Changes for this case in ADDR_EXPR, 5255: COMPONENT_REF and ..._DECL. 5256: 5257: * varasm.c (output_arith_constant): Function deleted. 5258: * tm-*.h: (ASM_OUTPUT_{INT,SHORT,CHAR}): 2nd arg is now an RTX 5259: and output it using `output_addr_const'. 5260: * varasm.c (output_constant): Change uses of those macros. 5261: 5262: * varasm.c (init_const_rtx_hash_table): Initialize constant pool 5263: for a new function. Called from `expand_function_start'. 5264: * varasm.c (force_const_mem): Turn a constant rtx into a MEM rtx 5265: which refers to the constant pool. Other new subroutines too. 5266: (force_const_double_mem): Use force_const_mem to make the MEM. 5267: (immed_real_const): No longer record the REAL_CST node in the rtx. 5268: 5269: * explow.c (force_reg): If arg is a constant and not legitimate, 5270: put it in the constant pool with force_const_mem. 5271: Mark the register as equivalent to the constant value. 5272: * expr.c (emit_move_insn): Likewise. 5273: * explow.c (break_out_mem_refs): Use force_reg to put into a reg. 5274: * explow.c (memory_address): Likewise. 5275: * expr.c (expand_expr): ADDR_EXPR case: likewise. 5276: 5277: * expr.c (expand_call): Do force_reg on each register-operand 5278: so it will go through a pseudo and can be cse'd. 5279: 5280: * recog.c (immediate_operand, nonmemory_operand, general_operand): 5281: For constant operands, use LEGITIMATE_CONSTANT_P to decide value. 5282: * tm-*.h: Define LEGITIMATE_CONSTANT_P. 5283: 5284: * reload1.c (reload): Invalid constants can't go in reg_equiv_constant. 5285: 5286: Sun Mar 6 22:49:06 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5287: 5288: * reload.c (push_reloads): If IN occurs within OUT, 5289: don't reuse an existing input-only reload. Otherwise would lose on 5290: (set (mem (plus R C)) (plus R C1)) if R is available in a spill reg. 5291: 5292: * reload1.c (choose_reload_targets): Don't choose an inherited 5293: reload register that's in use for another reload. 5294: Without this, above change doesn't have an effect. 5295: 5296: * Implement the `unchanging' flag in MEM and REG rtx's. 5297: Also simplify code with a new subroutine `change_address'. 5298: 5299: * emit-rtl.c (change_address): Return new memory ref like an old 5300: one but with specified mode and address. 5301: * expmed.c (extract{,_split,_fixed}_bit_field): Use change_address. 5302: (store{,_split,_fixed}_bit_field): Likewise. 5303: * expr.c (store_expr, expand_expr): Likewise. 5304: 5305: * expr.c (move_by_pieces): Args now memrefs, not addresses. 5306: Eliminate the FROM_VOL and TO_VOL args since the memrefs indicate. 5307: Change the structure `struct move_by_pieces' similarly. 5308: (move_by_pieces_1): Same changes; use change_address. 5309: (emit_block_move, emit_push_insn): Calls to move_by_pieces changed. 5310: 5311: * integrate.c (copy_rtx_and_substitute): Use change_address; 5312: handle ->unchanging field. 5313: 5314: * rtl.c (rtx_varies_p): Regs or memrefs with ->unchanging don't vary. 5315: (copy_rtx): Perserve ->unchanging. 5316: (print_rtx): Print ->unchanging as /u. 5317: 5318: * stmt.c (expand_decl): Set ->unchanging on `const' decls. 5319: (fixup_memory_subreg): Use change_address. 5320: (assign_parms): Record in the rtl which parms are volatile or const. 5321: 5322: * varasm.c (assemble_variable): Set ->unchanging on `const' decls. 5323: (output_constant_def): Always set ->unchanging for constant refs. 5324: 5325: * cse.c (canon_hash): Don't treat a MEM as "in memory" 5326: if its ->unchanging bit is set. 5327: 5328: * loop.c (invariant_p): A REG or MEM with ->unchanging is invariant 5329: (for a MEM, the address must be invariant). 5330: 5331: Sat Mar 5 13:22:11 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5332: 5333: * genconfig.c (walk_insn_part): DO consider MATCH_DUPs 5334: when calculating MAX_RECOG_OPERANDS. 5335: (gen_expand): define_expand is now different from define_insn. 5336: Compute max # SETs or CLOBBERs for any one sub-insn in a define_expand, 5337: instead of summing them all. And don't count the MATCH_DUPs at all. 5338: 5339: * genemit.c (max_operand_1): Record largest opno in a MATCH_DUP 5340: separately from largest in a MATCH_OPERAND. 5341: (gen_expand): An operand # with only MATCH_DUPs gets 5342: a local variable in the gen_ function we output. 5343: 5344: * integrate.c (save_for_inline): Delete vestige of NOTE_INSN_IS_DECL. 5345: 5346: * cse.c (invalidate): Handle subregs. 5347: (cse_ins, invalidate_from_clobbers): Do call `invalidate' for subregs. 5348: (insert_regs): When assigning one subreg from a like one, 5349: make the two regs equivalent. 5350: (cse_insn): Do call insert_regs when dest is a subreg. 5351: 5352: * expr.c (expand_call): Precompute all args going via hard regs 5353: since even arithmetic could require a library call. 5354: 5355: Fri Mar 4 15:48:17 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5356: 5357: * stor-layout.c (layout_parms): Function deleted. 5358: * stmt.c (expand_function_start): Don't call it. 5359: 5360: * stmt.c (assign_parms): 5361: stack_args_size counts size of args so far passed on stack. 5362: Use PARM_BOUNDARY when counting it; derive stack offsets from it. 5363: Set current_function_args_size from it. 5364: 5365: When an arg is split between regs and stack, make stack space 5366: for the rest of it, and count it. 5367: In a varargs function, push the last arg onto the stack. 5368: When an arg is passed in regs alone, don't remember a stack slot 5369: for it, and if it needs one, use assign_stack_local. 5370: 5371: Set DECL_OFFSET to the stack offset, or -1 if parm came in regs. 5372: 5373: * expr.c (expand_call): Anonymous args of a varargs function 5374: are always passed on the stack. 5375: 5376: * varasm.c (force_const_double_mem): Copy the MEM rtx 5377: if it may need to be smashed by reloading. 5378: 5379: * genemit.c (gen_expand): define_expand must have nonempty pattern 5380: even though, due to `return' statements in the code-to-run, 5381: that pattern may not be used to generate code. 5382: 5383: Thu Mar 3 17:08:43 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5384: 5385: * expr.c (expand_expr): If supposed to sign-extend an enum 5386: which is never negative, zero-extend instead (unless SLOW_ZERO_EXTEND). 5387: (store_expr): Likewise. 5388: 5389: * reload.c (find_reloads): 'm' for CONST_DOUBLE: clear BADOP, not BAD. 5390: After force_const_double_mem, do find_reloads_toplev on the MEM. 5391: (find_reloads_address): Handle constant addresses (on machines 5392: that don't allow them). 5393: 5394: * final.c (set_current_gdbfile): New fn, get the gdbfile structure 5395: for specified filename. 5396: (output_source_line): Use set_current_gdbfile for the file. 5397: * varasm.c (assemble_variable): Call set_current_gdbfile 5398: for the declaration's source file, so GDB won't ignore the file. 5399: 5400: * varasm.c (force_const_double_mem): Build a new REAL_CST node 5401: and get its data type from the machine mode of the CONST_DOUBLE. 5402: (immed_real_const): Don't save the REAL_CST tree node. 5403: * typecheck.c (get_floating_type): Return float type for given mode. 5404: 5405: * integrate.c (expand_inline_function): Ignore the (USE (REG...)) 5406: (for the return-register) at the end of the inline function. 5407: After a CALL_INSN, imagine the (SET (REG ...) (REG ...)) for 5408: the return-register if the return-register isn't explicitly used. 5409: 5410: Wed Mar 2 22:08:49 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5411: 5412: * typecheck.c (build_array_ref): Do default_conversion on INDEX. 5413: 5414: Tue Mar 1 15:49:34 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5415: 5416: * expr.c (expand_call): Always get a SYMBOL_REF for a fixed function. 5417: If may be alloca, set may_call_alloca. 5418: (gen_call_1): Never put a SYMBOL_REF through `memory_address'; 5419: but if function cse is wanted, just copy it to a register. 5420: If NO_FUNCTION_CSE is defined, never do function cse. 5421: 5422: * expr.c (init_expr): New function, does init_queue and inits 5423: other things. 5424: 5425: * stmt.c (expand_function_start): Call init_expr, not init_queue. 5426: 5427: * optabs.c (expand_binop): Don't clobber OP0 and OP1 5428: if may call delete_insns_since later. 5429: 5430: * expr.c (emit_library_call): PUSH_ARGS_REVERSE test was backwards. 5431: 5432: * cse.c (cse_insn): Do canon_reg on the size and position operands 5433: in a ZERO_EXTEND or SIGN_EXTEND that is a destination. 5434: 5435: * tm-*.h: Define SLOW_BYTE_ACCESS. 5436: * expmed.c ({store,extract}_fixed_bit_field): 5437: If SLOW_BYTE_ACCESS, get/set all bit fields from full words. 5438: 5439: * combine.c (subst): Simplify 5440: (zero_extend:SI (subreg:QI (zero_extract ...))). 5441: * combine.c (simplify_and_const_int): Simplify 5442: (and (zero_extract ...) (const_int ...)). 5443: 5444: * local-alloc.c (qty_compare{,_1}): Test of qty_phys_sugg was reversed. 5445: (combine_regs): If one pseudo gets two suggested hard regs 5446: (one at birth and one at death), prefer the one from birth 5447: unless we see at death that it's no good. 5448: 5449: * expr.c (expand_expr): Ignore sum_ok unless mode is Pmode. 5450: Don't use force_operand unless sum_ok is set. 5451: 5452: Mon Feb 29 19:23:50 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5453: 5454: * expr.c (emit_move_insn): When a CONST_DOUBLE needs moving 5455: by pieces, force it into memory, unless it is dconst0_rtx, 5456: in which case each piece is const0_rtx. 5457: (emit_push_insn): Likewise. Also, write code for pushing a 5458: non-BLK mode which has no "mov" insn defined, but only 5459: in the case where there is no PUSH_ROUNDING. 5460: 5461: * expr.c (do_tablejump): Put constant term in address last. 5462: 5463: * toplev.c (xrealloc): On error, call fatal instead of abort. 5464: 5465: * optabs.c (emit_cmp_insn): If genning from tst_optab, 5466: make the operand fit its predicate. 5467: 5468: * optabs.c (expand_float): Don't adjust stack between cmp and jump. 5469: 5470: * optabs.c (expand_binop): Recursive calls can return 0; handle 5471: that event by deleting any preparatory insns. Also don't smash 5472: TARGET when this happens. 5473: 5474: * reload.c (push_reload): If IN != *INLOC, set reload_nocombine. 5475: (combine_reloads): Don't combine an input reload with reload_nocombine. 5476: 5477: * jump.c (jump_optimize): Don't delete stack adjusts unless 5478: EXIT_IGNORE_STACK is nonzero. 5479: * expr.c (clear_pending_stack_adjust): Likewise. 5480: * tm-*.h: When EXIT_IGNORE_STACK is defined, give it `1' as defn. 5481: 5482: * expr.c (expand_call): Initialize args_size. 5483: Don't push a block if args_size is 0. 5484: (emit_library_call): Don't include register-args (or reg-parts 5485: of partial ones) in args_size. 5486: Don't push a block if args_size is 0. 5487: 5488: * expr.c (expand_expr): For DECLs in memory, check the address 5489: validity with memory_address_p, and preserve volatility info. 5490: 5491: * stmt.c (expand_function_end): fixup_gotos needs 2 args. 5492: 5493: * jump.c (mark_jump_label): If INSN is 0, don't set its JUMP_LABEL. 5494: Inside an ADDR_VEC or ADDR_DIFF_VEC, recurse with 0 for INSN. 5495: 5496: * varasm.c (force_const_double_mem): Must zero TREE_CST_RTL 5497: before output, or nothing will happen. 5498: 5499: Sun Feb 28 01:08:53 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5500: 5501: * optabs.c (emit_unop_insn): Generate and emit an insn 5502: given the insn-code and the two operands (one out, one in). 5503: Can move the operands into registers when needed for various 5504: reasons. 5505: * expr.c (convert_move): Use emit_unop_insn for outputting the 5506: conversion insns. 5507: 5508: * expr.c (emit_library_call): Use arg's nominal mode to choose 5509: a reg to pass it in, not actual mode (which can be VOIDmode). 5510: 5511: * insn-emit.c (emit_insn): If arg is empty SEQUENCE, do nothing. 5512: 5513: * genemit.c (gen_expand): Scan the rtl-pattern for predicates 5514: and machine modes of the operands. 5515: 5516: * m68k.d (dbra patterns): Add HPUX_ASM conditionals. 5517: 5518: * rtl.c (reg_mentioned_p): Use "equal", not "eq", when 5519: REG isn't a register. 5520: * reload.c (combine_reloads): Verify not reg_mentioned_p even if 5521: the input reload's value isn't a register. 5522: 5523: * reload.c (operands_match_p): If successful and 2nd arg 5524: has a pre-increment that matches a non-increment, return 2. 5525: 5526: * reload1.c (reload): At end, clobber a pseudoreg to a MEM 5527: even if it's an out-of-range address. It doesn't affect the 5528: assembler code in this case, but it makes the dbx output correct. 5529: 5530: * recog.c (constrain_operands): When operands_match_p returns 2, 5531: in the constraint alternative that is ultimately successful, 5532: copy the output operand from the input that it matched 5533: so that the assembler insn that is output shows the pre-increment. 5534: 5535: Sat Feb 27 15:16:47 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5536: 5537: * combine.c (subst): When optimizing 5538: (set (zero_extract ...) (and (zero_extract ...) const)) 5539: must arrange to have 1's, not 0's, shifted into low bits of const. 5540: 5541: * decl.c (grokdeclarator): When return-type defaults to int, 5542: don't warn, just set warn_about_return_type. 5543: (start_function): See that variable and warn, after starting function. 5544: 5545: * toplev.c (count_error): No longer print newline if not quiet. 5546: (report_error_function): If not quiet, print a newline if 5547: printing anything, and don't print the function name. 5548: 5549: * reload1.c (choose_reload_targets): 5550: Fix the loop that checks for consecutive available spill regs. 5551: Set `have_groups' nonzero if any reload wants a group. 5552: In that case, for non-group reloads, prefer a reg that can't be in 5553: group, or else one that has only one available neighbor. 5554: 5555: * reload1.c (reload): Find separately the max need for each class 5556: for single registers, groups of registers, and single registers 5557: not in any group. (The last one counts non-group reloads 5558: in insns that have at least one group reload.) 5559: Then make sure enough of each kind are found. 5560: 5561: * expmed.c: Now needs flags.h and recog.h (therefore insn-config.h). 5562: 5563: * expmed.c (store_bit_field): 5564: Delete redundant protect_from_queue. 5565: Force VALUE out of memory if -fforce-mem. 5566: If insv's predicate for VALUE wants a register, put it there. 5567: 5568: * expmed.c (extract_bit_field): 5569: Force TARGET out of memory if -fforce-mem. 5570: If insv's predicate for TARGET wants a register, put it there. 5571: 5572: Fri Feb 26 00:12:48 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5573: 5574: * reload1.c (eliminate_frame_pointer): Don't check for pushes 5575: unless PUSH_ROUNDING is defined. 5576: 5577: * reload.c: Don't define REG_OK_FOR_{INDEX,BASE}_P 5578: (since the tm file is supposed to do it). 5579: 5580: * expr.c (emit_push_insn, expand_call): 5581: Don't use PUSH_ROUNDING if it's not defined. 5582: 5583: * expr.c (preexpand_calls): Do nothing for constants and decls. 5584: 5585: * expr.c (expand_call, emit_library_call): When PUSH_ROUNDING 5586: is not defined, use ROUND_CALL_BLOCK_SIZE to round the size 5587: of the block of arguments. 5588: 5589: * expr.c (expand_call): Don't count register-args in ARGS_SIZE. 5590: 5591: * rtl.h, emit-rtl.c: Create static_chain_incoming_rtx 5592: and struct_value_incoming_rtx. 5593: * stmt.c (expand_function_start): Use ..._incoming_rtx where needed. 5594: 5595: * expr.c (expand_call): Use new macros INIT_CUMULATIVE_ARGS, 5596: CUMULATIVE_ARGS and FUNCTION_ARG_ADVANCE to update data 5597: on args scanned so far. 5598: (emit_library_call): Likewise. 5599: * stmt.c (assign_parms): Likewise. 5600: * tm-spur.h, tm-m68k.h: Define these macros. 5601: 5602: * rtl.h (NUM_MACHINE_MODES): NUM_MACHINE_MODE renamed. 5603: * rtl.c, genrecog.c: Change places it is used. 5604: 5605: * cccp.c (output_line_command): line_cmd_buf should be chars, not ints. 5606: 5607: Thu Feb 25 13:33:29 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5608: 5609: * genemit.c (gen_expand): Don't lose if pattern is empty-vector. 5610: 5611: * genconfig.c (gen_insn): Don't lose if pattern is empty-vector. 5612: 5613: * expr.c (expand_expr): For COMPONENT_REF, don't convert to tmode 5614: unless the mode we get is unacceptable. 5615: 5616: * loop.c (scan_loop, move_movables): New field `partial' is 1 for 5617: zero-extending clr insn; don't make the reg invariant when it's moved. 5618: 5619: * optabs.c (expand_unop, expand_binop, emit_cmp_insn): 5620: mode-argument to predicates was missing. 5621: 5622: * optabs.c (expand_binop): If gen-function returns 0, this means 5623: the insn wasn't available. 5624: 5625: * reload.c (find_reloads): Don't make optional reloads for operands 5626: that match other operands. 5627: 5628: * reload.c (combine_reloads): Reject optional output reload. 5629: 5630: * reload.c (find_equiv_reg): Know that CALL_INSNs clobber memory. 5631: 5632: * typecheck.c (build_binary_op_nodefault): 5633: If doing a short shift, leave the shift-count as a fullword. 5634: 5635: Tue Feb 23 14:43:46 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5636: 5637: * combine.c (subst): Count, in n_occurrences, # times FROM is seen. 5638: (try_combine): Refuse to combine x=*y++ into z = x*x. 5639: 5640: * loop.c (invariant_p): Frame pointer and arg pointer are invariant. 5641: (move_movables): Don't forget to set ->done! 5642: When moving the matching movables, don't forget to set n_times_set. 5643: 5644: * expmed.c (expand_shift): Reorder strategies for logical shift; 5645: if widening, try all ashift strategies before extzv. 5646: 5647: * typecheck.c (build_binary_op_nodefault): 5648: Always return error_mark if either operand is one. 5649: 5650: * recog.c (nonmemory_operand): New predicate. 5651: 5652: * optabs.c (expand_unop, expand_binop, emit_cmp_insn): 5653: Don't treat `register_operand' as special. Apply the predicate 5654: to the rtx; if the predicate fails, use a register instead. 5655: 5656: Mon Feb 22 22:37:32 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5657: 5658: * expr.c (expand_calls): Preexpand all calls in arguments 5659: that are passed in regs before copying any of them into the regs. 5660: 5661: * expr.c (emit_push_insn): Three more args. 5662: EXTRA for extra space to leave. 5663: ARGS_ADDR and ARGS_SO_FAR for using move-insns on machines 5664: that lack true push insns. 5665: 5666: * expr.c (emit_library_call, expand_call): 5667: Use the new arguments of `emit_push_insn'. 5668: 5669: * expr.c (PUSH_ARGS_REVERSED): defined if handle args last-to-firs. 5670: 5671: Sun Feb 21 12:17:59 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5672: 5673: * toplev.c (rest_of_compilation): Set TREE_ASM_WRITTEN 5674: when a function is really output as assembler code. 5675: Don't do inlining of a function that is already made inline; 5676: instead, output it as assembler code, because this must be 5677: the second call for that function. 5678: 5679: * decl.c (finish_compilation): Delete it. 5680: * toplev.c (compile_file): Output pending inline functions at the end 5681: in the same way tentative-defined variables are output. 5682: 5683: * emit-rtl.c (restore_reg_data): New fn: given chain of insns, 5684: restore emit-rtl's data on registers from the regs they use. 5685: 5686: * integrate.c (output_inline_function): Use restore_reg_data. 5687: (fill_regno_reg_rtx_as_needed): Now restore_reg_data_1 in emit-rtl.c. 5688: 5689: * tree.c (build_decl): Function moved from decl.c. 5690: No longer set attributes of function decls specially. 5691: 5692: * decl.c (implicitly_declare, builtin_function, grokdeclarator): 5693: Don't expect build_decl to set attributes of FUNCTION_DECL. 5694: 5695: * tree.c (preserve_data): New fn, make all data now on 5696: maybepermanent_obstack last permanently. 5697: 5698: * cse.c (cse_insn): Remove a STRICT_LOW_PART from the dest rtx 5699: before putting it in the hash table. 5700: 5701: * symout.c (symout_block): Fix the args to `symout_block_symbols'. 5702: 5703: Sat Feb 20 00:07:52 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5704: 5705: Start of changes for inline functions. 5706: Changes received from Tiemann, then slightly rearranged for simplicity. 5707: 5708: * integrate.c: New file (Tiemann's rtl2.c). 5709: * integrate.c (function_cannot_integrate_p): 5710: New fn, only checks whether current fn is safe and good to inline. 5711: Returns an error message string if not. 5712: 5713: * expr.c (current_args_size): Var made static. 5714: (store_expr): Fn no longer static. 5715: (stack_pointer_rtx): Use this var for all refs to the stack pointer. 5716: (struct_value_rtx, static_chain_rtx): Likewise 5717: 5718: * expr.c (expand_call): Detect calls to integrable functions 5719: and integrate them. 5720: **If fn is not named "alloca" then assume it is not `alloca'. ** 5721: 5722: * emit-rtl.c (max_label_num): New fn, returns number for next label. 5723: (get_first_label_num): New fn, returns first label of current fn. 5724: (init_emit): Save first label number of this fn. 5725: 5726: * emit-rtl.c (gen_inline_header_rtx): New fn, make an INLINE_HEADER. 5727: 5728: * emit-rtl.c (emit_declaration): New fn to emit new kind of NOTE. 5729: 5730: * emit-rtl.c (init_emit_once): New fn. 5731: Move inits of unique rtl objects here, from init_emit. 5732: 5733: * decl.c (finish_compilation): New fn to compile separately 5734: any nonglobal inline functions that need to be addressable. 5735: 5736: * decl.c (grokdeclarator): Handle `inline' kwd among the declspecs. 5737: Set TREE_INLINE if it's safe. 5738: 5739: * decl.c (finish_function): If fn was inlined, don't clear 5740: the DECL_ARGUMENTS or DECL_RESULT or DECL_INITIAL. 5741: 5742: * gen*.c: Provide rtl_obstack, not current_obstack. 5743: 5744: * rtl.c (rtl_obstack): Variable: ptr to obstack to use for making rtl. 5745: * rtl.c (rtx_alloc, rtvec_alloc): Use that obstack. 5746: * rtl.c (copy_rtx): Copy the `integrated' flag. 5747: * rtl.c (print_rtx): Print that flag as `/i'. 5748: 5749: * rtl.def: New rtx code INLINE_HEADER. 5750: 5751: * rtl.h (struct rtx_def): Add `integrated' field. 5752: * rtl.h: Define macros for fields in an inline_header rtx. 5753: 5754: * stmt.c (max_parm_reg_num, get_first_function_insn): 5755: New fns, return info on parm regs and the insns that init them. 5756: 5757: * stmt.c (expand_decl): Simplify with new local `type'. 5758: 5759: * stmt.c (stack_pointer_rtx): Replace all refs to stack pointer 5760: with this shared rtx. 5761: * stmt.c (struct_value_rtx): Likewise. 5762: 5763: * stmt.c (expand_start_function): Call init_pending_stack_adjust 5764: instead of clear_pending_stack_adjust. 5765: If not using a return-label, set `return_label' to 0. 5766: 5767: * stmt.c (expand_null_return, expand_end_function): 5768: Call clear_pending_stack_adjust unconditionally. 5769: 5770: * expr.c (clear_pending_stack_adjust): Move the conditionals here. 5771: For now, this fn is a no-op, since it's not safe in an inline fn 5772: and the stack adjusts are deleted by jump.c in if optimizing. 5773: 5774: * expr.c (init_pending_stack_adjust): New fn. 5775: 5776: Fri Feb 19 14:30:13 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5777: 5778: * toplev.c (main): Decode -finline-functions, -fkeep-inline-functions. 5779: 5780: * toplev.c (rest_of_compilation): 5781: At start, save the rtl if function should be inline. 5782: For inline function, if we don't yet know whether it should be 5783: compiled on its own, don't do so. 5784: 5785: * toplev.c (compile_file): Clear, and later print, `integration_time'. 5786: Call `init_emit_rtl' when starting. 5787: Call `finish_compilation' at the end. 5788: 5789: [Add an extra arg to the error and warning functions?] 5790: 5791: * tree.c ({push,pop,clear}_momentary): 5792: Change momentary_stack from a char ** to a struct momentary_level *. 5793: 5794: * tree.c (build_pointer_type): Put temporary type in `saveable_obstack' 5795: * tree.c (build_type_variant): Likewise. 5796: * tree.c (make_node): Likewise. Also put decls and LET_STMTs there. 5797: * tree.c (type_hash_canon): Free a temporary type in `saveable_obstack' 5798: 5799: * tree.c (perm_tree_cons): Like `tree_cons' but on perm. obstack. 5800: 5801: * tree.c (init_tree, {{end_,}temporary,permanent}_allocation): 5802: Handle `maybepermanent_obstack' and `saveable_obstack' and 5803: `rtl_obstack'. 5804: 5805: * tree.h (TREE_INLINE): New attribute macro. 5806: * tree.h (DECL_SAVED_INSNS, DECL_FRAME_SIZE): 5807: New components in a FUNCTION_DECL. 5808: Delete the `unused` slot in a `struct tree_decl'. 5809: 5810: * typecheck.c (mark_addressable): Set TREE_ADDRESSABLE 5811: even in FUNCTION_DECLs. 5812: 5813: * typecheck.c (build_function_call): 5814: If function is a FUNCTION_DECL, avoid setting TREE_ADDRESSABLE 5815: when taking its address. 5816: 5817: * parse.h: Define RID_INLINE. 5818: * parse.y: Define keyword `inline'; set up ridpointers for it. 5819: (yylex): Don't recognize `inline' of -fno-asm or -ftraditional. 5820: 5821: * flags.h: New vars flag_inline_functions 5822: and flag_keep_inline_functions. 5823: 5824: End of changes for inline functions. 5825: 5826: * tree.c (convert): If EXPR's type is an error_mark, return error_mark. 5827: 5828: * Makefile (install): Don't strip the executables. 5829: 5830: * jump.c (delete_insn): Deleting a label's target 5831: can delete either NEXT and PREV! So must search for a 5832: following nondeleted insn to return. 5833: 5834: * typecheck.c (build_function_call): Typo in validating 5835: data type of function. 5836: 5837: * genoutput.c (gen_expand): Must create a `struct data' even 5838: for a define_expand, so we can output the proper insn_gen_function 5839: and leave zeros in the other tables. 5840: 5841: * loop.c (scan_loop): Replace the code for handling zero-extends 5842: with unconditional code that checks for a pair of insns. 5843: 5844: * m68k.md: Do zero-extend using define_expand to generate 5845: a pair of insns, to set all to zero and then copy the low part. 5846: 5847: Thu Feb 18 15:54:00 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5848: 5849: * emit-rtl.c (emit_insn): If arg is a SEQUENCE, emit several insns. 5850: * emit-rtl.c (classify_insn): Given an RTX, return the rtx-code for 5851: an insn containing it: CODE_LABEL, INSN, JUMP_INSN or CALL_INSN. 5852: 5853: * rtl.def: New RTX types DEFINE_EXPAND and SEQUENCE. 5854: * gen*.c: Handle DEFINE_EXPAND. Only genemit.c does real work. 5855: 5856: * make.com, make-cc1.com, make-cccp.com: New, VMS command files. 5857: 5858: * tm-vms.h: New file, used as tm.h to generate VMS code. 5859: 5860: * tm-vax.h (FUNCTION_PROLOGUE): Turn off no bits in the mask; 5861: let call_used_registers alone control this. 5862: Call MAYBE_VMS_FUNCTION_PROLOGUE, and define that as no-op. 5863: 5864: * tm-vax.h (TARGET_VAXC_ALIGNMENT): New target-flag bit. 5865: BIGGEST_ALIGNMENT, EMPTY_FIELD_BOUNDARY and POINTER_BOUNDARY use it. 5866: 5867: * varasm.c (assemble_function): Use ASM_DECLARE_FUNCTION_NAME 5868: if it is defined. 5869: 5870: * varasm.c (assemble_variable): On an external, 5871: use ASM_OUTPUT_EXTERNAL if defined. Default is do nothing, as before. 5872: 5873: * toplev.c: 5874: Use FATAL_EXIT_CODE and SUCCESS_EXIT_CODE. 5875: Don't include time.h and resource.h on VMS. 5876: (main) Define __VERSION__ if not already defined. 5877: Conditionalize setrlimit on RLIMIT_STACK. 5878: Test __GNUC__, not __GNU__. 5879: Don't do `ps v' on VMS. 5880: (gettime): Conditional code for VMS. 5881: 5882: * gcc.c: Define __GNUC__ as well as __GNU__. 5883: __GNU__ will be deleted in a future version. 5884: 5885: * symout.c (symout_finish) [VMS]: Don't refer to `getwd' on VMS. 5886: * symout.c (symout_init) [VMS]: Fatal error; GDB syms not supported. 5887: 5888: * parse.y (yylex): Handle DOLLARS_IN_IDENTIFIERS. 5889: 5890: * genoutput.c (gen_insn): Workaround for VMS printf %s bug. 5891: 5892: * gen*.c: Include config.h. Whenever exiting, use 5893: SUCCESS_EXIT_CODE or FATAL_EXIT_CODE. 5894: 5895: * config-*.h: Define SUCCESS_EXIT_CODE and FATAL_EXIT_CODE. 5896: * config-vms.h: New file, mostly like config-vax.h. 5897: 5898: Wed Feb 17 13:35:34 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5899: 5900: * cccp.c: VMS support from Kashtan. 5901: Some #include files are conditional. 5902: Use file_size_and_mode instead of fstat. 5903: When reading file contents, the size we get from that 5904: is just an upper bound; don't assume it must match. 5905: Replacement definitions of read and write for VMS. 5906: Different default include directories. 5907: Conditionalize the setrlimit code on RLIMIT_STACK. 5908: Use SUCCESS_EXIT_CODE when exiting if no errors; 5909: both that and FATAL_EXIT_CODE are not #defined if already defined. 5910: 5911: Treat $ as an identifier-character if DOLLARS_IN_IDENTIFIERS. 5912: Rename the `delete' function as `delete_macro' 5913: to avoid VMS name conflict. 5914: 5915: * cexp.y: Treat $ as an identifier-character if DOLLARS_IN_IDENTIFIERS. 5916: 5917: * stmt.c (fixup_memory_offset): Do big-endian compensation 5918: only within a word, not for DImode vs SImode. 5919: 5920: * stmt.c (fixup_var_refs): Don't fix up the insn to load the var 5921: from its own stack slot; delete it instead. 5922: 5923: * tm-ns32k.h (MODES_TIEABLE_P): DImode is like DFmode. 5924: 5925: * tree.c (MAX_HASH_TABLE): 1009 (more prime) instead of 1008. 5926: 5927: * decl.c (duplicate_decls): If merged type is OLD's type, 5928: keep OLD's DECL_SIZE and DECL_SIZE_UNIT. 5929: 5930: * gen*.c (xmalloc, xrealloc): Call `fatal' if memory is full. 5931: 5932: * reload1.c (choose_reload_targets): If a mode doesn't fit the 5933: reload register, and the insn is an ASM_OPERANDS, ignore the reload. 5934: Otherwise, final would crash. 5935: 5936: * expmed.c (expand_shift): Two new strategies for lshr on short/char: 5937: widen and do ashr, or widen and do extzv. 5938: 5939: * vax.md (peepholes): Use dead_or_set_p to check for eliminable 5940: intermediate result, rather than requiring a match with final result. 5941: 5942: * local-alloc.c (block_alloc): Testing frame_pointer_needed is 5943: enough; no need to test FRAME_POINTER_REQUIRED, etc. 5944: * global-alloc.c (find_reg): Likewise. 5945: * reload1.c (reload): Likewise for flag_omit_frame_pointer 5946: 5947: * jump.c (delete_insn): If not `optimize', don't complain 5948: about finding an already-deleted insn in the chain. 5949: 5950: Tue Feb 16 17:14:54 1988 Richard Stallman (rms at wheaties.ai.mit.edu) 5951: 5952: * final.c: Don't define N_SOL and N_SLINE if already defined. 5953: 5954: * final.c (output_source_line): 5955: Typo calling ASM_OUTPUT_SOURCE_FILENAME. 5956: 5957: * flow.c (INSN_VOLATILE): fix a typo. 5958: 5959: Fri Feb 12 16:48:16 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 5960: 5961: * final.c (final): for `asm' without operands, output literally. 5962: 5963: Thu Feb 11 12:44:41 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 5964: 5965: * symout.c (symout_record_fields): Handle nameless fields. 5966: * symout.c (symout_record_field_names): Likewise. 5967: 5968: * typecheck.c (require_complete_type): `void' is a complete type. 5969: * typecheck.c (build_function_call): Don't complain if result is void. 5970: 5971: * tm-hp9k320.h: Change definition of ASM_SPEC to +X, not -X. 5972: 5973: * cccp.c (main): Expected object file name for foo.cc is foo.o. 5974: 5975: Wed Feb 10 16:04:58 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 5976: 5977: * reload1.c (reload): Initialize `regmask' to zero. 5978: Class number is in I, not in CLASS, when setting its elements. 5979: Don't let J+K be too large. 5980: 5981: * reload1.c (potential_reload_regs): Make it a `short' 5982: since that can't be unsigned. 5983: 5984: * cccp.c (warning): New function, called like `error'. 5985: * cccp.c (do_define): Make redefinition just a warning. 5986: 5987: Tue Feb 9 13:28:00 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 5988: 5989: * decl.c (grokdeclarator): Don't be fooled by ERROR_MARK as a declspec. 5990: 5991: * toplev.c (compile_file): Strip final .c or .co from .sym file name. 5992: 5993: * gcc.c: When running `as', specify the .sym file if -gg. 5994: 5995: Mon Feb 8 11:26:26 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 5996: 5997: * expmed.c (store_fixed_bit_field): Don't try gen_lowpart on VALUE 5998: if it's a subreg since it might lose; use convert_to_mode instead. 5999: 6000: * tm-hp9k320.h: Define TARGET_MEM_FUNCTIONS. 6001: * expr.c (emit_block_move, emit_push_insn, clear_storage): 6002: If TARGET_MEM_FUNCTIONS, generate calls to memcpy and memset 6003: instead of bcopy and bzero. 6004: * optabs.c (emit_cmp_insn): Likewise for memcmp vs bcmp. 6005: 6006: * stmt.c (expand_goto): New temp var to avoid RT/PC compiler bug. 6007: 6008: Sun Feb 7 12:20:23 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 6009: 6010: * flow.c (mark_used_regs, mark_set_regs): 6011: Handle hard regs in multiword modes: set the bits for each 6012: distinct register-number that makes up the multiword mode. 6013: Necessary because function arg registers can inevitably 6014: live across basic blocks. 6015: 6016: * cse.c (canon_hash): Function arg and value registers no longer 6017: considered volatile, because flow should now handle the code that 6018: can result from cse'ing them. 6019: 6020: * cse.c (make_regs_eqv): Abort if OLD is invalid. 6021: * cse.c (reg_invalidate): Abort if reg already invalid has eqvs. 6022: 6023: Sat Feb 6 16:25:32 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 6024: 6025: * gcc.c (main): Specific error msg if no input files. 6026: 6027: Fri Feb 5 17:56:00 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 6028: 6029: * stmt.c (expand_decl, put_var_into_stack, assign_parms): 6030: Set in_struct on a MEM if the variable is an aggregate or union. 6031: * varasm.c (assemble_variable): Set in_struct on aggregate vars. 6032: 6033: Thu Feb 4 11:52:30 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 6034: 6035: * m68k.md (movsf): Correct two fmove.x to fmove.s. 6036: 6037: * expmed.c (extract_fixed_bit_field): 6038: Must always generate an `and' to mask the bitfield 6039: unless its width is the same as the output machine mode. 6040: 6041: * version 1.18 released. 6042: 6043: Wed Feb 3 08:41:20 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 6044: 6045: * fold-const.c (fold): Convert EXPR's operands before returning them. 6046: 6047: Tue Feb 2 15:35:18 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 6048: 6049: * reload.c (find_reloads_address_1): 6050: 6051: * typecheck.c (default_conversion): Handle COMPOUND_EXPR arrays. 6052: 6053: Mon Feb 1 18:53:05 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 6054: 6055: * ns32k.md: operand 0 of all unsigned divide/modulus insns 6056: is now register_operand. 6057: 6058: * stdarg.h: Make va_list be char *, not char *[1]. 6059: Latest draft doesn't say it must be an array type. 6060: 6061: Sun Jan 31 11:14:07 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 6062: 6063: * flow.c (find_basic_blocks): Add temp var to avoid Sequent 6064: compiler bug. 6065: 6066: * tm-ns32k.h (GO_IF_LEGITIMATE_ADDRESS): Don't allow pushes or pops 6067: since there are special insn patterns for them. 6068: Resubroutinize and add temp vars to make expressions smaller. 6069: * ns32k.md: Add a few more special stack insns; now there are enough. 6070: 6071: * tm-sequent.h: Definitions of DBX_NO_XREFS and DBX_CONTIN_LENGTH. 6072: 6073: * reload1.c (choose_reload_targets): Handling of reload_strict_low 6074: is needed for input reloads as well as output, since a strict_low_part 6075: operand is normally a read-write operand. 6076: 6077: * reload1.c (reload): The mode a reload needs is the wider of 6078: the input and output modes--just as it is in choose_reload_targets. 6079: 6080: * reload.c (find_dummy_reload): If IN and OUT have different widths 6081: and one of them exceeds a word, don't find any dummy reload. 6082: 6083: * toplev.c (compile_file): Allocate enough space for .jump2 filename. 6084: 6085: Sat Jan 30 10:35:46 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 6086: 6087: * output-ns32k.c (print_operand_address): 6088: Print addresses of the form C1+(N*REG+C2) which currently 6089: are accepted as legitimate memory addresses. 6090: 6091: * tm-sequent.h: Simple bugs in PRINT_OPERAND, TARGET_DEFAULT 6092: and SEQUENT_ADDRESS_BUG. 6093: 6094: * gen*.c: Must explicitly exit; returning from `main' fails 6095: to indicate nonzero status due to bug in Unix. 6096: 6097: * parse.y (check_line_number): Ignore entire line of unrecognized 6098: #-directive; no error if it is `pragma'. 6099: 6100: Fri Jan 29 06:46:01 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 6101: 6102: * genrecog.c, genextract.c, genoutput.c: Define bcopy and/or bzero. 6103: 6104: * cccp.c (do_define): Make defn->argnames long enough in no-args case. 6105: 6106: * reload1.c (reload): Make basic_block_needs 0 until after the 6107: frame pointer reg is spilled, so that ALL pseudos in it are spilled. 6108: 6109: * typecheck.c (truthvalue_conversion): 6110: Strip a NOP_EXPR only if it extends, not if it truncates. 6111: (build_unary_op): For TRUTH_NOT_EXPR, call invert_truthvalue 6112: to simplify. 6113: 6114: * Fixes for HPUX support from cph: 6115: * tm-hp9k320.h: Correct names of floating-point registers. 6116: Fix typos in ASM_OUTPUT_OPCODE; also convert `fmove' to `fmov'. 6117: * Makefile (comments for HPUX): 6118: cph says -Wd,-X isn't needed in CFLAGS, nor -lBSD in CLIB. 6119: Also that -g can't be used in CFLAGS with HP's pcc. 6120: * conf-hp9k320.h: New file, like config-m68k.h but with 6121: #defines for the bstring functions. 6122: * m68k.md: Add else-clauses to the HPUX_ASM conditionals on cmp insns. 6123: Reinsert mistakenly-deleted MOTOROLA conditionals around 6124: some OUTPUT_JUMPs. 6125: 6126: Thu Jan 28 09:51:41 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 6127: 6128: * jump.c (jump_back_p): If TARGET is unconditional, return 0. 6129: 6130: Wed Jan 27 04:18:29 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 6131: 6132: * combine.c (subst): Simplify (plus (plus x c1) c2). 6133: 6134: * expr.c (emit_push_insn): Don't use small-block push-insns for BLKmode 6135: when one of them would be affected by PUSH_ROUNDING. 6136: Instead, make all the space and then copy. 6137: * expr.c (expand_call): Don't apply PUSH_ROUNDING if BLKmode. 6138: 6139: * Allow `asm' with operands to be marked volatile. 6140: * cse.c (canon_hash): Don't record ASM_OPERANDS that has `volatil'. 6141: * loop.c (invariant_p): ASM_OPERANDS with `volatil' can't be invariant. 6142: * flow.c (volatile_refs_p): Note ASM_OPERANDS that are volatile. 6143: * stmt.c (expand_asm_operands): New arg VOL; mark ASM_OPERANDS as vol. 6144: * typecheck.c (c_expand_asm_operands): New arg VOL. 6145: * parse.y: allow a TYPE_QUAL after ASM. 6146: 6147: * Make cse handle `asm' with operands: 6148: * cse.c (canon_hash): Hash string operands by contents, not address. 6149: * cse.c (exp_equiv_p): Compare string operands with strcmp. 6150: * rtl.c (rtx_equal_p): Compare string operands with strcmp. 6151: 6152: * decl.c (init_decl_processing): Once sizetype is set, 6153: correct the type of the sizes of types already made. 6154: 6155: * cccp.c (do_defines): Don't reject #define foo{a}. 6156: 6157: Tue Jan 26 04:53:16 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 6158: 6159: * reload.c (find_reloads): Now that `asm' is limited to 6160: MAX_RECOG_OPERANDS, eliminate dynamic allocation of `constraints' 6161: and `constraints1', and go back to `recog_operand' instead of 6162: `operands'. 6163: 6164: * typecheck.c (c_expand_asm_operands): New fn to handle `asm' for C. 6165: Calls expand_asm_operands, and handles output operands that 6166: the other function cannot handle. 6167: 6168: * parse.y: Call that function. 6169: 6170: * stmt.c (expand_asm_operands): Error if too many operands. 6171: #include insn-config.h to get MAX_RECOG_OPERANDS. 6172: 6173: * expr.c (expand_assignment): Use store_field to handle 6174: structure fields and array elements. 6175: 6176: * output-m68k.c (output_move_double): PUSHOP and POPOP were swapped. 6177: Handle insns that push an sp-relative address onto sp; 6178: these can arise with -fomit-frame-pointer. 6179: BUG? Do unoffsetable mem refs using sp and fp lose? 6180: 6181: * m68k.md (movdi,movdf): Allow unoffsetable mem refs 6182: only if the other operand is a register. 6183: 6184: * m68k.md (zero_extendqisi2): SGS conditionals deleted. 6185: Supposedly the MOTOROLA syntax works for those addresses. 6186: 6187: * typecheck.c (default_conversion): 6188: If flag_traditional, preserve unsignedness when promoting ints, 6189: and promote float to double. 6190: 6191: * typecheck.c (build_binary_op_nodefault): 6192: Allow comparisons between pointers and ints. 6193: If not -traditional, warn about them. 6194: 6195: Mon Jan 25 02:11:18 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 6196: 6197: * expmed.c ({extract,store}_split_bit_field): 6198: Functions {extract,store}_split_reg_bit_field now work for memory 6199: also, and therefore are renamed. 6200: * ({extract,store}_fixed_bit_field): Call those fns when a field 6201: is split across two words. 6202: Also, preserve the `volatil' bit on memory refs. 6203: 6204: * output-m68k.c (output_move_double): Handle nonoffsetable mem refs. 6205: * m68k.md: Relax constraints on movdi, movdf. 6206: 6207: * decl.c (init_decl_processing): Define `int' and `char' first. 6208: Set `sizetype' explicitly. 6209: 6210: * stmt.c (fixup_var_refs_1): May not just return when a SET 6211: doesn't have VAR as its src or dest. 6212: 6213: * varasm.c: Don't include c-tree.h. 6214: 6215: * decl.c (build_struct): Split this function into three: 6216: `xref_tag', `start_struct' and `finish_struct'. 6217: `xref_tag' subsumes `xref_enum'. 6218: 6219: * parse.y (structsp): When parsing `struct foo {...}', define the tag 6220: as a cross-ref before parsing the components. Use the three new fns. 6221: 6222: * regclass.c (regclass): Recognize new-format ASM_OPERANDS insns 6223: with `asm_noperands', and scan their operands as usual. 6224: 6225: * cse.c: In numerous functions such as canon_hash, rtx_cost, etc. 6226: that do tree-walk on rtx, handle vectors of subexpressions. 6227: 6228: * loop.c (invariant_p): Likewise. 6229: 6230: * jump.c (delete_insn): Two bugs: 6231: If insn already deleted, return the first following nondeleted. 6232: Deleting a jump's label can delete NEXT. Make sure return value 6233: is always the first insn following INSN and not yet deleted. 6234: 6235: Sun Jan 24 02:27:49 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 6236: 6237: * rtl.def (ASM_OPERANDS): Change the rtl expression of an 6238: `asm' with operands so it looks like this for one output operand: 6239: (set OUTPUT (asm_operands:OUTPUTMODE INSNSTRING OUTPUTCONSTRAINT 6240: 0 INPUTS INPUTCONSTRAINTS)). 6241: and like this for multiple outputs: 6242: (PARALLEL [ 6243: (set OUTPUT0 (asm_operands:OUTPUTMODE INSNSTRING OUTPUTCONSTRAINT 6244: 0 INPUTS INPUTCONSTRAINTS)). 6245: (set OUTPUT1 (asm_operands:OUTPUTMODE1 INSNSTRING OUTPUTCONSTRAINT1 6246: 1 INPUTS INPUTCONSTRAINTS))]) 6247: 6248: * parse.y: Change parsing of `asm' to distinguish input and output 6249: operands. Separate them with colon; separate the string with colon. 6250: 6251: * stmt.c (expand_asm_operands): Receive inputs and outputs separately. 6252: Generate the new rtl format. 6253: 6254: * recog.c (asm_noperands, decode_asm_operands): New fns 6255: for extracting the operands and constraints from these insns. 6256: 6257: * final.c (final): Recognize and output the new rtl format 6258: using those new functions. 6259: 6260: * reload.c (find_reloads): Recognize and get constraints 6261: from the new rtl format using those new functions. 6262: New variable `operand_modes' holds the machine modes of the 6263: operands, obtained one way for ASM_OPERANDS insns and another 6264: for other insns. 6265: 6266: * rtl.c (note_stores): Calling convention 6267: is changed: the first arg FUNCTION now receives as its 2nd arg 6268: 1 if clobbering, 0 if setting. Used to be the CLOBBER or SET rtx. 6269: 6270: * local-alloc.c (reg_is_set): This fn is called from note_stores; 6271: change its arguments. 6272: 6273: * tm-m68k.h (FIXUP_FRAME_POINTER_ADDRESSES): 6274: Use frame_pointer_rtx to recognize intended frame-pointer refs 6275: and not recognize pseudo-regs that were allocated to the frame 6276: pointer register. 6277: 6278: * emit-rtl.c: All refs to frame pointer use a single rtx, in 6279: frame_pointer_rtx. Likewise arg_pointer_rtx for the arg pointer. 6280: If they are the same register, these are the same rtx. 6281: Initialize them in init_emit. 6282: * rtl.h: Declare these vars. 6283: 6284: * stmt.c (assign_parms, assign_stack_local): Use those rtx's. 6285: 6286: Sat Jan 23 00:32:10 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu) 6287: 6288: * reload.c (find_reloads): Don't combine_reloads if `&' constraint 6289: was used. 6290: 6291: * parse.y: Parse `asm' with operands. 6292: * stmt.c (expand_asm_params): New fn: generate an ASM_OPERANDS for 6293: `asm' with operands. 6294: * final.c (final): Output an ASM_OPERANDS insn-body. 6295: * regclass.c (regclass): Ignore ASM_OPERANDS, like ASM_INPUT. 6296: 6297: * reload.c (find_reloads): Handle reloading of ASM_OPERANDS. 6298: The number of operands can no longer be bounded. 6299: For example we can't always put the operands in recog_operands. 6300: 6301: New locals OPERANDS and OPERAND_LOCS point to alloca'd vectors of 6302: operands and their locations. New locals CONSTRAINTS and CONSTRAINTS1 6303: hold alloca'd vectors of constraints. 6304: 6305: Unfortunately this isn't enough; every vector with length 6306: MAX_RECOG_OPERANDS needs to be dynamically allocated. 6307: Would this be too slow? For now, a cheap "solution" is to delete 6308: any insn that has too many operands. 6309: 6310: * rtl.def: Delete VOLATILE, UNCHANGING and UNDESCRIBED. 6311: Add ASM_OPERANDS. 6312: 6313: * regclass.c (reg_class_record): Delete ref to UNCHANGING. 6314: * loop.c (invariant_p): 6315: * rtl.c (rtx_varies_p): 6316: 6317: * cccp.c: Define __VERSION__. 6318: 6319: * decl.c (shadow_tag): TYPE_NAME doesn't work to get the tag-name 6320: of a struct, so use new function lookup_tag_reverse. 6321: * decl.c (lookup_tag_reverse): Given a type, return its tag name. 6322: 6323: * symout.c (symout_source_file): Output one `struct source'. 6324: * symout.c (symout_lines): Output all of them, and the sourcevector. 6325: * gdbfiles.h: New file for communication between final.c and symout.c. 6326: 6327: * final.c (output_source_line): New arg WRITE_SYMBOLS says write 6328: new GDB-format linenumber info. Assigns a filenum to each source 6329: file name and keeps track of the correspondence. 6330: 6331: * cccp.c (do_include): Output the -M info after searching the dirs; 6332: include the actual dir name. Don't generate "./" for current dir. 6333: 6334: Fri Jan 22 04:10:10 1988 Richard Stallman (rms at frosted-flakes) 6335: 6336: * tm-news800.h: Delete override of INDIRECTABLE_1_ADDRESS. 6337: Output is faster if it doesn't use 32-bit displacements. 6338: 6339: * reload.c (combine_reloads): New function. 6340: If possible, find an input reload 6341: and an output reload that can be turned into one input-output reload. 6342: The old output-reload is marked as inoperative: reload_out 6343: and reload_in both zero. This is called from find_reloads. 6344: 6345: * reload1.c (reload, choose_reload_targets): Ignore inoperative 6346: reloads. 6347: 6348: * Print warnings for variables that could be clobbered by `longjmp'. 6349: * expr.c (expand_call): Generate a NOTE_INSN_SETJMP whenever 6350: `setjmp' or `_setjmp' is called. 6351: * flow.c (propagate_block): When NOTE_INSN_SETJMP is seen, 6352: record the live regs in `regs_live_at_setjmp'. 6353: * stmt.c (uninitialized_vars_warning): Warn about vars that have regs 6354: that are set more than once and are marked in `regs_live_at_setjmp'. 6355: Works through function `regno_clobbered_by_longjmp'. 6356: * rtl.h: Define NOTE_INSN_SETJMP. 6357: 6358: * genrecog.c (try_merge_2): When enforce_modes, keep all the 6359: alternatives segregated by modes and keep the modes in numerical order. 6360: * genrecog.c (write_tree): Make conditions for switch-on-modes 6361: know what difference enforce_mode makes. 6362: 6363: Thu Jan 21 00:12:35 1988 Richard Stallman (rms at frosted-flakes) 6364: 6365: * tm-ns32k.h: Use Stein's definitions of PRINT_OPERAND{,_ADDRESS}; 6366: move the Sequent definitions info tm-sequent.h. 6367: Handle %$ in both old and new PRINT_OPERAND. 6368: Define CPP_PREDEFINES. 6369: 6370: * ns32k.md: Merge some features from Jan Stein's port: 6371: strict_low_part insns, smart output of booleans with small 6372: constant args, acbd insns generalized for other increments. 6373: Use %$ wherever there is an explicit immediate. 6374: Fix shortcomings of adjsp insns: use adjspd in general, 6375: and use adjspb in all the cases that allow it. 6376: Don't bother explicitly clearing CC_REVERSED. 6377: For tstsf/tstdf, output the floating-zero constants 6378: using {f,d}const0_rtx. 6379: 6380: A problem still remains, which is that the Sequent and the 6381: other ns32k assembler syntax require different 6382: 6383: * typecheck.c (unary_complex_value): Use correct datatype for 6384: compound-exprs. 6385: 6386: * gen*.c (main): Use obstack_init instead of obstack_begin. 6387: 6388: * vax.md: define_peephole for andl3 x,y,z; extzv z,....,z 6389: 6390: * m68k.md (tstsi): Use cmpw instead of cmpl to test addr reg. 6391: 6392: * tm-m68k.h: Bugs for 68000 when frame size is over 64k. 6393: For FUNCTION_PROLOGUE, just subtract from sp instead of fp. 6394: For FUNCTION_EPILOGUE, must put the size into a0 and then 6395: all insns must be indexed by a0. And do this even on 68020. 6396: 6397: * tm-isi68.h: Similar changes. 6398: * tm-news800.h, tm-hp9k320.h: Similar changes. 6399: 6400: Wed Jan 20 04:38:21 1988 Richard Stallman (rms at frosted-flakes) 6401: 6402: * cccp.c (error_with_line): New function. 6403: Use it to report the "unterminated whatever" errors. 6404: 6405: * typecheck.c (build_unary_op): Recursive call had missing arg. 6406: 6407: * m68k.md (movhi): If MOTOROLA, the insn that fetches from a 6408: case-dispatch table now defines the LI label as .+2. 6409: * tm-news800.el, tm-hp9k320.h (PRINT_OPERAND_ADDRESS): 6410: Don't subtract 2 when outputting the address in that insn. 6411: 6412: Tue Jan 19 00:02:33 1988 Richard Stallman (rms at frosted-flakes) 6413: 6414: * cse.c (cse_basic_block): Abort if more qtys were used than allocated. 6415: 6416: Mon Jan 18 04:44:28 1988 Richard Stallman (rms at frosted-flakes) 6417: 6418: * cccp.c (special_symbol): tm_mon is origin-0, not origin-1. 6419: 6420: * final.c (output_asm_insn): If %LETTER with no digits, 6421: pass null pointer as the operand. 6422: 6423: * output-m68k.c (singlemove_string): Get rid of %e. 6424: 6425: * stmt.c (fixup_memory_subreg): Convert (SUBREG (MEM a)) to (MEM a'). 6426: * stmt.c (fixup_var_ref_1): Use that fn for operands of 6427: SIGN_EXTRACT and ZERO_EXTRACT, since (SUBREG:SI (REG:QI...)) 6428: could have turned into (SUBREG:SI (MEM:QI...)), which is unsafe. 6429: 6430: * rtl.c (debug_rtx): Print an rtx on stderr, for debugging. 6431: 6432: Sun Jan 17 04:37:20 1988 Richard Stallman (rms at frosted-flakes) 6433: 6434: * gcc.c: options -M* treated like -M. 6435: 6436: * stmt.c (pushcase): Do nothing if the case index has error_mark type. 6437: 6438: * expr.c (expand_increment): Don't use queue for post-inc on memory 6439: if the add insn requires register args. (Better code for RISCs.) 6440: 6441: Sat Jan 16 02:10:22 1988 Richard Stallman (rms at frosted-flakes) 6442: 6443: * ns32k.md: Change register_operand to general_operand. 6444: * ns32k.md (udivmoddisi4): Use match_dup where required. 6445: Comment it out because it can't accept two independent output args. 6446: 6447: Fri Jan 15 00:02:35 1988 Richard Stallman (rms at frosted-flakes) 6448: 6449: * toplev.c: Include sys/time.h only for BSD. For USG, use time.h. 6450: This is correct for HPUX; don't know about others. 6451: 6452: * gcc.c (execute): Eliminate `union wait'. Make `status' an int. 6453: * gcc.c (execute) [USG]: Use fork instead of vfork. 6454: 6455: * final.c (output_source_line): Use ASM_OUTPUT_SOURCE_{FILENAME,LINE} 6456: if they are defined. 6457: 6458: * tm-hp9k320.h: New name for tm-hpux.h. 6459: * tm-hp9k320.h (ASM_OUTPUT_LOCAL): Add 3rd arg to `lcomm' statements. 6460: * tm-hp9k320.h (ASM_OUTPUT_{DOUBLE,FLOAT}): Use `double' and `float'. 6461: * tm-hp9k320.h (CALL_USED_REGISTERS): Don't save any 68881 regs. 6462: * tm-hp9k320.h (CPP_PREDEFINES): different names defined. 6463: * tm-hp9k320.h (HPUX_ASM, NO_DBX_FORMAT, ASM_SPEC): define these. 6464: * tm-hp9k320.h (ASM_OUTPUT_OPCODE): Convert `ftst' to `ftest'. 6465: * tm-hp9k320.h: Define ASM_OUTPUT_SOURCE_{FILENAME,LINE}. 6466: 6467: * m68k.md: Rename `hpux' conditionals to `HPUX_ASM'. 6468: * m68k.md: Reverse `fcmp' args if HPUX_ASM. 6469: 6470: * cccp.c (print_deps): 2 means give all files, 1 means only user files. 6471: * cccp.c (do_include): Support that. 6472: * cccp.c (main): -MM sets 1, -M alone sets 2. 6473: * cccp.c (main): Give fatal error if I/O error in writing. 6474: 6475: * toplev.c (fatal_io_error): Report I/O error on given filename, 6476: and exit. 6477: 6478: * toplev.c (compile_file): Detect error writing asm_out_file. 6479: Always put asm file's name in asm_file_name for err msg. 6480: * symout.c (symout_finish): Detect error writing symfile. 6481: * symout.c (symout_init): Save filename in symfile_name for err msg. 6482: 6483: * gen*.c: Return 1 if ferror (stdout)--in case disk is full. 6484: 6485: * local-alloc.c (block_alloc): Don't crash if 1st rtx 6486: in a PARALLEL is not a SET. 6487: 6488: * tm-m68k.h, tm-news800.h (PRINT_OPERAND). Eliminate code `%e'. 6489: * m68k.md: Change `%e' to `e' everywhere. 6490: * tm-hpux.h (ASM_OUTPUT_OPCODE): Output `move' as `mov'. 6491: 6492: * tm-m68k.h, tm-news800.h, tm-hpux.h (PRINT_OPERAND): 6493: New code `%!' is output as the name for the cc register. 6494: * m68k.md (insns that use andi to ccr): Use `%!' to avoid 6495: conditionals. 6496: 6497: * cse.c: Record in qty_const_insn the insn that stored the 6498: constant value of a qty. When making a REG_WAS_0 note, 6499: store in it the insn that established the value 0. 6500: 6501: * vax.md (movsi): When checking a REG_WAS_0 note, 6502: verify that the insn it points to hasn't been deleted or made a NOTE. 6503: 6504: Thu Jan 14 00:01:35 1988 Richard Stallman (rms at frosted-flakes) 6505: 6506: * toplev.c: Eliminate error_with_line and warning_with_line. 6507: * parse.y, decl.c: Change remaining calls to those two. 6508: 6509: * tree.c (get_unwidened, get_narrower): To see if a COMPONENT_REF 6510: is unsigned, look at the FIELD_DECL, not at the COMPONENT_REF. 6511: 6512: * rtl.c (print_rtx): Print /v for the `volatil' bit. 6513: * expr.c (expand_assignment expand_expr): If handling a COMPONENT_REF, 6514: note whether it is volatile. 6515: 6516: * fold-const.c (fold): a call to split_tree missed an argument. 6517: 6518: * flow.c (volatile_refs_p): Scan an rtx for volatile mem refs. 6519: * flow.c (life_analysis): Record in INSN_VOLATILE which insns 6520: have any volatile mem refs. 6521: * flow.c (mark_used_regs): Always mark an insn with volatile mem refs. 6522: Always pass INSN as an arg. New arg FINAL now says whether 6523: this is the last time scanning. 6524: * flow.c (propagate_block): Don't delete insns with volatile mem refs. 6525: 6526: * flow.c: Remove all refs to `obey_regdecls'. 6527: Calling this with -noreg just doesn't help -W. 6528: 6529: Wed Jan 13 01:13:07 1988 Richard Stallman (rms at frosted-flakes) 6530: 6531: * decl.c (finish_decl): Error if auto var's size isn't known. 6532: Change type to error_mark_node to avoid crash if the var 6533: is used in an expression, since it has no DECL_RTL. 6534: 6535: * output-m68k.c (output_move_const_single): % -> %% for sprintf. 6536: 6537: * parse.y (yylex): Store token_buffer properly after ellipsis. 6538: 6539: * decl.c (duplicate_decls): Don't call layout_decl 6540: for FUNCTION_DECL or TYPE_DECL. 6541: 6542: * toplev.c (warning_with_decl): New warning function with decl as arg. 6543: * (error_with_decl): similar. 6544: 6545: * decl.c: Replace most `yylinerror' calls with `error_with_decl'. 6546: 6547: * decl.c (build_struct): Reform code to detect erroneous bit-fields. 6548: All such errors are now detected here. 6549: Promote bit-fields to int if appropriate. 6550: If traditional, make all int bit-fields unsigned. 6551: Set DECL_ALIGN for members that are not bit-fields. 6552: 6553: * decl.c (grokfield): Don't set DECL_ALIGN here. 6554: 6555: * stor-layout.c (layout_decl): Don't promote the type of a bit-field. 6556: Use TREE_PACKED to distinguish a bit-field. 6557: Don't check the width because build_struct did that. 6558: 6559: * m68k.md (cmpm): Reject if either operand (address) is a constant. 6560: 6561: Tue Jan 12 15:11:20 1988 Richard Stallman (rms at frosted-flakes) 6562: 6563: * cse.c (canon_reg): Never replace ANY hard reg from reg_rtx 6564: because that could alter the machine mode. 6565: 6566: * tm-news800.h: Redefine INDIRECTABLE_1_ADDRESS only if MOTOROLA. 6567: 6568: Mon Jan 11 13:15:45 1988 Richard Stallman (rms at frosted-flakes) 6569: 6570: * jump.c (follow_jumps): If we find a cycle, make it a jump to self. 6571: 6572: * cse.c (predecide_loop_entry): Give up if chase more than 10 jumps. 6573: 6574: Sun Jan 10 14:52:42 1988 Richard Stallman (rms at frosted-flakes) 6575: 6576: * reload1.c (reload): basic_block_needs (new vector) gets 1 6577: for each basic block that needs a reload. 6578: * reload1.c (spill_hard_reg): Don't spill pseudos that are 6579: confined to a basic block which has no need for any reloads. 6580: * reload1.c (reload): Each cycle that any element of basic_block_needs 6581: changes from 0 to 1, must re-spill all previously spilled regs. 6582: 6583: * regclass.c (record_address_regs): 6584: Skip the charging of ICOST if it is 0. 6585: 6586: * flags.h, toplev.c: New flag -fvolatile. 6587: * typecheck.c (build_indirect_ref): If flag_volatile, 6588: every INDIRECT_REF is marked with TREE_THIS_VOLATILE. 6589: 6590: * fold-const.c (fold): Test in TRUTH_NOT_EXPR case was backward. 6591: Also result type is always `int'. 6592: 6593: Sat Jan 9 04:16:11 1988 Richard Stallman (rms at rice-krispies) 6594: 6595: * flags.h (flag_traditional): New flag. 6596: * toplev.c: recognize -ftraditional and -traditional. 6597: * parse.y (yylex): If flag_traditional, don't recognize 6598: `signed', `const' or `volatile'. 6599: 6600: * decl.c (pushdecl): If flag_traditional, any extern decl 6601: takes effect at top level. 6602: 6603: * tree.c (lvalue_or_else): New 2nd arg for use in error message. 6604: * typecheck.c: All callers pass 2nd arg. 6605: 6606: * global-alloc.c: allocno_preferred_reg can specify a preferred 6607: hard reg for each allocno. If so, try it first (new call to find_reg). 6608: 6609: * global-alloc.c (find_reg): New arg PREFREG specifies reg to try 6610: first. 6611: 6612: * decl.c (build_struct): if :0 bit field at the end, round the 6613: structure size to multiple of EMPTY_FIELD_BOUNDARY. 6614: 6615: * cse.c (make_regs_eqv): Was testing for reg_next_eqv[lastr] == 0 6616: and should be == -1. 6617: 6618: * reload1.c (reload_as_needed): Fix invalid optimization deleting 6619: the previous store into a pseudo-reg that feeds an input-reload. 6620: It is not safe because a later insn may look in the pseudo's stack 6621: slot for the value. Delete the store only if we can eliminate the 6622: pseudo entirely or if the current insn stores a new value there. 6623: Also verify that reload_in[j] is a REG. 6624: 6625: * reload1.c (reload_as_needed): When doing an input reload from a 6626: pseudo that was stored by the previous insn (not as a reload), 6627: redirect the previous insn into the reload register, if this lets 6628: us eliminate the pseudo entirely. 6629: 6630: * reload1.c (reload_as_needed): In both of the above cases, it's 6631: impossible to prevent a stack slot since one was already assigned, 6632: so don't alter reg_n_refs. Instead, set reg_renumber to record 6633: that this pseudo did get a hard reg. 6634: 6635: * stmt.c: Set `volatil' in pseudo-regs for the user's variables. 6636: 6637: * jump.c (delete_insn): Do nothing if insn already deleted. 6638: 6639: * tm-sun{2,3}.h: #define STRUCTURE_SIZE_BOUNDARY 2 6640: for compatibility with Sun PCC. Note that 4.3 vax PCC 6641: does not want this. 6642: 6643: * fold-const.c: Replace truncate_unsigned with force_fit_type 6644: which truncates unsigned types and sign-extends signed types. 6645: 6646: * expr.c (do_jump): emit_queue before outputting the jump insns 6647: that use the comparison. 6648: 6649: * stmt.c: Error message for any goto that jumps into a 6650: binding contour that restores a stack level. 6651: 6652: TREE_PACKED (label) means label was defined inside 6653: such a binding contour that is now exited. Using such a label 6654: is an error. 6655: 6656: TREE_ADDRESSABLE (label) means label was used from a place 6657: outside all such binding contours. If this is 1 when 6658: TREE_PACKED is set to 1, it is an error. 6659: 6660: Any other invalid goto must have a fixup. fixup_gotos detects 6661: such invalid gotos. fixup_gotos takes a second arg, which 6662: is the first insn of the contour now being exited. 6663: 6664: * GNU C version 1.17. 6665: 6666: Local Variables: 6667: mode: indented-text 6668: left-margin: 8 6669: fill-column: 76 6670: version-control: never 6671: End:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.