|
|
1.1 ! root 1: Thu Jan 31 00:33:33 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 2: ! 3: * loop.c (scan_loop): Check each libcall for regs it uses ! 4: but does not mention in the equivalent value. ! 5: To move the libcall, we must have at most one such reg ! 6: and it must be moved as well. ! 7: (libcall_other_reg): New subroutine. ! 8: * rtlanal.c (record_excess_regs): New function. ! 9: ! 10: * tree.c (gcc_obstack_init): New function. ! 11: (init_obstacks, save_tree_context): Use that. ! 12: (OBSTACK_CHUNK_SIZE): New parameter. ! 13: * xm-next.h: New file. ! 14: * configure (m68k/next): Use that file. ! 15: ! 16: * flags.h (flag_no_common): Declare new flag to treat external defs ! 17: as ANSI specifies (i.e. not as common). ! 18: * toplev.c (flag_no_common, f_options): Support -fno-common. ! 19: * varasm.c (assemble_variable): Don't output a common if ! 20: flag_no_common is set. Treat as if initialized to 0. ! 21: ! 22: * gcc.c (default_compilers): Define __ASSEMBLER__ for .S file. ! 23: ! 24: * tm-aix386.h (ASM_OUTPUT_LOCAL): Ok to use bss, since no shared libs. ! 25: (LINK_SPEC): Pass through all -K and -T options. ! 26: * xm-aix386.h (TRUE, FALSE): Undef if already def, to avoid warning. ! 27: ! 28: * tm-m68k.h (TARGET_68040, TARGET_68040_ONLY): New machine flags. ! 29: (TARGET_SWITCHES): Alternatives to set them. ! 30: * tm-next.h (TARGET_DEFAULT): Changed to 0407 for 68040. ! 31: ! 32: * out-m68k.h (standard_68881_constant_p): Always return 0 ! 33: for TARGET_68040 since fmovecr is no longer implemented in hardware. ! 34: ! 35: * m68k.md (ftruncdf2, ftruncsf2): Don't emit fintrz for ! 36: TARGET_68040, since it is no longer implemented in hardware. ! 37: (muldf3): Don't use fscale on 68040, since not implemented in hardware. ! 38: ! 39: * toplev.c (optimize): Now stores specified optimization level. ! 40: (main): Keep the largest optimization level specified. ! 41: Handle any integer. ! 42: ! 43: * c-decl.c (pushdecl): Don't make an extern global for -traditional ! 44: if it uses any local types. ! 45: ! 46: * tm-sun386i.h (PCC_BITFFIELD_TYPE_MATTERS): Use 1 as value. ! 47: ! 48: Wed Jan 30 12:41:15 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 49: ! 50: * fixincludes (sys/systypes.h): Edit this to handle _SIZE_T, etc. ! 51: ! 52: * function.c (put_var_into_stack): Allocate var ref chain link ! 53: while in the proper function's obstack. ! 54: ! 55: * fold-const.c (const_binop): Don't crash for real/0 if have infinity. ! 56: ! 57: * flow.c (mark_set_1): Don't make log link for hard reg in asm insn. ! 58: ! 59: Wed Jan 30 07:45:33 1991 Tom Wood (wood at dg-rtp.dg.com) ! 60: ! 61: * sched.c (schedule_block): Indicate what insns constitute each ! 62: basic block. ! 63: ! 64: Tue Jan 29 12:35:42 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 65: ! 66: * Makefile.in (gnulib1.*, gnulib2.*): Declare them phony targets. ! 67: ! 68: * print-tree.c (print_node): Print message if TREE_PERMANENT is wrong. ! 69: * tree.c (object_permanent_p): New function. ! 70: ! 71: * print-tree.c (print_node): Remove DECL_LANG_FLAG_10. ! 72: ! 73: Tue Jan 29 10:07:48 1991 Tom Wood (wood at dg-rtp.dg.com) ! 74: ! 75: * m88k.md (minus/xor/and, neg/ne/compare/and): Delete these. This ! 76: should be done by combine. ! 77: (compare operator): Eliminate except when a SET_SRC. ! 78: * tm-m88k.h (OPTIMIZATION_OPTIONS): -fomit-frame-pointer is a ! 79: default optimization. ! 80: ! 81: Mon Jan 28 12:52:11 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 82: ! 83: * tree.h (DECL_VIRTUAL_P): Renamed from TREE_VIRTUAL. ! 84: (struct tree_common): Eliminate virtual_flag. ! 85: (struct tree_decl): Add virtual_flag. ! 86: ! 87: * Makefile.in (enquire.o): Pass -DNO_STDDEF. ! 88: ! 89: * m68k.md (tablejump): Now have a define_expand that does ! 90: different things depending on CASE_VECTOR_PC_RELATIVE, ! 91: and a separate define_insn for each case. ! 92: ! 93: * function.h (outer_function_chain): Declare the variable. ! 94: ! 95: * tree.c (debug_obstack): Fix typos. ! 96: * tree.h (struct tree_common): Fix typo. ! 97: ! 98: * Makefile.in (GNULIB1_TARGET, GNULIB2_TARGET): Variables deleted. ! 99: (gnulib): Depend on gnulib1.target and gnulib2.target explicitly. ! 100: ! 101: * dbxout.c (dbxout_type): Use DECL_VIRTUAL_P, not TREE_VIRTUAL. ! 102: ! 103: * cplus-tree.h (TREE_PRIVATE, TREE_PROTECTED): #if 0. ! 104: ! 105: * cexp.y (keywords): Cast names for parens to U_CHAR *. ! 106: ! 107: * gcc.c (process_command): Fix typo setting switches[n_switches].arg. ! 108: ! 109: * loop.c (loop_reg_used_before_p): Check insns before INSN, not after. ! 110: ! 111: * objc-actions.c (objc_finish): Renamed from lang_finish. ! 112: * objc-parse.y (program): Call objc_finish at the end. ! 113: ! 114: * Changes from Matthew Self ([email protected]): ! 115: ! 116: * objc-parse.y: Since objc-parse.y was so out of date with ! 117: respect to c-parse.y, I started over with c-parse.y and ! 118: reintegrated the Objective-C modifications. Now that ! 119: Objective-C is working I hope that objc-parse.y will be kept ! 120: more up to date.... I did not re-integrate the lexer since I ! 121: don't have gperf working. I simply cut and pasted what ! 122: Stallman had in objc-parse.y. Someone with access to gperf ! 123: should re-generate this stuff. ! 124: ! 125: * objc-actions.c (comp_method_with_proto, ! 126: comp_proto_with_proto): Stallman's change to use the ! 127: functions end_temporary_allocation and ! 128: resume_temporary_allocation is incorrect, since it always ! 129: leaves allocation temporary, whether it was before or not. ! 130: ! 131: Perhaps the push and pop functions would do the trick.... ! 132: ! 133: * objc-actions.c (get_arg_type_list): Use new function ! 134: groktypename_in_parm_context. ! 135: ! 136: * objc-actions.c (_OBJC_SELECTOR_REFERENCES_decl, ! 137: _OBJC_SELECTOR_REFERENCES_id): Removed. ! 138: ! 139: * objc-actions.c (synth_module_prologue): Eliminated code to ! 140: forward declare the selector references array. ! 141: ! 142: * objc-actions.c (init_objc_symtab): Eliminated code to ! 143: initialize "refs" field in objc_symtab structure (which is ! 144: now vestigial). ! 145: ! 146: * objc-actions.c (build_selector_translation_table): Rewrote. ! 147: ! 148: * objc-actions.c (build_selector_reference): New routine. ! 149: ! 150: * objc-actions.c (build_message_expr, build_selector_expr): ! 151: Use new routine. ! 152: ! 153: * config/tm-next.h (GO_IF_INDEXABLE_BASE): Don't use pc ! 154: relative addressing for LABEL_REF's. Since branch tables are ! 155: in the const section, we treat LABEL_REF's like SYMBOL_REF's ! 156: here. Otherwise invalid addresses were being generated. ! 157: ! 158: * config/tm-next.h (CASE_VECTOR_PC_RELATIVE, CASE_VECTOR_MODE): ! 159: Use absolute branch tables rather than relative ones. ! 160: ! 161: * config/tm-next.h (ASM_OUTPUT_MAIN_SOURCE_FILE_END): Output ! 162: an N_SO symbol with no name to mark the end of the module. ! 163: This is needed to support scattered loading on the NeXT. ! 164: ! 165: * config/out-next.c (handle_pragma): Call to xrealloc had wrong args. ! 166: ! 167: * configure: Entry for NeXT must set out_file to out-next.c. ! 168: ! 169: * config/out-next.c: Typo: "flags" -> "flags.h" ! 170: ! 171: * config/tm-next.h (LIB_SPEC): Brought up-to-date. There ! 172: are probably more changes needed here. ! 173: ! 174: * c-decl.c (pushdecl_top_level): New function. This was ! 175: copied from an older version of g++. ! 176: ! 177: * c-decl.c (init_decl_processing): Make alloca first arg sizetype. ! 178: ! 179: * c-decl.c (groktypename_in_parm_context): New function. ! 180: ! 181: Mon Jan 28 07:07:01 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 182: ! 183: * loop.c (loop_reg_used_before_p): Don't use INSN_LUID since INSN ! 184: might have been made by loop.c for an outer loop. ! 185: ! 186: * loop.c (move_movables, strength_reduce): Replace register references ! 187: in REG_NOTES as well as PATTERN. ! 188: ! 189: * loop.c (strength_reduce): Call maybe_eliminate_biv twice, not ! 190: three times. ! 191: (maybe_eliminate_biv): Don't abort if elimination fails even though ! 192: we thought it wouldn't. This can happen if certain insn patterns ! 193: aren't valid. ! 194: (maybe_eliminate_biv_1): Ensure that we do not change the insn at ! 195: all if all the required changes can't be done. ! 196: ! 197: Sun Jan 27 21:26:29 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 198: ! 199: * Makefile.in: Rename config-dir back to config. ! 200: ! 201: Sat Jan 26 17:48:22 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 202: ! 203: * objc-parse.y (program): Call objc_finish. ! 204: * objc-actions.c (objc_finish): Renamed from lang_finish. ! 205: ! 206: * objc-actions.c, objc-parse.y: New version from NeXT. ! 207: ! 208: Sat Jan 26 17:37:48 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 209: ! 210: * expr.c (expand_expr, case COND_EXPR): Disable special-case of ! 211: A ? B : C when B and C are simple. This is now done better by jump. ! 212: ! 213: Sat Jan 26 13:16:58 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 214: ! 215: * tree.h (TREE_PRIVATE, TREE_PROTECTED, TREE_VIRTUAL): New macros. ! 216: (struct tree_common): New flag fields. ! 217: * dbxout.c (dbxout_type): Get rid of conditional; can always use these. ! 218: ! 219: * cccp.c (lookup_import): Do return -2 if file found. ! 220: (main): Handle `.m' suffix like `.S'. ! 221: ! 222: * configure (m68k/next): Use out-next.c. ! 223: ! 224: * WORD_SWITCH_TAKES_ARG and SWITCH_TAKES_ARG now give # of args. ! 225: * gcc.c (struct switchstr): New field `args' replaces `part2'. ! 226: (process_command): Record all the args a switch has. ! 227: (give_switch): Pass all the strings in `args'. ! 228: ! 229: * tree.h (struct tree_common): Normally make `code' an enum tree_code. ! 230: ! 231: * m68k.md (tablejump): New pattern. ! 232: (casesi, etc.): Deleted. ! 233: ! 234: * tree.c (debug_obstack): New function. ! 235: ! 236: * toplev.c (compile_file): Call dbxout_finish near the end. ! 237: * dbxout.c (dbxout_finish): New function. ! 238: ! 239: * print-tree.c (print_node): Always print ERROR_MARK node briefly. ! 240: ! 241: * objc-actions.h (METHOD_ENCODING, CLASS_CATEGORY_LIST): New macros. ! 242: ! 243: * gcc.c (execute): Make fatal signal message clearer. ! 244: (default_compilers): For .m file, define __OBJC__, ! 245: and pass -lang-objc and -gen-decls to cc1. ! 246: ! 247: * dwarfout.c: Include output.h. ! 248: (current_function_decl, asm_out_file): Explicit extern decls deleted. ! 249: (abort, fatal): Explicit extern decls deleted. ! 250: (NO_RETURN): Definition deleted. ! 251: (named_labels): Don't declare it. ! 252: (output_symbol): Don't use it. ! 253: (MAXPATHLEN): Don't define this. Don't include sys/param.h. ! 254: (output_source_file_die): Avoid limit on file name size. ! 255: (output_symbols_for_stmt): Deleted. ! 256: (output_symbols_for_block): Adapt to using BLOCK, not LET_STMT. ! 257: ! 258: * configure: Renamed from `config'. ! 259: * config: Directory renamed back from config-dir. ! 260: ! 261: Sat Jan 26 1990 Ron Guilmette (rfg at ncd.com) ! 262: ! 263: * README.DWARF: updated to reflect changes to dwarfout.c, the ! 264: inclusion of dwarf.h (and its changes) and the fact that the ! 265: DWARF support is no longer directly tied to the DG versions of ! 266: GCC. ! 267: ! 268: * dwarfout.c: included a patch (provided by Ray Essick) to allow ! 269: dwarfout.c to properly get a value for MAXPATHLEN even on (old) ! 270: System V.3 systems. ! 271: ! 272: * dwarfout.c: added support for long long types (as suggested by ! 273: Ray Essick). ! 274: ! 275: * dwarfout.c: added support for the AT_comp_dir attribute. Also, ! 276: as part of this change, the name of the compilation directory is ! 277: no longer placed into in the .sources section. ! 278: ! 279: * dwarfout.c: added support for the AT_addr_ranges attribute. ! 280: ! 281: * dwarfout.c: added support for the AT_prototyped attribute. ! 282: ! 283: * dwarfout.c: added support for the AT_src_info attribute. Also, ! 284: as part of this change, there is no longer a "special" entry ! 285: at the start of the .srcinfo section for each compilation unit, ! 286: and the contents of the "special" final entry in the .srcinfo ! 287: section have changed (to { -1, -1 }). ! 288: ! 289: * dwarfout.c: modified to allow additional GNU DWARF extensions ! 290: to be generated whenever the corresponding extended attribute ! 291: codes are defined (presumably within a modified dwarf.h file). ! 292: ! 293: * dwarfout.c: use the section names .srcinfo and .sources rather ! 294: than .finfo and .files. The additional specificity is warranted ! 295: because the DWARF information may someday include information ! 296: about object files as well as source files. ! 297: ! 298: * dwarfout.c: fixed a bug where a type attribute was being generated ! 299: for functions and function types even when the return type was ! 300: void. "Standard" dwarf says that if the return type for a function ! 301: or function type is void then no type attribute should be generated ! 302: for the corresponding DIE. ! 303: ! 304: Sat Jan 26 04:22:08 1991 Michael Tiemann (tiemann at cygnus.com) ! 305: ! 306: * cplus-lex.c (interface_strcmp): Handle String.String.Map.cc and ! 307: friends. ! 308: ! 309: * cplus-typeck.c (build_unary_op): Merge change to generate better ! 310: code from simple cast expression. ! 311: ! 312: Fri Jan 25 10:06:28 1991 Michael Tiemann (tiemann at cygnus.com) ! 313: ! 314: * cplus-decl.c (pushtag): Don't call `pushdecl' if the type's name ! 315: is anonymous, lest we recurse ad infinitum. ! 316: ! 317: Thu Jan 24 23:56:55 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 318: ! 319: * optabs.c (expand_binop, expand_unop): Word at a time only for ints. ! 320: ! 321: Thu Jan 24 09:40:37 1991 Tom Wood (wood at dg-rtp.dg.com) ! 322: ! 323: * sdbout.c (sdbout_symbol): Apply changes in dbxout.c to deal with ! 324: SUBREG. Don't emit a symbolic definition for variables that can't ! 325: be represented. ! 326: ! 327: Thu Jan 24 21:18:15 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 328: ! 329: * config: Conditional for setting $os was backward. ! 330: Also mention name of make-var file if one exists. ! 331: ! 332: * out-i386.c: Delete a large piece of accidental insertion. ! 333: ! 334: * dwarfout.c: Don't include c-tree.h or cplus-tree.h. ! 335: (INT_TYPE_SIZE, etc.): Define them if not overridden. ! 336: (fundamental_type_code): Distinguish types by TYPE_PRECISION. ! 337: But also check for the built-in C type names. ! 338: ! 339: Thu Jan 24 15:23:17 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 340: ! 341: * gcc.c (default_compilers): Pass all args starting with "O" to ! 342: cc1 so that -O2 is passed along. ! 343: ! 344: Thu Jan 24 13:10:27 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 345: ! 346: * stmt.c (expand_expr_stmt): Don't warn for any casts to void. ! 347: ! 348: * config: Fix typos setting shell vars. ! 349: Rename config to config-dir. ! 350: Insert missing \ in case for delta. ! 351: ! 352: Wed Jan 23 16:31:27 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 353: ! 354: * emit-rtl.c (emit_jump_insn_{before,after}): Allow PATTERN to be ! 355: a SEQUENCE. ! 356: ! 357: * loop.c (check_dbra_loop): Use emit_jump_insn_before when writing ! 358: out compare and jump sequence, not emit_insn_before, to ensure that ! 359: if we only write one insn that it is a JUMP_INSN. ! 360: ! 361: * toplev.c (flag_rerun_cse_after_loop): New: -frerun-cse-after-loop. ! 362: (rest_of_compilation): Rerun cse after loop if desired. ! 363: (main): Add support for -O2. ! 364: Prescan args for -O and -O2 to set default values for many -f options. ! 365: Add call to new macro OPTIMIZATION_OPTIONS. ! 366: Save status of -version until all args have been processed; then ! 367: write out the info. ! 368: (print_single_switch): New function. ! 369: (print_switch_values): Renamed from print_target_switch_defaults. ! 370: Now prints out currently enabled -f, -m, and -W switches. Calls ! 371: print_single_switch to write out switch and handle long lines. ! 372: ! 373: * rtl.def (SUBREG): Change rtx class from 'o' to 'x'. ! 374: ! 375: * cse.c (find_comparison_args): Ignore hash table entry if not valid. ! 376: ! 377: Wed Jan 23 00:12:24 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 378: ! 379: * config: File renamed from config.gcc. ! 380: Allow abbreviations for +-options. ! 381: Allow config HOST TARGET. ! 382: Support +gas and +nfp as separate options. ! 383: Rename all the machine alternatives to general scheme: ! 384: cpu/company-system. Allow abbreviations for cpu/company pairs. ! 385: * config-dir: Dir renamed from config. ! 386: ! 387: * Makefile.in (install-dir): Create bindir here. ! 388: ! 389: * cccp.c (main): Delete duplicat p++ left in last change. ! 390: ! 391: * Makefile.in (GNULIB1, GNULIB1_TARGET): Renamed from GNULIB*. ! 392: (gnulib1.portable, gnulib1.target): Renamed from gnulib.*. ! 393: They now make a file named gnulib1, from gnulib1.c. ! 394: (LIB1FUNCS, LIB1FUNCS_EXTRA): Renamed from LIBFUNCS*. ! 395: (for-bootstrap, rest.encap): Depend on gnulib, not GNULIB2_TARGET. ! 396: (stamp-gnulib2): This file is no longer used. ! 397: (gnulib2.portable): Old stamp-gnulib2 rule renamed to this. ! 398: Now create a file named gnulib2, from gnulib2.c alone. ! 399: (gnulib): New target, combines gnulib1 and gnulib2 into gnulib. ! 400: (mostlyclean): Delete additional temporary files. ! 401: No need to avoid deleting stamp-gnulib2. ! 402: (clean): Delete gnulib1 and gnulib2, but not stamp-gnulib2. ! 403: (realclean): No need to delete gnulib here. ! 404: (install-gnulib): Changed dependencies. ! 405: * gnulib1.c: File gnulib.c renamed. ! 406: ! 407: * Makefile.in (install-dir): Create bindir here. ! 408: ! 409: * cccp.c (main): Delete duplicat p++ left in last change. ! 410: ! 411: Sun Jan 20 14:00:16 1991 Michael Tiemann (tiemann at cygnus.com) ! 412: ! 413: * cplus-class.c (finish_struct): Conditionalize EMPTY_FIELD_BOUNDARY ! 414: on whether or not it is defined. Similarly for PCC_BIT_FIELD_MATTERS. ! 415: ! 416: Wed Jan 16 18:56:30 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 417: ! 418: * cse.c (fold_rtx): When folding dispatch table, stay inside bounds. ! 419: ! 420: Wed Jan 16 08:11:48 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 421: ! 422: * reload.c (find_reloads_toplev): Fix typo in recent change. ! 423: ! 424: * reload1.c (eliminate_regs): If we have a non-paradoxical ! 425: (subreg (pseudo)) and the pseudo has an equivalent memory ! 426: location, replace the SUBREG because find_reloads may do it. ! 427: ! 428: Tue Jan 15 01:41:28 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 429: ! 430: * loop.c (scan_loop): Condition for movability was wrong. ! 431: A reg that isn't necessarily set may be unsafe ! 432: even if used only inside the loop. ! 433: However, a reg used only in the same basic block after the set is safe. ! 434: So is a reg that isn't a user-level variable. ! 435: ! 436: * loop.c (loop_optimize): Reverse order of scanning loops. ! 437: ! 438: * loop.c (scan_loop): After skipping the insns of a libcall sequence, ! 439: ignore notes when searching back to find the last insn of the seq. ! 440: ! 441: * cccp.c (main): Use envvar GCC_EXEC_PATH to specify translation ! 442: of prefixe in default include dirs. ! 443: ! 444: * cccp.c (main): Do path_includes after explicit options. ! 445: ! 446: * combine.c (try_distrib): Don't push + thru negative count shifts. ! 447: ! 448: Mon Jan 14 09:40:28 1991 Ken Raeburn (raeburn at watch.com) ! 449: ! 450: * cplus-lex.c (yylex): Even in `extern "C"', the keywords are the ! 451: same. ! 452: ! 453: * cplus-lex.c (input_from_saved_text): New function. Set string ! 454: source for FILE pointer. ! 455: (yylex, do_pending_inlines): Call it. ! 456: ! 457: * cplus-parse.y (stmts, stmt): Type is now `tree'. Some actions ! 458: fixed to return it. ! 459: ! 460: * cplus-lex.c (reinit_parse_for_block): New function, with most of ! 461: the guts of reinit_parse_for_method. Magic argument IS_TEMPLATE ! 462: chooses a set of error messages. ! 463: (reinit_parse_for_method): Call it. ! 464: cplus-template.c (reinit_parse_for_template): New function, also ! 465: calls reinit_parse_for_block. ! 466: ! 467: Mon Jan 14 07:20:36 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 468: ! 469: * loop.c (skip_consec_insns, move_movables, strength_reduce): Don't ! 470: call find_reg_note on a NOTE. ! 471: ! 472: Sun Jan 13 15:45:23 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 473: ! 474: * cccp.c: Separate namespace for assertions. Don't expand macros ! 475: inside assertions in #if. Allow arbitrary token sequences. ! 476: (rescan): Special handling after `#' if assertions_flag. ! 477: (expand_to_temp_buffer): New arg sets assertions_flag. Callers changed. ! 478: (eval_if_expression): Pass 1 for that arg. ! 479: (skip_paren_group): New function. ! 480: (assertion_hashtab, ASSERTION_HASHSIZE, ASSERTION_HASHNODE): New. ! 481: (assertion_install, assertion_lookup, delete_assertion): New functions. ! 482: (T_ASSERTION): Deleted. ! 483: (tokenlist_list): Renamed from arglist_list. ! 484: (read_token_list): Renamed from read_keyword_list. Much changed. ! 485: Copy the strings into the heap. ! 486: (free_token_list): Renamed from free_keyword_list. Free the strings. ! 487: (do_assert, do_unassert): Considerably changed. ! 488: (check_assertion): Somewhat changed. ! 489: (check_macro_name): Extra arg contributes to error message. ! 490: * cexp.y (yylex): Parse everything as a name if keyword_parsing. ! 491: (rule for assertions): Set, then clear, keyword_parsing. ! 492: (keywords): Allow empty sequence. Allow nested parens. ! 493: ! 494: Sat Jan 12 12:18:00 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 495: ! 496: * c-typeck.c (build_unary_op): Make better code for simple casts. ! 497: ! 498: * reload.c (find_reloads): Computing reload_when_needed, don't neglect ! 499: operands that don't have output reloads. ! 500: ! 501: * cse.c (refers_to_mem_p): At check_addr, handle PLUS inside CONST. ! 502: ! 503: Sat Jan 12 06:30:56 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 504: ! 505: * reorg.c (steal_delay_list_from_*): Add missing argument to calls to ! 506: insn_sets_resource_p. ! 507: (fill_eager_delay_slots, relax_delay_slots): Add missing argument ! 508: to calls to mostly_true_jump. ! 509: (relax_delay_slots): Correctly handle case where we can't invert jump. ! 510: ! 511: * reload.c (find_reloads_toplev): If we have a SUBREG of a ! 512: pseudo that resides in memory and the address is not offsettable, ! 513: substitute for the pseudo now so we can generate a reload for the ! 514: address. ! 515: ! 516: Fri Jan 11 14:39:09 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 517: ! 518: * tm-next.h (LIB_SPEC, STARTFILE_SPEC): Don't support -p. ! 519: ! 520: Thu Jan 10 12:26:49 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 521: ! 522: * tm-sun2.h (CC1_SPEC): Define to ignore -sun2 and -target. ! 523: (WORD_SWITCH_TAKES_ARG): Define to recognize -target. ! 524: (LIB_SPEC): Define; handle -a. ! 525: * tm-sun2os4.h: New file. ! 526: * tm-m68k.h (TARGET_SWITCHES): Handle -msky and -mnosky. ! 527: (TARGET_SKY): New macro. ! 528: ! 529: * tm-next.h (LIB_SPEC): Use -lsys_s, not -lc. ! 530: ! 531: * c-parse.y (yylex): Fix typo. ! 532: ! 533: * genoutput.c (output_prologue): Make insn-output.c use insn-codes.h. ! 534: * Makefile.in (insn-output.o): Depend on insn-codes.h. ! 535: ! 536: * Makefile.in (install-headers): Save $(libsubdir) before cd. ! 537: ! 538: * Makefile.in (gnulib): Depend on config.status. ! 539: ! 540: * gnulib2.c (__umulsidi3): Use #else around inline function. ! 541: Use __-style names for all machines. ! 542: ! 543: Wed Jan 9 17:06:18 1991 Michael Tiemann (tiemann at cygnus.com) ! 544: ! 545: * out-sparc.c (various places): Change \; to \n\t in printf ! 546: strings. ! 547: ! 548: * sparc.md: Change PIC initialization pattern to recognize pattern ! 549: that doesn't involve a clobber. ! 550: * out-sparc.c: Rest of change is here, where PIC initialization is ! 551: emitted. ! 552: ! 553: * cse.c (simplify_unary_operation, simplify_binary_operation): ! 554: Correctly adjust VAL for bits outside MODE. ! 555: ! 556: Wed Jan 9 15:45:26 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 557: ! 558: * flow.c (libcall_dead_p): Handle a CALL in a PARALLEL. ! 559: ! 560: Tue Jan 8 13:35:50 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 561: ! 562: * expmed.c (emit_store_flag): Correct UNSIGNEDP value passed to ! 563: convert_to_mode and expand_unop. ! 564: ! 565: Mon Jan 7 11:56:31 1991 Michael Tiemann (tiemann at cygnus.com) ! 566: ! 567: * gplus.gperf: New keywords for templates and other extensions. ! 568: ! 569: * cplus-lex.c: Incorprate new gperf code. ! 570: ! 571: * cplus-class.c (resolve_scope_to_name): New function. ! 572: (build_scoped_method_call): Call `resolve_scope_to_name' instead of ! 573: handling by itself. ! 574: * cplus-decl.c (pushdecl_class_level): Give forward declaration. ! 575: (lookup_nested_type): New function. ! 576: (pushtag,lookup_tag,xref_tag): Handle nested classes. ! 577: (finish_function): Add comment about obscure argument passing ! 578: convention for static method calls (at the call site). Also, don't ! 579: call operator delete with NULL pointer. Call it with ! 580: `current_class_decl' instead. ! 581: (globalize_nested_type): New function. Used when we learn that a ! 582: type which initially appeared to be nested should be defined in the ! 583: global scope instead. ! 584: (grokdeclarator): Call `globalize_nested_type' when grokking an ! 585: as-yet undefined class type. ! 586: * cplus-dem.c: Updated to handle qualified (i.e. nested) types. ! 587: This means handling the new letter `Q' in mangled names. ! 588: * cplus-init.c (build_member_call): Handle nested classes using ! 589: `resolve_scope_to_name' instead of handling itself. ! 590: * cplus-lex.c (typename_scope_in_progress): New static variable to ! 591: allow the lexer to figure out what are nested class typenames, ! 592: scoped member references, etc., without getting the parser too ! 593: involved. ! 594: (yylex): Recognize SCOPED_TYPENAME and TYPENAME_SCOPE tokens. ! 595: Also, recognize '<' and '>' separately from ARITHCOMPARE so we can ! 596: implement templates. ! 597: No longer recognizes (X::*) or (X::&) as single tokens. ! 598: * cplus-method.c (build_overload_nested_name): New function to build ! 599: internal names for nested typenames. ! 600: * cplus-parse.y: Handle parameterized type syntax (more or less). ! 601: (dummy_decl): Gone! ! 602: Nested types are now handled. ! 603: * cplus-tree.h (DECL_UNDEFINED_FRIENDS): Moved out of DECL_CONTEXT ! 604: slot of TYPE_DECLs. DECL_CONTEXT of typename is now the enclosing ! 605: type for nested types. ! 606: (DECL_NESTED_TYPENAME): An identifier pointer that makes the name of ! 607: the type unique for the compilation. ! 608: (IDENTIFIER_*): When initializing, call `perm_calloc', not ! 609: permalloc, since non-zero values actually mean something, ! 610: and we don't guarantee to initialize everything in one go. ! 611: * tree.c (perm_calloc): New function. ! 612: * cplus-typeck.c (default_conversion): Don't defaultly convert a ! 613: naked METHOD_REF such that it becomes a virtual function table ! 614: index. Only let this happen if user requests it with `&'. ! 615: ! 616: * Makefile.in: Handle new source file cplus-template.c. ! 617: ! 618: Mon Jan 7 15:03:53 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 619: ! 620: * c-typeck.c (process_init_constructor): Error if values ! 621: provided for an array of empty elements. ! 622: ! 623: * out-i386.c (fp_top_dead_p1): Follow jump only if optimizing. ! 624: (fp_call_internal): Discard result if unused. Use fp_top_dead_p1. ! 625: ! 626: * cse.c (cse_insn): In special case for (set REG0 REG1), ! 627: change any REG_EQUIV notes to REG_EQUAL. ! 628: ! 629: * tm-sun386i.h (PCC_BITFIELD_TYPE_MATTERS): Define it. ! 630: ! 631: * tm-att386.h (ASM_OUTPUT_LOCAL): Change back to data section. ! 632: ! 633: * genrecog.c (write_tree_1): Typo in printf string. ! 634: ! 635: * flow.c (libcall_dead_p): New arguments NOTE and INSN. ! 636: Now test that the hard return reg in the call is dead. ! 637: Callers changed. ! 638: ! 639: Mon Jan 7 12:27:07 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 640: ! 641: * recog.c (cancel_changes): Cancel changes in opposite order we made ! 642: them. ! 643: ! 644: * integrate.c (subst_constants): Only commute operands if op0 is const. ! 645: ! 646: * rtl.def (INLINE_HEADER): Add new integer field. ! 647: * rtl.h (POPS_ARGS): New macro for place to save ! 648: current_function_pops_args. ! 649: (FUNCTION_FLAG_POPS_ARGS): Deleted; no longer a single bit. ! 650: * emit-rtl.c (gen_inline_header_rtx): Add new arg for "pops args". ! 651: * integrate.c (initialize_for_inline, output_inline_function): ! 652: Correctly save and restore current_function_pops_args. ! 653: ! 654: Sun Jan 6 14:10:44 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 655: ! 656: * rtl.h (ASM_OPERANDS_INPUT_LENGTH): New macro. ! 657: * reload1.c (eliminate_regs): Use ASM_OPERANDS_... macros. ! 658: * recog.c (asm_noperands, decode_asm_operands): Likewise. ! 659: ! 660: * rtl.def (IF_THEN_ELSE): Set class to '3'. ! 661: ! 662: * cse.c (simplify_{unary,binary,ternary}_operation): New functions, ! 663: from fold_rtx. ! 664: (fold_rtx): Call these function to do the bulk of the work. ! 665: Use GET_RTX_CLASS to find commutative and comparison operations. ! 666: Swap folded_arg[01] when commuting operands. ! 667: * rtl.h: Define new functions. ! 668: * integrate.c (try_constants): Replace constant folding code with ! 669: calls to new functions above. ! 670: In commutative operations, put constants last. ! 671: ! 672: * genemit.c (struct clobber_pat): New data structure. ! 673: (gen_insn): If pattern ends with a group of CLOBBERs of hard ! 674: registers, store this information in a struct clobber_pat. ! 675: (output_add_clobbers): New function. ! 676: (main): Call it to write code to add CLOBBERs. ! 677: * genrecog.c (struct decision): Add new field num_clobbers_to_add. ! 678: (make_insn_sequence): If pattern ends with a group of CLOBBERs, ! 679: set up to recognize it without the CLOBBERs but to indicate the ! 680: number of CLOBBERs omitted. ! 681: (add_to_sequence): Initialize num_clobbers_to_add. ! 682: Remove unnecessary conditionalization on STORE_FLAG_VALUE. ! 683: (break_out_subroutines, write_subroutine, write_tree): Remove ! 684: RETURN_PREFIX parameter; TYPE is sufficient. ! 685: (write_subroutine): Add extra parameter for recog_* functions. ! 686: (write_tree_1): Pass TYPE instead of string for return. ! 687: Write out code to return number of CLOBBERs needed. ! 688: (write_tree): Add new parameter to recog_*. ! 689: (main): Add new parameter to recog. ! 690: Don't pass return string to break_out_subroutines and write_tree. ! 691: * recog.c (recog_memoized): Pass extra (0) parameter to recog. ! 692: * combine.c (recog_for_combine): New function. ! 693: (try_combine, simplify_and_cc0, try_distrib): Use it instead of recog. ! 694: (reg_dead_at_p, reg_dead_at_p_1): New functions. ! 695: ! 696: * flow.c (mark_set_1): Count in reg_n_sets when a part of a register ! 697: is modified. ! 698: Update SIGNIFICANT correctly when subreg_p and multiple hard regs. ! 699: Compute reg_n_sets for hard registers. ! 700: ! 701: Sun Jan 6 13:41:49 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 702: ! 703: * function.c (locate_and_pad_parm): Do REG_PARM_STACK_SPACE just once. ! 704: ! 705: * Changes by [email protected]. ! 706: * calls.c (expand_call): Test value of REG_PARM_STACK_SPACE instead ! 707: of assuming that it will always be greater than zero. ! 708: * function.c (assign_parms): Same as above. Also, correct ! 709: calculation of STACK_BYTES. ! 710: ! 711: * reload1.c (reload_reg_free_p): Old input reload blocks input_addr. ! 712: ! 713: Sat Jan 5 18:32:15 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 714: ! 715: * Makefile.in (mostlyclean): New name for old `clean'. ! 716: (clean): Deletes gnulib also. ! 717: (cleanconfig): Need not delete gnulib here. ! 718: ! 719: * reload.c (push_reload): Don't use dying reg unless operand fits. ! 720: ! 721: * c-parse.y (yylex): Hex and octal constants now traditionally signed. ! 722: ! 723: Sat Jan 5 18:03:50 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 724: ! 725: * regclass.c (regclass): reg_n_sets is one per set. It does not ! 726: take into account loop_depth. So don't adjust by loop_depth here. ! 727: ! 728: Fri Jan 4 13:18:07 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 729: ! 730: * function.c (put_var_into_stack): Don't mung virtual reg. ! 731: (fix_lexical_addr): Accept the virtual arg pointer. ! 732: * function.h (struct var_refs_queue): New structure. ! 733: (struct function): Use that for the pending var refs queue. ! 734: ! 735: * print-tree.c (print_node): Nicer format for rtl of decls. ! 736: ! 737: * c-decl.c (push_c_function_context, pop_c_function_context): ! 738: No need to deal with current_function_decl. ! 739: ! 740: * c-parse.y (nested_function): Delete spurious nonterminal. ! 741: ! 742: Fri Jan 4 12:13:14 1991 Michael Tiemann (tiemann at cygnus.com) ! 743: ! 744: * cplus-class.c (modify_vtable_entries): In case we are modifying ! 745: the main vtable, start with the vtable that comes from the immediate ! 746: baseclass, not the most base class. This is needed because later ! 747: fixups (for non-first and virtual baseclasses) do not fix up this ! 748: case. ! 749: ! 750: Fri Jan 4 06:55:00 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 751: ! 752: * optabs.c (expand_binop): Fix typo in testing for SImode operation. ! 753: Generalize to apply in more cases by calling emit_store_flag rather ! 754: than doing the gen_sltu explicitly. ! 755: ! 756: * expmed.c (store_bit_field, extract_bit_field): When insv/extv ! 757: don't allow MEM and we need to load the field into a register, don't ! 758: use the mode of OP0 if it is wider than the mode to be used for ! 759: insv/extv operating on a register. ! 760: ! 761: * expmed.c (emit_stor_flag): Try to convert some comparisons with ! 762: 1 and -1 to comparisons with zero. ! 763: Explicitly test sign bit of STORE_FLAG_VALUE rather than testing it ! 764: for being less than zero. ! 765: ! 766: * cse.c (find_comparison_args): Don't compute STORE_FLAG_VALUE < 0; ! 767: instead, test the relevant sign bit. ! 768: Use GET_RTX_CLASS instead of comparison_code_p. ! 769: * loop.c (get_condition): Likewise. ! 770: ! 771: * recog.c (validate_change): Eliminate duplicate code by always ! 772: saving the change. If in_group == 0, call apply_change_group. ! 773: (apply_change_group): If recog_memoized fails, see if we have a ! 774: CLOBBER at the end. Use validate_change to replace the pattern ! 775: with one without the CLOBBER if so; later we will verify that change. ! 776: ! 777: * tree.c (stabilize_reference_1): Now static; also, define as forward ! 778: reference at start of file. ! 779: ! 780: * rtl.def: Add new field in DEF_RTL_EXPR macro to give the "class" ! 781: of the rtx operation. ! 782: * rtl.h: DEF_RTL_EXPR has one additional arg. ! 783: (rtx_class, GET_RTX_CLASS): New var and macro. ! 784: * rtl.c: DEF_RTL_EXPR has one additional arg. ! 785: (rtx_class): Initialize table. ! 786: ! 787: * reload.c (push_reload): If an input operand contains a dead ! 788: register used nowhere else in the insn, try to use it as a reload reg. ! 789: * reload1.c (reload_as_needed): If cancelling optional reload, ! 790: clear reload_reg_rtx. ! 791: (choose_reload_regs): If we can find reload value lying around, ! 792: use that register unless choice made by find_reloads would also save ! 793: an insn (the new choice added above won't). ! 794: ! 795: * genoutput.c: Update comments on things written. Change order to ! 796: agree with the order written. ! 797: (output_epilogue): Remove extraneous tests. ! 798: ! 799: Thu Jan 3 13:32:54 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 800: ! 801: * rtl.c (read_rtx): Cast NULL vector. ! 802: ! 803: * By Jim Wilson. ! 804: * tree.c (stabilize_reference): Modified to call stabilize_reference_1 ! 805: instead of save_expr. ! 806: (stabilize_reference_1): New function. For arithmetic operator trees, ! 807: recurse on the subtrees. Otherwise, put a SAVE_EXPR around the ! 808: tree if it has side-effects. ! 809: ! 810: Thu Jan 3 12:37:56 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 811: ! 812: * reload1.c (choose_reload_regs): Only set reload_when_needed to ! 813: RELOAD_FOR_OUTPUT or RELOAD_FOR_INPUT when it used to be RELOAD_OTHER. ! 814: ! 815: Wed Jan 2 18:28:23 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 816: ! 817: * emit-rtl.c (init_emit_once): Fix typo setting constm1_rtx. ! 818: ! 819: Wed Jan 2 07:53:04 1991 Michael Tiemann (tiemann at cygnus.com) ! 820: ! 821: * sparc.md (fix_truncdfsi2 recognizer): xoperands must have 3 ! 822: elements because `output_fp_move_double' can write to operands[2]. ! 823: ! 824: Wed Jan 2 17:16:20 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 825: ! 826: * calls.c (emit_call_1): If we have call_pop, use it if we have ! 827: no stack arguments. ! 828: ! 829: * out-vax.c (relational_op): Deleted, redundant. ! 830: * vax.md (branch): Use comparison_operator (in recog.c) instead of ! 831: relational_op. ! 832: * tm-vax.h (PRINT_OPERAND_PUNCT_VALID_P): "C" is not punctuation. ! 833: ! 834: * reload1.c (reload_as_needed, forget_old_reloads_1): Don't clear ! 835: reg_has_output_reload and reg_is_output_reload for each insn, just ! 836: ones that need reload. Instead, interpret each entry as zero if ! 837: n_reloads == 0. ! 838: ! 839: Wed Jan 2 15:52:13 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 840: ! 841: * optabs.c (expand_binop): Fix typos. ! 842: ! 843: * toplev.c (rest_of_compilation): Clear cse_not_expected after loop. ! 844: * rtl.h (cse_not_expected): Declare here. ! 845: * expr.h: Not here. ! 846: ! 847: Tue Jan 1 21:55:11 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 848: ! 849: * emit-rtl.c (constm1_rtx): New standard constant. ! 850: (gen_rtx): Use it when appropriate. ! 851: (init_emit_once): Initialize it. ! 852: ! 853: * out-vax.c (split_quadword_operands): New function. ! 854: (relational_op): Likewise. ! 855: * vax.md (extendsidi2, adddi3, subdi3): New patterns. ! 856: (movdi): Use clrq when appropriate. ! 857: (movaq recognizer): New pattern. ! 858: ! 859: * recog.h (OUT_FCN): New macro. ! 860: * genoutput.c: Include recog.h in output file. No ! 861: longer define "const", since that happens in recog.h. ! 862: ! 863: * tm-vax.h (PRINT_OPERAND): Add 'C' to print a reversed condition. ! 864: * out-vax.c (rev_cond_name): Return its name. ! 865: * vax.md (unnamed patterns): Combine several reversed branch patterns ! 866: into one, using match_operator with relational_op and "%C". ! 867: ! 868: * optabs.c (expand_binop): Handle multi-word addition and subtraction. ! 869: ! 870: * Makefile.in (install-gnulib): Use RANLIB_TEST. Use libg_dir. ! 871: (libg_dir): New customization variable. ! 872: ! 873: * assert.h (__assert): Use standard GNU format for error messages. ! 874: ! 875: Tue Jan 1 21:25:00 1991 Richard Kenner (kenner at vlsi1) ! 876: ! 877: * reload1.c (eliminate_regs, case PLUS): Always move constant to the ! 878: outside of a PLUS expression. ! 879: ! 880: Tue Jan 1 11:45:22 1991 Richard Stallman (rms at mole.ai.mit.edu) ! 881: ! 882: * ecoff-cmp: Specify `c' in option to tail. ! 883: ! 884: * stor-layout.c (layout_record, layout_union, layout_type): ! 885: Use ROUND_TYPE_ALIGN and ROUND_TYPE_SIZE to compute ! 886: alignment and size of records, unions and arrays. ! 887: * ROUND_TYPE_ALIGN: New. Args are type, spec'd align, other min align. ! 888: * ROUND_TYPE_SIZE: New. Args are type, size of contents, align. ! 889: ! 890: * reload1.c (emit_reload_insns) [PRESERVE_DEATH_INFO_REGNO_P]: ! 891: Scan output and output-address reloads together. ! 892: Check for matching hard reg. ! 893: ! 894: * config.gcc: Set proper shell vars in big dispatch. Not `machine'. ! 895: (i386-isc): New alternative. ! 896: ! 897: Tue Jan 1 08:29:49 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 898: ! 899: * reorg.c (update_block): Turn bb_tick update back on; it is needed, ! 900: after all. ! 901: ! 902: Mon Dec 31 18:12:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 903: ! 904: * genattrtab.c (write_test_expr, case EQ_ATTR): Use correct expression ! 905: number for attribute value. ! 906: ! 907: * cse.c (cse_insn): Use single_set when looking for an insn that sets ! 908: cc0 followed by one that no longer does. ! 909: ! 910: * recog.c (find_single_use): If the next insn after one that sets ! 911: cc0 is not an INSN or JUMP_INSN, return 0; don't blow up on a NOTE. ! 912: ! 913: * emit-rtl.c (emit_insn_before, emit_insn_after, emit_insn): Return ! 914: something sensible if a SEQUENCE of length zero was passed. ! 915: We no longer make a SEQUENCE with XVEC == 0, so don't test for it. ! 916: ! 917: * reload1.c (emit_reload_insns): Handle gen_move_insn returning ! 918: no insns (occurs on RT for dummy registers). ! 919: ! 920: * rtl.h (reg_cc0_rtx, find_cc): No longer needed. ! 921: * emit-rtl.c: Likewise. ! 922: * conditions.h: Entire file is #ifdef HAVE_cc0. ! 923: * final.c (CC_STATUS_INIT): Make a null default #ifndef HAVE_cc0. ! 924: (cc_status): No longer exists #ifndef HAVE_cc0. ! 925: (final_scan_insn): Do CC processing only #ifdef HAVE_cc0. ! 926: (alter_cond): Only exists #ifdef HAVE_cc0. ! 927: * genemit.c (gen_exp): No longer have CC0_REGNUM or reg_cc0_rtx. ! 928: * genoutput.c (main): Include insn-config.h before conditions.h. ! 929: * reorg.c: Likewise. ! 930: * jump.c (rtx_equal_for_thread_p): Remove reference to CC0_REGNUM; ! 931: we'll have to do this optimization some other way later. ! 932: * tm-a29k.h (NOTICE_UPDATE_CC): Deleted. ! 933: ! 934: Mon Dec 31 14:44:31 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 935: ! 936: * reload.h (enum_reload_when_needed): ! 937: New alternatives RELOAD_FOR_OUTPUT, RELOAD_FOR_INPUT. ! 938: * reload1.c (choose_reload_regs): Use those when appropriate. ! 939: (mark_reload_reg_in_use): Record this usage specially. ! 940: (reload_reg_free_p, reload_reg_free_before_p): Handle this usage. ! 941: (reload_reg_reaches_end_p): Likewise. ! 942: (emit_reload_insns): Treat RELOAD_FOR_INPUT like RELOAD_OTHER. ! 943: ! 944: * i386.md (push for SFmode): Operand of fst was missing. ! 945: ! 946: Mon Dec 31 08:50:17 1990 Craig Burley (burley at pogo.ai.mit.edu) ! 947: ! 948: * stor-layout.c (layout_type): For ARRAY_TYPE case, don't try ! 949: and compute a size if there is no TYPE_MAX_VALUE for the index. ! 950: * tree.c, tree.h (build_index_2_type): New function, like ! 951: build_index_type except it accepts the low value as an arg instead ! 952: of assuming 0. ! 953: ! 954: Mon Dec 31 08:09:10 1990 Michael Tiemann (tiemann at cygnus.com) ! 955: ! 956: * cplus-typeck.c (c_expand_return): Handle case when we try ! 957: to return a void value (such as a void function call) in a ! 958: function returning void, and there are cleanups to run. ! 959: ! 960: Sun Dec 30 21:08:32 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 961: ! 962: * tm-a29k.h (TARGET_VERSION): Can't use target_flags since we can ! 963: be called from gcc.c. ! 964: ! 965: * tm-rs6000.h (REG_ALLOC_ORDER): Put r12 after r13; it might be ! 966: holding a DImode value and so might be very expensive (we won't ! 967: worry about TImode). ! 968: ! 969: * rs6000.md (subtract patterns): Fix incorrect operand number in %I. ! 970: (movti): Disallow indexed memory operands. ! 971: ! 972: * out-rs6000.c (print_operand, case 'm'): Fix typo. ! 973: (includes_rshift_p): Correctly compute mask. ! 974: ! 975: * out-a29k.c (output_operand): Add missing parentheses. ! 976: (print_operand): Replace if/then/else structure with switch statement. ! 977: ! 978: * a29k.md (beq, bne): Try to use NE test whenever possible; it ! 979: will produce better code if we have bit-tests. ! 980: ! 981: Sun Dec 30 12:02:03 1990 Michael Tiemann (tiemann at cygnus.com) ! 982: ! 983: * tm-sparc.h (PRINT_OPERAND): Put 'R' case before REG so that it ! 984: takes when 'R' is passed in as CODE. Also, handle 'B' letter. ! 985: ! 986: * sparc.md: (pattern for converting DFmode to SImode): Second ! 987: argument to `output_asm_insn' should be `operands', not zero. ! 988: (tablejump): The jump insn is "jmp", not "jump". ! 989: (gen_fixtruncdfsi2): operands[2] should get the pseudo, not ! 990: operands[3] (which is nonexistent). ! 991: (call): Fix typo which had %o7 being emitted as %o. ! 992: (various patterns): Fixed places where match_operand had the wrong ! 993: operand number. ! 994: ! 995: Sat Dec 29 17:27:00 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 996: ! 997: * sparc.md: cc_status no longer handles condition code updates. ! 998: Instead, condition codes are explicitly set and used via ! 999: hard register 0. Special attributes specific to condition codes ! 1000: (such as whether conditional branches should test the integer or ! 1001: floating-point condition codes, or that the condition codes cannot ! 1002: be tested for a condition which would test the overflow bit) are ! 1003: handled by encoding the attribute in the mode for the condition ! 1004: code register. ! 1005: (type attributes): type "unary" insns have one input operand (1) ! 1006: and one output operand (0) ! 1007: type "binary" insns have two input operands (1,2) and one output (0) ! 1008: type "compare" insns have one or two input operands (0,1) and no output ! 1009: type "move" and type "arith" have been deleted. ! 1010: (prescan attribute): Deleted. Machine description now puts ! 1011: floating-point zero in registers when needed. ! 1012: (use_cc attribute): Deleted. ! 1013: (fpcc define_delay): No longer depend on "use_cc" attribute. ! 1014: Also, fpcc delay characteristics hold for "fpcc" type insns. ! 1015: (cc attribute): Deleted. ! 1016: (cmpxx patterns): Now written as `define_expand's so we can stow ! 1017: away operands. When the pattern that will use the results of the ! 1018: conditional test is emitted, it can use these operands to figure ! 1019: out the right way to emit the compare. ! 1020: (bcc patterns): Rewritten to emit comparison (based on stowed-away ! 1021: info) before emitting branch. ! 1022: (scc patterns): Handle all the cases with branch-free code. ! 1023: Added new pattern to recognize (x + (i == 0)). ! 1024: (movsi pattern recognizer): Split into two patterns so that e.g. ! 1025: "(set:SI (mem:SI ...) (const_int 5))" is never considered valid. ! 1026: Instead this has to be a two-insn sequence. ! 1027: (mov{hq}i pattern recognizers): Ditto. ! 1028: (movstrsi): Force operands[2] out of memory if it was in memory. ! 1029: ({zero,sign}_extendXY): Now written as `define_expand's instead of ! 1030: `define_insn's for more accurate machine modeling. ! 1031: Added new pattern to optimize bit-field compares. ! 1032: (floatsisf2 patterns): Delete redundant setting of "in_call_delay" ! 1033: attribute. ! 1034: (fix_trunc{sf,df}si2 pattern): Use clobberable register in which ! 1035: the conversion can take place. Used to use %f30,%f31. ! 1036: ({add,sub}di3 pattern): Put explicit clobber of (reg 0) in the ! 1037: pattern. ! 1038: (negdi2 pattern): Ditto. ! 1039: Added new patterns to handle merging of addition/subtraction with ! 1040: condition code testing (with (reg:CC_NOOV 0)). ! 1041: ({and,ior,xor}cbsi3 pattern): Obsolete. Deleted. ! 1042: Added patterns to represent setting of condition codes in addition ! 1043: to performing logical operations. ! 1044: ({neg,abs}df2 pattern): Use `R' print letter to overcome the need ! 1045: to use a C action instead of a simple template. ! 1046: (ash{l,r}{hi,qi}3): Define patterns for shifts on sub-SImode ! 1047: operands. ! 1048: (jump pattern): Use `*' print code to obviate the need for a C ! 1049: action when a template can do. ! 1050: (tablejump pattern): Ditto, with `^' code as well. ! 1051: Deleted `define_split's that were used to handle mem-mem moves in ! 1052: the case of PIC generation. Since all move insns are emitted and ! 1053: maintained as SPARC-valid insns, these should no longer be needed. ! 1054: (various patterns): (HI ...) is spelled (HI:SI ...). Also, use ! 1055: `gen_lowpart' instead of building subregs directly. ! 1056: New `define_split's were added to split scc insns into simpler ! 1057: components which have single-insn templates. ! 1058: Fixed a return peephole when returning a SFmode value (it was ! 1059: missing the "ret"!). ! 1060: Lots of complicated peepholes that brought cc testing and ! 1061: arithmetic operations together were deleted. This is because the ! 1062: combiner should now handle all these cases. ! 1063: ! 1064: * out-sparc.c (sparc_compare_op{0,1}): New global variables. ! 1065: Used to hold the operand(s) to compare insns in lieu of emitting a ! 1066: compare. ! 1067: (reg_or_cc0_operand): Deleted. ! 1068: (normal_comp_operator): New function. ! 1069: (cc_arithop): Now returns 0 for PLUS and MINUS. ! 1070: (cc_arithopn): Now returns 0 for XOR. ! 1071: (gen_compare_reg): New function. ! 1072: (sparc_address_cost): Simplified because it turns out it doesn't ! 1073: matter what is returned for illegitimate addresses. ! 1074: (hard_regno_mode_ok): Updated to use these new #defines. ! 1075: (C_MODES): New #define, for condition code modes. ! 1076: (S_MODES): Ditto, for single-word (and smaller) quantities. ! 1077: (D_MODES): Ditto, for double-word (and smaller) quantities. ! 1078: (T_MODES): Ditto, for tetra-word (and smaller) quantities. ! 1079: (SF_MODES): Ditto, for SFmode quantities. ! 1080: (DF_MODES): Ditto, for SF_MODE, DFmode, SCmode, etc. ! 1081: (TF_MODES): Ditto, for DF_MODE, TFmode, DCmode, etc. ! 1082: (output_floatsi{df,sf}2): Greatly simplified. ! 1083: (output_pic_sequence,output_pic_sequence_2,fp_zero_hook, ! 1084: output_tail_call): Turned off. ! 1085: ! 1086: * tm-sparc.h (ASM_SPEC): Pass `-k' to assembler if compiling PIC. ! 1087: (WORDS_BIG_ENDIAN): Define as 1, not 0. ! 1088: (FIXED_REGISTERS): %f30 and %f31 are now allocatable. ! 1089: (REG_CC0_RTX, CC0_REGNUM): Deleted. ! 1090: (EXTRA_CC_MODES): New modes CC_NOOVmode and CCFPmode. The former ! 1091: is for when the overflow bit it not to be tested; the latter is ! 1092: for when the condition is sitting in the floating point unit. ! 1093: (SELECT_CC_MODE): New macro. ! 1094: (FINAL_PRESCAN_INSN): Deleted. ! 1095: (CC_* macros): Deleted. ! 1096: (PRINT_OPERAND_PUNCT_VALID_P): New valid chars are '#' (for ! 1097: whether to print a noop or not), '*' (for whether to print a ",a" ! 1098: or not), and '^' (for whether to emit code for PIC branch or not). ! 1099: (PRINT_OPERAND{,_ADDRESS}): Replace calls to fprintf by calls to ! 1100: fputs where that is convenient. ! 1101: ! 1102: * expr.h, cplus-dbxout.c: #ifdef BYTES_BIG_ENDIAN should be #if. ! 1103: ! 1104: * reload.c (struct replacement): Add new field subreg_loc. ! 1105: (push_reload): If reloading SUBREG_REG of a paradoxical SUBREG, ! 1106: store the location of the SUBREG in subreg_loc in REPLACEMENTS. ! 1107: (push_replacement): Initialize subreg_loc. ! 1108: (subst_reloads): Don't produce nested SUBREGs; use subreg_loc. ! 1109: ! 1110: * regclass.c (regclass): Handle (set X (op CONST Y)) properly when ! 1111: the modes of operands 0 and 1 are different. ! 1112: ! 1113: Sat Dec 29 16:37:10 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1114: ! 1115: * cccp.c (macroexpand): Test traditional when computing expansion size. ! 1116: ! 1117: * toplev.c (compile_file): ! 1118: If profiling, leave some space after `gcc_compiled.'. ! 1119: * tm-m88k.h, tm-sparc.h, tm-sun386i.h (ASM_IDENTIFY_GCC): Deleted. ! 1120: ! 1121: * reload1.c (emit_reload_insns): Set reg_reloaded_contents, etc, here. ! 1122: (choose_reload_regs): Not here--except for reg_has_output_reload. ! 1123: ! 1124: * c-parse.y (nested_function, notype_nested_function): ! 1125: Use compstmt for body, not compstmt_or_error. ! 1126: ! 1127: * Makefile.in (install-headers): Use basename on ! 1128: * stupid.c (stupid_mark_refs): Really do mark clobbered hardreg ! 1129: live before the insn. ! 1130: ! 1131: Fri Dec 28 05:44:10 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1132: ! 1133: * emit-rtl.c (subreg_lowpart_p): Use correct modes in ! 1134: WORDS_BIG_ENDIAN case. ! 1135: ! 1136: * reload.c (combine_reloads): Don't try to reference ! 1137: insn_operand_constraint for an ASM insn. ! 1138: Fix typo in testing for modified operand. ! 1139: ! 1140: Thu Dec 27 19:02:54 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1141: ! 1142: * cse.c (cse_insn): Ensure we invalidate SET_DEST if SET_SRC is a CALL. ! 1143: ! 1144: * cse.c (fold_rtx): Save mode of original first operand in case this ! 1145: is becoming (sign_extend (const_int)). ! 1146: ! 1147: Thu Dec 27 16:15:56 1990 Tom Wood (wood at dg-rtp.dg.com) ! 1148: ! 1149: * m88k.md, out-m88k.c (CCmode): Use it. ! 1150: (emit_bcnd): Avoid loosing when bcnd is changed into sxx. ! 1151: (hi16/lo16): Don't use these to form 16-bit immediate values. ! 1152: Introduce and use %X/%x. ! 1153: (length attribute): Make better use of defaults. ! 1154: ! 1155: * tm-v88r32.h (LIB_SPEC): Goes here rather than in xm-v88r32.h. ! 1156: * xm-*88*.h: Clean these up. Most differences go away by relying ! 1157: on the 88open standards. ! 1158: ! 1159: Thu Dec 27 12:48:26 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1160: ! 1161: * expmed.c (store_bit_field, extract_bit_field): ! 1162: Change #ifdef to #if, testing BYTES_BIG_ENDIAN. ! 1163: ! 1164: Thu Dec 27 07:36:45 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1165: ! 1166: * reorg.c (find_end_label): Ignore USE and CLOBBERs when looking for ! 1167: label at end of function. ! 1168: ! 1169: Wed Dec 26 22:35:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1170: ! 1171: * emit-rtl.c (sequence_element_free_list, sequence_result): New vars. ! 1172: (restore_emit_status, init_emit): Initialize them. ! 1173: (emit_insn_before, emit_insn_after, emit_insn): Save SEQUENCE in ! 1174: sequence_result. ! 1175: Make these three routines more alike in structure. ! 1176: (start_sequence, end_sequence, push_to_sequence): Cache INSN_LIST pairs ! 1177: in sequence_element_free_list rather than making new ones. ! 1178: (start_sequence): No longer return unused rtx; only one caller ! 1179: needed to be changed (in function.c, see below). ! 1180: (end_sequence): No longer has argument. ! 1181: (gen_sequence): Try obtaining a pre-built SEQUENCE from ! 1182: sequence_result; no longer special-case length 0 vectors. ! 1183: * function.c (fixup_memory_subreg): start_sequence no longer ! 1184: returns an rtx and end_sequence no longer has an argument. ! 1185: * rtl.h (start_sequence): Now void. ! 1186: (push_to_sequence, end_sequence): Define. ! 1187: ! 1188: Wed Dec 26 13:19:40 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1189: ! 1190: * gnulib.c: No longer #undef perform_* if not __GNUC__. ! 1191: (perform_*): Define each if not already def. ! 1192: ! 1193: Tue Dec 25 17:31:17 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1194: ! 1195: * loop.c (get_condition): Rework scan that looks for sets of things ! 1196: being compared to allow intervening insns; check to ensure that ! 1197: they don't set something that we need. Return 0 if the best we can ! 1198: do is find something whose mode is in class MODE_CC. ! 1199: ! 1200: * calls.c (emit_call_1): RETURN_POPS_ARGS now gets the length of ! 1201: arguments on the stack and returns the number of bytes popped by the ! 1202: called function. ! 1203: * output.h (current_function_pops_args): Change description. ! 1204: * function.c (current_function_pops_args): Likewise. ! 1205: (assign_parms): Initialize current_function_pops_args here. ! 1206: (init_function_start): Not here. ! 1207: * tm-*.h (RETURN_POPS_ARGS): Reflect new meaning. ! 1208: (FUNCTION_EPILOGUE): Use new meaning of current_function_pops_args. ! 1209: * out-i386.c (function_epilogue): Likewise. ! 1210: ! 1211: Tue Dec 25 15:52:06 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1212: ! 1213: * gnulib.c (all functions): Support a hook for redefining contents. ! 1214: These hooks are called perform_addsi3, and so on. ! 1215: They are used only if compiling with GCC. ! 1216: ! 1217: * rtlanal.c (single_set): Moved from loop.c. ! 1218: ! 1219: * cse.c (fold_rtx): For a MEM, fold address when looking for constant. ! 1220: (cse_insn): When fetch a constant label from a dispatch, ! 1221: substitute into following tablejump. ! 1222: (find_best_addr): Clear do_not_record before hashing. ! 1223: * jump.c (mark_jump_label): Don't record table-labels on non-jumps. ! 1224: ! 1225: * m68k.md (casesi_2 recognizer): Use register_operand as predicate. ! 1226: ! 1227: Mon Dec 24 17:54:42 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1228: ! 1229: * cse.c (fold_rtx): Handle ADDR_DIFF_VEC like ADDR_VEC, ! 1230: when the index in it is constant. ! 1231: ! 1232: * c-decl.c (start_function): Handle new option -Wmissing_prototypes. ! 1233: (c_decode_option): Likewise. ! 1234: ! 1235: Mon Dec 24 07:21:06 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1236: ! 1237: * rtl.h (reload_completed, reload_in_progress): Now defined here. ! 1238: * output.h (reload_completed): No longer defined here. ! 1239: * emit-rtl.c, optabs.c, recog.c, sched.c, toplev.c, out-a29k.c: ! 1240: Don't define reload_in_progress or reload_completed. ! 1241: * a29k.md, romp.md, rs6000.md: Likewise. ! 1242: ! 1243: * machmode.def: Terminate GET_MODE_WIDER_MODE chains with VOIDmode, ! 1244: not zero. ! 1245: (CCmode): New mode. ! 1246: * machmode.h (enum machine_mode): Includes modes in EXTRA_CC_MODES, ! 1247: if defined. ! 1248: (enum mode_class): New class MODE_CC; delete MODE_FUNCTION. ! 1249: * rtl.c (mode_name): Define to be known size; add names for extra ! 1250: CC modes, if present. ! 1251: (mode_class, mode_size, mode_unit_size, mode_wider_mode): Define ! 1252: to be known size. ! 1253: (init_rtl): Initialize extra CC modes. ! 1254: ! 1255: Sat Dec 22 19:33:54 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1256: ! 1257: * tm-i386v.h (MAXPATHLEN): Define if not already defined. ! 1258: * tm-i386vgas.h: New file. ! 1259: ! 1260: * out-i386.c (print_operand_address): Handle scaled indexing. ! 1261: ! 1262: Sat Dec 22 11:15:03 1990 Tom Wood (wood at dg-rtp.dg.com) ! 1263: ! 1264: * m88k.md, out-m88k.c, tm-m88k.h (swapped cmpsi): Don't rely on ! 1265: NOTICE_UPDATE_CC doing the job. Instead, compliment the swapped ! 1266: compare. Also, make COMPARE SImode. ! 1267: (and/cmpsi/sxx/neg): Add patterns to do this in one instruction. ! 1268: Change sign_extend/sxx to neg/sxx for other cases. ! 1269: (iorsi3/xorsi3): Use alternatives and explicit patterns. ! 1270: (casesi): Make the constant the second operand to cmpsi. ! 1271: (output_and): Must compliment value to use the clr instruction. ! 1272: (output_reg_adjust): Simplify the interface and use TEMP_REGNUM. ! 1273: (TARGET_SWITCHES): Eliminate needless no-* options. ! 1274: ! 1275: Fri Dec 21 05:46:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1276: ! 1277: * recog.c (find_single_use{,_1}): New functions. ! 1278: * rtl.h (find_single_use): Declare it. ! 1279: ! 1280: Thu Dec 20 21:27:36 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1281: ! 1282: * optabs.c (init_optabs): Add __ to names of floating compare fcns. ! 1283: ! 1284: Thu Dec 20 18:21:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1285: ! 1286: * expr.c (expand_builtin, case BUILTIN_FFS): Get mode for arg from ! 1287: tree, not rtx, in case arg was CONST_INT. ! 1288: ! 1289: Thu Dec 20 17:31:46 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1290: ! 1291: * c-decl.c (init_decl_processing): Don't define `ffs'. ! 1292: ! 1293: Wed Dec 19 16:59:38 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1294: ! 1295: * gcc.c (main): Handle if SIGPIPE not defined. ! 1296: ! 1297: * cccp.c (xmalloc, xrealloc, xcalloc): Don't declare malloc or realloc. ! 1298: ! 1299: Wed Dec 19 06:50:17 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1300: ! 1301: * combine.c (gen_lowpart_for_combine): Avoid making a nested SUBREG ! 1302: when we are being passed a paradoxical SUBREG of MEM. ! 1303: ! 1304: * cse.c (new_basic_block): Compilations spend about 5% of their time ! 1305: in this function so replace loop initializing qty_{first,last}_reg ! 1306: with copy from a larger consec_ints. Only loop over extra entries. ! 1307: (cse_main): Allocate consec_ints to be default size of max_qty large. ! 1308: ! 1309: * reorg.c (get_branch_condition): Fix typos when reversing condition. ! 1310: (condition_dominates_p): Fix typo in comparison. ! 1311: (redundant_insn_p): This function was taking about 4% of the ! 1312: compilation time. Rework so it doesn't split, only looks at resource ! 1313: usage if it finds a matching insn (since it usually won't), and ! 1314: improve code that looks at resources. Now takes about 0.5% of ! 1315: compilation time. ! 1316: (fill_simple_delay_slots): Always call mark_target_live_regs with an ! 1317: active insn; currently being called with a CODE_LABEL. ! 1318: ! 1319: Tue Dec 18 14:08:11 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1320: ! 1321: * out-sparc.c: Fix uninitiated comment. ! 1322: ! 1323: * final.c (end_final): Call strip_off_ending to remove the file ! 1324: name suffix. ! 1325: (final_start_function): Execute SDB_DEBUGGING_INFO code only if ! 1326: generating SDB symbol info. ! 1327: ! 1328: * Makefile.in (cccp.o): Depend on gcc. ! 1329: ! 1330: * tm-sparc.h, xm-sparc.h: Make this machine big-endian. ! 1331: ! 1332: * expr.c (expand_builtin): Pass correct arguments to gen_cmpstrsi4. ! 1333: ! 1334: * recog.c (nonmemory_operand): Reject reg whose class is NO_REGS. ! 1335: ! 1336: * c-decl.c (finish_struct, grokdeclarator): ! 1337: Strip NON_LVALUE_EXPR more than once. ! 1338: ! 1339: * combine.c (combine_instructions): Check that a jump insn uses CC0 ! 1340: before trying to combine it with an insn that sets CC0. ! 1341: ! 1342: * cplus-decl.c, cplus-search.c, gcc.c, objc-actions.c, rtl.c, stmt.c, ! 1343: symout.c, toplev.c: Use xmalloc instead of malloc. ! 1344: ! 1345: * cccp.c (do_include): Check for truncation of precompiled file name. ! 1346: ! 1347: Mon Dec 17 16:53:46 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1348: ! 1349: * c-typeck.c (build_binary_op_nodefault, build_conditional_expr): ! 1350: Fix indentation. ! 1351: * reload1.c (choose_reload_regs): Fix indentation. ! 1352: (gen_input_reload): Fix typo in comment. ! 1353: ! 1354: * reload.c (find_reloads): Call abort when the last operand is ! 1355: marked commutative, to make it easier to find this error. ! 1356: ! 1357: * rtlanal.c (refers_to_regno_p): Don't crash if X is 0. ! 1358: ! 1359: Mon Dec 17 15:29:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1360: ! 1361: * local-alloc.c (combine_regs): No need to see if suggested hard reg ! 1362: is suitable; if it isn't, it won't end up being used. Existing tests ! 1363: were too conservative. ! 1364: ! 1365: * jump.c (delete_jump): When searching for the SET of the condition ! 1366: codes for a jump insn, give up if we hit a SEQUENCE. ! 1367: ! 1368: Mon Dec 17 02:14:06 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1369: ! 1370: * c-typeck.c (c_size_in_bytes): New function. ! 1371: (pointer_int_sum, pointer_diff): Use that. ! 1372: (pointer_diff): Handle warn_pointer_arith. ! 1373: ! 1374: Sun Dec 16 22:27:11 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1375: ! 1376: * c-decl.c (start_decl): Ignore with error any init for a parm. ! 1377: (finish_decl): Likewise. ! 1378: ! 1379: Sun Dec 16 01:02:57 1990 Michael Tiemann (tiemann at cygnus.com) ! 1380: ! 1381: * jump.c (rtx_equal_for_thread_p): Treat the special CC register as ! 1382: equivalent for the two threads we are looking at. ! 1383: ! 1384: * combine.c (try_combine): Fix typo in loop over I1 with PARALLEL ! 1385: body. Also, don't test HARD_REGNO_MODE_OK for hard registers we are ! 1386: thinking about combining. This screws up using registers to ! 1387: represent the condition codes, and probably doesn't save anything in ! 1388: the general case. ! 1389: ! 1390: * expmed.c (expand_and): Comment says that result is always stored ! 1391: in target, so the code now does this. ! 1392: ! 1393: Sat Dec 15 18:09:46 1990 Michael Tiemann (tiemann at cygnus.com) ! 1394: ! 1395: * loop.c (get_condition): Try a little harder to find the setter of ! 1396: the register used in a conditional test. On the SPARC it is vital ! 1397: to either find the setter of the register used for the condition ! 1398: codes or for this function to return 0. Also, have test for ! 1399: non-NULL, matching `set' govern both normal and reversed cases of ! 1400: comparisons. ! 1401: ! 1402: * jump.c (jump_optimize): When moving USE insns from before jumps to ! 1403: after BARRIERs, put the label for the redirected jump after the ! 1404: BARRIER instead of just before the PREV_INSN of the original target. ! 1405: This gets around problems when there are NOTEs between the BARRIER ! 1406: and the original target. ! 1407: ! 1408: Sat Dec 15 10:16:29 1990 Michael Tiemann (tiemann at cygnus.com) ! 1409: ! 1410: * sparc.md (cmpdf,cmpsf): No longer a define expand. Now depends ! 1411: on fp zero being loaded into a register. ! 1412: (tstsi,tstdf,tstsf): Deleted. ! 1413: (seq,sne): Fail if we are not testing operands of integer mode. ! 1414: (movsi): Split recognizers into two parts. The first handles ! 1415: [reg,mem,zero] <=> [reg,mem]; the second handles [reg,const] => ! 1416: [reg]. ! 1417: (adddf,subdf,negdf): Simplify output routines using 'R' as an ! 1418: output letter. ! 1419: (tail_call): Turn this off. It is never used, and it depends on ! 1420: routines which are about to become broken. ! 1421: (various places): Add USE_CC attribute where appropriate. ! 1422: (various places): Change (use (reg:SI 0)) to (clobber (reg:SI 0)) ! 1423: and delete CC_CLOBBER attribute from the pattern. ! 1424: * out-sparc.c (move_operand): No longer recognize certain ! 1425: immediates as a `move_operand'. ! 1426: (move_reg_or_immed_operand): New recognizer for immediates no ! 1427: longer recognized by `move_operand'. ! 1428: (output_pic_sequence*): Turned off. ! 1429: (sparc_address_cost): Simplified, since the value returned is not ! 1430: used if the address is not legitimate. ! 1431: (emit_move_sequence): Use `gen_lowpart' instead of building ! 1432: SUBREGs explicitly. ! 1433: (make_f30_contain_zero): Deleted. ! 1434: (output_tail_call): Turned off. ! 1435: * tm-sparc.h (PRINT_OPERAND): Recognize 'R' code letter, which ! 1436: means print the name of REGNO (X)+1. No longer recognizes the 'G' ! 1437: letter. ! 1438: (PRINT_OPERAND,PRINT_OPERAND_ADDRESS): Replace various calls to ! 1439: fprintf with calls to fputs or fputc. ! 1440: (FINAL_PRESCAN_INSN): No longer defined. ! 1441: ! 1442: Sat Dec 15 14:37:51 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1443: ! 1444: * recog.c (offsettable_address_p): Check validity in narrower modes. ! 1445: ! 1446: Sat Dec 15 11:21:55 1990 Tom Wood (wood at dg-rtp.dg.com) ! 1447: ! 1448: * syms.h sdbout.c (T_VOID): Ensure that T_VOID is provided a ! 1449: default meaning if <syms.h> is used. ! 1450: ! 1451: Fri Dec 14 14:39:10 1990 Tom Wood (wood at dg-rtp.dg.com) ! 1452: ! 1453: * m88k.md (increment and test peephole): Updated so it would apply ! 1454: with the new method for doing cmpsi/bxx. ! 1455: * m88k.md (function units): Replace decode with alu and update ! 1456: accordingly. ! 1457: * out-m88k.c (emit_test): Add a mode parameter. ! 1458: * tm-m88k.h (GO_IF_LEGITIMATE_ADDRESS): Constrain how the arg ! 1459: pointer can be used. ! 1460: ! 1461: Fri Dec 14 06:48:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1462: ! 1463: * expr.c (convert_move): Add missing argument to some recursive calls. ! 1464: ! 1465: * jump.c (invert_jump): Pass new label to recursive call. ! 1466: ! 1467: * expr.h (setcc_gen_code): Replaces setcc_gen_fctn; stores insn_code. ! 1468: (expand_and, emit_store_flag, label_rtx): Add definitions. ! 1469: (get_condition, compare_from_rtx): Likewise. ! 1470: * rtl.h (STORE_FLAG_VALUE): Provide a default value of 1. ! 1471: (reg_set_last): Add definition. ! 1472: (const_true_rtx): New variable. ! 1473: * cse.c: Remove defaulting of STORE_FLAG_VALUE from here. ! 1474: (const_true_rtx): Remove static version; now global. ! 1475: * emit-rtl.c (const_true_rtx): Define here. ! 1476: (gen_rtx): Return const_true_rtx for CONST_INT of STORE_FLAG_VALUE. ! 1477: (init_emit_once): Initialize const_true_rtx. ! 1478: * expmed.c (emit_store_flag): Rewritten. Is passed the operands ! 1479: to compare in addition to the compare operation and emits both the ! 1480: comparison and the store-flag insn. ! 1481: Handles special-case of testing for A < 0 and A >= 0. ! 1482: If result is constant, just return it. ! 1483: Accepts an argument saying how to normalize the result and does ! 1484: appropriate normalization. ! 1485: Give preference to using the sign bit rather than the low-order bit. ! 1486: Allow sxx insns to fail. ! 1487: If don't have seq or sne insns, can sometimes do with abs. ! 1488: * expr.c (expand_expr, case COND_EXPR): For X ? A + 1 : A, only ! 1489: do store_flag if it is cheap. ! 1490: (do_jump): True comparisons return STORE_FLAG_VALUE, not 1. ! 1491: (compare_constants): Correctly handle unsigned comparisons. ! 1492: Return STORE_FLAG_VALUE, not 1, for true comparison. ! 1493: (compare_from_rtx): New name for compare1. ! 1494: Accept size and alignment, for BLKmode. ! 1495: No longer statuc. ! 1496: (compare, compare_from_rtx): No need to pass forward and reverse codes; ! 1497: can trivially derive the reverse code from the forward one. ! 1498: All callers changed. ! 1499: If one operand is constant, make it the second one. ! 1500: (compare): Let compare1 do most of the work. ! 1501: (do_store_flag): Rewritten, now lets emit_store_flag do most of ! 1502: the work. ! 1503: Handles the special-case of comparing a single bit with zero., ! 1504: Add additional argument ONLY_CHEAP; if non-zero, fail if it looks like ! 1505: this will be an expensive operation; all callers changed. ! 1506: If it looks like it will be possible to do a store-flag operation, ! 1507: call emit_store_flag; if it can't do it, emit as assignments and a ! 1508: jump. If it doesn't look possible to do a store-flag operation, return ! 1509: zero before expanding anything. ! 1510: * final.c: (final_scan_insn): Don't check STORE_FLAG_VALUE; if the ! 1511: insn doesn't exist, we won't try to change it. ! 1512: * genemit.c (gen_exp): Use const_true_rtx when appropriate. ! 1513: * genrecog.c (add_to_sequence): Likewise. ! 1514: (try_merge_1): Two nodes aren't identical if they are to test ! 1515: different modes or if they have different values of EXACT. ! 1516: * integrate.c: Don't supply a default value for STORE_FLAG_VALUE here. ! 1517: * jump.c: Now includes expr.h (for emit_store_flag and get_condition). ! 1518: (jump_optimize): Split optimization that made store-flag insn ! 1519: into three separate optimizations, the first two of which are useful ! 1520: even in the absence of store-flag operations. ! 1521: (can_reverse_comparison): Set and use of cc0 must be immediately ! 1522: adjacent. ! 1523: (mark_jump_label): Abort if LABEL_REF codesn't contain a CODE_LABEL. ! 1524: Consider two labels adjacent after reload if separated by just USE or ! 1525: CLOBBER insns. ! 1526: * loop.c: Now includes real.h. ! 1527: (get_condition_for_loop): New function. All callers of get_condition ! 1528: in this file now call this function. ! 1529: (strength_reduce): no_labels_between_p now skips FROM. ! 1530: (get_condition): No longer static. ! 1531: Refine cases when we can't reverse a comparison operation. ! 1532: * optabs.c (init_optabs): Initialize and define setcc_gen_code ! 1533: instead of setcc_gen_fctn. ! 1534: * rtlanal.c (no_labels_between_p): Skip FROM, like as ..._between_... ! 1535: functions do. ! 1536: (no_labels_between): Deleted. ! 1537: (reg_set_last, reg_set_last_1): New functions. ! 1538: * Makefile.in (jump.o): Now include expr.h. ! 1539: (loop.o): Now includes real.h. ! 1540: ! 1541: * c-tree.h (int_ftype_cptr_cptr_sizet, ptr_ftype_ptr_cptr_sizet): ! 1542: New names. ! 1543: ! 1544: * alliant.md, i386.md, m68k.md, m88k.md, ns32k.md, sparc.md: Add mode ! 1545: to comparison operators (EQ, NE, etc.) to agree with the mode of the ! 1546: destination. ! 1547: * out-m88k.c (emit_test): Likewise. ! 1548: ! 1549: Fri Dec 14 00:12:46 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1550: ! 1551: * c-decl.c (finish_struct): Strip NON_LVALUE_EXPR from field width. ! 1552: ! 1553: Thu Dec 13 13:10:47 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1554: ! 1555: * cplus-init.c (expand_vec_init): Add missing arg to ! 1556: expand_exit_loop_if_false. ! 1557: ! 1558: * config.gcc (tron): Alias for gmicro. ! 1559: ! 1560: * c-decl.c (int_ftype_cptr_cptr_sizet): Variable renamed. ! 1561: (ptr_ftype_ptr_cptr_sizet): Likewise. ! 1562: ! 1563: * gcc.c (default_compilers): Handle .C. ! 1564: ! 1565: * Makefile.in (enquire.o): Add -I. so can find stddef.h. ! 1566: (install-cross): Install cc1obj like the others. ! 1567: ! 1568: * Makefile.in (gnulib.target): Renamed from gnulib. ! 1569: (gnulib): Renamed from tmpgnulib. Rename that file in this rule. ! 1570: Also delete stamp-gnulib2 here. ! 1571: (gnulib.portable, gnulib.convert): Input now is named gnulib. ! 1572: (GNULIB_TARGET, GNULIB2_TARGET): Define these vars (already in use). ! 1573: (gnulib2.target): Renamed from gnulib2. ! 1574: (gnulib2): New rule, alias for gnulib2.target. ! 1575: ! 1576: * local-alloc.c (local_alloc): Cast an enum used as index. ! 1577: * optabs.c (emit_indirect_jump): Likewise. ! 1578: * reload1.c (choose_reload_regs): Likewise. ! 1579: ! 1580: Thu Dec 13 12:38:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1581: ! 1582: * expmed.c (store_bit_field): Verify that operand 1 of movstrict ! 1583: satisfies its predicate. ! 1584: ! 1585: Wed Dec 12 17:26:21 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1586: ! 1587: * gvarargs.h: Avoid duplicate inclusion using _VARARGS_H. ! 1588: ! 1589: Wed Dec 12 14:11:30 1990 Tom Wood (wood at dg-rtp.dg.com) ! 1590: ! 1591: * tm-m88k.h, out-m88k.c, m88k.md: Eliminated the fixed condition ! 1592: code register. As a temporary measure, NOTICE_UPDATE_CC is used ! 1593: to track swapped cmpsi cases. ! 1594: ! 1595: * m88k.md (shift patterns): Deal with TARGET_*_LARGE_SHIFT ! 1596: uniformly with define_expand. Make gen_lshlsi3 generate ASHIFT ! 1597: and eliminate the optimization patterns using ASHIFT. Eliminate ! 1598: other optimization patterns that will be handled by combine. ! 1599: ! 1600: Tue Dec 11 22:13:48 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1601: ! 1602: * expr.c (convert_move): With slt, handle dest that's invalid. ! 1603: ! 1604: * stmt.c, tree.h (stmt_nesting): ! 1605: Typedef deleted; use `struct nesting *'. ! 1606: * stmt.c (expand_start_cond): If exitable, make an exit label. ! 1607: ! 1608: Tue Dec 11 21:28:56 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1609: ! 1610: * combine.c (subst, case SUBREG): Update TO for earlier ! 1611: changes so we can always detect (subreg (mem ...)). ! 1612: ! 1613: Tue Dec 11 10:56:53 1990 Craig Burley (burley at pogo.ai.mit.edu) ! 1614: ! 1615: * stmt.c (expand_start_loop{,_continue_elsewhere}): Return pointer ! 1616: to nesting structure (new type stmt_nesting). ! 1617: (expand_exit_loop{,_if_false},expand_continue_loop): Accept pointer ! 1618: to nesting structure, substitute loop_stack if 0 (same behavior as ! 1619: before when there was no argument), so F90 CYCLE and EXIT statements ! 1620: (like C's continue and break stmts) can refer to other than the ! 1621: innermost loop. ! 1622: (expand_start_cond): Uses new names for if-related labels that ! 1623: reflect addition of "elseif" call, and sets endif_label to whatever ! 1624: exit_label gets set to (so we don't generate two identical labels ! 1625: for languages from which if is exitable via expand_exit_something). ! 1626: (expand_start_elseif): New function, used by Fortran. ! 1627: (expand_start_else): Moved above _end_cond so these four functions ! 1628: appear in the order they get called; uses new names, and fills in ! 1629: only endif_label if needed, not exit_label. ! 1630: (expand_end_cond): Handles end of any if, not just if-without-else. ! 1631: Generates both labels for next else/elseif pending (there was none) ! 1632: and the endif itself, if they exist (and there will always be at least ! 1633: one). ! 1634: (expand_end_else): Gone, call expand_end_cond instead. ! 1635: * c-parse.y, cplus-parse.y, objc-parse.y: Pass new 0 argument to ! 1636: expand_..._loop_... to indicate the innermost loop; call ! 1637: expand_end_cond instead of expand_end_else. ! 1638: * tree.h: Typedef for stmt_nesting returned by expand_start_loop... ! 1639: and change their return types accordingly. ! 1640: ! 1641: Mon Dec 10 06:59:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1642: ! 1643: * combine.c (check_asm_operands): Delete from here. ! 1644: * recog.c (check_asm_operands): Move to here; no longer static. ! 1645: (validate_change): Don't assume change is valid is asm_noperands >= 0. ! 1646: If recog_memoized returns < 0, accept change if asm_noperands >= 0 ! 1647: and check_asm_operands returns non-zero. ! 1648: (apply_change_group): Likewise. ! 1649: (validate_replace_rtx_1): Swap operands on commutative operation ! 1650: if first is constant. ! 1651: Use plus_constant to simplify a PLUS with CONST_INT as second operand. ! 1652: ! 1653: * reload.c (find_equiv_reg): We must have a stable SP if GOAL is ! 1654: a MEM that uses SP. ! 1655: ! 1656: * combine.c (try_combine): Don't do anything if I2 or I1 ! 1657: has an ASM_OPERANDS and CLOBBERS; we'll need those clobbers ! 1658: and it is too messy to try to get things set up correctly. ! 1659: ! 1660: Sun Dec 9 22:07:41 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1661: ! 1662: * cccp.c (collect_expansion): Don't check for /* */ concat here. ! 1663: (macroexpand): Always use raw arg if traditional. ! 1664: ! 1665: * c-parse.y (unary): Mark address of label as constant. ! 1666: ! 1667: Sun Dec 9 14:45:34 1990 Michael Tiemann (tiemann at cygnus.com) ! 1668: ! 1669: * cplus-class.c (propagate_basetype_offsets): Take effect on ASSOC ! 1670: before recursive calling. ! 1671: (finish_struct): Call `layout_decl' with zero for KNOWN_ALIGN ! 1672: when laying out TYPE_DECL. ! 1673: * cplus-tree.c (assoc_value): Change recursion condition to compare ! 1674: ASSOC_VALUE (assoc) against TYPE_MAIN_VARIANT (type) instead of just ! 1675: against type. ! 1676: ! 1677: Sat Dec 8 10:40:00 1990 Tom Wood (wood at dg-rtp.dg.com) ! 1678: ! 1679: * m88k.md (attributes): Reorganize and include a block diagram. ! 1680: Make better use of defaults. ! 1681: * m88k.md (peephole), out-m88k.c, tm-m88k.h (short_branch): Add ! 1682: the sparc peepholes for changing bsr/br into bsr.n/addu or ! 1683: bsr.n/subu. Install the length attribute for this. Requires the ! 1684: use of `def' to accomodate broken assemblers in the bsr.n/addu ! 1685: case. ! 1686: ! 1687: Fri Dec 7 06:12:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1688: ! 1689: * reorg.c (find_end_label): Increment usage count of label we return ! 1690: so we know it won't go away. ! 1691: (dbr_schedule): Decrement count of end label and delete it if dead. ! 1692: ! 1693: Wed Dec 5 17:36:23 1990 Tom Wood (wood at dg-rtp.dg.com) ! 1694: ! 1695: * m88k.md: Add instruction attributes for scheduling and delay ! 1696: slot information. ! 1697: * m88k.md (addsi pattern): Adding large constants does arise. ! 1698: (udivsi pattern): Wrong predicate. ! 1699: * tm-m88k.h, out-m88k.c (NOTICE_UPDATE_CC): Do so using ! 1700: attributes. ! 1701: ! 1702: * make-m88k, make-m88kdgux: Say how to create m88k-trace.asm. ! 1703: ! 1704: Wed Dec 5 13:52:16 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1705: ! 1706: * optabs.c (expand_binop): Support insn_before == 0. ! 1707: ! 1708: * function.c (optimize_bit_field): Fix wrong arg to validate_change. ! 1709: ! 1710: * Makefile (includes): Export LIB. ! 1711: ! 1712: Wed Dec 5 13:31:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1713: ! 1714: * combine.c (try_combine): Don't discard CLOBBERs from an insn ! 1715: with ASM_OPERANDS. ! 1716: ! 1717: Tue Dec 4 16:12:21 1990 Tom Wood (wood at dg-rtp.dg.com) ! 1718: ! 1719: * tm-m88k.h, out-m88k.c, m88k.md: More cleanups: introduce ! 1720: POWER_OF_2 for tests (x && (x & (x-1) == 0); rename predicate ! 1721: functions *_p instead of *_operand; cleanup addsi3 insns; simplify ! 1722: udivsi3 insns; simplify memory shift insns; make LOW_SUM and HIGH ! 1723: SImode instead of VOIDmode; add a predicate to the increment and ! 1724: test peephole insn; deal with setting SFmode to zero; delete bogus ! 1725: pattern for divide-by-power-of-2. ! 1726: * make-m88k, make-m88kdgux: dg88k-trace.asm is now m88k-trace.asm. ! 1727: Move movstr-m88k.sh to config/m88k-movstr.sh. ! 1728: ! 1729: Mon Dec 3 19:08:03 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1730: ! 1731: * Makefile.in (gnulib2.ready): New target. ! 1732: (stamp-gnulib2): Depend on that. ! 1733: Avoids recompiling gnulib2 each time cc1 changes. ! 1734: ! 1735: Mon Dec 3 16:17:56 1990 Tom Wood (wood at dg-rtp.dg.com) ! 1736: ! 1737: * tm-m88kdgux.h, xm-m88kdgux.h (SEPARATE_AUX_OUTPUT): Should be in ! 1738: xm-m88kdgux.h. ! 1739: * tm-m88k.h, out-m88k.c, m88k.md: Eliminated the fixed literal ! 1740: synthesis register. Reworked the addressing method to be like the ! 1741: sparc (uses HIGH and LO_SUM). Numerous cleanups. These changes ! 1742: are based on work done by Steve Chamberlain (steve@cygnus). ! 1743: * tm-m88k.h, out-m88k.c (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): ! 1744: Implemented. ! 1745: ! 1746: Mon Dec 3 15:19:04 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1747: ! 1748: * cccp.c (special_symbol): Use time_t as type of t. ! 1749: ! 1750: * m88k-movstr.sh, m88k-trace.asm, va-m88k.h: New files. ! 1751: ! 1752: * gcc.c: Don't define R_OK, etc. if already defined. ! 1753: ! 1754: * out-sparc.c (finalize_pic, emit_move_sequence, output_arc_profiler): ! 1755: Finish change to emit HIGH and LO_SUM as Pmode instead of VOIDmode. ! 1756: ! 1757: Sun Dec 2 22:13:53 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1758: ! 1759: * config.gcc (tower): New alternative. ! 1760: (mips-news): Adapt for version 2. ! 1761: ! 1762: * tm-tower.h, tm-tower-as.h, xm-tower.h: New files. ! 1763: ! 1764: Sun Dec 2 17:47:28 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1765: ! 1766: * reload1.c (eliminate_regs, case ASM_OPERANDS): Fix typo in testing ! 1767: for changed vector. ! 1768: ! 1769: * out-rs6000.c (output_epilogue): Fix typo restoring general registers. ! 1770: (print_operand): Add new option %H. ! 1771: * rs6000.md: Add (clobber (reg:SI 64)) to many patterns even though ! 1772: they don't clobber MQ to allow combining to work well. This will be ! 1773: removed once combine knows how to add clobbers when required. ! 1774: Change patterns to reflect new canonicalization rules. ! 1775: Where we have (and (xshift)), add patterns for (zero_extend (xshift)). ! 1776: (andsi3, xorsi3): Fix bug in case where two insns are needed. ! 1777: (moveti): Don't call change_address when in reload. ! 1778: (sign_extend): Add patterns for sign extend preceeded or followed by ! 1779: one of the shifts it will do. Use %H to output the merged shift. ! 1780: ! 1781: * out-romp.c (print_operand): Allow exact_log2 result to be zero. ! 1782: * romp.md: Likewise. ! 1783: * tm-romp.h (CONST_OK_FOR_LETTER): Likewise. ! 1784: ! 1785: * a29k.md (type attribute): Add types for floating-point insns. ! 1786: (in_delay_slot attribute): Update to allow for new types. ! 1787: (function_unit definitions): Add definitions for floating-point units. ! 1788: (andcb*3): Delete obsolete names. ! 1789: (convert insn): Use register_operand instead of gen_reg_operand for ! 1790: floating-point operand. ! 1791: (cpeq, feq, deq, etc): New patterns. ! 1792: (floating-point arithmetic): Add support for 29050 insns and ! 1793: accumulators; indicate function unit usage. ! 1794: (ior/and patterns): Put NOT as second operand. ! 1795: (orn insn): New, for 29050. ! 1796: (load patterns): If using match_operator, make it the highest operand ! 1797: number. ! 1798: (loadm insns): Add workaround for rev A1 bug on 29050. ! 1799: (negsf2, negdf2): Don't use XOR to negate on 29050. ! 1800: (movsf, movdf): Add support for accumulators on 29050. ! 1801: (movsi, movhi, movqi): No need to support special->special copies. ! 1802: Support consthz insn on 29050. ! 1803: (compare, scc, and branch insns): Rework to not use cc0. Use a pseudo ! 1804: register instead. Compare doesn't generate any code, but merely ! 1805: saves the operands. scc and branch then emit the appropriate compare ! 1806: and jump (if branch) insns. ! 1807: (tstsi): Delete pattern; not used when no cc0. ! 1808: (peepholes): Remove peepholes to convert jumps to scc insns; now ! 1809: done in jump.c. ! 1810: * out-a29k.c (a29k_compare_*): New variables. ! 1811: (long_const_operand): Anything with low-order 16 bits zero is not a ! 1812: long constant on the 29050. ! 1813: (accum_reg_operand): New function. ! 1814: (gen_reg_operand): Returns false for accumulator registers. ! 1815: (output_operand): Allow accumulators. ! 1816: (ne_comparison_p, fp_comparison_p, return_peep_operand): Deleted. ! 1817: (fp_comparison_operator, branch_operator): New functions. ! 1818: (output_compare): Deleted. ! 1819: (print_operand): Change meaning of %b and %B. ! 1820: Add new code %J. ! 1821: * tm-a29k.h (TARGET_VERSION): Say if compiling for 29050. ! 1822: (TARGET_FLAGS): Add -29000 to turn off support for 29050; this is ! 1823: still the default. ! 1824: (various register macros): Add support for the floating-point ! 1825: accumulators on the 29050. ! 1826: (CONST_OK_FOR_LETTER): Use 'O' for a constant that can be set using ! 1827: conthz on the 29050; keep old definition for 29000. ! 1828: (STORE_FLAG_VALUE): Now 0x80000000. ! 1829: (ASM_FILE_START): Write ".cputype 29050" when compiling for 29050. ! 1830: ! 1831: * combine.c (subst): Put NOT, NEG, MULT, PLUS, and MINUS as the ! 1832: first operand of commutative operations. Note that NOT used to be ! 1833: put as the second operand but it has always been assumed that ! 1834: MULT would be the first operand in address expressions, so we have ! 1835: to change the previous canonicalization. This is possible now that we ! 1836: have eliminated the andcbm3 operations. ! 1837: * i860.md (andnot): Remove obsolete andcbsi3 name and place NOT ! 1838: as first operand. ! 1839: * m68k.md (fpm*): Delete patterns with MULT as second operand and ! 1840: use "@" construct when possible. ! 1841: * m88k.md (and.c, ior.c): Remove obsolete andcbsi3 and iorcbsi3 names. ! 1842: Delete patterns with NOT as second operand. ! 1843: (xor.c): Rewrite in new canonical form. ! 1844: * mips.md (nor): Rewrite in new canonical form. ! 1845: * pyr.md (bicw): Remove pattern with NOT as first operand, removing ! 1846: obsolete name andcbsi3 in the process. ! 1847: * sparc.md: Remove patterns with NOT as first operand. ! 1848: Remove obsolete names andcbsi3, iorcb3, and xorcbsi3. ! 1849: Rewrite xnor into new canonicalized form. ! 1850: Add mode to HIGH and LO_SUM operations. ! 1851: * vax.md (bic*): Remove obsolete andcbm3 names. ! 1852: Put NOT as first operand when both generating and recognizing RTL. ! 1853: (jlbc): Rewrite with NOT as first operand. ! 1854: ! 1855: Sun Dec 2 17:08:16 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1856: ! 1857: * m68k.md (recognizer for casesi_2): Handle ASM_RETURN_CASE_JUMP. ! 1858: ! 1859: * stddef.h (ptrdiff_t): Prevent definition, as with size_t. ! 1860: ! 1861: Sat Dec 1 16:31:30 1990 Ron Guilmette (rfg at ncd.com) ! 1862: ! 1863: * dwarfout.c (lookup_filename, dwarfout_finalize): changed from ! 1864: maintaining a linked list of filename entries to maintaining an ! 1865: (expandable) array of filename entries instead. Also, changed ! 1866: code so that *all* filename strings are output (to the .files ! 1867: section of the asm file) in one swell foop just as the asm file is ! 1868: being finalized rather than writing out new filenames one-by-one ! 1869: as they arise (as previously). This circumvents a problem caused ! 1870: by rfg's naive assumption that assemblers kept a stack of prior ! 1871: section names (of depth > 1) which could be successively popped ! 1872: via multiple `previous' directives. For some assemblers, the ! 1873: depth of the stack is only 1 and they can get confused if you do ! 1874: two (or more) `previous' directives in a row. Anyway, it is no ! 1875: longer either necessary or useful to do that, so who cares. ! 1876: ! 1877: * dwarfout.c: added code to output newlines to the asm file just ! 1878: prior to each and every change of section (for better readability ! 1879: of the asm files). ! 1880: ! 1881: * dwarfout.c: changed code so that if DWARF_DESCRIBE_USED_EXTERNS ! 1882: is defined, it forces DWARF_LOCATION_ATTRIBUTES to also be defined. ! 1883: ! 1884: * dwarfout.c: changed code so that if DWARF_LOCATION_ATTRIBUTES ! 1885: is defined, it forces DWARF_DESCRIBE_FILES to be defined (to `1'). ! 1886: ! 1887: * dwarfout.c: changed code so that if DWARF_DESCRIBE_FILES is not ! 1888: already defined (in the user's tm.h file) it will automatically be ! 1889: defined (by default) to `1'. Also changed all instances of ! 1890: `#ifdef DWARF_DESCRIBE_FILES' to `#if DWARF_DESCRIBE_FILES'. ! 1891: The user must now intentionally *disable* this feature (by ! 1892: defining DWARF_DESCRIBE_FILES to `0' in his tm.h file) if he ! 1893: wishes to have the additional information about files suppressed. ! 1894: ! 1895: * dwarfout.c: changed comments relating to optional defines for ! 1896: extended GNU DWARF features to include more information and to ! 1897: add some additional clarity. ! 1898: ! 1899: Sat Dec 1 16:00:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1900: ! 1901: * combine.c (subst): Call reverse_condition instead of ! 1902: reverse_comparison. ! 1903: We are allowed to reverse floating-point EQ and NE comparisons. ! 1904: ! 1905: * combine.c (subst): Call simplify_and_const_int for all AND ! 1906: and ZERO_EXTEND cases and all cases where we make one of them. ! 1907: Remove all other code in AND and ZERO_EXTEND cases. ! 1908: (simplify_and_const_int): Rewritten to follow a consistent model ! 1909: of tracking what AND's need to be done and which bits are not ! 1910: significant. Consistently try a ZERO_EXTEND for all cases where ! 1911: the result is an AND with a mode-wide mask. Move all remaining ! 1912: cases from AND any ZERO_EXTEND cases from subst. ! 1913: ! 1914: Sat Dec 1 09:13:17 1990 Michael Tiemann (tiemann at cygnus.com) ! 1915: ! 1916: * cplus-tree.h (lang_type): Remove any_assigns_this, ! 1917: none_assigns_this from type_flags. ! 1918: * cplus-decl2.c (get_temp_name): If the initializer is a ! 1919: pointer to zero, cache it in EMPTY_TABLE. ! 1920: (finish_builtin_type): New function, to factor common code ! 1921: arising from building internal structures. ! 1922: * cplus-decl.c (init_decl_processing): Call it. ! 1923: ! 1924: Fri Nov 30 10:39:04 1990 Michael Tiemann (tiemann at cygnus.com) ! 1925: ! 1926: * cplus-decl.c (finish_function): Use CLASSTYPE_ASM_WRITTEN instead ! 1927: of TREE_USED to indicate that we need debugging info for ! 1928: TTYPE. ! 1929: Note that nobody ever sets EXTENDED_DBX_DEBUG. For now, ! 1930: change to test DBX_DEBUG. For later, change everything to ! 1931: key off of EXTENDED_DBX_DEBUG. ! 1932: Also, set `warn_return_type' to one always, since this warning ! 1933: is too valuable to lose. ! 1934: * cplus-tree.c (lang_output_debug_info): Don't test TREE_USED. That ! 1935: field is already used by other routines, and we have all we need now ! 1936: in CLASSTYPE_ASM_WRITTEN. ! 1937: * cplus-dbxout.c (dbxout_type_method_1): Handle const, ! 1938: volatile, and const/volatile member functions. ! 1939: ! 1940: Fri Nov 30 04:51:46 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 1941: ! 1942: * combine.c (reg_last_set_value): New variable. ! 1943: (combine_instructions): Allocate and initialize it. ! 1944: (record_dead_and_set_regs): Set reg_last_value to source ! 1945: of assignment; clear it for a CLOBBER or partial assignment. ! 1946: (subst): Use reg_last_set_value instead of interpreting the ! 1947: insn in reg_last_set as if it was a single SET. ! 1948: ! 1949: * combine.c (gen_lowpart_for_combine): Call gen_lowpart for CONST_INT. ! 1950: When making a new MEM, copy MEM_VOLATILE_P and MEM_IN_STRUCT_P. ! 1951: If cannot recognize the argument, just form a SUBREG; usually, ! 1952: it won't be recognized, but sometimes will allow further ! 1953: simplifications. ! 1954: ! 1955: * regclass.c (reg_scan): Save size of uid map; reallocate if ! 1956: we have more registers than we allocated. ! 1957: Leave some extra room in map. ! 1958: ! 1959: * stmt.c (emit_case_nodes): Supply missing argument to emit_cmp_insn. ! 1960: ! 1961: * fold-const.c (decode_field_reference): Add missing arg declaration. ! 1962: ! 1963: * expmed.c (store_bit_field): Add missing last argument to ! 1964: recursive call. ! 1965: ! 1966: * cse.c (cse_insn): Remove extra arg passed to rtx_equal_p. ! 1967: ! 1968: * Makefile.in (proto): Make protoize.1 and unprotoize.1. ! 1969: (protoize.1, unprotoize.1): New targets. ! 1970: (install_man): Install protoize.1 and unprotoize.1./ ! 1971: * proto-unproto.1: New file. ! 1972: ! 1973: * loop.c (scan_loop): Properly set SET_SRC in movables entry for ! 1974: MOVE_INSN == 1 and CONSEC > 0 case. ! 1975: (force_movables): Don't look at SET_SRC when CONSEC > 0. ! 1976: ! 1977: * expr.c (expand_expr, case ARRAY_REF): Ensure TYPE_POINTER_TO ! 1978: gets initialized after we build a variant type. ! 1979: ! 1980: Fri Nov 30 00:35:06 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1981: ! 1982: * m68k.md (ashr of 16 to 24 bits): Use extl, not extw. ! 1983: ! 1984: Thu Nov 29 21:41:03 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 1985: ! 1986: * tm-vax.h (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): New macros. ! 1987: ! 1988: * gcc.c (add_prefix): Add new element, don't replace old first elt. ! 1989: ! 1990: * dwarfout.c (dwarfout_finalize): Go to DEBUG_SECTION first thing. ! 1991: ! 1992: Thu Nov 29 17:50:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu) ! 1993: ! 1994: * stmt.c (expand_end_loop): Stop looking for branch to the loop ! 1995: exit when we hit a NOTE_INSN_BLOCK_{BEG,END}. ! 1996: * jump.c (duplicate_loop_exit_test): Likewise. ! 1997: Also, only copy line-number notes. ! 1998: ! 1999: * integrate.c (expand_inline_function): Call expand_expr for the ! 2000: arguments before allocating maps that are based on register numbers. ! 2001: ! 2002: * loop.c (loop_reg_used_before_p): Accept new argument, SET, to ! 2003: indicate which part of INSN is setting the relevant register. ! 2004: (scan_loop): Pass new arg to loop_reg_used_before_p. ! 2005: ! 2006: * function.c (optimize_bit_field): Don't assume ZERO_EXTRACT can ! 2007: be replaced by MEM; use validate_change to check. ! 2008: ! 2009: * reload.c (find_reloads_toplev): Add missing arg to recursive call. ! 2010: ! 2011: * calls.c (expand_call): Correct two cases of missing mode to gen_rtx. ! 2012: ! 2013: Thu Nov 29 02:42:35 1990 Michael Tiemann (tiemann at cygnus.com) ! 2014: ! 2015: * version.c: Bump version number to 1.90.04. ! 2016: ! 2017: * toplev.c (rest_of_compilation): If FLAG_PIC is nonzero, emit any ! 2018: special PIC code once we start really compiling a function (i.e., we ! 2019: are not in an inline function). Inline functions cannot ! 2020: meaningfully hold PIC code because there is no notion of position ! 2021: independence in code that isn't really being written down. ! 2022: ! 2023: * Makefile.in: Don't build cplus-cadillac.o by default. Build ! 2024: cplus-edsel.o instead. Until Lucid frees their programming ! 2025: environment, their Cadillac will always be an Edsel to GNUsers. ! 2026: ! 2027: * stmt.c (fixup_gotos): Change loop to run in two passes so that ! 2028: cleanups don't experience a race condition. ! 2029: (expand_cleanups): Replace Nov 5 word-around with consistency check. ! 2030: The same cleanups should never be run twice. ! 2031: ! 2032: * cplus-decl.c (lang_{init,finish}): Move these functions... ! 2033: cplus-lex.c: ...to here. Also, make change to lang_init analogous ! 2034: to Nov 27 change for C compiler. ! 2035: ! 2036: * cplus-decl.c (pushdecl): Don't warn about static/extern conflicts ! 2037: if X is a TYPE_DECL. ! 2038: (build_enumerator): Certain CONST_INT nodes cannot be coopted to be ! 2039: the constant for enumerator. Mark them as non-shareable and don't ! 2040: coopt them. ! 2041: ! 2042: * cplus-decl.c (lang_{init,finish}): Declare these to be void ! 2043: functions to match new tree.h. ! 2044: ! 2045: Wed Nov 28 18:48:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2046: ! 2047: * reload1.c (eliminate_regs): Convert (subreg (mem)) to (mem) when ! 2048: not a paradoxical SUBREG. ! 2049: ! 2050: Wed Nov 28 17:15:43 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2051: ! 2052: * emit-rtl.c (gen_label_rtx): Clear LABEL_NAME via gen_rtx. ! 2053: ! 2054: Tue Nov 27 21:54:15 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2055: ! 2056: * varasm.c (assemble_external): Never write a .extern for a static ! 2057: name. ! 2058: ! 2059: * recog.c (validate_replace_rtx_1): Handle making a SUBREG of a MEM ! 2060: by trying a new MEM. ! 2061: ! 2062: Tue Nov 27 11:54:28 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2063: ! 2064: * c-lang.c, objc-action.c: Include input.h. ! 2065: (lang_init): Call check_newline here. ! 2066: * toplev.c (compile_file): Not here. ! 2067: Call lang_init after setting input_filename. ! 2068: ! 2069: * tree.h: Declare numerous functions that the front end must provide. ! 2070: ! 2071: * rtl.h (LABEL_REFS): Use operand 5, same as LABEL_NUSES. ! 2072: ! 2073: * toplev.c (warn_return_type, W_options): Handle -Wreturn-type here. ! 2074: * c-decl.c: Not here. ! 2075: * flags.h: Declare it here, not in c-tree.h. ! 2076: ! 2077: * gcc.c (pexecute): Wait and retry if fork fails. ! 2078: ! 2079: * expr.c (do_jump): Pass all args to get_inner_reference. ! 2080: (expand_assignment): Fix typo in arg to get_inner_reference. ! 2081: ! 2082: * tm-hp9k320.h (STANDARD_STARTFILE_PREFIX): Don't alter if already set. ! 2083: ! 2084: Mon Nov 26 18:28:51 1990 Michael I Bushnell (mib at churchy.ai.mit.edu) ! 2085: ! 2086: * cccp.c (handle_directive): Do backslash-newlines inside of ! 2087: strings. ! 2088: ! 2089: Mon Nov 26 15:39:29 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2090: ! 2091: * cccp.c (main): Handle -w. ! 2092: (warning): Do nothing if -w. ! 2093: * gcc.c (compilers): Pass -w to cpp. ! 2094: ! 2095: * c-decl.c (grokdeclarator): Don't discard arg types ! 2096: for prototype even if traditional. ! 2097: ! 2098: Sun Nov 25 20:52:31 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2099: ! 2100: * protoize.c: Undef CHAR_BIT, etc, before including limits.h. ! 2101: ! 2102: * reload1.c (old_asm_operands_vec, new_asm_operands_vec): ! 2103: Type should point to a vector. ! 2104: (Eliminate_regs): For asm_operands, copy the vector properly. ! 2105: ! 2106: Sun Nov 25 20:35:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu) ! 2107: ! 2108: * jump.c (jump_optimize): Fix typo in stack push combining code. ! 2109: ! 2110: * reload1.c (eliminate_regs): Ensure we share operands 3 and 4 ! 2111: of ASM_OPERANDS operations if they were originally shared. ! 2112: Copy all rtx flags when making a new MEM. ! 2113: (eliminate_regs_in_insn): Initialize for ASM_OPERANDS sharing check. ! 2114: ! 2115: Sun Nov 25 16:37:10 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2116: ! 2117: * Makefile.in (stamp-gnulib2): Don't depend on gnulib2-indirect. ! 2118: ! 2119: * gcc.c (do_spec_1): Handle %W{...}. ! 2120: (default_compilers): Use %W{...} when passing -o option. ! 2121: ! 2122: Sat Nov 24 16:39:56 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2123: ! 2124: * cplus-lex.c (init_lex, do_pending_inlines, reinit_lang_specific): ! 2125: Add conditionals for __GNU_LIBRARY__. ! 2126: ! 2127: Thu Nov 22 13:48:06 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2128: ! 2129: * fold-const.c (optimize_bit_field_compare): Pass additional ! 2130: arg to get_inner_reference; it gets set if something was volatile. ! 2131: (decode_field_reference): New arg PVOLATILEP; passed to ! 2132: get_inner_reference. ! 2133: (merge_component_references): Add pointer to place to store if ! 2134: something is volatile to calls to decode_field_reference; don't ! 2135: do anything if it gets set (this may be very conservative). ! 2136: ! 2137: * stmt.c (expand_end_loop): Skip initial CODE_LABEL at start of ! 2138: loop when looking for qualified conditional exit. ! 2139: ! 2140: * reload.c (push_reload): If (subreg:M1 (reg:M2 ....)) and we ! 2141: have trouble access the register in M1, reload the reg, not subreg. ! 2142: Fix typo in testing for memory. ! 2143: (reload): Force reload of the operand in the above cases. ! 2144: ! 2145: Wed Nov 21 17:39:42 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2146: ! 2147: * loop.c (strength_reduce, combine_givs): Don't penalize ! 2148: non-replaceable givs unless they are user variables; temporaries ! 2149: are probably dead even though we can't prove it. ! 2150: ! 2151: * integrate.c (save_constants): Don't get confused by looking ! 2152: inside CONST_DOUBLE_MEM. ! 2153: Call recursively on what get_pool_constant returned, in case it ! 2154: was itself the address of a pool constant. ! 2155: (copy_for_inline, copy_rtx_and_substitute, restore_constants): ! 2156: Remake CONST_DOUBLE so it gets chained in correctly and we don't use ! 2157: obsolete CONST_DOUBLE_MEM values. Call recusively on operand we are ! 2158: about to pass to force_const_mem; it might have been a case of a ! 2159: constant value being an address of another constant. ! 2160: ! 2161: * loop.c (find_mem_givs): Don't make a DEST_ADDR giv with mult_val == 1 ! 2162: and add_val == 0. ! 2163: (maybe_eliminate_biv_1): Turn off elimination in (compare biv1 biv2) ! 2164: cases; they have problems. ! 2165: ! 2166: Wed Nov 21 16:06:14 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2167: ! 2168: * dwarfout.c (location_attribute): Offset for bitfields is special. ! 2169: ! 2170: * expr.c (get_inner_reference): New arg pvolatilep. ! 2171: (expand_expr, expand_assignment): Use to set MEM_VOLATILE_P. ! 2172: ! 2173: Wed Nov 21 10:34:25 1990 Tom Wood (wood at dg-rtp.dg.com) ! 2174: ! 2175: * stor-layout.c (layout_decl): Record whether a FIELD_DECL is a ! 2176: bit-field and if so its original type. ! 2177: * tree.h (DECL_BIT_FIELD_TYPE): New. ! 2178: * dbxout.c (dbxout_type): Use DECL_BIT_FIELD_TYPE. ! 2179: * dwarfout.c (output_member_die, bit_offset_attribute, ! 2180: bit_size_attribute, member_declared_type): Use DECL_BIT_FIELD_TYPE. ! 2181: * sdbout.c (sdbout_one_type): Use DECL_BIT_FIELD_TYPE. ! 2182: ! 2183: * sdbout.c (DEBUGGER_ARG_OFFSET, DEBUGGER_AUTO_OFFSET): New ! 2184: interfaces to compute the location of arguments and automatic ! 2185: variables. ! 2186: * dbxout.c (DEBUGGER_ARG_OFFSET, DEBUGGER_AUTO_OFFSET): Likewise. ! 2187: ! 2188: * dbxout.c (dbxout_parms): Describe a parameter passed in ! 2189: registers but living on the stack as N_PSYM rather than N_LSYM. ! 2190: These are typically arg_pointer based locations. ! 2191: ! 2192: * out-m88k.c (m88k_debugger_offset): New function. ! 2193: * tm-m88k.h (DEBUGGER_ARG_OFFSET, DEBUGGER_AUTO_OFFSET): Replaces ! 2194: SDB_AUTO_NORMALIZE_OFFSET. ! 2195: * tm-m88k.h (STACK_BOUNDARY): Update to 16 byte aligned stacks. ! 2196: ! 2197: Tue Nov 20 23:48:57 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2198: ! 2199: * dwarfout.c (dwarfout_init): Set stack depth to 1 at start. ! 2200: (output_padded_null_die): New function. ! 2201: (dwarfout_finalize): Use that to ensure length divisible by 4. ! 2202: ! 2203: * ns32k.md (addsi3): Don't use `addr' for very large displacements. ! 2204: ! 2205: Tue Nov 20 05:48:42 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2206: ! 2207: * jump.c (can_reverse_comparison_p): It is safe to reverse an EQ ! 2208: or NE comparison, even if IEEE floating-point. ! 2209: ! 2210: * integrate.h (struct inline_remap): const_*_map now maps registers ! 2211: in calling function, not called function. ! 2212: Add fields to save values recorded from SETs. ! 2213: * integrate.c: Now includes insn-config.h and real.h. ! 2214: (expand_inline_function): New meaning for const_*_map. ! 2215: Don't fill in constant equivalences here; now done in try_constants. ! 2216: Show CALL_INSNs potentialy clobber all hard registers since we ! 2217: now record equivalences for hard registers. ! 2218: (try_constants): No longer need original RTL; all callers changed. ! 2219: Call note_stores to kill any known equivalences for registers changed. ! 2220: Record equivalences for PC, CC0, and registers set by this insn. ! 2221: (subst_constants): No longer need original RTL; all callers changed. ! 2222: Reflect new meaning of const_*_map. ! 2223: Perform more extensive constant folding, basically a subset of ! 2224: fold_rtx in cse.c; specifically, fold the result of comparison ! 2225: operations and IF_THEN_ELSE operations. ! 2226: Record the constant equivalences of SETs, if any. ! 2227: (try_fold_condition, const_equiv, fold_out_const_cc0): Deleted. ! 2228: * Makefile.in (integrate.o): Now includes insn-config.h and real.h. ! 2229: ! 2230: Sat Nov 17 07:48:45 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2231: ! 2232: * local-alloc.c (local_alloc): Don't allocate a reg that wants a ! 2233: class that has only one register; let global-alloc do it so that it ! 2234: can be given a GENERAL_REG if reload needs a spill reg of that class. ! 2235: ! 2236: * regclass.c (regclass, reg_class_record): Count savings in loops as ! 2237: being greater the same way we adjust reg_n_refs for loops in flow.c. ! 2238: ! 2239: * expmed.c (store_bit_field, extract_bit_field): Remove change of ! 2240: Oct 16; it causes problems with long long bit fields. ! 2241: ! 2242: * rtlanal.c (reg_overlap_mentioned_p): If called with a constant, ! 2243: return zero. If called with a MEM, return 1 iff the second arg ! 2244: contains a MEM. ! 2245: * reload.c (push_reload): Call reg_overlap_mentioned_p only if OUT ! 2246: is a MEM and then pass it the address of OUT. ! 2247: ! 2248: * cse.c (cse_insn): Refine when SRC_EQV, SRC, and DEST are added ! 2249: to the hash table. SRC_EQV is not added to the hash table if it ! 2250: is volatile or equal to DEST and similarly for SRC. DEST is not ! 2251: added to the hash table unless either SRC_EQV or SRC is. ! 2252: ! 2253: Thu Nov 15 23:43:20 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2254: ! 2255: * c-typeck.c (convert_for_assignment): Change warning message. ! 2256: ! 2257: Thu Nov 15 18:44:49 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2258: ! 2259: * stmt.c (expand_end_loop): Generalize code to look for more ! 2260: than one branch to the exit and include unconditional branches ! 2261: to the exit; move the whole range to the end of the loop. ! 2262: * jump.c (duplicate_loop_exit_test): New function. ! 2263: (jump_optimize): Call it. ! 2264: Don't allocate jump_chain until we have finished deleting dead code. ! 2265: Leave some more room in jump_chain. ! 2266: (simplejump_p): Reject if not JUMP_INSN. ! 2267: (delete_insn): If simplejump_p, remove from jump chain. ! 2268: * loop.c (loop_skip_over): Deleted. ! 2269: (scan_loop): No longer call it. ! 2270: * cse.c (predecide_loop_entry): Deleted. ! 2271: (cse_basic_block): No longer call it. ! 2272: ! 2273: Thu Nov 15 18:00:20 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2274: ! 2275: * math-68881.h (HUGE_VAL): Add extra braces for Sun. ! 2276: ! 2277: * stor-layout.c (layout_type): Don't let array have less ! 2278: alignment than its mode calls for. ! 2279: ! 2280: Thu Nov 15 13:05:30 1990 Tom Wood (wood at dg-rtp.dg.com) ! 2281: ! 2282: * sdbout.c (sdbout_parms, sdbout_reg_parms): Reimplemented based ! 2283: on dbxout_parms and dbxout_reg_parms. ! 2284: ! 2285: Wed Nov 14 08:48:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2286: ! 2287: * emit-rtl.c (emit_...): All of these now return the last insn ! 2288: emitted; previously some of them returned void. ! 2289: (emit_barrier_before): New function, similar to others. ! 2290: * rtl.h: All emit_... functions now return an rtx; reorder so ! 2291: declarations are in the same order as definitions in emit-rtl.c. ! 2292: ! 2293: * reorg.c (steal_delay_list_from_{target,fallthrough}): Add missing ! 2294: test when checking candidate insn for resource conflicts. ! 2295: ! 2296: Wed Nov 14 07:08:19 1990 Tom Wood (wood at dg-rtp.dg.com) ! 2297: ! 2298: * c-parse.y (pushlevel, compstmt): Place a line note at the first ! 2299: token beginning a block and at the close brace ending a block. ! 2300: These are the conventional locations for SDB and DWARF debugging ! 2301: information. ! 2302: ! 2303: Tue Nov 13 18:16:47 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2304: ! 2305: * function.c (assign_stack_local): If alignment not specified ! 2306: and not BLKmode, use at least word alignment. ! 2307: (assign_outer_stack_local): Likewise. ! 2308: ! 2309: * sparc.md: Turn off patterns that specify no_ov or CC_NO_OVERFLOW. ! 2310: ! 2311: * dwarfout.c (file_attribute): Fix arg to ASM_OUTPUT_DWARF_ATTRIBUTE. ! 2312: (AT_line, AT_file): New definitions. ! 2313: ! 2314: * out-i860.c (output_block_move): Move .Lm%3 down one insn. ! 2315: ! 2316: * c-decl.c (grokdeclarator): -funsigned-bit-field doesn't affect enums. ! 2317: ! 2318: Tue Nov 13 09:28:27 1990 Tom Wood (wood at dg-rtp.dg.com) ! 2319: ! 2320: * gcc.c (default_compilers): Report an error if -C is used without ! 2321: -E. Pass -H to cpp. ! 2322: ! 2323: * sdbout.c (plain_type, plain_type1): save and output the ! 2324: rightmost array dimensions. ! 2325: ! 2326: * syms.h (enum sdb_type): Add T_VOID, equal in value to T_ARG. ! 2327: * sdbout.c (plain_type_1): Use T_VOID for VOID_TYPE and define it ! 2328: to be T_INT if not present in <syms.h>. ! 2329: ! 2330: * sdbout.c (sdbout_toplevel_data): Use abort rather than fatal. ! 2331: ! 2332: Mon Nov 12 08:49:33 1990 Michael Tiemann (tiemann at cygnus.com) ! 2333: ! 2334: * expr.c (compare): Fix use of GET_MODE_CLASS so we don't abort if ! 2335: MODE is VOIDmode. ! 2336: * optabs.c (init_optab): Call `xmalloc' instead of `malloc'. ! 2337: ! 2338: * out-sparc.c (hard_regno_mode_ok): Change initialization of array ! 2339: to match behavior of Nov 11 change for complex modes. ! 2340: ! 2341: * jump.c (delete_labelref_insn): Chase all LOG_LINKS of insn to try ! 2342: to delete references to LABEL. This is needed for machines like ! 2343: SPARC which use multiple insns to get the value of LABEL into a ! 2344: register. ! 2345: ! 2346: Mon Nov 12 16:07:27 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2347: ! 2348: * machmode.def (SCmode, ...): Class is MODE_COMPLEX_FLOAT. ! 2349: ! 2350: Sun Nov 11 00:27:34 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2351: ! 2352: * tm-i860.h (HARD_REGNO_MODE_OK): Handle values more than 2 regs long. ! 2353: * tm-m68k.h (HARD_REGNO_MODE_OK): Likewise, for d7/a0 boundary. ! 2354: * tm-spur.h (HARD_REGNO_MODE_OK): Likewise, for 31/32 boundary. ! 2355: * tm-*.h (HARD_REGNO_NREGS): Use GET_MODE_NUNITS to handle ! 2356: complex values in fp registers on machines where one reg holds a DF. ! 2357: ! 2358: * sdbout.c (sdbout_one_type): Do nothing for incomplete type. ! 2359: ! 2360: * c-decl.c (duplicate_decls): Warning only when redefining built-in fn. ! 2361: ! 2362: * c-decl.c (init_decl_processing): Use sizetype, not unsigned long, ! 2363: in prototypes for memcpy and memcmp. ! 2364: ! 2365: * c-parse.y (component_decl): Don't read the semicolon here. ! 2366: ! 2367: * toplev.c (compile_file): Reverse top-level decls before output. ! 2368: ! 2369: Sat Nov 10 22:27:47 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2370: ! 2371: * stor-layout.c (layout_type): Use MODE_COMPLEX_{INT,FLOAT}. ! 2372: ! 2373: Sat Nov 10 20:34:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2374: ! 2375: * reload.c: Provide a default definition of REGISTER_MOVE_COST. ! 2376: ! 2377: Sat Nov 10 01:43:09 1990 Michael Tiemann (tiemann at cygnus.com) ! 2378: ! 2379: * cplus-init.c (emit_base_init): Don't use CLASSTYPE_ASSOC as a list ! 2380: of only immediate basetypes anymore. Use `get_base_distance' to ! 2381: check whether a type is an immediate basetype or not. ! 2382: ! 2383: * stmt.c (expand_return): Don't emit a USE if VAL is a ! 2384: pseudo-register. ! 2385: ! 2386: * integrate.c (function_cannot_inline_p): Call to strcmp for ! 2387: "__builtin_va_alist" must use IDENTIFIER_POINTER not ! 2388: DECL_NAME. ! 2389: ! 2390: * genattrtab.c (check_attr_test): Use XSTR macro instead of ! 2391: XEXP macro in places where strings are used. ! 2392: ! 2393: * tree.c (type_hash_lookup): Have to check TYPE_DOMAIN for non-zero ! 2394: before comparing the equality of the possible lists. ! 2395: ! 2396: * cplus-typeck.c (build_c_cast): Check TREE_TYPE before checking ! 2397: that the TREE_TYPE is an OFFSET_TYPE. ! 2398: ! 2399: * cplus-typeck.c (c_expand_return): Use DECL_RESULT of ! 2400: current_function_decl instead of `result' since `result' might be ! 2401: set to zero. ! 2402: ! 2403: * cplus-decl.c (xref_tag): Fixed typo in setting ! 2404: TYPE_USES_COMPLEX_INHERITANCE. ! 2405: ! 2406: * cplus-tree.c (assoc_value): Changed interface to take COPYING ! 2407: parameter. ! 2408: * cplus-{class,init,search,tree}.c All callers changed. ! 2409: ! 2410: * cplus-typeck.c (build_c_cast): Resolve OFFSET_REFs if the type we ! 2411: are converting to is not an OFFSET_TYPE. ! 2412: ! 2413: Thu Nov 8 15:26:27 1990 Craig Burley (burley at pogo.ai.mit.edu) ! 2414: ! 2415: * tm-*.h: Try to change HARD_REGNO_NREGS, HARD_REGNO_OK, and other ! 2416: macro defs to handle new complex type stuff. Mostly guesswork; needs ! 2417: checking by people who really know each machine. ! 2418: * machmode.def (SCmode, DCmode, XCmode, TCmode): New complex modes. ! 2419: * machmode.h (GET_MODE_ALIGNMENT): New macro from stor-layout.c. ! 2420: * tree.c (build_complex_type): New function. ! 2421: * stor-layout.c (layout_type): Handle COMPLEX_TYPE. ! 2422: * expr.c (compare1, compare, move_block_to_reg, emit_push_insn): ! 2423: Change uses of GET_MODE_CLASS. ! 2424: * optabs.c (expand_binop, expand_twoval_binop, expand_unop): ! 2425: (emit_cmp_insn): Likewise. ! 2426: ! 2427: Thu Nov 8 06:19:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2428: ! 2429: * local-alloc.c (no_conflict_p): Initialize *WHERE_DEAD; previously ! 2430: uninitialized. ! 2431: ! 2432: Thu Nov 8 01:08:45 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2433: ! 2434: * c-parse.y (yylex): Size of wide STRING_CST counted terminator wrong. ! 2435: ! 2436: Wed Nov 7 14:55:38 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2437: ! 2438: * gnulib2.c (L_trampoline): Put it inside a dummy function. ! 2439: ! 2440: * enquire.c: Renamed from hard-params.c; new vers from [email protected]. ! 2441: Modified to undef CHAR_BIT, etc. if defined in stdio.h. ! 2442: * Makefile.in (enquire): Targets renamed. ! 2443: (enquire.o): Define NO_MEM. ! 2444: ! 2445: Wed Nov 7 14:18:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2446: ! 2447: * jump.c (invert_jump): If it is going to fail (i.e., redirect_jump ! 2448: fails), don't invert the jump. ! 2449: ! 2450: * expr.c (expand_expr, case COND_EXPR): Don't accept a hard register ! 2451: as a target if we are going to store into it before testing the ! 2452: condition because that evaluation may involve a subroutine call ! 2453: which might clobber it. ! 2454: ! 2455: * jump.c (delete_jump): reg_set_p should be called with PATTERN (insn). ! 2456: (thread_jumps): Add omitted last argument to rtx_equal_for_thread_p. ! 2457: ! 2458: * reload.c (find_reloads): Only skip insns which set one hard register ! 2459: to another if the cost of doing so is low; if not, there may not be ! 2460: a single insn to do the copy and we may need a reload register. ! 2461: ! 2462: Wed Nov 7 00:01:18 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2463: ! 2464: * c-parse.y (component_decl_list): Allow missing semi at end. ! 2465: ! 2466: * loop.c (move_movables): When moving and deleting library call, ! 2467: don't be confused if an insn is deleted. ! 2468: ! 2469: Tue Nov 6 20:49:57 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2470: ! 2471: * tm-m68k.h (TRANSFER_TO_TRAMPOLINE): Fix asm syntax. ! 2472: ! 2473: * xm-iris.h (alloca): Delete redundant definition. ! 2474: * tm-iris.h (CPP_SPEC): Define variant symbols starting with _. ! 2475: Define __EXTENSIONS__. ! 2476: ! 2477: * config.gcc (editing .gdbinit): Search current dir, not just srcdir. ! 2478: ! 2479: Tue Nov 6 22:24:09 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2480: ! 2481: * expr.c (expand_expr, case COND_EXPR): Generate efficient code for ! 2482: A ? A : FOO and similar. ! 2483: ! 2484: * combine.c (subst): If we have, e.g., (lt CONST FOO), convert it ! 2485: to (gt FOO CONST). ! 2486: ! 2487: * recog.c (comparison_operand): Use comparison_code_p. ! 2488: ! 2489: * genconfig.c (walk_insn_part): Add operand to indicate if PART is ! 2490: going to be used to recognize an insn (as opposed to emitting rtl). ! 2491: If not, ignore CC0. ! 2492: (gen_insn, gen_expand, gen_split, gen_peephole): Add new operand to ! 2493: walk_insn_part calls. ! 2494: ! 2495: * cse.c (find_comparison_args): Correctly compute rtx_code of ! 2496: comparison; if we find another comparison code inside, use it. ! 2497: * loop.c (get_condition): Likewise. ! 2498: ! 2499: * expr.c (expand_builtin): For ffs, don't pass VOIDmode to expand_unop. ! 2500: ! 2501: Mon Nov 5 12:55:00 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2502: ! 2503: * final.c (output_addr_const): Don't print parens for CONST. ! 2504: ! 2505: * reload1.c (choose_reload_regs): Handle case where find_equiv_reg ! 2506: returns a SUBREG. Also, use variable `regno' uniformly throughout ! 2507: code that finds equivalent register. ! 2508: ! 2509: * gnulib2.c (__floatdisf, __fixunssfsi): New functions. ! 2510: (__fixsfdi, __fixunssfdi): New functions. ! 2511: * gnulib.c (__floatsisf, __fixsfsi): New functions. ! 2512: ! 2513: Mon Nov 5 06:37:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2514: ! 2515: * fold-const.c (fold, case EQ_EXPR and NE_EXPR): Convert, e.g., ! 2516: (A & 2) == 2 to (A & 2) != 0. This eliminates the need for these ! 2517: patterns in MD files. ! 2518: Detect more general cases of comparing something with itself. ! 2519: ! 2520: Mon Nov 5 00:09:55 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2521: ! 2522: * stmt.c (expand_cleanups): Don't run any cleanup twice. ! 2523: ! 2524: Sun Nov 4 23:49:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2525: ! 2526: * expr.c (convert_move): Use emit_no_conflict_block when converting ! 2527: SImode to DImode. ! 2528: If have slt insn, emit a compare insn; we must not have a use of ! 2529: cc0 without a set; normally, the compare will be deleted as ! 2530: redundant in final.c. ! 2531: Use shift rather than clear/test/negate for high-order word when ! 2532: doing sign extension. ! 2533: ! 2534: * optabs.c (emit_no_conflict_block): Don't put REG_NO_CONFLICT ! 2535: notes on the trailing copy insn; nobody looks there. ! 2536: ! 2537: * combine.c (try_combine): Don't combine a reg-reg copy if the ! 2538: destination is used in a REG_NO_CONFLICT note. ! 2539: ! 2540: * reload.c (find_equiv_reg): Use true_regnum to support SUBREGs ! 2541: as well as REGs. ! 2542: ! 2543: Sun Nov 4 12:55:03 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2544: ! 2545: * i386.md (extend*): Take out last change. ! 2546: Unix assembler rejects movsx... ! 2547: ! 2548: * expr.c (expand_expr): Special case for ignored volatile ! 2549: failed to return. ! 2550: ! 2551: Sat Nov 3 14:42:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2552: ! 2553: * expr.c (do_jump, case PLUS_EXPR): Turn off this case; it was a ! 2554: pessimization. ! 2555: ! 2556: Fri Nov 2 01:51:31 1990 Michael Tiemann (tiemann at cygnus.com) ! 2557: ! 2558: * stmt.c (expand_return): Don't emit a USE if VAL is a ! 2559: pseudo-register. ! 2560: ! 2561: Fri Nov 2 15:30:48 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2562: ! 2563: * gnulib2.c (__builtin_saveregs): Add version for i860. ! 2564: ! 2565: * out-i860.c (output_block_move): Rearrange the copy loop. ! 2566: Now uses two labels and a more complicated lead-in. ! 2567: ! 2568: Fri Nov 2 14:17:24 1990 Tom Wood (wood at dg-rtp.dg.com) ! 2569: ! 2570: * m88k.md (extendsidi2): New define_expand. ! 2571: ! 2572: * out-m88k.c: Converted various constructs to use conventinal ! 2573: formatting. ! 2574: ! 2575: * m88k.md (ext pattern): Must have parens. ! 2576: * m88k.md (mul/div patterns): Added better documentation. Removed ! 2577: unfounded restriction on immediate values. ! 2578: * m88k.md (increment and test peephole): Don't use %L. ! 2579: ! 2580: * out-m88k.c (m88k_layout_frame): Must allocate space for the ! 2581: addressing base register (-mpic). ! 2582: * out-m88k.c (output_tdesc): Use version 2 tdesc with PIC. ! 2583: ! 2584: * tm-m88k.h, tm-m88kdgux.h,: Don't predefine memcpy and others. ! 2585: * tm-m88k.h: Fixes for dwarf. ! 2586: * tm-m88ksvr4.h: Dwarf changes. ! 2587: * xm-m88k.h xm-m88kdgux.h xm-v88r32.h: Update comments. ! 2588: ! 2589: Fri Nov 2 12:30:15 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2590: ! 2591: * jump.c (comparison_dominates_p): Return 1 if codes are the same. ! 2592: (thread_jumps): Use get_label_after. ! 2593: ! 2594: * a29k.md (movdi): Handle CONST_INT as well as CONST_DOUBLE. ! 2595: (comparisons): Fix typo in define_split for floating-point NE. ! 2596: ! 2597: * reorg.c (fill_slots_from_thread): Don't mark as annulled if no ! 2598: delay list. ! 2599: ! 2600: * loop.c: Allow use of any register to store comparison results. ! 2601: (loop_skip_over): Don't treat comparison specially; copy all insns ! 2602: preceeding the jump. ! 2603: (check_for_endtest, other_reg_use_p): Deleted. ! 2604: (can_eliminate_biv_p, eliminate_biv): Deleted; code merged and ! 2605: placed into new maybe_eliminate_p_1. ! 2606: (may_eliminate_biv, may_eliminate_biv_1): New functions; recursively ! 2607: look at all rtx to see if every occurrence of a biv can be ! 2608: eliminated. ! 2609: (check_eliminate_biv): Deleted; callers changed to call ! 2610: may_eliminate_biv. ! 2611: (get_condition): Rework to look into previous insns to find insns ! 2612: that set the first operand of comparison insns. ! 2613: ! 2614: Thu Nov 1 22:07:42 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2615: ! 2616: * cse.c (fold_rtx, case COMPARE): Only convert compare to test if ! 2617: HAVE_cc0 is defined. ! 2618: * combine.c (subst): Copy COMPARE case from fold_rtx. ! 2619: Simplify things like (ne (eq FOO BAR) (const_int 0)). ! 2620: ! 2621: Thu Nov 1 18:06:56 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2622: ! 2623: * math-68881.h (HUGE_VAL): Alternate definition for Suns. ! 2624: ! 2625: * config.gcc (sun3, etc.): Assume os4 as default for Sun 3 and Sun 4. ! 2626: ! 2627: * tm-i386v.h (STARTFILE_SPEC, LIB_SPEC): Handle -posix. ! 2628: (CPP_SPEC): New macro. ! 2629: (LIB_SPEC): Handle -shlib. ! 2630: ! 2631: * c-decl.c (init_decl_processing): Make last arg to memcpy and memcmp ! 2632: an unsigned long, to be like size_t. ! 2633: ! 2634: * Makefile.in (hard-params): Depend on gnulib2, not gnulib. ! 2635: ! 2636: Wed Oct 31 22:12:33 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2637: ! 2638: * config.gcc (ultrix): New alternative. ! 2639: ! 2640: * i386.md (extend*): Change opcode to movsx. Was movs. ! 2641: ! 2642: Wed Oct 31 09:41:27 1990 Tom Wood (wood at dg-rtp.dg.com) ! 2643: ! 2644: * m88k.md: Deleted an old pattern for subtracting 0. ! 2645: * m88k.md: Deleted patterns for aligned bit-field insns. ! 2646: * m88k.md: Changed define_expand to define_insn for mulsi3 and ! 2647: umulsi3. ! 2648: * m88k.md: Converted various constructs to use conventional ! 2649: formatting. ! 2650: * m88k.md (mak patterns): Fixed transcription errors. ! 2651: ! 2652: Wed Oct 31 00:05:54 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2653: ! 2654: * c-decl.c (init_decl_processing): Predefine the ordinary names ! 2655: of alloca, abs, memcpy, etc. ! 2656: ! 2657: * c-decl.c (duplicate_decls): Allow redefining built-in as static, ! 2658: but optionally warn. ! 2659: ! 2660: Tue Oct 30 14:39:17 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2661: ! 2662: * c-decl.c (finish_function): Use DEFAULT_MAIN_RETURN in `main'. ! 2663: * tm-vms.h (DEFAULT_MAIN_RETURN): Define this. ! 2664: ! 2665: * c-parse.y (yylex): Base is not 8 for just `0'. ! 2666: ! 2667: * cccp.c (do_define): Invert test of compare_defs. ! 2668: ! 2669: * cccp.c (make_definition): Convert newline to newline-newline. ! 2670: ! 2671: * Makefile.in (hard-params): Depend on gnulib. ! 2672: ! 2673: * m88k.md (divsi3): Delete declarations of gen_... functions. ! 2674: ! 2675: Tue Oct 30 14:26:20 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2676: ! 2677: * cse.c: Rework handling of comparisons to generalize better to ! 2678: machines that use registers to hold condition code information. ! 2679: (prev_insn_cc0*): Just store last rtx assigned to cc0 in prev_insn_cc0. ! 2680: (find_comparison_args): New function. ! 2681: (fold_rtx): Folded value of cc0 is the value previously stored into it. ! 2682: Rework handling of comparisons: use find_comparison_args to see what ! 2683: is being compared. If they are constants, compute the result of the ! 2684: comparison. If not, see if the two operands are equivalent (only for ! 2685: non FP or non-IEEE FP). Then see if we have already seen a comparison ! 2686: involving these operands that lets us give a value to this comparison. ! 2687: True comparisons return STORE_FLAG_VALUE, not 1. ! 2688: (fold_cc0): Deleted. ! 2689: (predecide_loop_entry): Call cse_insn on a copy of each insn at the ! 2690: loop test to propagate the values of items at the start of the loop. ! 2691: Then use fold_rtx to see if we know the result of the jump. ! 2692: (record_jump_equiv): Use new function find_comparison_args. ! 2693: (cse_insn): Just record value of CC0 if set; don't call fold_cc0. ! 2694: Don't modify PREV_INSN (insn) if INSN is a copy. ! 2695: (cse_main): Initialize const_true_rtx to rtx for STORE_FLAG_VALUE. ! 2696: ! 2697: * jump.c (comparison_code_p, comparison_dominates_p): New functions. ! 2698: (thread_jumps): Use comparison_dominates_p. ! 2699: Remove debugging code. ! 2700: * reorg.c (condition_dominates_p): Use new function ! 2701: comparison_dominates_p. ! 2702: ! 2703: * emit-rtl.c (next_cc0_user): Don't get confused by being call with a ! 2704: copy of an insn; use INSN_UID to check for an insn in a delay slot. ! 2705: ! 2706: * rtl.c (reg_note_name): Add name for new REG_LABEL note. ! 2707: ! 2708: * emit-rtl.c (make_insn_raw): No longer have JUMP_LABEL for INSN. ! 2709: ! 2710: Tue Oct 30 09:26:15 1990 Tom Wood (wood at dg-rtp.dg.com) ! 2711: ! 2712: * Update what strings in files edited so far. ! 2713: * tm-m88k.h, tm-m88kdgux.h, tm-m88ksv4r.h: Introduce VERSION_STRING ! 2714: and VERSION_INFO to more appropriately identify the compiler. ! 2715: ! 2716: * tm-m88k.h (ASM_OUTPUT_OPCODE): Stop processing the opcode if `%' ! 2717: is encountered. ! 2718: * out-m88k.c (print_operand): Add a tab to %L output. Delete ! 2719: unused cases. ! 2720: ! 2721: * m88k.md: Rework the movstrsi pattern and provide call_block_move ! 2722: and call_block_move_loop to support expand_block_move. ! 2723: * out-m88k.c: Rework the block move functions. ! 2724: * make-m88k, make-m88kdgux: Eliminate movstr.h. ! 2725: ! 2726: * m88k.md, out-m88k.c: Eliminate assembler comments. ! 2727: ! 2728: * m88k.md (ashlsi3 ashrsi3 lshlsi3 lshrsi3): Eliminate warnings ! 2729: about out of range shifts. ! 2730: ! 2731: * tm-m88k.h, out-m88k.c: Rename CONDITION_CODE_REGNUM CC0_REGNUM. ! 2732: ! 2733: Mon Oct 29 18:06:54 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2734: ! 2735: * final.c (final_end_function): Handle dwarf output. ! 2736: (final_scan_insn): Likewise. ! 2737: (output_source_line): Likewise, using ASM_OUTPUT_DWARF_LINE. ! 2738: * toplev.c (rest_of_decl_compilation): Likewise. ! 2739: (rest_of_compilation, main): Likewise. ! 2740: * varasm.c (assemble_variable): Likewise. ! 2741: * flags.h (enum debugger): Define DWARF_DEBUG. ! 2742: ! 2743: * cccp.c (do_define): Rewrite criterion for warning. ! 2744: Don't warn if -D redefining symbol with constant numeric value. ! 2745: ! 2746: * toplev.c (output_file_directive): New function. ! 2747: * sdbout.c (sdbout_filename): Deleted. ! 2748: * tm-3b1.h, tm-att386.h, tm-encore.h, tm-m88k.h, ! 2749: tm-mot3300.h, tm-tahoe.h, tm-vaxv.h (ASM_FILE_START): Use that. ! 2750: ! 2751: * c-decl.c (named_labels): No longer static. ! 2752: (pushlevel): Clear named_labels. ! 2753: (poplevel): Don't clear it here. ! 2754: ! 2755: Mon Oct 29 13:32:57 1990 Michael Tiemann (tiemann at cygnus.com) ! 2756: ! 2757: * Makefile.in: Update dependencies for various files, mostly cplus-* ! 2758: files. ! 2759: ! 2760: * rtl.def: Remove Sep 26 that added JUMP_LABELs to INSN and ! 2761: CALL_INSN. ! 2762: * rtl.h: Add REG_LABEL register note. For INSN and CALL_INSN, the ! 2763: presence of this register note has the same meaning that a non-NULL ! 2764: JUMP_LABEL would have with the Sep 26 change. ! 2765: * jump.c (jump_optimize): Revert to clearing JUMP_LABEL field of ! 2766: JUMP_INSNs only. ! 2767: (mark_jump_label): If INSN is an INSN or a CALL_INSN, add a ! 2768: REG_LABEL note if a LABEL appears (and no such note already exists). ! 2769: ??? Once recorded, this information appears never to be used. ! 2770: ! 2771: * jump.c (delete_jump): The deletion of INSN must take place when ! 2772: INSN is a simple jump. Also, don't try to optimize if we come ! 2773: across an insn with the reorg-generated pattern (USE (INSN ...)). ! 2774: ! 2775: * cplus-lex.c, cplus-dbxout.c: Remove vestigial support for dumping ! 2776: and undumping the compiler. ! 2777: ! 2778: * Merge cplus diffs from Kenner. ! 2779: * cplus-cvt.c (convert_to_integer): Fold the COND_EXPR we construct. ! 2780: * cplus-typeck.c (build_conditional_expr): Ditto in three places. ! 2781: * cplus-lex.c (yylex,do_pending_inlines): Add conditionals for ! 2782: _IBMR2. This hair will disappear when pcccp support is merged, but ! 2783: needed for now. ! 2784: * cplus-tree.h: Conditionalize use of non-int bitfield types on ! 2785: ONLY_INT_FIELDS. Also, remove duplication declarations of ! 2786: get_temp_name, get_temp_aggr, and get_temp_regvar; add declaration ! 2787: of build_decl_list. ! 2788: ! 2789: Mon Oct 29 11:45:03 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2790: ! 2791: * fixincludes: Fix missing semi in rusers.h. ! 2792: ! 2793: Mon Oct 29 07:07:47 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2794: ! 2795: * flow.c (mark_used_regs): When converting "...*p...; q = p + size" ! 2796: to "q = p, ...*q..., q = q + size", show that Q is needed after INSN. ! 2797: ! 2798: * romp.md (negdi): Directly generate assembly code rather than ! 2799: converting this into a MINUS. ! 2800: ! 2801: * fold-const.c (fold, case COND_EXPR): Add missing condition in test ! 2802: for (A ? 0 : A). ! 2803: ! 2804: Sun Oct 28 15:01:19 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2805: ! 2806: * flow.c (find_basic_blocks): An indirect jump can go ! 2807: to any label whose address is used as data. ! 2808: ! 2809: * m68k.md (zero-extend QI): Use gen_rtx, not change_address. ! 2810: ! 2811: * Makefile.in (USER_H): List va-*.h explicitly. ! 2812: (toplev.o): Depend on RTL_H. ! 2813: (stamp-*): Depend on move-if-change. ! 2814: (install-headers): Depend on various header files. ! 2815: (install-man): Depend on gcc.1. ! 2816: (gcc.o): Depend on gvarargs.h and obstack.h. ! 2817: ! 2818: * Makefile.in: Make sure every `if' has an `else'. ! 2819: ! 2820: * c-typeck.c (build_binary_op_nodefault): Prevent warning for ! 2821: variable shift count. ! 2822: ! 2823: * i860.md (movsf): Handle moving from CONST_DOUBLE to reg or mem. ! 2824: ! 2825: Sun Oct 28 09:39:14 1990 Michael Tiemann (tiemann at cygnus.com) ! 2826: ! 2827: * jump.c (delete_jump): The deletion of INSN must take place when ! 2828: INSN is a simple jump. Also, don't try to optimize if we come ! 2829: across an insn with the reorg-generated pattern (USE (INSN ...)). ! 2830: ! 2831: * sparc.md, tm-sparc.h, out-sparc.c: Significantly rewritten to take ! 2832: advantage of new 2.0 optimization capabilities. ! 2833: * old-sparc.md, tm-old-sparc.h, out-old-sparc.c: These are copies of ! 2834: the above files before the rewrite. They may be interesting for ! 2835: measuring performance of old vs. new machine description idioms. ! 2836: ! 2837: Sun Oct 28 00:22:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2838: ! 2839: * loop.c (scan_loop): Don't think that a branch to an end-test of ! 2840: a containing look is actually the branch to the end-test of the ! 2841: outer loop. ! 2842: ! 2843: * reload.c (indirect_ok): Deleted. ! 2844: (find_reloads): Accept new arg IND_LEVELS instead of old IND_OK; ! 2845: pass this to find_reloads_address and find_reloads_toplev. ! 2846: (find_reloads_toplev): Accept IND_LEVELS and pass to ! 2847: find_reloads_address. ! 2848: (find_reloads_address): Accept IND_LEVELS and pass it on to ! 2849: find_reloads_address_1. ! 2850: When calling ourself recursively for a MEM as an address, show ! 2851: one indirect level has been used. ! 2852: (find_reloads_address_1): Accept IND_LEVELS and pass it to ourselves ! 2853: in recursive calls and to find_reloads_address. ! 2854: * reload1.c (spill_indirect_levels): New var; used to be ! 2855: spill_indirect_ok. ! 2856: (reload): Compute number of levels of indirection and set it into ! 2857: spill_indirect_levels. ! 2858: (reload, reload_as_needed): Pass spill_indirect_levels not ! 2859: spill_indirect_ok. ! 2860: ! 2861: * reload.c (find_reloads): Make similar change to "V" as "O". ! 2862: ! 2863: * reload1.c (eliminate_regs): For binary operations, don't call ! 2864: recursively on second arg if null (for EXPR_LIST). ! 2865: (eliminate_regs_in_insn): Perform register elmination in the ! 2866: REG_NOTES of an insn when we are doing it for the last time. ! 2867: ! 2868: * vax.md (call_value_pop): Use correct operand number for number ! 2869: of bytes popped. ! 2870: ! 2871: * tm-romp.h (EXTRA_CONSTRAINT): Ensure we ignore reg_renumber if ! 2872: register allocation hasn't been done yet. ! 2873: ! 2874: * function.c (init_function_start): Initialize reg_renumber to zero; ! 2875: it is checked in rtx_renumbered_equal_p. ! 2876: ! 2877: * loop.c (loop_optimize): Ensure we assign a new LUID to all ! 2878: special notes, including NOTE_INSN_FUNCTION_BEG (0). ! 2879: ! 2880: Sat Oct 27 12:22:46 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2881: ! 2882: * out-a29k.c (print_operand, output_prolog): Don't try to fill delay ! 2883: slots with parts of epilogue or prologue unless -O -fdelayed-branch. ! 2884: ! 2885: * tm-rs6000.h (STRUCTURE_SIZE_BOUNDARY): Should be 8. ! 2886: ! 2887: * reorg.c (mark_target_live_regs): Ignore REG_DEAD notes for pseudos; ! 2888: they must not have gotten hard registers. ! 2889: ! 2890: Fri Oct 26 11:30:28 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2891: ! 2892: * gcc.c (main): Set machine_suffix before reading specs file. ! 2893: ! 2894: * c-typeck.c (build_binary_op_nodefault): Warn for bad shift counts. ! 2895: ! 2896: * stor-layout.c (layout_record): ! 2897: BITFIELD_NBYTES_LIMITED affects bitfields only. ! 2898: ! 2899: * loop.c (note_addr_stored): Don't assume PLUS in address is aggregate. ! 2900: ! 2901: Fri Oct 26 00:46:09 1990 Michael Tiemann (tiemann at cygnus.com) ! 2902: ! 2903: * cplus-tree.h: Declare `build_type_conversion' once instead of ! 2904: three times. ! 2905: ! 2906: * loop.c (loop_skip_over): Handle machines without cc0. ! 2907: (labels_in_range_p): Fixed typo where this function returned 0 when ! 2908: it meant to return 1. ! 2909: (check_for_endtest): New function. Returns non-zero when ! 2910: argument is a simple conditional test insn (suitable for being the ! 2911: endtest of a loop). ! 2912: (strength_reduce): Use `check_for_endtest' to identify the endtest. ! 2913: Also fixed some typos in comments. ! 2914: (can_eliminate_biv): Use `check_for_endtest' here, too. ! 2915: (get_condition): Generalized to handle machines without cc0. Now ! 2916: THIS_CC_RTX is the value of the cc rtx. ! 2917: ! 2918: * integrate.c (expand_inline_function): Conditionalize away ! 2919: cc0-specific code with HAVE_cc0. ! 2920: (try_constants): Add appropriate declaration for ORIG. ! 2921: (try_fold_condition): Generalized to work for non-cc0 condition ! 2922: values. ! 2923: ! 2924: * cplus-type2.c (digest_init): Add missing declaration of FIELD. ! 2925: * rtl.h: Add missing declaration of plus_constant_for_output. ! 2926: * jump.c (can_reverse_comparison): Fixed typo. ! 2927: (delete_jump): Made to work without cc0_rtx. ! 2928: ! 2929: Fri Oct 26 00:01:27 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2930: ! 2931: * reorg.c: Conditionalize references to CC0_RTX on HAVE_cc0. ! 2932: ! 2933: * reload.c (find_reloads): For the `o' constraint, if IND_OK is ! 2934: true, use offsettable_memref_p instead of the nonstrict version. ! 2935: ! 2936: * jump.c (delete_jump): If HAVE_cc0 is not defined, it is not safe to ! 2937: delete previous insn that sets a condition code register, because it ! 2938: might not be dead. Rework to look at all registers dying in this insn ! 2939: and delete the first previous insn that sets any such register if that ! 2940: is all it does. ! 2941: ! 2942: * jump.c (jump_optimize): Remove extraneous call to next_active_insn ! 2943: in optimization of "if (...) x = 1; else ...; if (x) ...". ! 2944: ! 2945: * cse.c (predecide_loop_entry): Don't set cc_value to null and then ! 2946: stick it in the rtl. ! 2947: ! 2948: * rtlanal.c (find_next_ref): Deleted from here. ! 2949: * explow.c: Include hard-reg-set.h for find_next_ref. ! 2950: (find_next_ref): Moved to here. ! 2951: * Makefile.in (explow.o): Includes hard-reg-set.h. ! 2952: ! 2953: Thu Oct 25 21:37:15 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 2954: ! 2955: * va-mips.h (va_list): Put __ in member names. ! 2956: (va_dcl): Rename _va_alist to __va1_alist. ! 2957: * va-i860.h (__va_struct): Put __ in member names. ! 2958: * gvarargs.h, va-*.h: (__va_ellipsis): New macro. ! 2959: (va_dcl): Use that. ! 2960: ! 2961: * c-typeck.c (convert_for_assignment): For functions, reverse the ! 2962: usual criterion for warning about const vs non-const. Volatile also. ! 2963: ! 2964: * m88k.md, tm-m88k.h, out-m88k.c: Rewrites by [email protected]. ! 2965: * tm-m88kdgux.h, tm-v88r32.h, tm-m88ksvr4.h: New files. ! 2966: * xm-m88kdgux.h, xm-v88r32.h, xm-m88ksvr4.h: New files. ! 2967: * make-m88k, make-m88kdgux: New files. ! 2968: * config.gcc (m88k-dgux, m88k-v88r32, m88k-svr4): New alternatives. ! 2969: ! 2970: * gvarargs.h, gstdarg.h: Include alternate file for m88k. ! 2971: ! 2972: * expr.c (expand_expr): For ARRAY_REF, preserve const and volatile. ! 2973: ! 2974: * expr.c (expand_builtin): Handle strcmp and memcmp with function calls ! 2975: if can't be open coded. ! 2976: ! 2977: * function.c (expand_function_end): Round trampoline addr to init. ! 2978: (round_trampoline_addr): Fix braino in alignment. ! 2979: ! 2980: Thu Oct 25 14:54:18 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 2981: ! 2982: * jump.c: Now includes insn-config.h. ! 2983: (jump_optimize): inequality_comparisons_p takes only one operand again. ! 2984: (can_reverse_comparison_p): Handle case where a register is used ! 2985: for the condition code; if we can't easily find the COMPARE that ! 2986: was used to set the register, say we can't reverse the comparison. ! 2987: * Makefile.in (jump.o): Now includes insn-config.h. ! 2988: ! 2989: * jump.c (jump_optimize): Put back change removed on Oct 21st; ! 2990: emit_store_flag has now been updated. ! 2991: ! 2992: * rtlanal.c (inequality_comparisons_p): Reject any ordered ! 2993: comparison; we need not just reject when comparing against ! 2994: cc0_rtx. ! 2995: * recog.c (next_insn{,s}_test_no_inequality): inequality_comparisons_p ! 2996: again has only one operand. ! 2997: * genattrtab.c (cc0_rtx): No longer needed; remove change of Oct 21. ! 2998: ! 2999: * genconfig.c (have_cc0_flag): New variable. ! 3000: (walk_insn_part): Set it when we see CC0. ! 3001: (main): Write #define HAVE_cc0 when it is set. ! 3002: * flow.c: Now includes insn-config.h. ! 3003: * Makefile.in (flow.o): Likewise. ! 3004: ! 3005: * combine.c (subst): If X and FROM are the same register number, ! 3006: but in different modes, force the combine not to be done. ! 3007: Add missing initialization of undobuf.storage. ! 3008: ! 3009: Thu Oct 25 11:34:35 1990 Michael Tiemann (tiemann at cygnus.com) ! 3010: ! 3011: * sched.c (new_sometimes_live): Protect this function in case it is ! 3012: called with (OFFSET,BIT) that evaluates to >= MAX_REGNO. ! 3013: ! 3014: * jump.c (sets_cc0_p): Conditionalized to abort if called when ! 3015: machine does not support cc0. ! 3016: ! 3017: * rtlanal.c (reg_set_p): Now non-static. ! 3018: * rtlanal.c (rtx_varies_p): Handle LO_SUM more accurately. ! 3019: * rtlanal.c (find_next_ref): New function. Returns the insn that ! 3020: next references REG after INSN, or 0 if REG is clobbered before next ! 3021: referenced or it cannot easily find a reference to REG. ! 3022: ! 3023: * recog.c (next_insn_tests_no_inequality): Conditionalized on ! 3024: HAVE_cc0. ! 3025: ! 3026: * rtlanal.c (inequality_comparisons_p): Takes new argument ! 3027: THIS_CC0_RTX which is the rtl for the condition code value we are ! 3028: concerned about testing. All callers changed. ! 3029: ! 3030: * flow.c (propagate_block,mark_used_regs): Conditionalize ! 3031: specialized cc0 handling only if HAVE_cc0 is defined. ! 3032: ! 3033: * genemit.c (gen_exp): In REG case, If CC0_REGNUM is defined, ! 3034: save space by using REG_CC0_RTX instead of allocating a new ! 3035: (REG, mode, CC0_REGNUM) rtx if the mode is SImode. ! 3036: ! 3037: * final.c (output_addr_const): Handle PC for P.I.C. code generation. ! 3038: Also, put parens around CONST expressions so that precedence can be ! 3039: maintained. ! 3040: * final.c (final_scan_insn): Don't look for redunant compares ! 3041: except when HAVE_cc0 is defined. ! 3042: Also, use `find_cc' to locate the rtx functioning as the ! 3043: condition code register in order to perform appropriate calls ! 3044: to `alter_cond'. ! 3045: ! 3046: * expr.c (expand_expr): Supply missing arg in calls to `store_expr'. ! 3047: ! 3048: * expmed.c (emit_store_flag): New argument COMPARISON is the ! 3049: comparison operation whose result we store. ! 3050: ! 3051: * recog.c (offsettable_address_p,adj_offsettable_operand): Use ! 3052: `plus_constant_for_output' instead of `plus_constant' since we ! 3053: are testing conditions which rely on being able to add small ! 3054: offsets to e.g. LO_SUM operands. ! 3055: * explow.c (plus_constant): No special handling for LO_SUM. It is ! 3056: not valid to add a constant to a term with LO_SUM, since the ! 3057: constant may need to be added to the high bits that form the sum, ! 3058: and those high bits are not readily available. ! 3059: * explow.c (plus_constant_for_output): Same as `plus_constant' ! 3060: except that we do allow adding constants to LO_SUM terms. This ! 3061: function works only in special cases such as for ! 3062: `adj_offsettable_operand' and `offsettable_address_p'. ! 3063: ! 3064: * emit-rtl.c: Declare reg_cc0_rtx which is like cc0_rtx, but ! 3065: is a register instead of a special form. reg_cc0_rtx should ! 3066: be used when representing the condition code register on a ! 3067: machine where condition codes are only set if explicitly set. ! 3068: For machines which allow arbitrary registers to be used as ! 3069: condition code registers (such as the MIPS and 88k), normal ! 3070: pseudo registers should be used instead. ! 3071: * emit-rtl.c (next_cc0_user,prev_cc0_setter): Conditionalized ! 3072: on HAVE_cc0. ! 3073: * emit-rtl.c (find_cc): New function. Given INSN, returns ! 3074: the rtx of what functions as the condition code register for ! 3075: INSN. On machines which use cc0_rtx, this is always cc0_rtx. ! 3076: On machines which have a dedicated register for cc0, this is ! 3077: that register. On machines which allocate pseudos for holding ! 3078: condition codes, this is the pseudo found in a REG_CC0 note. ! 3079: Otherwise, this function returns 0. ! 3080: * emit-rtl.c (init_emit_once): Allocate `reg_cc0_rtx' if ! 3081: CC0_REGNUM is defined. ! 3082: ! 3083: * cse.c (make_regs_equiv): Don't consider making a reg ! 3084: equivalent to another reg whose class is NO_REGS. ! 3085: * cse.c (canon_reg): Don't canonicalize a register to ! 3086: one whose class is NO_REGS. ! 3087: * cse.c (fold_rtx): Conditionalize code for handling cc0_rtx ! 3088: with HAVE_cc0. ! 3089: * cse.c (predecide_loop_entry): Generalize code to use either ! 3090: a register or cc0_rtx. ! 3091: * cse.c (cse_insn): Conditionalize code for handling cc0_rtx ! 3092: with HAVE_cc0. ! 3093: ! 3094: * combine.c (combine_instructions,try_combine,subst): ! 3095: Conditionalize code handling cc0_rtx with HAVE_cc0. ! 3096: * combine.c (simplify_set_cc0_and): Abort if HAVE_cc0 is not ! 3097: defined. ! 3098: * combine.c (try_distrib): Add break at end of switch cases. It is ! 3099: dangerous to leave the last cases of a switch statement to fall ! 3100: through since new cases added after will get fallen into. ! 3101: ! 3102: * recog.c (validate_change): Always succeed for an asm insn, ! 3103: since recog always fails to recognize asm insns. This is ! 3104: needed for virtual register instantiation in asm insns. ! 3105: ! 3106: * cse.c (cse_main): When following jumps, notice whether a ! 3107: particular basic block causes CSE_JUMPS_ALTERED to become set. When ! 3108: this happens, repeat the scan. ! 3109: * cse.c (refers_to_mem_p): Changed parameter name REG to BASE, ! 3110: which is more accurate. Also, taught it how to cope with ! 3111: LO_SUM rtl constructs. ! 3112: ! 3113: Wed Oct 24 15:36:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3114: ! 3115: * calls.c (store_one_arg): Accept additional arg, FNDECL. ! 3116: Don't save argument area if it is within the REG_PARM_STACK_SPACE ! 3117: area, but mark the area in use. ! 3118: (expand_call): If ACCUMULATE_OUTGOING_ARGS and REG_PARM_STACK_SPACE, ! 3119: treat the stack area for the registers as be clobbered by the called ! 3120: routine (e.g., if it was compiled without -O) and save and restore ! 3121: it if it was previously used for arguments in a similar manner to ! 3122: the remainder of the argument area (done by store_one_arg). ! 3123: ! 3124: * calls.c (expand_call): Support new description macro, ! 3125: STACK_PARMS_IN_REG_PARM_AREA. ! 3126: * function.c (assign_parms): Likewise. ! 3127: ! 3128: Wed Oct 24 12:47:21 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3129: ! 3130: * c-typeck.c (build_array_ref): Use main variant for value type. ! 3131: ! 3132: * genoutput.c (output_prologue): Let SEPARATE_AUX_OUTPUT ! 3133: cause aux-output.c not to be included. ! 3134: Makefile.in (aux-output2.c): Copy aux-output.c and then compile it. ! 3135: ! 3136: * reload.c (subst_reg_equivs): Treat HIGH like other constants. ! 3137: ! 3138: * reload.c (push_reload): When testing hard reg for validity, ! 3139: test subsequent regs only against class, not for HARD_REGNO_MODE_OK. ! 3140: ! 3141: Tue Oct 23 22:49:33 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3142: ! 3143: * cccp.c (collect_expansion): Skip ## at start after the error. ! 3144: ! 3145: * gcc.c (default_compilers): Handle - as suffix. ! 3146: (main): Make that a special case; it matches only exactly `-'. ! 3147: ! 3148: Tue Oct 23 22:40:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3149: ! 3150: * romp.md (store{s,h,q}i pattern): Allow "b" for clobbered pseudo ! 3151: in addition to "d" in first alternative. ! 3152: ! 3153: * reload1.c (eliminate_regs): IF_THEN_ELSE isn't a unary operation. ! 3154: ! 3155: Tue Oct 23 20:35:13 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3156: ! 3157: * m68k.md (zero-extend QI): When pushing, store value at 1(sp). ! 3158: ! 3159: Mon Oct 22 12:27:08 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3160: ! 3161: * cccp.c (rescan): In the loop that handles numbers, discard \newline. ! 3162: Also make `..' terminate a preprocessing number. ! 3163: ! 3164: * Makefile.in (tmpgnulib, stamp-gnulib2): Do `set -e'. ! 3165: ! 3166: * gcc.c (default_compilers): Give __GNUC__ value 2. ! 3167: Don't define it for .S files. ! 3168: ! 3169: Mon Oct 22 07:33:42 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3170: ! 3171: * optabs.c (emit_indirect_jump): New function; now checks predicate ! 3172: of indirect_jump. ! 3173: * stmt.c (expand_computed_goto, expand_goto): Use new function instead ! 3174: of directly emitting indirect jump. ! 3175: ! 3176: * flow.c (mark_set_1): Make LOG_LINKS for hard registers. ! 3177: * combine.c (subst): Make new macro COMBINE_RTX_EQUAL_P which ! 3178: considers things equal if they are the identical RTX or the same ! 3179: register with the same mode; use to see if something changed and ! 3180: if we have a match. ! 3181: ! 3182: * cccp.c (S_ISREG): Use argument instead of global. ! 3183: (main): Correct sense of S_ISREG usage. ! 3184: (check_precompiled): Use S_ISREG. ! 3185: ! 3186: * flow.c (mark_used_regs): Don't allow reg_next_use to point to ! 3187: a NOTE; either point it to replacement insn or invalidate it. ! 3188: ! 3189: Mon Oct 22 00:13:12 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3190: ! 3191: * c-parse.y (xdecls): No warning unless -pedantic. ! 3192: ! 3193: Sun Oct 21 17:49:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3194: ! 3195: * genattrtab.c (cc0_rtx): Define, referenced in rtlanal.c. ! 3196: ! 3197: * jump.c (jump_optimize): Remove code that depends on changes to ! 3198: emit_store_flag that haven't been made yet. ! 3199: ! 3200: * expmed.c (extract_bit_field): Correctly check for bitfield ! 3201: completely filling a mode. ! 3202: ! 3203: * out-romp.c (output_epilogue): Correctly write number of words of ! 3204: arguments into trace table. ! 3205: ! 3206: * calls.c (store_one_arg): Fix error in change of Oct 19th. ! 3207: ! 3208: * reorg.c (mark_target_live_regs): Revert back to old behavior ! 3209: of scanning all insns, even those in delay slots. ! 3210: (fill_simple_delay_slots): Need only call update_block if we move ! 3211: an insn across a label. ! 3212: ! 3213: * Makefile.in (LIBFUNCS): Use consistent naming convention for ! 3214: comparison routines; gnulib.c was always correct. ! 3215: ! 3216: * function.c (assign_parms): Don't overwrite DECL_INCOMING_RTL when ! 3217: we are called for the second time. ! 3218: ! 3219: * integrate.c (initialize_for_inline): Don't make a new return label ! 3220: here; the maximum label number has already been computed. ! 3221: (save_for_inline_copying, save_for_inline_no_copy): Do it here instead. ! 3222: ! 3223: * reload.c (find_reloads_address): For indirect address where the ! 3224: underlying address is also invalid, ensure that we substitute into ! 3225: the MEM that we will use. ! 3226: ! 3227: Sun Oct 21 14:12:47 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3228: ! 3229: * reload.c (find_equiv_regs): Reject reg that overlaps goal. ! 3230: ! 3231: * expmed.c (extract_bit_field): For big fields, make sure ! 3232: value really goes in the target. ! 3233: ! 3234: * expr.c (expand_builtin): Delete __builtin_varargs. ! 3235: (EXPAND_BUILTIN_SAVEREGS): New macro says how to do __builtin_saveregs. ! 3236: ! 3237: * calls.c (expand_call): No "can't inline" warning if -fno-inline. ! 3238: ! 3239: * stddef.h: Add missing #endif. ! 3240: ! 3241: Sat Oct 20 14:33:14 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3242: ! 3243: * function.c (round_trampoline_addr): New function. ! 3244: (trampoline_address): Use that. ! 3245: ! 3246: Fri Oct 19 15:13:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3247: ! 3248: * calls.c (store_one_arg): Don't mark stack area used until after ! 3249: we have written into it; if we do it before, the restore might ! 3250: clobber a function result being put into that stack area. ! 3251: ! 3252: * objc-actions.c (print_lang_statistics): Add empty function. ! 3253: ! 3254: * recog.c (inequality_comparisons_p): Deleted from here. ! 3255: * rtlanal.c (inequality_comparisons_p): Moved to here; not static. ! 3256: ! 3257: * a29k.md (extendhisi2): Fix typo in define_split. ! 3258: ! 3259: * Makefile.in (integrate.o): Includes integrate.h. ! 3260: (reorg.o): Includes insn-flags.h. ! 3261: ! 3262: Fri Oct 19 14:49:26 1990 Michael Tiemann (tiemann at cygnus.com) ! 3263: ! 3264: * sdbout.c (sdbout_symbol): If a variable belongs to an inline ! 3265: function, the decl's rtl may not be rewritten by alter_reg. So if ! 3266: we have a variable allocated to a pseudo, just get the hard register ! 3267: number from `reg_renumber'. ?? But I thought that COFF was so ! 3268: losing that it was decided one could not represent debug info for ! 3269: inline functions in COFF. ! 3270: ! 3271: Fri Oct 19 13:21:25 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3272: ! 3273: * fold-const.c (split_tree): Use NEGATE_EXPR to negate *conp. ! 3274: ! 3275: Fri Oct 19 00:15:21 1990 Michael Tiemann (tiemann at cygnus.com) ! 3276: ! 3277: * version.c: Bumped to 1.90.03. ! 3278: ! 3279: * tree.c: Added facility for gathering statistics on the number of ! 3280: tree nodes allocated and the size in bytes they occupy. The ! 3281: statistics are by tree_node_kind, which is almost like using the ! 3282: tree code letter, but has more resolution for dealing with different ! 3283: kinds of `x' nodes. The facility is enabled by compiling the ! 3284: compiler with -DGATHER_STATISTICS and using the -fstats flag. ! 3285: ! 3286: * expr.c (do_tablejump): Emit a BARRIER after the jump that performs ! 3287: the tablejump. ! 3288: ! 3289: * cplus-typeck.c (c_expand_return): Rewritten so that the function ! 3290: value return register is not used except as a target of the function ! 3291: return value. ! 3292: ! 3293: * cplus-tree.c (build_cplus_new): New argument WITH_CLEANUP_P ! 3294: controls whether this functino should build its result with a ! 3295: cleanup or not. All callers changed. ! 3296: ! 3297: * cplus-lex.c: File updated to latest changes to c-parse.y's lexical ! 3298: analyzer. ! 3299: ! 3300: * cplus-except.c (cplus_expand_raise): New parameter FOR_RERAISE ! 3301: is used to control whether to output extra gotos or not. When ! 3302: nonzero, the compiler can avoid writing out the extra gotos that are ! 3303: otherwise needed to avoid warning messages. ! 3304: ! 3305: * cplus-decl2.c (flag_short_double): Add support for this option. ! 3306: ! 3307: * cplus-decl.c (finish_function): Always cause returns to jump to ! 3308: the return label. This allows -Wreturn to give meaningful error ! 3309: messages. ! 3310: ! 3311: * jump.c (invert_exp): Make this non-static. ! 3312: (jump_optimize): Reorganization and simplification of main inner ! 3313: loop. Comments added explaining what the optimizers are looking ! 3314: for. New optimization added that optimizes for consecutive testing ! 3315: of an inequality test followed by an equality test (or vice-versa). ! 3316: Changes made to accommodate reorg.c on Sparc. Code for ! 3317: cross-jumping return statements was previously dead in this ! 3318: function; as a result of the reorganization, it is now live. ! 3319: (find_cross_jump): Added temporary variable PREV1 to hold return ! 3320: value of `prev_nonnote_insn' instead of calling the function 3 times ! 3321: in a row. Also changed so that USE or CLOBBERS are not cross-jumped ! 3322: unless some real insns are also cross-jumped. This helps reorg. ! 3323: (redirect_jump): Fixed a return that returned no value so that it ! 3324: returns 1. ! 3325: (rtx_renumbered_equal_p): Test that reg_renumber is nonzero before ! 3326: using it. We may want to call this function earlier than by the ! 3327: time that array has been initialized. ! 3328: ! 3329: * integrate.c (save_for_inline_{copying,nocopy}): New functions to ! 3330: replace `save_for_inline'. save_for_inline_copying saves the rtl ! 3331: for inline functions by copying the rtl to the ! 3332: maybepermanent_obstack. It is called when the rtl of the current ! 3333: function is going to be compiled immediately. ! 3334: save_for_inline_nocopy takes advantage of the fact that inline ! 3335: function rtl is already allocated to the maybepermanent_obstack, and ! 3336: need therefore not be copied if it's not going to be modified by the ! 3337: compiler (such as by `rest_of_compilation'). ! 3338: ({initialize_for,finish}_inline): New helper routines for ! 3339: save_for_inline_... functions. ! 3340: (note_modified_parmregs): Function called by `mark_stores' to note ! 3341: whether parameters are assigned to in the body of an inline ! 3342: function. ! 3343: New interface, integrate.h, provides declarations for functions used ! 3344: by other routines that might want to copy chunks of rtl. ! 3345: ({save,try}_constants): Now global (for integrate.h). ! 3346: (mark_stores): Ditto. ! 3347: (try_fold_condition): Ditto. ! 3348: ! 3349: * dbxout.c (dbxout_symbol): If a variable belongs to an inline ! 3350: function, the decl's rtl may not be rewritten by alter_reg. So if ! 3351: we have a variable allocated to a pseudo, just get the hard register ! 3352: number from `reg_renumber'. ! 3353: ! 3354: * varasm.c (output_const_pool): No longer static. ! 3355: (assemble_variable): Do output debugging information for global ! 3356: register variables. GDB does the right thing for global register ! 3357: variables. ! 3358: ! 3359: * toplev.c: New flag `warn_inline' for warning when a function ! 3360: declared inline was not in fact inlined. Also, new flag ! 3361: `flag_no_inline' which disables function inlining, but retains ! 3362: other properties of inline functions (such as lazy compilation ! 3363: and write-only-if-needed). ! 3364: * toplev.c (compile_file): Changed logic for inline function ! 3365: handling to work with `warn_inline' and `flag_no_inline'. ! 3366: Also modified to call `save_for_inline_nocopy' when insns are to be ! 3367: saved but not immediately compiled. ! 3368: ! 3369: * function.c (instantiate_decls): If instantiating a function ! 3370: which was saved for inline expansion, preserve the rtl created ! 3371: by the instantiation as well. ! 3372: ! 3373: * flags.h (flag_no_inline): New flag; if nonzero, then no ! 3374: calls are inlined, regardless of their declaration. We still ! 3375: save the insns for these functions in DECL_SAVED_INSNS so that ! 3376: the functions need not be written if they are never called. ! 3377: ! 3378: * calls.c (expand_call): If `flag_no_inline' is set, don't ! 3379: inline the call, regardless of whether it was declared inline ! 3380: or not. ! 3381: ! 3382: Thu Oct 18 13:10:26 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3383: ! 3384: * rtl.def (CODE_LABEL): Add new string field. ! 3385: * rtl.h (LABEL_NAME): Define macro for access. ! 3386: * emit-rtl.c (gen_label_rtx): Initialize it to 0. ! 3387: * stmt.c (expand_label): Store proper name of label. ! 3388: * final.c (final_scan_insn): Call sdbout_label. ! 3389: ! 3390: * tree.h (built_in_function): Add BUILT_IN_VARARGS. ! 3391: * c-decl.c (init_decl_processing): Declare __builtin_varargs. ! 3392: * expr.c (expand_builtin): Generate code for it. ! 3393: Uses new macro EXPAND_BUILTIN_VARARGS. ! 3394: ! 3395: * sdbout.c (SDB_IS_FAKE): Macro deleted. ! 3396: (MAKE_LINE_SAFE): New macro. ! 3397: (sdbout_begin_block, sdbout_end_block, sdbout_end_function): Use it. ! 3398: (sdbout_one_type): Delete spurious second arg in all callers. ! 3399: (sdbout_types, sdbout_end_function): ! 3400: Use sdbout_dequeue_anonymous_types. ! 3401: (sdbout_label): New function. ! 3402: ! 3403: * expr.h (FUNCTION_ARG_BOUNDARY): Default is now PARM_BOUNDARY. ! 3404: ! 3405: * gvarargs.h, va-*.h (va_dcl): ! 3406: Add ellipsis so current_function_varargs is set. ! 3407: ! 3408: * jump.c (jump_optimize): Exit push-optimize loop at end of insns. ! 3409: ! 3410: Thu Oct 18 07:09:06 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3411: ! 3412: * reorg.c: Major reorganization. Many special cases have been moved ! 3413: into more general code and an overall restructuring has been done. ! 3414: Numerous bugs have been fixed. Highlights: ! 3415: (dbr_schedule): First make list of all insns needing filling. Then ! 3416: iterate for two passes. In each pass, try two methods of filling ! 3417: delay slots, then do some canonicalizations, which may create more ! 3418: insns to fill. ! 3419: (fill_simple_delay_slots): Now uses list of insns that need filling, ! 3420: rather than making such a list. ! 3421: Enhance code that finds insns when code paths merge to allow multiple ! 3422: uses of the label as long as all uses are in the skipped code. ! 3423: (struct resource): Notice volatile memrefs. ! 3424: (stop_search_p): Allow option to continue when label is reached. ! 3425: (find_end_label, make_return_insns): New functions; when we have a ! 3426: filled branch that is really a RETURN, first convert it to a jump ! 3427: to a return label and then later see if the insns in the delay slots ! 3428: are also valid for a RETURN. ! 3429: (mostly_true_jump): Test for branch to loop beginning rather than ! 3430: branch at end of loop. Also, conditional return insns predict false. ! 3431: (own_thread_p): New function to replace fall_through_to_p. ! 3432: (try_merge_delay_insns): Only support merging insns already in an ! 3433: insns delay list. ! 3434: (get_branch_condition, condition_dominates_p): New functions. ! 3435: (steal_delay_list_from_{target,fallthrough}): New functions to ! 3436: replace steal_delay_list. ! 3437: (redundant_insn_p): New function. ! 3438: (update_block, mark_target_live_regs, dbr_schedule): When moving ! 3439: an insn not at the front of the basic block to a delay slot, ! 3440: leave a "ghost" USE so that we can track things livened and killed. ! 3441: (fill_slots_from_thread): Eliminate use of static vars for number ! 3442: of slots to fill and already filled. ! 3443: Try to modify an insn that follows a register-register copy to use ! 3444: the original register; this may create a delay-slot opportunity. ! 3445: (try_hoist_target{,_1}): Deleted. ! 3446: (relax_delay_slots): Rewritten to just perform canonicalizations ! 3447: previously done elsewhere. No actual delay slot filling is done ! 3448: here. Any new delay slots created will hopefully be filled in the ! 3449: next pass around the loop in dbr_schedule. ! 3450: ! 3451: * expr.c (emit_push_insn): Don't try to compute a SUBREG of a ! 3452: hard register in a non-integer mode when pushing a "partial" arg. ! 3453: ! 3454: * recog.c (validate_change, apply_change_group): After reload, ensure ! 3455: that operands meet the constraints by calling constrain_operands. ! 3456: (validate_replace_rtx_1): Consider two rtx equal if they refer to ! 3457: the same register. ! 3458: ! 3459: * jump.c (jump_optimize): Extend change of Oct 16th to handle ! 3460: the other usage of find_equiv_reg; remove invalid death notes there. ! 3461: ! 3462: * rs6000.md, tm-rs6000.h, out-rs6000.c, xm-rs6000.h, make-rs6000: ! 3463: New files. ! 3464: ! 3465: * out-a29k.c (extract_subword): Use gen_{high,low}part from ! 3466: an FP CONST_DOUBLE if host and target float formats are the same ! 3467: or REAL_IS_NOT_DOUBLE. ! 3468: ! 3469: * out-romp.c (output_fpop, output_fpops): Provide fr0 as a scratch ! 3470: register unless it is used in the insn. ! 3471: ! 3472: * romp.md: In combined set CC0 and move, optimize case where move ! 3473: is nop. ! 3474: (DF moves): Fix typo in generation of `get' insn. ! 3475: Don't split if input is CONST_DOUBLE because we can't easily ! 3476: generate the proper constants. ! 3477: (call patterns): Copy data area address via a pseudo to allow ! 3478: better CSE'ing. ! 3479: ! 3480: * tm-romp.h (RTX_COSTS): Memory is expensive, except for a reference ! 3481: to our own data area, which is very cheap. ! 3482: (ADDRESS_COST): References to the constant pool are as cheap as ! 3483: register + offset, since that's what it will be. ! 3484: ! 3485: * emit-rtl.c (gen_{low,high}part): Can often extract word from FP ! 3486: CONST_DOUBLE when host and target floating formats agree. ! 3487: (add_insn_after): No longer static. ! 3488: ! 3489: * reload1.c (reg_equiv_memory_loc): Renamed from reg_equiv_stack_slot ! 3490: and now static. ! 3491: (reload): If have equivalence with constant that is not a legitimate ! 3492: constant operand, force it into memory and handle this as an ! 3493: equivalence to memory. ! 3494: * reload.h (reg_equiv_stack_loc): Deleted. ! 3495: ! 3496: Wed Oct 17 20:50:58 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3497: ! 3498: * gcc.c, cccp.c (main): Use TARGET_VERSION if -v. ! 3499: ! 3500: * expmed.c (extract_bit_field): Typo in last change. ! 3501: ! 3502: * Makefile.in (tmpgnulib): Support assembler files named *.asm. ! 3503: ! 3504: * gcc.c (do_spec_1): Null-terminate error message. ! 3505: ! 3506: * sdbout.c (sdbout_symbol): Handle subreg as DECL_RTL. ! 3507: This happens for vars from the parms of inline functions. ! 3508: * dbxout.c (dbxout_symbol): Likewise. ! 3509: ! 3510: * genattr.c (fancy_abort): New function, as in gen*.c. ! 3511: ! 3512: Wed Oct 17 14:53:48 1990 Michael I. Bushnell (mib at geech.ai.mit.edu) ! 3513: ! 3514: * pcp.h: New file. ! 3515: ! 3516: * cccp.c: Support use of precompiled files ! 3517: Include "pcp.h". ! 3518: (no_precomp, stringlist, stringlist_tailp): New variables. ! 3519: (union hashval): New field `keydef'. ! 3520: (enum nodetype): New alternative `T_PCSTRING'. ! 3521: (main): Support -noprecomp. ! 3522: Use write_output to write output. ! 3523: (rescan): Call pcstring_used for T_PCSTRING symbols. ! 3524: (do_include): New local variables pcftry, pcfname, pcf, pcfbuf, ! 3525: pcfbuflimit, and pcfnum. ! 3526: Check for possible use of precompiled files. ! 3527: (check_precompiled): New function. ! 3528: (check_preconditions): New function. ! 3529: (pcfinclude): New function. ! 3530: (pcstring_used): New function. ! 3531: (write_output): New function. ! 3532: (create_definition): New function. ! 3533: (do_define): Moved most of the work into create_definition. ! 3534: (dump_single_macro): New function. ! 3535: (dump_all_macros): Moved most of the work into dump_single_macro. ! 3536: (dump_defn_1): New argument OF. ! 3537: (dump_arg_n): New argument OF. ! 3538: ! 3539: * cccp.c: Support generation of precompiled files ! 3540: (pcp_outfile, pcp_inside_if): New variables. ! 3541: (struct definition): New field `predefined'. ! 3542: (main): Support -pcp. ! 3543: (rescan): Don't expand macros outside #if during -pcp. ! 3544: (special_symbol): Error for most special symbols during #if in -pcp. ! 3545: Output precondition for T_CONST and T_SPEC_DEFINED symbols. ! 3546: (eval_if_expression): Set and clear pcp_inside_if. ! 3547: (do_ifxdef): Output preconditions. ! 3548: ! 3549: Tue Oct 16 13:22:05 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3550: ! 3551: * stor-layout.c (layout_record): For PCC_BITFIELD_TYPE_MATTERS, ! 3552: make it true that zero-length field affects alignment of next field. ! 3553: ! 3554: * rtlanal.c (get_integer_term, get_related_value): Moved from cse.c. ! 3555: ! 3556: * jump.c (jump_optimize): When reusing value via find_equiv_reg, ! 3557: delete obsolete death note. ! 3558: ! 3559: * expmed.c (extract_bit_field, store_bit_field): ! 3560: Handle fields wider than a word. ! 3561: Restrict special case for word-sized field to aligned words. ! 3562: ! 3563: * expmed.c (extract_bit_field, store_bit_field): Don't let ! 3564: BESTMODE be bigger than the insn can handle. ! 3565: ! 3566: * Makefile.in (tmpgnulib): Fix typos handling LIBFUNCS_EXTRA. ! 3567: ! 3568: * cccp.c (handle_directive): Turn on code to handle # LINENUM, ! 3569: and move initializations past the label `old_linenum'. ! 3570: ! 3571: * c-decl.c (grokdeclarator): If traditional, make bitfields unsigned. ! 3572: (finish_struct): Don't do that here. ! 3573: ! 3574: * fixincludes (CTRL): Don't put quotes around a quote. ! 3575: ! 3576: * stddef.h (size_t): Also inhibit if _SIZE_T_. ! 3577: ! 3578: Mon Oct 15 13:15:30 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3579: ! 3580: * c-decl.c (grokdeclarator): Make flag_signed_bitfields work ! 3581: for int and for typedefs. ! 3582: ! 3583: Sun Oct 14 21:28:32 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3584: ! 3585: * flow.c (life_analysis): No hard regs for any pseudos live at setjmp. ! 3586: ! 3587: * c-decl.c (duplicate_decls): Don't suppress warning for fn defn ! 3588: after implicit declaration, if fn has already been defined. ! 3589: ! 3590: Fri Oct 12 15:54:11 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3591: ! 3592: * c-parse.y (xdecls): Allow ellipsis after parm decls. ! 3593: Call c_mark_varargs. ! 3594: * c-decl.c (start_function): Clear c_function_varargs. ! 3595: (c_mark_varargs): New function. Set it. ! 3596: (store_parm_decls): Maybe call mark_varargs. ! 3597: * function.c (init_function_start): Clear current_function_varargs. ! 3598: (mark_varargs): New function. Set it. ! 3599: ! 3600: Thu Oct 11 13:15:36 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3601: ! 3602: * genattrtab.c (fancy_abort): New function, as in gen*.c. ! 3603: ! 3604: * expr.c (saveregs_value): New variable. ! 3605: (init_expr, save_expr_status, restore_expr_status): ! 3606: Init, save, restore the variable. ! 3607: (expand_builtin): Don't call __builtin_saveregs twice in one function. ! 3608: ! 3609: * va-*.h: Rename all structure fields to start with __. ! 3610: * va-pyr.h: Rename variables also. ! 3611: (va_start): Delete the unmatched {. ! 3612: (va_end): Now a nop. ! 3613: ! 3614: Wed Oct 10 22:03:20 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3615: ! 3616: * va-sparc.h (__va_ctl): Rename fields to start with __. ! 3617: ! 3618: Tue Oct 9 12:55:48 1990 Michael Meissner (meissner at osf.org) ! 3619: ! 3620: * Allow configuration to specify size of a wide character. ! 3621: (WCHAR_TYPE_SIZE): New parameter. ! 3622: (WCHAR_UNSIGNED): New parameter, says whether type is signed. ! 3623: ! 3624: * c-decl.c (WCHAR_TYPE_SIZE): Define if not defined. ! 3625: (WCHAR_UNSIGNED): Likewise. ! 3626: (wchar_type_node, signed_wchar_type_node, unsigned_wchar_type_node): ! 3627: (wchar_array_type_node): New variables. ! 3628: (init_decl_processing): Init them. ! 3629: * c-tree.h: Make them extern. ! 3630: ! 3631: * c-common.c (WCHAR_TYPE_SIZE, WCHAR_BYTES): Define them. ! 3632: (combine_strings): Handle them. ! 3633: * c-parse.y (init_lex, yylex): Likewise. ! 3634: ! 3635: * c-typeck.h (digest_init): Use wchar_type_node and ! 3636: signed_wchar_type_node to get the base type of wide strings, rather ! 3637: than using int and unsigned. ! 3638: ! 3639: Tue Oct 9 14:16:37 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3640: ! 3641: * expmed.c (extract_bit_field): Typo; section for extv used extzv. ! 3642: ! 3643: * c-typeck.c (digest_init): Error if union has no name field. ! 3644: (process_init_constructor): For union, use first named field. ! 3645: ! 3646: * flow.c (propagate_block): Include NOTE at end of block in scan. ! 3647: ! 3648: * fixincludes: Fix missing semicolon in rstat.h. ! 3649: ! 3650: * cccp.c (main): Record the option names used for assertions. ! 3651: Call make_assertion properly. ! 3652: ! 3653: Tue Oct 9 06:18:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3654: ! 3655: * cse.c (fold_rtx): Call find_best_addr before seeing if we know ! 3656: what is located at that address. ! 3657: Don't try to return the contents of an ADDR_DIFF_VEC table; we have ! 3658: no simple way of representing it. ! 3659: (cse_insn): Detect SRC == DEST even when DEST is not the canonicalized ! 3660: form of the value represented by SRC. ! 3661: ! 3662: * loop.c (scan_loop): Don't set THRESHOLD until LOOP_HAS_CALL ! 3663: has been set. ! 3664: (struct induction): Add field MEM_MODE. ! 3665: (find_mem_givs, combine_givs_p): Record mode used to access memory ! 3666: when making DEST_ADDR giv and use it to test validity of ! 3667: derived address. ! 3668: ! 3669: * jump.c (delete_jump): No longer static. ! 3670: (invert_jump): Allow changing RETURNs to branches and vice versa. ! 3671: Now returns success/failure indication like redirect_jump. ! 3672: * rtl.h (delete_jump): Define. ! 3673: ! 3674: * calls.c (store_one_arg): Don't expand a `partial' arg into ! 3675: arg->stack and don't set arg->value to arg->stack_slot for ! 3676: such args. ! 3677: Clean up by breaking out common code. ! 3678: ! 3679: Mon Oct 8 15:09:31 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3680: ! 3681: * loop.c (can_eliminate_biv_p): Insist that mult_val be positive. ! 3682: ! 3683: * Makefile.in (insn-*): Remove semicolon from these rules. ! 3684: (INSTALL_PROGRAM, INSTALL_FILE): New variables. ! 3685: (install-*): Use those variables. ! 3686: (mandir): Default based on manext. ! 3687: ! 3688: Mon Oct 8 10:57:14 1990 Michael Tiemann (tiemann at cygnus.com) ! 3689: ! 3690: * stmt.c (expand_catch_default): Return 1 if EXCEPT_STACK is ! 3691: nonzero. ! 3692: ! 3693: * c-decl.c (finish_enum): Argument to floor_log2 in ! 3694: calculation of negprecision was not negated. ! 3695: ! 3696: Mon Oct 8 06:50:15 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3697: ! 3698: * rtl.h (INSN_ANNULLED_BRANCH_P, INSN_FROM_TARGET_P): New fields. ! 3699: ! 3700: Sun Oct 7 23:33:24 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3701: ! 3702: * tm-i386v.h (STARTFILE_SPEC): Handle -p here. ! 3703: (LIB_SPEC): Not here. ! 3704: ! 3705: Thu Oct 4 05:06:02 1990 Michael Tiemann (tiemann at cygnus.com) ! 3706: ! 3707: * gcc.c (default_compilers): Define __OPTIMIZE__ for %{O*}, not just ! 3708: %{O}. This permits the use of -O2, -O3, etc., with predictable ! 3709: results. ! 3710: ! 3711: * expr.c (expand_expr): Do not build new cleanups for ! 3712: TARGET_EXPRs. Their cleanups are now handled entirely by the ! 3713: language-specific code that causes them to be generated. ! 3714: ! 3715: * function.c ({push,pop}_temp_slots): Do not change ! 3716: temp_slot_level if within a sequence. GNU C++ must be able to ! 3717: emit a sequence it is building anywhere at the level the sequence ! 3718: was initiated. If the level is changed when building a sequence, ! 3719: temporaries could be unwittingly shared. ! 3720: ! 3721: * cplus-tree.def: change print strings for NEW_EXPR and ! 3722: CPLUS_CATCH_DECL. ! 3723: ! 3724: * cplus-dem.c (do_type): Support `long long' types. ! 3725: ! 3726: * cplus-decl.c (finish_file): No longer try to emit _init,_fini ! 3727: records for GNU C++. This was supposed to help the SunOS dynamic ! 3728: linker link C++ code, but it turned out not to work. ! 3729: ! 3730: * cplus-decl.c ({start,finish}_function): Don't emit an extra ! 3731: binding contour if not in a constructor or destructor. It is not ! 3732: needed, and saves writing out unneeded debugging info. ! 3733: ! 3734: * cplus-class.c (build_method_call): Conditionalize handling of ! 3735: wrappers and operator->(); these are now only compiled if ESKIT is ! 3736: #defined. ! 3737: ! 3738: * cplus-decl.c (define_label): Updated to treat labels in the same ! 3739: new fashion that c-decl.c treats them. ! 3740: ! 3741: * cplus-*.c: C++ front-end files now support a generic ! 3742: class-browser interface. It is up to some adventurous hacker to ! 3743: implement the class browser. ! 3744: ! 3745: * cplus-*.c: C++ front-end files no longer #include rtl.h. ! 3746: ! 3747: Sun Sep 30 15:53:02 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3748: ! 3749: * cccp.c (make_assertion): New function. ! 3750: (main): Handle -A by calling make_assertion. ! 3751: -A- gets rid of predefined macros and those specified earlier. ! 3752: ! 3753: * print-tree.c (print_node_brief): Declare i for printing REAL_CST. ! 3754: ! 3755: * recog.c (immediate_operand, nonmemory_operand): Don't accept ! 3756: integer constants if caller wants a floating mode. ! 3757: ! 3758: Sat Sep 29 18:40:08 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3759: ! 3760: * reload1.c (emit_reload_insns): Handle preserving death info ! 3761: with find_equiv_reg. ! 3762: ! 3763: * reload.c (find_equiv_reg): Handle INSN_CLOBBERS_REGNO_P. ! 3764: ! 3765: * fixincludes: For link pointing outside /usr/include, ! 3766: use $x rather than $dest. ! 3767: ! 3768: * optabs.c (expand_float, expand_fix): Use dconst1, not 1.0. ! 3769: ! 3770: Sat Sep 29 06:38:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3771: ! 3772: * emit-rtl.c (try_split): Use emit_insn_after and delete_insn to ! 3773: ensure that the correct insn chain is maintained in the presence of ! 3774: SEQUENCEs; be careful if the insn being split has a following BARRIER. ! 3775: * jump.c (delete_insn): Correctly update insn chain when deleting ! 3776: insn following or preceeding a SEQUENCE. ! 3777: ! 3778: Fri Sep 28 16:07:42 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3779: ! 3780: * c-parse.y (yylex): Use REAL_VALUE_TRUNCATE for `f' suffix. ! 3781: ! 3782: * fold-const.c (const_binop): Don't initialize REAL_VALUE_TYPE decls. ! 3783: ! 3784: Thu Sep 27 14:06:37 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3785: ! 3786: * expr.c (expand_expr): Set MEM_VOLATILE_P from TREE_THIS_VOLATILE. ! 3787: ! 3788: Wed Sep 26 00:21:23 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3789: ! 3790: * tm-mips-news.h: New file. ! 3791: ! 3792: * out-i860.c (output_size_for_block_move): Don't decrement. ! 3793: (output_block_move): Decrement initial storing address instead. ! 3794: ! 3795: * c-parse.y (yylex): Always try unsigned int if `u' is written. ! 3796: ! 3797: * c-typeck.c (build_unary_op): Don't let &* make an lvalue. ! 3798: ! 3799: * c-parse.y (initlist): Use [N] rather than case N: for array index. ! 3800: ! 3801: * tm-seq386.h (LINK_SPEC): Define it. ! 3802: ! 3803: * c-parse.y (yylex): Don't try signed int for nondecimal constant ! 3804: if -traditional. Improve messages for -Wtraditional. ! 3805: ! 3806: * stor-layout.c (layout_record): Avoid using DECL_SIZE_UNIT. ! 3807: ! 3808: * jump.c (jump_optimize): Scan all insns for label refs. ! 3809: (mark_jump_label): Quickly ignore uninteresting rtl types. ! 3810: * rtl.def (INSN, CALL_INSN): Add a slot for JUMP_LABEL. ! 3811: ! 3812: * jump.c (jump_optimize): Try combining stack adjusts with pushes. ! 3813: ! 3814: Mon Sep 24 07:31:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3815: ! 3816: * stmt.c (expand_computed_goto): Emit barrier after jump. ! 3817: ! 3818: * expr.c (case LABEL_DECL): Return a MEM, so we can take its ! 3819: address; correctly form LABEL_REF. ! 3820: ! 3821: Sun Sep 23 22:54:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3822: ! 3823: * loop.c (struct movable): Delete field SET_EQUAL; new field MOVE_INSN. ! 3824: (scan_loop): Only use REG_EQUAL note under very restricted ! 3825: cirsumstances. Set MOVE_INSN field in movables when appropriate. ! 3826: (combine_movables): Simplify matching test now that we only have one ! 3827: source field. ! 3828: (move_movables): Handle MOVE_INSN movables by emitting a new move ! 3829: insn in front of the loop. ! 3830: Correct typo in checking for CALL_INSN. ! 3831: Don't try to make a REG_EQUAL note. ! 3832: (count_loop_regs_set): Remove extraneous assignment to MAY_NOT_MOVE. ! 3833: ! 3834: Sun Sep 23 14:59:21 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3835: ! 3836: * cccp.c (S_ISREG): Define it unless overridden. ! 3837: (main, finclude): Use that. ! 3838: ! 3839: * reload1.c (reload): If insn after a function call uses the ! 3840: function value, and that reg is spilled, and the insn might ! 3841: use it for reloading, add an extra need. ! 3842: (reload_as_need): Detect such insns for new arg to choose_reload_regs. ! 3843: (choose_reload_regs): In that case, don't choose function value reg. ! 3844: ! 3845: * tm-convex1.h, tm-convex2.h (CPP_SPEC): Define __NO_INLINE_MATH. ! 3846: ! 3847: Sun Sep 23 07:52:32 1990 Michael Tiemann (tiemann at cygnus.com) ! 3848: ! 3849: * version.c (version_string): Bumped to 1.90.02. ! 3850: ! 3851: * final.c (leaf_function): Variable now non-static. ! 3852: * final.c (only_leaf_regs_used): Function now non-static. ! 3853: * final.c (leaf_function_p): Move initialization of ! 3854: `leaf_function' from here... ! 3855: * toplev.c (compile_file): ...to here. We want to know the ! 3856: value of `leaf_function' when we perform code reorginization. ! 3857: * final.c (leaf_function_p): If profiling arcs, we cannot have ! 3858: a leaf function. Also, we have to look at insns in ! 3859: `epilogue_delay_list' to know that all our constraints are ! 3860: satisfied. ! 3861: * final.c (only_leaf_regs_used): Have to look in ! 3862: `epilogue_delay_list' to know that all our constraints are ! 3863: satisfied. ! 3864: ! 3865: * toplev.c (warning_with_file_and_line,warning): Declare third ! 3866: argument V3 for warnings that require 3 `%' expressions in S. ! 3867: * toplev.c (strip_off_ending): New helper function that removes ! 3868: a GCC-recognized filename extension. Call this function in ! 3869: GCC instead of expanding it inline in C code everywhere. ! 3870: ! 3871: * sched.c (schedule_block): The last basic block does not have ! 3872: no live registers. Also, check that we don't copy from an ! 3873: entry in `basic_block_live_at_start' that does not exist. ! 3874: * sched.c (update_reg_first_use): When splitting insns, the ! 3875: insn that is in REG_FIRST_USE might become a NOTE, and a new ! 3876: insn become the insn that should be considered the first use. ! 3877: `update_first_use' keeps REG_FIRST_USE up to date. ! 3878: * sched.c (update_links): Call note_stores with ! 3879: `update_first_use' when an insn splits. ! 3880: ! 3881: Sun Sep 23 00:05:49 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3882: ! 3883: * c-decl.c (grokdeclarator): Put var array bound in save_expr. ! 3884: ! 3885: Sat Sep 22 14:01:00 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3886: ! 3887: * tree.c (build_index_type): Don't hash variable-bound type. ! 3888: ! 3889: * c-decl.c (start_decl): Error here if var-size object initialized. ! 3890: (grokdeclarator, finish_struct): Record types & decls ! 3891: with array sizes not written as constants. ! 3892: * c-tree.h (C_TYPE_VARIABLE_SIZE, C_DECL_VARIABLE_SIZE): New macros. ! 3893: ! 3894: * tm-aix386.h (LIB_SPEC): Different library name for -p. Always -lc. ! 3895: (LINK_SPEC): Don't pass -lg or -g. ! 3896: (CPP_PREDEFINES): Define _I386 and _AIX. Don't define unix. ! 3897: (SDB_DEBUGGING_INFO): Define it. ! 3898: (DBX_DEBUGGING_INFO): Undefine it. ! 3899: (ASM_FILE_START): Output .noopt if not optimizing. ! 3900: (PCC_BITFIELD_TYPE_MATTERS): Define it. ! 3901: (FUNCTION_PROFILER): Add definition. ! 3902: ! 3903: Fri Sep 21 16:26:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3904: ! 3905: * function.c (current_function_epilogue_list): Define this here. ! 3906: * reorg.c: Not here. ! 3907: ! 3908: Fri Sep 21 13:11:11 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3909: ! 3910: * varasm.c (assemble_external_libcall): Frob SYMBOL_REF_USED here. ! 3911: ! 3912: Thu Sep 20 15:29:44 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3913: ! 3914: * expr.h (struct optab): Field libfunc, an rtx, replaces lib_call. ! 3915: * rtl.h (SYMBOL_REF_USED): New macro. ! 3916: * optabs.c (init_optabs): Initialize that field properly. ! 3917: Also initialize new variables *_libfunc. ! 3918: (various functions): Use those vars; use libfunc field. ! 3919: * expr.c (convert_move, emit_block_move, clear_storage): Use the vars. ! 3920: (emit_push_insn, expand_assignment): Likewise. ! 3921: ! 3922: Thu Sep 20 13:51:18 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3923: ! 3924: * out-a29k.c (current_function_epilogue_delay_slot): Renamed from ! 3925: epilogue_delay_slot. ! 3926: ! 3927: * romp.md (movdi): Fix missing short/long qualifier on memory ref. ! 3928: (SFmode/DFmode move patterns): Add explicit alternatives for ! 3929: storing and loading general registers from memory; also add ! 3930: DEFINE_SPLITs for these cases for DFmode. ! 3931: (negsf2,negdf2): Don't use XOR if an operand is a hard FP register. ! 3932: ! 3933: * tm-romp.h (FIXED_REGISTERS, CALL_USED_REGISTERS): Use correct ! 3934: register numbers for FP registers. ! 3935: ! 3936: * output.h (current_function_epilogue_delay_list): New var. ! 3937: * function.c: Include output.h and initialize new var above. ! 3938: * Makefile.in (function.o): Now includes output.h. ! 3939: * reorg.c (epilogue_delay_list): Renamed to ! 3940: current_function_epilogue_delay_list. ! 3941: ! 3942: * final.c (final_scan_insn): Don't delete no-op insn if in delay slot ! 3943: or if we have already pre-scanned. ! 3944: ! 3945: * genconfig.c (max_insns_per_split): Rename from ! 3946: max_insns_per_split_flag and default to 1 instead of 0. ! 3947: ! 3948: * genattrtab.c (n_comma_elts): Return zero for null string. ! 3949: ! 3950: * sdbout.c (MIN,MAX): Add to here; required by recent changes. ! 3951: ! 3952: * expr.c (safe_from_p): A MEM rtx is not safe from an INDIRECT_REF. ! 3953: ! 3954: * c-parse.y (ridpointers): Move definition in front of first use. ! 3955: ! 3956: * reorg.c (mark_referenced_resources): Allow for CODE_LABELs between a ! 3957: CALL_INSN and USE insns preceeding it. ! 3958: (mark_set_resources): Likewise, for following CLOBBERs. ! 3959: ! 3960: Wed Sep 19 17:45:49 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3961: ! 3962: * assert.h (printf): Don't define; should be in stdio.h. ! 3963: ! 3964: * rtl.h (PUT_REG_NOTE_KIND): New macro. ! 3965: * sched.c (attach_deaths): Use it. ! 3966: ! 3967: * reorg.c (mark_referenced_resources): If we put insns to load ! 3968: parameters into the delay slot of a CALL, ignore the USE insns ! 3969: for those parameters. ! 3970: ! 3971: * function.c (fixup_var_refs_1): Don't call fixup_memory_subreg unless ! 3972: its would-be operand is a SUBREG. ! 3973: ! 3974: Wed Sep 19 00:26:59 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3975: ! 3976: * print-tree.c (print_node): Indent before printing RTL. ! 3977: ! 3978: * Makefile.in (protoize.o, unprotoize.o): Look for SYSCALLS.c.X ! 3979: in libsubdir. ! 3980: ! 3981: Tue Sep 18 21:55:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 3982: ! 3983: * cse.c (fold_rtx): For MEM with constant address, split the ! 3984: address into possible base and offset; ensure constant pool ! 3985: value is same mode as our reference unless we are getting a ! 3986: word of a DImode CONST_INT. ! 3987: Treat SYMBOL_REF and LABEL_REF as constants. ! 3988: If we are getting a word at a constant offset from a jump table, ! 3989: replace with the contents of that jump table entry. ! 3990: (cse_insn): When folding jump to variable location (e.g., tablejump), ! 3991: LABEL_REF is the cheapest of all, since the branch would be simple. ! 3992: Special-case changing variable branch to normal unconditional ! 3993: because the RTL may be different (e.g., the variable branch may ! 3994: include a USE). ! 3995: ! 3996: Tue Sep 18 18:33:19 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 3997: ! 3998: * toplev.c (count_error): Handle warnings_are_errors. ! 3999: (W_options): Handle -Werror. ! 4000: ! 4001: Mon Sep 17 00:02:12 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4002: ! 4003: * c-decl.c (lookup_label): Use void as type of label. ! 4004: * stmt.c (label_rtx): No longer static. ! 4005: * expr.c (expand_expr): Handle LABEL_DECL. ! 4006: ! 4007: Sun Sep 16 16:27:29 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4008: ! 4009: * expr.c (expand_builtin): Error for __builtin_nextarg ! 4010: if function definition doesn't have `...'. ! 4011: ! 4012: * expmed.c (store_bit_field): Adjust BITPOS to UNIT all at once. ! 4013: for insv, use mode of operand 3 instead of SImode. Define MAXMODE. ! 4014: Adjust XBITPOS along with mode of XOP0. ! 4015: (extract_bit_field): Adjust XBITPOS along with mode of XOP0. ! 4016: for extv and extzv, use mode of operand 3 thoroughly instead of SImode. ! 4017: ! 4018: * sdbout.c (CHAR_TYPE_SIZE,...): Default definitions of these macros. ! 4019: (plain_type_1): Use those macros to distinguish int and floating types. ! 4020: ! 4021: * toplev.c (rest_of_decl_compilation): Output TYPE_DECL here for sdb ! 4022: only if top_level. ! 4023: ! 4024: * c-parse.y (unary): Don't forget to look up the label. ! 4025: ! 4026: * c-typeck.c (build_conditional_expr): Don't skip arg promotion. ! 4027: ! 4028: Sun Sep 16 14:54:03 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4029: ! 4030: * combine.c (try_combine): If we don't recognize the combined insn, ! 4031: try it without any CLOBBERs. ! 4032: ! 4033: * final.c (final_scan_insn): Prevent CC tracking from thinking ! 4034: that the CC was set by an insn in the delay slot of a CALL_INSN. ! 4035: ! 4036: * expmed.c (init_expmed, expand_divmod): Allow machine to have ! 4037: low cost specified for divides by powers of two if it can do it by ! 4038: a method that if cheaper than the normal shift/branch/adjust mechanism. ! 4039: ! 4040: * cse.c (fold_rtx): When putting constant last, ensure that the ! 4041: resulting insn is valid. ! 4042: ! 4043: * objc-actions (finish_objc): Remove dup defn of gen_declaration_file. ! 4044: ! 4045: * objc-parse.y (ridpointers, token_buffer): Define before use. ! 4046: ! 4047: * reload1.c (scan_paradoxical_subregs): Declare correctly. ! 4048: ! 4049: * tm-romp.h (ENCODE_SEGMENT_INFO): Use INTEGRATED bit to mark ! 4050: SYMBOL_REFs that are addresses of functions (really their data blocks). ! 4051: (LEGITIMATE_CONSTANT_P): Data block addresses of functions are not ! 4052: valid operands. ! 4053: * out-romp.c (symbolic_operand): Likewise. ! 4054: * romp.md (call*): emit_move_insn will now do force_const_mem ! 4055: so it needn't be done explicitly. ! 4056: ! 4057: * out-romp.c (output_fpop): Work around yet another RT fp bug; ! 4058: cannot merge output and first operand for SFmode if general reg. ! 4059: ! 4060: * romp.md: Add new pattern to match combination of copy and test. ! 4061: Use nilo instruction to set CC. ! 4062: ! 4063: Fri Sep 14 07:07:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4064: ! 4065: * c-tree.h: Define all *_type_node trees defined in c-decl.c, in the ! 4066: same order as defined there. ! 4067: ! 4068: Fri Sep 14 08:39:17 1990 Michael Tiemann (tiemann at cygnus.com) ! 4069: ! 4070: * cplus-typeck.c (build_c_cast): Convert READONLY_DECLs to make up ! 4071: for the fact that we do not call `default_conversion' anymore. ! 4072: ! 4073: * function.c (instantiate_virtual_regs): If the function is inline, ! 4074: we don't need to worry about making valid rtl, but we do need to ! 4075: worry about instantiating all virtual registers. Otherwise we must ! 4076: make the rtl valid, and we have other opportunities to eliminate the ! 4077: virtual registers during the compilation. ! 4078: ! 4079: Thu Sep 13 16:00:05 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4080: ! 4081: * reload.c (MATCHES): Check for different rtx's with same reg number. ! 4082: ! 4083: * fixincludes: Discard `.' from value of `files'. ! 4084: ! 4085: * c-parse.y (unary_expr): Use unary && to get address of label. ! 4086: (stmt): Handle `goto *EXPRESSION;'. ! 4087: * stmt.c (expand_computed_goto): New function. ! 4088: ! 4089: * gstdarg.h: New name for stdarg.h. ! 4090: * Makefile (install-headers): Rename gstdarg.h while installing it. ! 4091: ! 4092: * sdbout.c (PUT_SDB_LAST_DIM): Get rid of SDB_DELIM. ! 4093: (plain_type): Output accumulated array dims and size. ! 4094: (plain_type_1): Eliminate arg NOSIZE. Save up dims and size. ! 4095: Call self rather than plain_type for pointers and functions. ! 4096: (sdbout_array_type, sdbout_array_depth): Functions deleted. ! 4097: ! 4098: Thu Sep 13 16:12:15 1990 Michael Tiemann (tiemann at cygnus.com) ! 4099: ! 4100: * cplus-class.c (build_method_call): Fix typo in deciding whether to ! 4101: do hairy or trivial pointer conversions on `this'. ! 4102: ! 4103: * cplus-tree.c (layout_vbasetypes): Don't double-count space taken ! 4104: up by virtual baseclasses. ! 4105: ! 4106: Wed Sep 12 18:14:19 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4107: ! 4108: * tm-m68k.h: Use asm_fprintf widely. ! 4109: (REG_PREFIX, IMMEDIATE_PREFIX, LOCAL_LABEL_PREFIX, USER_LABEL_PREFIX): ! 4110: New macros. ! 4111: ! 4112: * final.c (asm_fprintf): New function. ! 4113: ! 4114: Wed Sep 12 06:07:50 1990 Michael Tiemann (tiemann at cygnus.com) ! 4115: ! 4116: * cplus-dbxout.c (dbxout_type): Output basetype size and offset info ! 4117: in bits, not bytes. ! 4118: ! 4119: * cplus-decl.c (finish_{decl,function}): Set CLASSTYPE_ASM_WRITTEN ! 4120: bit of types used by non-extern VAR_DECLs. Set it also for types of ! 4121: PARM_DECLs and return types of functions defined in the file being ! 4122: compiled. ! 4123: ! 4124: Tue Sep 11 13:21:40 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4125: ! 4126: * sdbout.c (plain_type_1): New argument NOSIZE. Inhibits size output. ! 4127: (sdbout_array_type): Call plain_type_1 directly; set NOSIZE. ! 4128: ! 4129: * sdbout.c (sdbout_array_type): New argument DEPTH. ! 4130: Don't output more than SDB_MAX_DIM dimensions. ! 4131: (sdbout_array_depth): New function. ! 4132: (plain_type_1): Start DEPTH by calling sdbout_array_depth. ! 4133: ! 4134: * gnulib2.c (_bb_init_func): Library member now named _bb. ! 4135: ! 4136: * tree.h: Add comments. ! 4137: ! 4138: Mon Sep 10 17:20:06 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4139: ! 4140: * Makefile.in (install): Fix typo. ! 4141: ! 4142: * cccp.c (macarg1): With -traditional, backslash quotes chars. ! 4143: ! 4144: Mon Sep 10 16:37:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4145: ! 4146: * jump.c (jump_optimize): Don't swap THEN and ELSE parts during jumps ! 4147: runs after reload. ! 4148: ! 4149: Mon Sep 10 13:07:39 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4150: ! 4151: * cccp.c (collect_expansion): Don't actually substitutee into a ! 4152: string if ANSI; just consider warning. ! 4153: ! 4154: * gnulib2.c (div_qrrnd for i386): Fix typo. Rename some args. ! 4155: ! 4156: * sdbout.c (sdbout_array_type): New argument DEPTH. ! 4157: Don't output more than SDB_MAX_DIM dimensions. ! 4158: (plain_type_1): Start DEPTH at 1. ! 4159: ! 4160: Sun Sep 9 22:02:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4161: ! 4162: * out-a29k.c (gen_reg_operand): Exclude SUBREG of a special ! 4163: register. ! 4164: ! 4165: * cse.c: (fold_rtx): Get equivalent for register before seeing if ! 4166: memory reference is to constant pool. ! 4167: (cse_ins): Only call force_const_mem if we actually try to use ! 4168: the constant (i.e., we haven't found anything cheaper). ! 4169: ! 4170: Sun Sep 9 21:49:18 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4171: ! 4172: * ..._BIG_ENDIAN: Now expect definition to be 0 or 1. ! 4173: All refs and defs changed. ! 4174: ! 4175: * tm-mips.h (CPP_SPEC): Error for -EL (for -EB, if DECSTATION). ! 4176: ! 4177: * sdbout.c (sdbout_one_type): Set TREE_ASM_BEING_WRITTEN before ! 4178: recursion, and TREE_ASM_WRITTEN after. ! 4179: ! 4180: Sat Sep 8 16:47:27 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4181: ! 4182: * hard-params.c (main): Don't try to malloc all memory. ! 4183: ! 4184: Sat Sep 8 16:38:53 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4185: ! 4186: * reload1.c (reload): Set reg_equiv_constant if the equivalence ! 4187: is any constant, not just a legitimate constant operand. ! 4188: ! 4189: * final.c (get_attr_length, shorten_branches, final_scan_insn): ! 4190: If JUMP_TABLES_IN_TEXT_SECTION is defined, don't put jump tables ! 4191: in readonly data section, even if it exists. ! 4192: ! 4193: Sat Sep 8 14:07:05 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4194: ! 4195: * Makefile.in (bootstrap*): Pass null ALLOCA definition to recursive ! 4196: makes when compiling with GCC since it never needs alloca.c. ! 4197: ! 4198: * c-typeck.c (build_binary_op_nodefault): Warn for signed < unsigned. ! 4199: Controlled by -W. ! 4200: ! 4201: * tm-i386v4.h: New file. ! 4202: ! 4203: Fri Sep 7 13:10:24 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4204: ! 4205: * cccp.c (STDC_VALUE): New macro, defaulting to 1. ! 4206: (intialize_builtins): Use that. ! 4207: ! 4208: * m68k.md (movqi): `st' does not set cc's. ! 4209: ! 4210: Fri Sep 7 07:49:23 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4211: ! 4212: * genemit.c (gen_expand): Fix test for no C code. ! 4213: If no C code, no MATCH_DUPs, and only one insn to write, handle ! 4214: like DEFINE_INSN and return that insn rather than making a sequence. ! 4215: ! 4216: * emit-rtl.c (add_insn_after): If previous or next insn is a ! 4217: SEQUENCE, update the NEXT_INSN in the last insn in the SEQUENCE or ! 4218: PREV_INSN of the first, as appropriate. ! 4219: (emit_insn_before, emit_jump_insn_before, emit_note_before): ! 4220: Call add_insn_after. ! 4221: ! 4222: * stmt.c (check_for_full_enumeration_handling): If a switch whose index ! 4223: is an enumerated type contains labels for every enumeration value, ! 4224: make the label for the last value the default label since such a ! 4225: switch can never fall through. ! 4226: ! 4227: * genattr.c (fatal): Declare first arg correctly. ! 4228: ! 4229: * combine.c (try_combine): No longer check REG_FUNCTION_VALUE_P; ! 4230: its value shouldn't matter once RTL generation is complete. ! 4231: (subst): If NOT is present as an operand in commutative operation, ! 4232: put it last to reduce the number of required patterns. ! 4233: ! 4234: * out-romp.c (output_fpops): Align to word boundary before writing ! 4235: any floating-point blocks. ! 4236: ! 4237: * function.c (instantiate_virtual_regs_1): Fix typo in previous change. ! 4238: When a MEM must be copied, use copy_rtx; the PLUS may also be shared. ! 4239: ! 4240: Thu Sep 6 15:19:42 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4241: ! 4242: * gcc.c (do_spec_1): Don't add __ to -D if __ already present. ! 4243: ! 4244: * c-typeck.c (convert_for_assignment): ! 4245: Better warning for FCN * vs. void * ! 4246: Specific warning for char * vs. unsigned char *. ! 4247: ! 4248: Thu Sep 6 14:52:08 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4249: ! 4250: * reorg.c (find_basic_block): Return -1, not 0, if we can't find ! 4251: the basic block. ! 4252: (mark_target_live_regs): Clear PENDING_DEAD_REGS unconditionally. ! 4253: (relax_delay_slots): Don't call optimize_skip for unconditional jump. ! 4254: Only try to remove jump if it is a simple conditional or ! 4255: unconditional jump (but not a tablejump or similar such). ! 4256: ! 4257: * cse.c (invalidate, refers_to_mem_p, cse_rtx_addr_varies_p): ! 4258: Consider (plus (reg) (const_int)) to be a fixed address if REG ! 4259: is constant; old code just handled REG. ! 4260: ! 4261: * genrecog.c (enum routine_type): Use to distinguish two types of ! 4262: routines that we write: recog and split_insns. ! 4263: (make_split_sequence): Write out extern for gen_split_ function. ! 4264: (break_out_subroutines, write_subroutine, write_tree, main): ! 4265: Use new enum routine_type instead of passing "split" or "recog". ! 4266: (write_subroutine): Write correct type for splitting functions and ! 4267: return 0, not -1. ! 4268: (main): Write includes before declarations of gen_split_ functions ! 4269: since "rtx" is needed for them. ! 4270: * rtl.h (try_split, split_insns): Added definitions. ! 4271: ! 4272: Wed Sep 5 16:20:07 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4273: ! 4274: * Makefile.in (includes): Use proper directory. ! 4275: ! 4276: Tue Sep 4 13:59:31 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4277: ! 4278: * c-decl.c (store_parm_decls): Let extra_warnings control ! 4279: warnings about parms not declared. ! 4280: ! 4281: * flow.c (life_analysis): Move code to detect stack-adjust insns. ! 4282: It was unreachable. ! 4283: ! 4284: * gnulib.c, gnulib2.c (abort): #undef in case config.h defines it. ! 4285: ! 4286: Mon Sep 3 17:50:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4287: ! 4288: * calls.c (expand_call): If SETUP_INCOMIMG_VARARGS is defined, pass ! 4289: unnamed args in registers. ! 4290: * function.c (assign_parms): Call SETUP_INCOMING_VARARGS for ! 4291: stdargs as well as varargs; ensure we only call it once. ! 4292: ! 4293: * function.c (instantiate_virtual_regs_1): Don't assume all memory ! 4294: addresses are valid for all insns. ! 4295: ! 4296: Sun Sep 2 22:17:40 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4297: ! 4298: * expr.c (emit_library_call): Push all stack args, then load regs. ! 4299: ! 4300: * c-decl.c (c_build_type_variant): For an ARRAY_TYPE, ! 4301: put the qualifier into the array as well as the element. ! 4302: (grokdeclarator): When a field or variable is supposed to be ! 4303: a const or volatile array, make the array elements const or ! 4304: volatile, but also make the field or variable so. ! 4305: ! 4306: * c-decl.c (grokdeclarator): Turn off the warning for const or volatile ! 4307: function type when making an array. It was useless. ! 4308: ! 4309: Fri Aug 31 16:26:40 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4310: ! 4311: * c-common.c (truthvalue_conversion): Let the ! 4312: language-specific code decide how to convert EXPR ! 4313: if it is not one of the special forms we recognize. ! 4314: ! 4315: Fri Aug 31 15:08:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4316: ! 4317: * gcc.c (execute): Use I instead of undefined var J if DEBUG defined. ! 4318: ! 4319: Fri Aug 31 14:37:36 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4320: ! 4321: * sdbout.c (sdbout_begin_block): Delete excess arg to sdbout_block. ! 4322: ! 4323: Thu Aug 30 21:31:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4324: ! 4325: * expmed.c (extract_bit_field): Fix typos in computations of UNIT. ! 4326: ! 4327: Wed Aug 29 12:33:33 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4328: ! 4329: * sdbout.c (sdbout_reg_parms): Don't advance parm twice. ! 4330: ! 4331: Tue Aug 28 22:49:41 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4332: ! 4333: * cccp.c (delete_newlines): New function. ! 4334: (macroexpand): Remove newlines from args used more than once. ! 4335: ! 4336: Tue Aug 28 22:16:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4337: ! 4338: * Makefile.in (sched.o): Add to list of files to compile. ! 4339: ! 4340: * c-parse.y (position_after_white_space): Declare with correct type. ! 4341: ! 4342: * fold-const.c (optimize_bit_field_compare): Fix typo. ! 4343: ! 4344: * reorg.c (split_insns): No longer need extern for this here. ! 4345: ! 4346: * toplev.c (sched_dump_file): Define. ! 4347: (compile_file): Initialize and print sched_time and sched2_time. ! 4348: ! 4349: * local-alloc.c (block_alloc): Fix typo in allocation of insn_map. ! 4350: ! 4351: * cse.c (cse_insn): Try related value in case where CONST is seen ! 4352: first and SYMBOL_REF later. ! 4353: ! 4354: Tue Aug 28 16:26:50 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4355: ! 4356: * cccp.c (main): Don't modify or validate arg of -D here. ! 4357: (make_definition): Do it all here. ! 4358: ! 4359: * function.c (assign_parms): Reenable `register' for parms. ! 4360: ! 4361: Tue Aug 28 07:12:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4362: ! 4363: * tm-a29k.h (CONST_COSTS): All CONST_INTs are cost zero; adjust ! 4364: SYMBOL_REF and CONST_DOUBLE costs to reflect their actual cost. ! 4365: ! 4366: * expr.c (expand_expr): Don't suppress EXPAND_SUM here if not Pmode. ! 4367: (expand_expr, case *_DECL): Return constant address if ! 4368: EXPAND_SUM or EXPAND_INTO_STACK in addition to EXPAND_CONST_ADDRESS; ! 4369: all of these cases will later call memory_address. ! 4370: (expand_expr, case COMPONENT_REF): Always make recursive call with ! 4371: EXPAND_SUM. ! 4372: (expand_expr, case PLUS_EXPR): Try to form constant if X + CONST and ! 4373: mode is Pmode without EXPAND_SUM; if not EXPAND_SUM, use force_operand. ! 4374: Check for MODE != Pmode with EXPAND_SUM here. ! 4375: (expand_expr, case MINUS_EXPR): Always process X - CONST_INT as ! 4376: X + (-CONST_INT)). ! 4377: ! 4378: Sun Aug 26 23:10:10 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4379: ! 4380: * c-decl.c (c_decode_option): Handle -funsigned-bitfields. ! 4381: (grokdeclarator): Do the real work. ! 4382: (grokfield): Pass either FIELD or BITFIELD to grokdeclarator. ! 4383: ! 4384: * tm-att386.h (asm_output_common): Use SIZE, not ROUNDED. ! 4385: ! 4386: Sat Aug 25 17:17:27 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4387: ! 4388: * c-parse.y (unary_expr): Turn off handling of &... ! 4389: * c-decl.c (store_parm_decls): Turn off extra dummy parameter. ! 4390: ! 4391: * tm-att386.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): New macros. ! 4392: (BSS_SECTION_ASM_OP): New macro. ! 4393: (ASM_OUTPUT_LOCAL): Call bss_section, don't just print .bss. ! 4394: ! 4395: * combine.c (subst): Handle shift within mem, as multiplication. ! 4396: ! 4397: Sat Aug 25 11:43:09 1990 Michael Tiemann (tiemann at cygnus.com) ! 4398: ! 4399: * final.c (alter_cond): Handle CC_INVERTED. ! 4400: ! 4401: * conditions.h (CC_INVERTED): New flag indicating that the condition ! 4402: tested leaves the falgs set opposite to the condition tested. This ! 4403: is unsafe for IEEE floating point operations, but useful for integer ! 4404: operations which can combine with condition-code setting operations. ! 4405: ! 4406: * c-parse.y (position_after_white_space): New function. Skips ! 4407: all of the whitespace at the current location in the input ! 4408: file, taking NEXTCHAR into account. Changed all callers of ! 4409: `skip_white_space' in grammar to use this function instead. ! 4410: ! 4411: * genrecog.c (main): Generate code which is more easily optimized by ! 4412: GCC's cse. In particular, start each recognizer with the address of ! 4413: `recog_operands' in a register. ! 4414: ! 4415: * reload.c (combine_reloads): Can only combine reloads if the ! 4416: register we find can hold the entire output reload (i.e., SFmode ! 4417: register may not be suitable for combining with DFmode register). ! 4418: ! 4419: * optabs.c (have_sub2_insn): Fixed typo. ! 4420: * combine.c (combine_instructions): Fixed typo in comment. ! 4421: ! 4422: * function.c (expand_function_end): Emit a barrier after a RETURN ! 4423: jump. ! 4424: ! 4425: * Added diffs for new instruction scheduling code. ! 4426: * emit-rtl.c (try_split): Moved here from reorg.c and made ! 4427: public. Both instruction scheduling and delayed branch ! 4428: filling now use the same code to split insns. ! 4429: * flags.h: Add new flags FLAG_SCHEDULE_INSNS for instruction ! 4430: scheduling before register allocation and ! 4431: FLAG_SCHEDULE_INSNS_AFTER_RELOAD for insn scheduling after ! 4432: register allocation. ! 4433: * recog.c (constrain_operands): Recognize pseudo registers as ! 4434: registers for the purpose of insn constraint matching before ! 4435: register allocation. Otherwise, the insn scheduler assumes ! 4436: the operands will be memory, which is usually wrong (and ! 4437: causes it to build bad schedules). ! 4438: * sched.c (order_calls): New function. For two CALL_INSNS in ! 4439: the rtl chain, we set up a constraint that the second ! 4440: CALL_INSN may not be scheduled to run before the first. ! 4441: (sched_analyze_*): Three kinds of dependencies (true, anti, ! 4442: and output) constrain the order in which insns can be ! 4443: rearranged and still preserve their execution semantics. ! 4444: We now handle dependencies for pseudo and hard register usage ! 4445: and for memory usage in these functions. ! 4446: (launch_links): The ordering of which newly ready insns to ! 4447: execute is now preserved according to their `priority' in the ! 4448: insn chain, and no longer on their order in the dependency ! 4449: list from which they were launched. ! 4450: (schedule_block): Removed support for trying to schedule insns ! 4451: taking branch delays into account. Reorg.c should be hacked ! 4452: to understand which insns to pull into delay slots and which ! 4453: insns to leave alone. ! 4454: (schedule_block): (Re-)compute all register life information here. ! 4455: No longer dependent on flow to keep `basic_block_live_at_end' ! 4456: allocated. ! 4457: (schedule_insns): Recompute LABEL->BASIC BLOCK mapping, so we ! 4458: can compute register life information. ! 4459: * rtl.c (add_dependence): New function to add and remove insn ! 4460: dependencies. If an insn (I2) must execute after another ! 4461: (I1), we add an INSN_LIST containing I1 to I2's LOG_LINKS. ! 4462: If such an INSN_LIST is already in I2's LOG_LINKS, we don't ! 4463: add a second. ! 4464: (remove_dependence): Similar, but removes dependencies. May ! 4465: not actually be needed. ! 4466: * toplev.c (compile_file,rest_of_compilation): Added code for ! 4467: dumping info about insn scheduling. ! 4468: ! 4469: Fri Aug 24 17:24:03 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4470: ! 4471: * Implement `aligned (INTEGER)' attribute for real. ! 4472: * c-parse.y (attrib): Really record info for `aligned' attribute. ! 4473: Don't warn for any integer alignment. ! 4474: (attribute_list): Make a list. ! 4475: (initdcl, notype_initdcl, component_declarator): Handle that info. ! 4476: * c-common.c (decl_attributes): New function. ! 4477: ! 4478: Fri Aug 24 07:12:05 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4479: ! 4480: * genattrtab.c (insn-config.h): This is really needed after all. ! 4481: * Makefile.in (genattrab.o): Show dependency on insn-config.h. ! 4482: ! 4483: * local-alloc.c (block_alloc): Don't update qty_birth for a ! 4484: register whose quantity is <= 0. ! 4485: ! 4486: * fold-const.c (decode_field_reference): Actually obtain unsigned ! 4487: type where one is wanted. ! 4488: (merge_component_references): Correctly test for mutually exclusive ! 4489: conditions. ! 4490: ! 4491: Thu Aug 23 14:56:44 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4492: ! 4493: * c-typeck.c (digest_initializer): No pedantic warning for string ! 4494: and array of unsigned char. ! 4495: ! 4496: * tree.c (get_identifier): Do id_clash_len stuff if length equals that. ! 4497: ! 4498: Thu Aug 23 10:30:10 1990 Michael Tiemann (tiemann at cygnus.com) ! 4499: ! 4500: * cplus-tree.h (CLASSTYPE_CID): Key off of TYPE_MAIN_VARIANT. ! 4501: ! 4502: Thu Aug 23 06:44:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4503: ! 4504: * out-romp.c (romp_pushes_stack): Don't count ! 4505: current_function_pretend_args_size in size of stack. ! 4506: ! 4507: Wed Aug 22 18:00:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4508: ! 4509: * tm-a29k.h, tm-a29kunix.h, xm-a29k.h, a29k.md, out-a29k.c: New files. ! 4510: ! 4511: * config.gcc (a29k-unix): New target. ! 4512: ! 4513: * calls.c (expand_call): Allow FUNCTION_ARG to return an EXPR_LIST ! 4514: specifying multiple registers to load. ! 4515: (store_one_arg): Likewise; also delete handling of fully-in-register ! 4516: case, which hasn't been handled here for a while. ! 4517: * expr.c (emit_library_call): Our subset of calling sequence for ! 4518: library routines does not include multiple registers for an arg. ! 4519: ! 4520: Tue Aug 21 17:44:49 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4521: ! 4522: * make-cc1.com: Compile and link version.c. ! 4523: ! 4524: * Makefile.in (install-gnulib): Create libg.a if none already. ! 4525: ! 4526: * expr.c (convert_move): Handle expand_unop retval not same as target. ! 4527: ! 4528: * reload.c (find_reloads): For register letters, don't win if BLK. ! 4529: ! 4530: * sdbout.c (sdbout_toplevel_data): Fix error message. ! 4531: ! 4532: * protoize.c (open): Prototype deleted. ! 4533: ! 4534: * flow.c (mark_set_1, mark_used_regs): Update reg_first_use. ! 4535: (allocate_for_life_analysis): Allocate and clear it. ! 4536: * local-alloc.c (block_alloc): Calculate INSN_MAP. ! 4537: Get first use of each reg from reg_first_use. ! 4538: ! 4539: * tm-vms.h (MAYBE_VMS_FUNCTION_PROLOGUE): Distinguish C from C++. ! 4540: (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Add a const data section. ! 4541: (ASM_OUTPUT_EXTERNAL): Use that section. ! 4542: (SELECT_SECTION): Go to that section when appropriate. ! 4543: ! 4544: Tue Aug 21 18:26:47 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4545: ! 4546: * reorg.c (fill_simple_delay_slots): Mark anything referenced by an ! 4547: insn that will be placed in a delay slot in the epilogue as being ! 4548: needed at the end of the function. ! 4549: ! 4550: * cse.c (constant_pool_entries_found): New static var. ! 4551: (cse_main): Initialize it. ! 4552: (use_related_value): Correctly look for registers in hash table. ! 4553: (fold_rtx): Fold constant pool entries to their constants and ! 4554: set constant_pool_entries_found. ! 4555: (cse_insn): If we weren't able to place a constant in an insn ! 4556: and we have previously seen constant pool entries used, set up ! 4557: to try the constant pool entry also. ! 4558: ! 4559: Mon Aug 20 12:14:27 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4560: ! 4561: * function.c (assign_parms): Set LAST_NAMED for parm before dummy. ! 4562: See August 9 change in c-parse.y. ! 4563: ! 4564: * gcc.c (process_command): Split -oFOO into two arguments. ! 4565: ! 4566: * stmt.c (expand_asm_operands): Handle COMPONENT_REF and ! 4567: ARRAY_REF directly as output operands. Avoids crash if BLKmode. ! 4568: ! 4569: * c-parse.y, cplus-parse.y, objc-parse.y: Include stdio before input.h. ! 4570: * input.h: Declare finput. ! 4571: ! 4572: * expr.c (emit_push_insn): Don't adjust for EXTRA separately ! 4573: if will have to adjust the stack anyway. ! 4574: ! 4575: * m68k.md (*sh*si3): On 68000, optimize case of >= 16 bits. ! 4576: ! 4577: * varasm.c (decode_rtx_const): Don't dereference a PLUS ! 4578: subexpression of a CONST twice. ! 4579: ! 4580: Sun Aug 19 21:51:51 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4581: ! 4582: * toplev.c (finput): Define here. ! 4583: * *-parse.y (lineno, finput): Duplicate definitions deleted. ! 4584: ! 4585: * global-alloc.c (find_reg): Test best_reg against 0, ! 4586: not first_pseudo_register. ! 4587: ! 4588: Sun Aug 19 17:48:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4589: ! 4590: * explow.c (plus_constant): If adding to constant pool constant, ! 4591: return a new one. ! 4592: ! 4593: * genattrtab.c: Need not include insn-config.h. ! 4594: ! 4595: Sun Aug 19 17:23:10 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4596: ! 4597: * tm-hp9k320bsd.h (CPP_SPEC): Def __HAVE_68881__ like __HAVE_FPU__. ! 4598: ! 4599: * Makefile.in (USE_ALLOCA): Test was backwards. ! 4600: (USE_HOST_ALLOCA): Likewise. ! 4601: ! 4602: Sun Aug 19 09:58:16 1990 Michael Tiemann (tiemann at cygnus.com) ! 4603: ! 4604: * stmt.c: Fixes from 2.0 for fixup_goto incorporated here. ! 4605: ! 4606: * cplus-decl2.c (write_vtable_entries): Don't test TREE_EXTERNAL ! 4607: of DECL_CONTEXT (FN). TREE_EXTERNAL is not meaningful for types. ! 4608: ! 4609: Fri Aug 17 22:14:09 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4610: ! 4611: * optabs.c (emit_cmp_insn): Don't abort after floating lib cmp. ! 4612: ! 4613: Thu Aug 16 23:16:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4614: ! 4615: * varasm.c (assemble_variable, assemble_static_space): Don't ! 4616: call data section if -fshared-data. If this section is needed, ! 4617: it should be entered from elsewhere, and this is believe to be ! 4618: done in all known cases. ! 4619: (output_constant_pool): Add support for ASM_OUTPUT_SPECIAL_POOL_ENTRY ! 4620: which writes certain constant pool entries specially; used for TOC ! 4621: on RS/6000. ! 4622: (assemble_external_libcall): New function. ! 4623: * expr.c (emit_library_call): Call it. ! 4624: ! 4625: * reorg.c (mark_target_live_regs): Don't follow around infinite loops. ! 4626: ! 4627: * varasm.c (struct rtx_cont): Don't use enums in bit fields if ! 4628: ONLY_INT_FIELDS is defined. ! 4629: ! 4630: * cse.c (remove): Rename to remove_from_table to avoid conflict ! 4631: with `remove' defined in stdio.h. ! 4632: ! 4633: Thu Aug 16 22:44:35 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4634: ! 4635: * stmt.c: fixup_gotos must ignore blocks started after the goto. ! 4636: (block_start_count): New variable, and slot in some structures. ! 4637: (expand_function_start): Initialize it. ! 4638: (expand_start_bindings): Increment it and store in struct nesting. ! 4639: (expand_goto): Store it in struct goto_fixup. ! 4640: (fixup_gotos): Compare fixup's count with block's count. ! 4641: (save_stmt_status, restore_stmt_status): Handle block_start_count. ! 4642: * function.h (struct function): Make slot to save it. ! 4643: ! 4644: Thu Aug 16 18:02:03 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4645: ! 4646: * obtabs.c (expand_fix, expand_float): Support direct conversion ! 4647: between SFmode and fixed modes by library call. ! 4648: ! 4649: Wed Aug 15 18:36:28 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4650: ! 4651: * cccp.c (main): Allow -M to work on .s files by checking for .s ! 4652: and .S suffixes when writing dependencies. ! 4653: ! 4654: * reorg.c (optimize_skip, fill_eager_delay_slots, try_host_target): ! 4655: Don't need to call can_reverse_comparison_p because invert_jump is ! 4656: safe for floating-point; only reverse_condition isn't. ! 4657: ! 4658: Wed Aug 15 15:50:36 1990 Michael Tiemann (tiemann at cygnus.com) ! 4659: ! 4660: * dbxout.c (dbxout_type): Skip past const and volatile qualifiers ! 4661: that might appear in method names. ! 4662: ! 4663: Wed Aug 15 15:44:17 1990 Richard Stallman (rms at mole.ai.mit.edu) ! 4664: ! 4665: * c-parse.y (hash, is_reserved_word): Use __inline. ! 4666: ! 4667: * cccp.c (main): Support -dN and -dD. Support -lint. ! 4668: (dump_macros): Two new alternatives. ! 4669: (handle_directive): Output macro definitions if -dN or -dD. ! 4670: (rescan): Check comments if -lint. ! 4671: (get_lintcmd): New subroutine. ! 4672: ! 4673: * c-decl.c (c_decode_option): Handle -fshort-double. ! 4674: (init_decl_processing): Create double_type_node accordingly. ! 4675: ! 4676: * c-decl.c (c_decode_option): Handle -Wno... ! 4677: ! 4678: Tue Aug 14 23:10:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4679: ! 4680: * explow.c (break_out_memory_refs): Don't break out reference if ! 4681: constant but not legitimate constant for a machine insn. ! 4682: (memory_address): Only put legitimate constants, rather than all ! 4683: constants, into registers if they are used as an address. ! 4684: ! 4685: Tue Aug 14 14:34:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4686: ! 4687: * reorg.c (steal_delay_list): Can't put something in a ! 4688: non-annulled delay slot that can trap. ! 4689: ! 4690: * tm-i860.h (GO_IF_LEGITIMATE_ADDRESS): Typo testing offset alignment. ! 4691: ! 4692: * cccp.c (do_assert, do_unassert, check_assertion): New functions. ! 4693: (compare_keyword_lists, read_keyword_list, free_keyword_list): ! 4694: New functions. ! 4695: * cexp.y (yylex): Allow `#' as token. ! 4696: Return name and length of symbol. ! 4697: (keywords): New nonterminal. ! 4698: (expr): Recognize # to test an assertion. ! 4699: (U_CHAR, struct arglist): Data types copied from cccp.c. ! 4700: (%union): New alternatives `keywords' and `name'. ! 4701: ! 4702: Mon Aug 13 22:26:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4703: ! 4704: * tm-romp.h (SLOW_BYTE_ACCESS): Set to 0. ! 4705: ! 4706: * expmed.c (store_bit_field, extract_bit_field): Use get_best_mode ! 4707: to select mode to use for accessing memory when bitfield insns don't ! 4708: accept memory. ! 4709: ! 4710: * c-common.c (rewrite_for_merged_ref, make_merged_ref): Deleted. ! 4711: (merge_component_comparisons): Delete from here. ! 4712: * c-tree.h (merge_component_comparisons): No longer global. ! 4713: * c-convert.c (build_binary_op_nodefault): Don't try to merge component ! 4714: references here; now done in fold. ! 4715: * cplus-typeck.c (build_binary_op_nodefault): Likewise. ! 4716: * Makefile.in (fold-const.o): Now includes flags.h. ! 4717: * fold-const.c: Likewise. ! 4718: (STRIP_NOPS): New macro. ! 4719: (decode_field_reference, all_ones_mask): New functions. ! 4720: (merge_component_references): Put rewritten version here. ! 4721: This fixes bugs in the way that comparisons with non-equal ! 4722: constants (!p->a && p->b) are handled and in endianness checking. ! 4723: Also accepts more general comparisons, and, in particular, its ! 4724: own output so more than a pair of operations can be merged. ! 4725: (fold): Call it for TRUTH_{AND*,OR*}_EXPR. ! 4726: ! 4727: * tree.def (BIT_FIELD_REF): New tree code. ! 4728: * expr.c (get_inner_reference): Support BIT_FIELD_REF. ! 4729: If bitfield is a complete mode-sized unit, return that mode; if it ! 4730: is a subset of bits within a mode-sized unit, return VOIDmode. ! 4731: (expand_assignment): Check for BIT_FIELD_REF. ! 4732: Use mode returned from get_inner_reference to see if bit field. ! 4733: (store_constructor): Likewise. ! 4734: (store_field): Don't pass arg BIT_FIELD; use MODE == VOIDmode ! 4735: instead. All callers changed. ! 4736: (expand_expr, case BIT_FIELD_REF): New case. Handled same as ! 4737: COMPONENT_REF. ! 4738: Use mode returned from get_inner_reference rather than DECL_BIT_FIELD. ! 4739: (expand_increment): Must stabilize BIT_FIELD_REF. ! 4740: (do_jump, case NOP_EXPR): Check for inner BIT_FIELD_REF and ARRAY_REF. ! 4741: (do_jump, case COMPONENT_REF): Generalize to handle BIT_FIELD_REF ! 4742: and some ARRAY_REFs also. ! 4743: * fold-const.c (operand_equal_p): Handle BIT_FIELD_REF. ! 4744: * tree.c (staticp): Rework to use switch instead of if-then-else. ! 4745: Add support for BIT_FIELD_REF. ! 4746: (stabilize_reference, simple_cst_equal): Support BIT_FIELD_REF. ! 4747: ! 4748: * c-common.c (truthvalue_conversion): Rework to use switch rather ! 4749: than if-then-else. ! 4750: Generate either TRUTH_{OR*|AND*}_EXPR or comparison operations as ! 4751: much as possible. ! 4752: Handle REAL_CST, ADDR_EXPR, ABS_EXPR, FLOAT_EXPR, FFS_EXPR, ! 4753: LROTATE_EXPR, RROTATE_EXPR, BIT_XOR_EXPR, and MINUS_EXPR. ! 4754: Call fold for COND_EXPRs that we make. ! 4755: * c-convert.c (build_unary_op): invert_truthvalue can't return 0, ! 4756: so don't check for it. ! 4757: (invert_truthvalue): Delete from here. ! 4758: (convert_to_integer, build_conditional_expr): Try to fold COND_EXPR. ! 4759: * c-plus-cvt.c (convert_to_integer): Likewise. ! 4760: * cplus-typeck.c (build_conditional_expr): Likewise. ! 4761: (build_unary_op): invert_truthvalue can't return 0. ! 4762: (invert_truthvalue): Delete from here. ! 4763: * fold-const.c (invert_truthvalue): Move to here. ! 4764: Don't invert floating-point test. ! 4765: Look inside conversions. ! 4766: Use recursive call to negate inside logical operations rather than ! 4767: building a TRUTH_NOT_EXPR. ! 4768: Allow only certain TREE_CODEs as operands; abort for the rest. ! 4769: (fold_convert): Accept second argument that is item being ! 4770: converted to ensure that NOPs have been stripped. ! 4771: (operand_equal_p): Return 0 if either operand has side effects. ! 4772: If both integer or real constants, check the values. ! 4773: Do a more thorough test to see if two items are identical; ! 4774: specifically, compare the operands of simple TREE_CODEs. ! 4775: (omit_one_operand, distribute_bit_expr): New functions. ! 4776: (make_bit_field_ref, optimize_bit_field_compare): Likewise. ! 4777: (fold): Remove LOSES; now done explicitly or by calling ! 4778: omit_one_operand. Some previous uses weren't needed. ! 4779: Try to fold any COND_EXPRs and some COMPOUND_EXPRs we make. ! 4780: Remove pair of NEGATE_EXPRs and BIT_NOT_EXPRs. ! 4781: Convert "- (a - b)" to "b - a" for non-floating-point. ! 4782: ABS_EXPR applied to ABS_EXPR or NEGATE_EXPR is ABS_EXPR of inner arg. ! 4783: Convert "a + (-b)" to "a - b" and "a - (-b)" to "a + b". ! 4784: If adding ANDs with constants that have no bits, in common, try ! 4785: bitwise-or, since we may then be able to distribute the operation, ! 4786: e.g., (a & 7) + (a & 0x70) -> a & 0x77. ! 4787: Add missing last arg to operand_equal_p call. ! 4788: Call distribute_bit_expr for BIT_AND_EXPR and BIT_IOR_EXPR. ! 4789: Exclusive-or with all ones is bit negation. ! 4790: If second arg of BIT_AND_TC_EXPR is constant, convert to BIT_AND_EXPR. ! 4791: Handle TRUTH_NOT_EXPR by calling invert_truthvalue. ! 4792: Call optimize_bit_field_compare for comparisons of bitfields. ! 4793: Handle "a ? 1 : 0" and "a ? 0 : 1" as test or negated test. ! 4794: Simplify "a & 4 ? a & 4 : 0" and "a ? a : 0" to remove conditonal. ! 4795: * stor-layout.c (get_best_mode): New function. ! 4796: * machmode.h: Define it. ! 4797: * tree.c (integer_pow2p): New function. ! 4798: * tree.h: Declare new functions and functions no longer static. ! 4799: ! 4800: Mon Aug 13 17:45:13 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4801: ! 4802: * config.gcc (sun3-mach): New alternative. ! 4803: * tm-sun3mach.h: New file. ! 4804: ! 4805: * m68k.md (bfextu patterns): Set CC_NOT_NEGATIVE. ! 4806: ! 4807: Mon Aug 13 10:14:37 1990 Michael Tiemann (tiemann at cygnus.com) ! 4808: ! 4809: * cplus-decl2.c (flag_minimal_debug): Now is default is ! 4810: -fflag-minimal-debug. ! 4811: ! 4812: * cplus-tree.c (virtual_member): Return the assoc of a non-virtual ! 4813: basetype that comes from a virtual baseclass. Changed callers ! 4814: which used to call `value_member' to call virtual_member instead. ! 4815: ! 4816: Mon Aug 13 06:54:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4817: ! 4818: * optabs.c (expand_twoval_binop): Fix typo. ! 4819: ! 4820: * cse.c (lookup_as_function): Don't assume CODE is a unary ! 4821: operation. It might be a binary op or REG. ! 4822: ! 4823: Sun Aug 12 21:42:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4824: ! 4825: * expr.c (expand_expr, case COND_EXPR): Don't abort if first arg of ! 4826: COND_EXPR isn't a comparison; just suppress the do_store_flag call. ! 4827: ! 4828: Sun Aug 12 14:26:45 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4829: ! 4830: * tree.h (enum built_in_function): Delete comma after last name. ! 4831: * c-parse.h (enum rid): Likewise. ! 4832: * expr.h (enum optab_methods): Likewise. ! 4833: * stab.h: Add dummy enum name at end. ! 4834: ! 4835: * config.gcc (genix): Set tm_file. ! 4836: * tm-genix.h (ASM_OUTPUT_DOUBLE): New overriding definition. ! 4837: ! 4838: * tree.h (struct tree_type, struct tree_decl): Handle ONLY_INT_FIELDS. ! 4839: * rtl.h (struct rtx_def): Likewise. That macro goes in xm-*.h. ! 4840: ! 4841: Sat Aug 11 16:56:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4842: ! 4843: * cplus-decl.c (finish_function): Check value of HAVE_return before ! 4844: calling gen_return. ! 4845: ! 4846: * reorg.c (optimize_skip): Don't reject skip when we jump around an ! 4847: insn and merge at the return point. ! 4848: ! 4849: Fri Aug 10 17:00:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4850: ! 4851: * dbxout.c (dbxout_parms, dbxout_reg_parms): Ignore nameless parms. ! 4852: * sdbout.c (sdbout_parms, sdbout_reg_parms): Ignore nameless parms. ! 4853: ! 4854: Fri Aug 10 14:14:08 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4855: ! 4856: * recog.c (indirect_operand): Modes need not agree if MODE == VOIDmode; ! 4857: remove test from here since it is in memory_operand, which this calls. ! 4858: ! 4859: Thu Aug 9 15:19:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4860: ! 4861: * c-decl.c (store_parm_decls): If function has variable number of args, ! 4862: put a dummy decl at end of parmlist. ! 4863: * c-parse.y (unary_expr): Handle &... with address of dummy decl. ! 4864: ! 4865: * tm-*.h (LEGITIMIZE_ADDRESS): Go to WIN instead of returning. ! 4866: ! 4867: * cccp.c (handle_directive): Add code to support `# DIGIT' ! 4868: but disable it for the time being. ! 4869: ! 4870: * tm-hp9k320.h (CPP_SPEC): Define _HPUX_SOURCE if not ANSI. ! 4871: (CPP_PREDEFINES): Don't define it here. ! 4872: Do define alternatives with __ prepended. ! 4873: ! 4874: Wed Aug 8 14:00:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4875: ! 4876: * out-romp.c: Don't include hard-reg-set; already in insn-output.c. ! 4877: ! 4878: * explow.c: insn-flags.h is needed to see if "probe" insn exists. ! 4879: * Makefile.in (explow.o): Likewise. ! 4880: ! 4881: Wed Aug 8 13:35:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4882: ! 4883: * cccp.c (check_macro_name): Warn if name is `defined'. ! 4884: ! 4885: * tm-sun386i.h (ASM_IDENTIFY_GCC): If profiling, put a NOP after ! 4886: gcc_compiled. ! 4887: ! 4888: Tue Aug 7 23:51:38 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4889: ! 4890: * toplev.c (main): Handle -W options like -f options. ! 4891: This supports -Wnounused, and such like. ! 4892: (warn_uninitialized): New variable, controls those warnings. ! 4893: Set it for -Wuninitialized, and for -W. ! 4894: ! 4895: Tue Aug 7 13:24:58 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4896: ! 4897: * genextract.c (walk_rtx): Fix typo in MATCH_PARALLEL case. ! 4898: ! 4899: * explow.c (allocate_dynamic_stack_space): Pass size of allocated stack ! 4900: to gen_probe. ! 4901: ! 4902: Tue Aug 7 12:19:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4903: ! 4904: * pyr.md (extendsfdf2, truncsfdf2, float*, fix*): Use `&'. ! 4905: ! 4906: Tue Aug 7 07:13:54 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4907: ! 4908: * jump.c (find_cross_jump): Include a USE or CLOBBER in cross jump ! 4909: but don't count it against minimum size. ! 4910: Never return when cross-jump hasn't actually been done. ! 4911: ! 4912: Mon Aug 6 18:50:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4913: ! 4914: * varasm.c: Include regs.h. ! 4915: (decode_reg_name): Remove extern for reg_names; it is in regs.h. ! 4916: * Makefile.in (varasm.o): Depends on regs.h. ! 4917: ! 4918: Mon Aug 6 12:46:07 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4919: ! 4920: * c-decl.c (grokdeclarator): Don't warn if initialized fcn is extern. ! 4921: (start_decl): Don't warn at all for initialized extern. ! 4922: ! 4923: * final.c (final_start_function): Handle PROFILE_BEFORE_PROLOGUE. ! 4924: (profile_function): New subroutine. ! 4925: ! 4926: * tm-i386sco.h: New file. ! 4927: * config.gcc (i386-sco): New alternative. ! 4928: ! 4929: * gcc.c (ENDFILE_SPEC): New macro. ! 4930: (do_spec_1): Handle %E. ! 4931: (link_spec): Use %E. ! 4932: ! 4933: * xm-i386.h (alloca): Define without arg. ! 4934: ! 4935: * Makefile.in (stage*): Use RANLIB_TEST. ! 4936: (LIMITS_H): New variable. ! 4937: (USER_H): Use that. ! 4938: * make-i386sco: New file. ! 4939: ! 4940: Sun Aug 5 13:11:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 4941: ! 4942: * rtl.h: Delete all machine mode defns; include machmode.h instead. ! 4943: * tree.h: Likewise. ! 4944: * machmode.h: New file. ! 4945: * stor-layout.c: No longer include rtl.h. ! 4946: * Makefile.in: (RTL_H, TREE_H): Add machmode.h. ! 4947: (stor-layout.o): No longer depends on RTL_H. ! 4948: ! 4949: * c-common.c (binary_op_error, shorten_compare): Should no longer ! 4950: have been static when moved here. ! 4951: ! 4952: Sun Aug 5 12:57:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 4953: ! 4954: * stor-layout.c (layout_record, layout_union): Test value of ! 4955: PCC_BITFIELD_TYPE_MATTERS for being nonzero, if it is defined. ! 4956: * tm-*.h: Define with value 1. ! 4957: * tm-vax.h (PCC_BITFIELD_TYPE_MATTERS): Depends on -mvaxc-alignment. ! 4958: ! 4959: * proto.h: New file. ! 4960: * Makefile.in (USER_H): Add that file. ! 4961: ! 4962: Sun Aug 5 00:04:08 1990 Michael Tiemann (tiemann at cygnus.com) ! 4963: ! 4964: * cplus-decl2.c (grokfield): It is no longer legal to specify ! 4965: the initializer for a static const member in the class ! 4966: declaration. Dealing with default initializers is basically ! 4967: impossible. ! 4968: ! 4969: * cplus-init.c (build_delete): Don't wrap `addr' in a SAVE_EXPR ! 4970: until it is in fact an address. This allows us to call ! 4971: destructors on the return values of function calls. ! 4972: ! 4973: * cplus-typeck.c (commontype): Fixed bug in OFFSET_TYPE case which ! 4974: led to infinite recursion (since we did not reduce the types ! 4975: before we recursed). ! 4976: ! 4977: * cplus-lex.c (check_newline): Make `#pragma implementation' more ! 4978: forgiving. ! 4979: ! 4980: * cplus-init.c (expand_aggr_init): Changed Jan 20th change so that ! 4981: we test whether TYPE has a constructor defined, and we do not test ! 4982: at all whether INIT was from a GNU constructor expression or not. ! 4983: ! 4984: * cplus-typeck.c (build_modify_expr_1): Don't return ! 4985: `error_mark_node' unless there really was an error. If there is ! 4986: no work to do, return `integer_zero_node'. ! 4987: ! 4988: * cplus-class.c (propagate_basetype_offsets): Count the space ! 4989: between baseclasses, not just the space they occupy. ! 4990: ! 4991: * cplus-typeck.c (commontype): Don't drop the exceptions that are ! 4992: raised by functions and methods. ! 4993: ! 4994: * cplus-cvt.c (convert_to_real): Fix if/else level problem in ! 4995: case where EXPR is of aggregate type. ! 4996: ! 4997: * cplus-decl.c (finish_decl): Emit a line-number note to give ! 4998: users a chance to set a breakpoint before the initialization of an ! 4999: object takes place. ! 5000: ! 5001: * cplus-class.c (build_method_call): If the function we get is not ! 5002: directly from the object we have, call `convert_pointer_to' if the ! 5003: object uses multiple inheritance or virtual baseclasses. ! 5004: ! 5005: * cplus-typeck.c (build_binary_op_nodefault): Don't call ! 5006: `convert_to_pointer' with an argument that might be ! 5007: the integer zero. ! 5008: ! 5009: * cplus-method.c (hack_identifier): Look for DECL_REFERENCE_SLOT ! 5010: in RESULT_DECLs as well. ! 5011: ! 5012: * cplus-init.c (build_vec_delete): Don't forget to deallocate the ! 5013: container if requested. Really use AUTO_DELETE and ! 5014: AUTO_DELETE_VEC with the same interpretation as `build_delete' ! 5015: gives to its AUTO_DELETE parameter. ! 5016: ! 5017: Sat Aug 4 22:08:44 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5018: ! 5019: * jump.c (find_cross_jump): Use prev_nonnone_insn. ! 5020: Don't cross-jump into the middle of a USE-CALL_INSN-CLOBBER ! 5021: block; doing so can confuse reorg.c. ! 5022: ! 5023: * optabs.c (expand_binop, expand_binop, expand_twoval_binop): ! 5024: If predicate doesn't match, ensure that operand is in a pseudo ! 5025: register. Current code assumes that any register will suffice, ! 5026: but an insn may want to reject certain hard registers. ! 5027: (expand_unop, emit_unop_insn, emit_cmp_insn): Likewise. ! 5028: ! 5029: Sat Aug 4 15:29:09 1990 Michael Tiemann (rms at sugar-bombs.ai.mit.edu) ! 5030: ! 5031: * function.c (assign_parms): For parms passed by reference, ! 5032: make the memory object's mode agree with the parm's original ! 5033: type mode. ! 5034: * calls.c (expand_call): Fixed braino in building argument ! 5035: reference when FUNCTION_ARG_PASS_BY_REFERENCE is defined. ! 5036: ! 5037: * varasm.c (assemble_variable): Hack our way around the problem ! 5038: that static class members look like initialized variables for the ! 5039: purposes of establishing FIRST_GLOBAL_OBJECT_NAME. ! 5040: ! 5041: * cplus-lex.c (reinit_parse_for_method): Give error message for ! 5042: common mistake of forgetting the function body. ! 5043: ! 5044: * cplus-typeck.c (build_component_ref): Make better error message ! 5045: when field is not found. ! 5046: ! 5047: * cplus-class.c (finish_struct): TYPE_GETS_*_INIT_REF comes from ! 5048: members as well. ! 5049: ! 5050: * cplus-typeck.c (c_expand_return): Give warning about returning ! 5051: non-lvalues that come from functional casts. ! 5052: ! 5053: * cplus-search.c (get_base_distance): Changed to follow leftmost ! 5054: path only when PARENT == TYPE_MAIN_VARIANT (PARENT). ! 5055: ! 5056: * cplus-class.c (modify_vtable_entries): Call get_base_distance ! 5057: with 0 path_ptr, since we do not appear to use the path computed. ! 5058: ! 5059: Fri Aug 3 07:37:30 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5060: ! 5061: * final.c (leaf_function_p): Delete line advertently retained ! 5062: after change of July 29. ! 5063: ! 5064: * reorg.c (optimize_skip, try_hoist_target): Don't invert jump ! 5065: unless can_reverse_comparison_p says it is OK. Use invert_jump ! 5066: to do it. ! 5067: (fill_simple_delay_slots): Another way flow of control can merge is ! 5068: for two insns to jump to the same place; try to get insns from there. ! 5069: (mostly_true_jump): Return 2 for a jump very likely to be true (the ! 5070: branch back to the start of a loop). ! 5071: (fill_slots_from_thread): Accept new arg LIKELY. If true, see if can ! 5072: put increment in delay slot and undo it after the end of the loop. ! 5073: (fill_eager_delay_slots): Pass new arg to fill_slots_from_thread. ! 5074: If previous insn is conditional jump that also didn't get a delay ! 5075: slot, see if swapping targets helps. ! 5076: ! 5077: Fri Aug 3 00:18:35 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5078: ! 5079: * cccp.c (MAKE_POS): Avoid constant of uncertain signedness. ! 5080: ! 5081: * gnulib2.c (__bb_init_func): Add dummy function to prevent warning. ! 5082: ! 5083: Thu Aug 2 17:44:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5084: ! 5085: * output.h (current_function_return_rtx): Add new variable. ! 5086: * function.h (return_rtx): Likewise. ! 5087: * function.c (push_function_context, pop_function_context): Save ! 5088: and restore current_function_return_rtx. ! 5089: (assign_parms, expand_function_start): Set current_function_return_rtx ! 5090: to what is put in DECL_RTL (DECL_RESULT (current_function_decl)). ! 5091: * reorg.c: No longer uses tree.h. ! 5092: (dbr_schedule): Get result RTL from current_function_return_rtx instead ! 5093: of reading it from current_function_decl. ! 5094: * Makefile.in (reorg.o): No longer depends on TREE_H. ! 5095: ! 5096: * cse.c (remove_invalid_refs): Only invalidate an entry if it ! 5097: references the actual register, not merely something sharing its ! 5098: quantity. ! 5099: (cse_insn): Don't abort if SRC and SRC_EQUIV map to different ! 5100: hash classes. Merge them instead. ! 5101: ! 5102: * romp.md (mulsi3): Emit call to lmul$$ as a regular insn ! 5103: rather than a CALL_INSN. ! 5104: (divsi3, modsi3, udivsi3, umodsi3, call_libfcn): Deleted. ! 5105: (divmodsi4, udivmodsi4): New patterns to call ldiv$$ and uldiv$$ ! 5106: as a normal insn to allow CSE'ing of MOD with DIV. ! 5107: ! 5108: Wed Aug 1 21:56:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5109: ! 5110: * c-parse.y (yylex): Don't warn about non-decimal unsigned by default ! 5111: if `u' was specified. Add similar warning for long and long long. ! 5112: ! 5113: Tue Jul 31 23:31:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5114: ! 5115: * tm-encore.h (FUNCTION_PROFILER): Override, putting `.' in label. ! 5116: ! 5117: * xm-vms.h (const): Delete the definition. ! 5118: ! 5119: Mon Jul 30 18:33:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5120: ! 5121: * c-typeck.c (convert_for_assignment): Normally no warning ! 5122: between char * and unsigned char *, etc. ! 5123: (convert_arguments): Include arg number in incomplete type warning. ! 5124: ! 5125: Mon Jul 30 07:38:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5126: ! 5127: * jump.c (invert_jump): Don't do anything with labels if NLABEL ! 5128: equals JUMP_LABEL. ! 5129: (redirect_jump): Don't try to reference LABEL_NUSES if olabel is ! 5130: zero (meaning this is a return insn). ! 5131: (redirect_exp): Handle case of converting return to jump to ! 5132: label. ! 5133: ! 5134: * dbxout.c (dbxout_parms): Allow parameter at zero offset from ! 5135: AP to be represented as (MEM (REG ...)). ! 5136: * sdbout.c (sdbout_parms): Likewise. ! 5137: ! 5138: Sun Jul 29 22:51:00 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5139: ! 5140: * optabs.c (expand_twoval_binop_convert): Deleted. ! 5141: (expand_twoval_binop): Rework to be handle predicates, modes, and ! 5142: failures in a manner consistent with expand_binop. ! 5143: Move code from expand_twoval_binop_convert inline and rework to ! 5144: no longer hard-wire SImode and to handle failure. ! 5145: ! 5146: * config.gcc: Finish change of July 24th to have make_var_file depend ! 5147: on host machine. ! 5148: ! 5149: * jump.c: Now includes insn-flags.h. ! 5150: (jump_optimize): Try to put a RETURN at the end of the function if ! 5151: control flows through to it. ! 5152: JUMP_LABEL can now be zero for a RETURN or conditional RETURN. ! 5153: Try to convert jump to end of function into (possibly conditional) ! 5154: RETURN. ! 5155: Use next_active_insn instead of next_real_insn; these do the same ! 5156: thing prior to reload, after which USE and CLOBBERs don't matter. ! 5157: redirect_jump may now fail so don't set CHANGED if it does. ! 5158: Delete optimization of jump to RETURN; now subsumed by follow_jumps. ! 5159: Reset INSN_CODE if changing conditional jump to unconditional. ! 5160: (cond_jump_p): Conditional RETURN is conditional jump. ! 5161: (follow_jumps): Change argument name to AFTER_RELOAD. ! 5162: If not after reload, do not chain across a USE or CLOBBER. ! 5163: Recognize RETURN insns. ! 5164: (tension_vector_labels): Likewise. ! 5165: (redirect_jump, redirect_exp): If NLABEL is zero, turn JUMP into a ! 5166: (possibly conditional) RETURN; use validate_change to see if such an ! 5167: insn exists. ! 5168: Now returns non-zero if succeeds, 0 otherwise. ! 5169: Unconditional RETURN looks like (RETURN), not (SET (PC) (RETURN)). ! 5170: (thread_jumps): Ignore any type of RETURN insn. ! 5171: * Makefile.in (jump.o): Depends on insn-flags.h. ! 5172: * loop.c (strength_reduce): Don't confuse conditional return with ! 5173: jump to top of loop when LOOP_TOP == 0. ! 5174: * final.c (leaf_function_p): No longer static; no longer takes an arg. ! 5175: (final_start_function): Don't pass START to leaf_function_p. ! 5176: * romp.md (return pattern): Convert to a named pattern. ! 5177: ! 5178: Sun Jul 29 16:05:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5179: ! 5180: * tm-vms.h (ASM_OUTPUT_EXTERNAL): Check TREE_READONLY. ! 5181: ! 5182: * xm-vms.h (alloca): Use built-in alloca. ! 5183: ! 5184: Sun Jul 29 06:47:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5185: ! 5186: * reorg.c (fill_slots_from_thread): Restore inadvertantly deleted ! 5187: lines. ! 5188: ! 5189: Fri Jul 27 19:53:18 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5190: ! 5191: * Makefile.in (reorg.o): Depends on tree.h, basic-block.h, regs.h, ! 5192: and output.h ! 5193: ! 5194: Fri Jul 27 16:30:03 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5195: ! 5196: * varasm.c (assemble_variable): Handle ASM_OUTPUT_SHARED_COMMON ! 5197: and ASM_OUTPUT_SHARED_LOCAL. ! 5198: ! 5199: * tm-encore.h (SHARED_SECTION_ASM_OP): New macro. ! 5200: (ASM_OUTPUT_SHARED_COMMON, ASM_OUTPUT_SHARED_LOCAL): New. ! 5201: All this waiting for papers from [email protected]. ! 5202: ! 5203: Fri Jul 27 16:10:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5204: ! 5205: * make-romp (CC): Set up to allow use of hc. ! 5206: ! 5207: Fri Jul 27 15:07:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5208: ! 5209: * combine.c (subst): Handle (ASHIFT 1 x) in (EQ (AND ... y) 0) ! 5210: only if little-endian. ! 5211: ! 5212: Thu Jul 26 23:19:15 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5213: ! 5214: * expmed.c (expand_shift): Consistently call protect_from_queue ! 5215: before doing anything else. ! 5216: Always put operand1 of extzv into a register because it is SImode ! 5217: and we assume that this means a register. ! 5218: ! 5219: Thu Jul 26 14:18:11 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5220: ! 5221: * varasm.c (assemble_variable): Delete dead code. ! 5222: DATA_ALIGNMENT takes tree and current alignment and gives new ! 5223: alignment for a non-automatic variable of that type. ! 5224: Also apply CONSTANT_ALIGNMENT to the initial value; it now takes ! 5225: the constant and old alignment and gives the new alignment. ! 5226: Adjust DECL_ALIGN to the resulting alignment. ! 5227: Use floor_log2 consistently instead of duplicating its function. ! 5228: (get_or_assign_label): Use CONSTANT_ALIGNMENT instead of DATA_ALIGNMENT ! 5229: and pass type instead of decl. ! 5230: * expr.c (get_pointer_alignment): Rework to: distinguish reliably ! 5231: between expressions giving the address and those giving the item being ! 5232: addressed; use the alignment from the type of the object being ! 5233: pointer to; return 0 if the type is not a pointer; and other ! 5234: miscellaneous changes. ! 5235: (string_constant): Skip CONVERT_EXPR and NON_LVALUE_EXPR as well ! 5236: as NOP_EXPR. ! 5237: (expand_builtin): Allow get_pointer_alignment to fail, in which case ! 5238: we call the actual function. ! 5239: * stmt.c (expand_decl): Set actual alignment obtained into DECL_ALIGN ! 5240: since it may be better aligned than required and get_pointer_alignment ! 5241: can take advantage of this. ! 5242: * tm-gmicro.h, tm-pyr.h, tm.romp-h: Add or replace definitions of ! 5243: CONSTANT_ALIGNMENT to word-align string constants and ! 5244: DATA_ALIGNMENT to word-align character arrarys for builtin memory ! 5245: functions. ! 5246: ! 5247: * fold-const.c (rshift_double): Reset carry after each shift of ! 5248: one bit. ! 5249: ! 5250: * vax.md (ashrsi3): If right shift by constant, emit as ASHIFTRT. ! 5251: (ashrsi3_const): New pattern to match it. ! 5252: (casel): Delete patterns no longer needed. ! 5253: * cse.c (cse_insn): Remove unneeded part of change of July 23. ! 5254: (fold_rtx): Convert shift with negative constant count to shift in ! 5255: the opposite direction. ! 5256: * combine.c (subst): Likewise. ! 5257: ! 5258: * emit-rtl.c (init_emit_once): Initialize arg_pointer_rtx before ! 5259: struct pointer and static chain values in case they want to use it. ! 5260: ! 5261: Thu Jul 26 12:31:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5262: ! 5263: * final.c (final_scan_insn): Align label table to boundary appropriate ! 5264: for items of its size. ! 5265: (get_attr_length, shorten_branches): Allow for label table alignment. ! 5266: ! 5267: Wed Jul 25 15:06:44 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5268: ! 5269: * fixincludes: Handle uses of _IO* followed by spaces. ! 5270: Change redirections for cd when testing that directory exists. ! 5271: ! 5272: By Tiemann: ! 5273: ! 5274: * emit-rtl.c (next_cc0_user): Handle insns in which cc0 ! 5275: is set and used in the same insn. ! 5276: ! 5277: * final.c (leaf_function_p): Look inside INSNs which contain ! 5278: a delayed-call sequence. ! 5279: (final_start_function): Test `only_leaf_regs_used' before ! 5280: `leaf_function_p', since that is likely to be faster. ! 5281: (final_scan_insns): Normally we don't have NOTICE_UPDATE_CC ! 5282: take action when processing the path of an annulled branch, ! 5283: since that path does not affect the cc's of the fall-through ! 5284: insns at all. However, we cannot always ignore the effect of ! 5285: the cc's when processing a delayed annulled branch: when the ! 5286: delayed annulled branch follows a label and carries a ! 5287: REG_CC_STATUS note, that note must be processed. ! 5288: ! 5289: * genattr.c (main): Generate #defines for annulled branches ! 5290: which are consistent with documentation. ! 5291: ! 5292: * reorg.c: Finish recent rework by modifying code specific to ! 5293: machines that have annulling branches. ! 5294: ! 5295: * c-common.c (merge_component_comparisons): Previous logic did ! 5296: not handle cases of (A == 1) && (B == 1), (A != 0) && (B != 0), ! 5297: and (A != 1) || (B != 1). Fixed by expanding the logic out ! 5298: longhand and letting the compiler do the proper cross-jumping. ! 5299: ! 5300: * tm-vms.h (ASM_OUTPUT_EXTERNAL): Use assemble_name. ! 5301: ! 5302: * expr.c (expand_expr): For BIND_EXPR, do the init for all vars. ! 5303: ! 5304: * stupid.c: Include flags.h. ! 5305: * genrecog.c (main): Make insn-recog.c include flags.h. ! 5306: ! 5307: Sun Jul 22 12:04:43 1990 Michael Tiemann (tiemann at cygnus.com) ! 5308: ! 5309: * cplus-except.c (cplus_expand_end_except): If the user gives a ! 5310: default handler, the exception is considered caught in that ! 5311: handler. ! 5312: * cplus-parse.y (except_stmts): Rest of fix went here, in DEFAULT ! 5313: case. ! 5314: ! 5315: * cplus-decl.c (finish_decl): Don't emit cleanups twice. ! 5316: ! 5317: * cplus-class.c (finish_struct_bits): Don't call ! 5318: `fixup_vbase_offsets'. ! 5319: * cplus-tree.c (fixup_vbase_offsets): #if 0 this function. ! 5320: ! 5321: * cplus-cvt.c (build_default_binary_type_conversion): Handle ! 5322: arguments which are REFERENCE_TYPE. ! 5323: ! 5324: * cplus-method.c (prepare_inline): Set DECL_CONTEXT of this ! 5325: function's parameters. ! 5326: ! 5327: * cplus-decl.c (grokfndecl): When adding a new virtual function ! 5328: entry, RAISES may change a second time. ! 5329: ! 5330: Thu Jul 5 10:44:39 1990 Michael Tiemann (tiemann at cygnus.com) ! 5331: ! 5332: * cplus-decl2.c (grokfield): Static consts need not be initialized ! 5333: in the class definition. ! 5334: ! 5335: Mon Jul 2 06:12:49 1990 Michael Tiemann (tiemann at cygnus.com) ! 5336: ! 5337: * cplus-init.c (resolve_offset_ref): If BASETYPE is not a base ! 5338: type for the current class, give error and return. ! 5339: ! 5340: Sun Jul 1 00:18:47 1990 Michael Tiemann (tiemann at cygnus.com) ! 5341: ! 5342: * cplus-decl.c (finish_function): Throw away more code if we have ! 5343: an inline function from the interface. ! 5344: ! 5345: * cplus-class.c (add_virtual_function): Set DECL_VINDEX from the ! 5346: virtual function which comes from the vtable shared by ! 5347: CURRENT_CLASS_TYPE, if possibe. ! 5348: ! 5349: * cplus-typeck.c (build_binary_op): Call `default_conversion' ! 5350: after doing type instantiation. ! 5351: ! 5352: * cplus-init.c (build_new): New 2.0 interpretation: `new int (10)' ! 5353: means allocate an int, and initialize it with 10. ! 5354: ! 5355: * cplus-init.c (emit_base_init): Completion of fix for virtual ! 5356: function table initialization. @@ BTW, this may now cause extra ! 5357: virtual function table initializations. They will all be correct, ! 5358: but they may also be redundant. GCC's optimizer doesn't know how ! 5359: to remove even the simplest such redundancy. ! 5360: ! 5361: Sat Jun 30 13:54:30 1990 Michael Tiemann (tiemann at cygnus.com) ! 5362: ! 5363: * cplus-class.c (finish_base_struct): Store BASETYPE in the ! 5364: VFIELDS chain (in its TREE_TYPE). ! 5365: ! 5366: Fri Jun 29 09:26:17 1990 Michael Tiemann (tiemann at cygnus.com) ! 5367: ! 5368: * cplus-class.c (build_vtable,prepare_fresh_vtable): Stash the ! 5369: type that caused this vtable to be defined in DECL_CONTEXT ! 5370: * cplus-search.c (bfs_unmark_finished_struct): Work around ! 5371: DECL_CONTEXT conflict for vtables. @@ NOT A SOLUTION. ! 5372: ! 5373: * cplus-lex.c: Extend meaning of `#pragma implementation' ! 5374: to allow files to `implement' types from general headers. ! 5375: ! 5376: Tue Jul 24 22:18:23 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5377: ! 5378: * reorg.c: Major rework. Changes includes: ! 5379: (mark_target_live_regs): Scan code to compute which registers are ! 5380: live at particular insns. Uses tables created by flow, REG_DEAD ! 5381: notes, and registers set before they are used. ! 5382: (emit_delay_sequence): Always write SEQUENCE as INSN. Many routines ! 5383: changed to reflect this. ! 5384: (fill_simple_delay_slots): Loop for merge point when target of jump ! 5385: comes back to fallthrough code. Try to get insns from there. ! 5386: (fill_eager_delay_slots): Fallthrough and target case merged into new ! 5387: function fill_slots_from_thread. ! 5388: ! 5389: * tm-romp.h, romp.md, out-romp.c, xm-romp.h, make-romp: New files to ! 5390: support the ROMP microprocessor, used in the IBM PC RT. ! 5391: ! 5392: * recog.c (comparison_operator): New function. ! 5393: ! 5394: * jump.c (jump_optimize): If putting constant into register, see ! 5395: if it is already present in the register. ! 5396: ! 5397: Tue Jul 24 15:35:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5398: ! 5399: * c-typeck.c (build_binary_op_nodefault): Allow compare of any ! 5400: pointer with const void *, etc. ! 5401: ! 5402: Tue Jul 24 17:10:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5403: ! 5404: * expr.c (get_inner_reference): New function. ! 5405: (expand_assignment): Use it to find out about our target. ! 5406: (expand_expr, case COMPONENT_REF): Likewise. ! 5407: (expand_expr, case COND_EXPR): If can do store-flag, convert ! 5408: X ? A+1 : A to A + (X!=0); fold-const made the former from the latter. ! 5409: Only create label when we know we will need it. ! 5410: Simplify unnessarily complex call to safe_from_p. ! 5411: (expand_expr): Make new variable UNSIGNEDP and use it instead ! 5412: of TREE_UNSIGNED (type). Also, consistently use existing ! 5413: variable TYPE instead of TREE_TYPE (exp) and similarly for MODE. ! 5414: ! 5415: Tue Jul 24 13:50:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5416: ! 5417: * cccp.c (collect_expansion): Error if ## at beg or end. ! 5418: ! 5419: * c-decl.c (grokdeclarator): Error for long, etc. with nonarith type. ! 5420: Error for signed or unsigned with floating type. ! 5421: Error for initialized parm. ! 5422: ! 5423: * config.gcc: Make make_var_file depend on host machine, not target. ! 5424: ! 5425: Tue Jul 24 13:40:35 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5426: ! 5427: * varasm.c (decode_reg_name): Make TABLE static for non-GCC compilers. ! 5428: ! 5429: * c-typeck.c (type_for_size, type_for_mode): Delete from here. ! 5430: (binary_op_error, shorten_compare, truthvalue_conversion): Likewise. ! 5431: * cplus-typeck.c: Delete second copy from here. ! 5432: * c-common: Move above functions to here. ! 5433: ! 5434: Tue Jul 24 12:20:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5435: ! 5436: * cccp.c (path_include): Fix typo in var name. ! 5437: ! 5438: Mon Jul 23 17:46:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5439: ! 5440: * config.gcc: Remove redundant assignment to tm_file for 88000. ! 5441: Fix typo when assigning to make_var_file. ! 5442: ! 5443: * function.c (optimize_bit_field): Fix typo in change_address call. ! 5444: ! 5445: Mon Jul 23 16:59:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5446: ! 5447: * varasm.c (decode_reg_name): Ignore % at beginning of name. ! 5448: Support extra names defined by ADDITIONAL_REGISTER_NAMES. ! 5449: * tm-i386.h (ADDITIONAL_REGISTER_NAMES): Define it. ! 5450: ! 5451: * dbxout.c (dbxout_init): Handle new macros ! 5452: ASM_OUTPUT_MAIN_SOURCE_FILENAME and ASM_OUTPUT_MAIN_SOURCE_DIRECTORY. ! 5453: * sdbout.c (sdbout_filename): Handle ASM_OUTPUT_MAIN_SOURCE_FILENAME. ! 5454: ! 5455: Mon Jul 23 16:50:32 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5456: ! 5457: * tm-vax.h (NOTICE_UPDATE_CC): CALL clobbers CC if inside PARALLEL too. ! 5458: ! 5459: * vax.md (call_value_pop): Fix typo in argument number. ! 5460: ! 5461: * cse.c (cse_insn): Shift's aren't associative if in different ! 5462: directions, even if same rtx_code. ! 5463: Try to fold result of associating the operation in case it is now ! 5464: trivial. ! 5465: ! 5466: * jump.c (mark_modified_reg): New function. ! 5467: (thread_jumps): Look at insns between target of first jump and the ! 5468: second jump. Mark any registers that they modify and record if they ! 5469: modify memory. ! 5470: Don't go past a CODE_LABEL. ! 5471: If we pass an unconditional jump, follow it. ! 5472: Use prev_nonnote_insn instead of explicit loop. ! 5473: (rtx_equal_for_thread_p): Consult recorded information to see if ! 5474: memory of registers were modified prior to second jump. ! 5475: * Makefile.in (jump.o): Now needs hard-reg-set.h. ! 5476: ! 5477: Sat Jul 21 13:58:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5478: ! 5479: * cccp.c (O_RDONLY): Define it if not defined. ! 5480: ! 5481: * c-decl.c (finish_decl): No error for nonstatic incomplete array. ! 5482: ! 5483: Sat Jul 21 08:24:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5484: ! 5485: * alliant.md (call patterns): Function address must be memory operand. ! 5486: * convex.md, m68k.md, mips.md, ns32k.md, tahoe.md, vax.md: Likewise. ! 5487: ! 5488: Thu Jul 19 16:06:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5489: ! 5490: * cccp.c (path_include): New function. ! 5491: (main): Call that to handle CPATH envvar. ! 5492: ! 5493: * varasm.c (assemble_variable): Error if size exceeds 2**32-1. ! 5494: ! 5495: * emit-rtl.c (init_emit_once): Pass write_symbols to this function ! 5496: (init_emit): Not this one. All callers changed. ! 5497: ! 5498: Tue Jul 17 21:24:08 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5499: ! 5500: * local-alloc.c (update_equiv_regs): Don't replace a register with ! 5501: an equivalence if the insn making the equivalence has a source ! 5502: different from the equivalent value. ! 5503: ! 5504: Tue Jul 17 16:47:42 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5505: ! 5506: * expr.c (emit_block_move): Allow movstr* to fail. ! 5507: ! 5508: Tue Jul 17 15:19:18 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5509: ! 5510: * emit-rtl.c (change_address): Don't call memory_address if reload ! 5511: is in progress, not just after it has completed. ! 5512: ! 5513: Mon Jul 16 00:34:27 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5514: ! 5515: * jump.c (can_reverse_comparison_p): New function. ! 5516: (jump_optimize): In if (x) ... else x = 0; reverse comparison ! 5517: if second operand of IF_THEN_ELSE is PC; use new function to ! 5518: validate the reversal. ! 5519: (jump_back_p): Use new function to see if safe to reverse comparison. ! 5520: ! 5521: Sun Jul 15 17:03:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5522: ! 5523: * jump.c (jump_optimize): Bug in last change; reject uncond jump ! 5524: where conditional is expected. ! 5525: ! 5526: * flow.c (mark_used_regs): Handle autoincrement for *p ! 5527: followed by q = p+size (neither one dead). ! 5528: ! 5529: Sat Jul 14 22:37:45 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5530: ! 5531: * combine.c (subst): Remove (zero_extend (subreg)) around lshiftrt. ! 5532: Remove (and...) from second arg of shift. ! 5533: Remove (and...) from around shift. ! 5534: ! 5535: Sat Jul 14 21:35:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5536: ! 5537: * local-alloc.c (update_equiv_regs): New function. ! 5538: (local_alloc): Call it. ! 5539: (block_alloc): Don't handle REG_EQUIV notes here; now done in ! 5540: update_equiv_reg. ! 5541: ! 5542: * calls.c: Include insn-flags.h. ! 5543: * Makefile.in (calls.o): Likewise. ! 5544: ! 5545: Sat Jul 14 13:28:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5546: ! 5547: * c-decl.c (duplicate_decls): Don't set DECL_FRAME_SIZE for builtins. ! 5548: ! 5549: * vax.md (SImode bit-field patterns): Use nonmemory_operand. ! 5550: ! 5551: * jump.c (jump_optimize): ! 5552: For if (...) x = 1; else x = 0; x must be integer. ! 5553: ! 5554: * gcc.c (default_compilers): Pass -P to cpp. ! 5555: ! 5556: Thu Jul 12 23:38:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5557: ! 5558: * stor-layout.c (layout_record): Handle BITFIELD_NBYTES_LIMITED. ! 5559: ! 5560: * sparc.md (call recognizers): Don't allow address arithmetic. ! 5561: ! 5562: Thu Jul 12 21:47:45 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5563: ! 5564: * emit-rtl.c (change_address): If reload has completed, don't call ! 5565: memory_address. Instead, abort if address is not valid. ! 5566: ! 5567: Thu Jul 12 20:41:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5568: ! 5569: * calls.c (emit_call_1): Handle vax, without call and call_value. ! 5570: ! 5571: Thu Jul 12 20:39:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5572: ! 5573: * cse.c (merge_equiv_classes): New function, from record_jump_equiv. ! 5574: (record_jump_equiv): Use new function. ! 5575: (gen_lowpart_if_possible): New function, based on gen_lowpart. ! 5576: (cse_insn): In some cases of (set (subreg (FOO) 0) (BAR)), note ! 5577: that (subreg BAR) is an equivalent of FOO. ! 5578: * integrate.c (expand_inline_function): Likewise. ! 5579: ! 5580: * combine.c (subst): Check for constant in merge of shift into ! 5581: ZERO_EXTRACT. ! 5582: (gen_lowpart_for_combine): Look for SIGN_EXTEND or ZERO_EXTEND: ! 5583: ! 5584: * emit-rtl.c (gen_lowpart, gen_highpart): If passed a hard register, ! 5585: return a new rtx for it in the proper mode, rather than a SUBREG. ! 5586: ! 5587: Wed Jul 11 17:05:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5588: ! 5589: * cse.c (cse_insn): If already have a REG_WAS_0 note, don't make ! 5590: another one. ! 5591: Rework some loops on SETs to eliminate duplicate code and clean up ! 5592: a bit. ! 5593: ! 5594: * rtlanal.c (refers_to_regno_p, reg_overlap_mentioned): Allow these ! 5595: to work on pseudos as well as hard registers. ! 5596: ! 5597: * optabs.c (emit_no_conflict_block): Use reg_overlap_mentioned ! 5598: to see if register is mentioned in insn. ! 5599: ! 5600: Wed Jul 11 16:56:01 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5601: ! 5602: * jump.c (jump_optimize): Don't optimize jumps to store-flags ! 5603: if after register allocation. And don't do it if memref is used. ! 5604: ! 5605: Wed Jul 11 16:12:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5606: ! 5607: * emit-rtl.c ({next,prev}_nonnote_insn, prev_label, prev_cc0_setter): ! 5608: New functions. ! 5609: ({next,prev}_{real,active}_insn, next_label): Rework to allow ! 5610: argument of zero; return zero in that case. ! 5611: (next_active_insn, prev_active_insn): If reload is not yet complete, ! 5612: do the same thing as next_real_insn and prev_real_insn. ! 5613: (next_cc0_user): Fix some bugs and typos. ! 5614: ! 5615: * rtlanal.c (reg_mentioned_p): Allow searches for labels to work. ! 5616: ! 5617: Wed Jul 11 12:25:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5618: ! 5619: * c-decl.c (duplicate_decls): In prev fix, use TREE_PUBLIC both times. ! 5620: ! 5621: Tue Jul 10 22:54:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5622: ! 5623: * rtl.def (trap): New code. ! 5624: ! 5625: Tue Jul 10 17:48:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5626: ! 5627: * tree.c (integer_zerop, integer_onep, integer_all_onesp): Look inside ! 5628: a NON_LVALUE_EXPR. ! 5629: (real_zerop, real_onep, simple_cst_equal): Likewise. ! 5630: ! 5631: Tue Jul 10 17:05:50 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5632: ! 5633: * c-parse.y, objc-parse.y, cplus-lex.c (yylex): ! 5634: Terminate token_buf after integer. ! 5635: ! 5636: Mon Jul 9 15:22:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5637: ! 5638: * c-decl.c (duplicate_decls): Correct test for extern followed by ! 5639: static function declaration. ! 5640: ! 5641: Mon Jul 9 14:13:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5642: ! 5643: * c-decl.c (grokdeclarator): Move warning and error ! 5644: about initializer with extern to the same place. Do one or the other. ! 5645: ! 5646: * rltanal.c (reg_mentioned_p): Don't look inside a CONST_DOUBLE. ! 5647: ! 5648: Sun Jul 8 14:12:21 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5649: ! 5650: * toplev.c (pedwarn, pedwarn_with_file_and_line, pedwarn_with_decl): ! 5651: New functions. ! 5652: (flag_pedantic_errors): New variable controls them. ! 5653: * c-decl.c, c-parse.y, c-typeck.c: Use new functions for many warnings. ! 5654: * varasm.c: Likewise. ! 5655: * gcc.c (default_compilers): Pass -pedantic* to cc1, cpp, etc. ! 5656: * cccp.c (pedwarn): New function. Many calls to `warning' changed. ! 5657: ! 5658: * c-common.c (c_expand_expr_stmt): New function. ! 5659: Error about incomplete type moved here. ! 5660: * expr.c (expand_expr): Error deleted from here. ! 5661: * c-parse.y: Use c_expand_expr_stmt where suitable. ! 5662: ! 5663: * flow.c (propagate_block): Set following_insn_dead on insn after test. ! 5664: (mark_used_regs): Test that var; don't call insn_dead_p here. ! 5665: ! 5666: Fri Jul 6 13:05:01 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5667: ! 5668: * c-typeck.c (build_indirect_ref): ! 5669: No error if result is incomplete array. ! 5670: ! 5671: * expmed.c (store_bit_field, extract_bit_field): New arg TOTAL_SIZE. ! 5672: Don't extract a bigger unit from memory than this. ! 5673: * expr.c: Callers changed. ! 5674: (store_field): New arg TOTAL_SIZE; callers changed. ! 5675: ! 5676: * out-ns32k.c (print_operand_address): Changes from Ian Dall. ! 5677: * xm-ns32k.h: Use built in alloca. ! 5678: * ns32k.md (ashlsi3): Don't forget to return a value. ! 5679: (movsf): Output floating constants only if GAS_SYNTAX. ! 5680: (call, call_value): Support JSR_ALWAYS. ! 5681: Change handling of bsr if GAS_SYNTAX. ! 5682: (bit test patterns): Use g constraint for op1 and rm for op0. ! 5683: ! 5684: Thu Jul 5 21:53:10 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5685: ! 5686: * c-typeck.c (build_c_cast): Don't do implicit arithmetic conversions. ! 5687: * fold-const.c (fold): Don't combine two conversions if one is ! 5688: signed and the other is unsigned. ! 5689: * integrate.c (copy_parm_decls): Finish making last change. ! 5690: ! 5691: Thu Jul 5 18:26:03 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5692: ! 5693: * expr.c (safe_from_p): If EXP is readonly memory, any memory location ! 5694: is safe from it. ! 5695: ! 5696: Thu Jul 5 15:05:19 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5697: ! 5698: * gnulib2.c (__fixunsdfsi): Change > to >=. ! 5699: ! 5700: * c-decl.c (start_struct, start_enum): Set C_TYPE_BEING_DEFINED. ! 5701: (grokdeclarator): Don't warn of array if elt type being defined. ! 5702: ! 5703: * c-typeck.c (build_conditional_expr): Handle ((void *) 0). ! 5704: Allow 0 versus function pointer. ! 5705: ! 5706: Thu Jul 5 08:05:09 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5707: ! 5708: * cse.c (cse_insn): If machine has post-increment, don't associate ! 5709: PLUS operations if they are both adding the same constant that is ! 5710: a power of two. Similarly for post-decrement. ! 5711: ! 5712: Wed Jul 4 19:04:20 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5713: ! 5714: * flow.c (mark_used_regs): Don't scan a comparison if the following ! 5715: insn that uses the cc's is dead. ! 5716: ! 5717: * flow.c (propagate_block): If cc-using insn is dead, so is previous. ! 5718: ! 5719: * expmed.c (emit_store_flag): New function. ! 5720: ! 5721: Wed Jul 4 18:45:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5722: ! 5723: * c-typeck.c (common_type, comptypes, default_conversion): ! 5724: Use TYPE_READONLY in type to indicate const type; use TREE_READONLY ! 5725: in decl to indicate object will never change. ! 5726: (build_unary_op, readonly_warning, build_modify_expr): Likewise. ! 5727: (c_expand_asm_operands): Likewise. ! 5728: * cplus-class.c (finish_struct_bits): Likewise. ! 5729: * cplus-cvt.c (build_type_conversion): Likewise. ! 5730: * cplus-type2.c (readonly_warning_or_error): Likewise. ! 5731: * cplus-typeck.c (default_conversion, build_unary_op): Likewise ! 5732: (build_modify_expr, c_expand_asm_operands): Likewise. ! 5733: ! 5734: * cplus-cvt.c (popclass): When making INDIRECT_REF, don't set ! 5735: TREE_READONLY from TYPE_READONLY. ! 5736: ! 5737: Wed Jul 4 15:16:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5738: ! 5739: * jump.c (jump_optimize): Fix bugs in last change. ! 5740: ! 5741: Wed Jul 4 07:52:53 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5742: ! 5743: * expr.c (expand_expr, case COMPONENT_REF): Delete extraneous test ! 5744: for structure-value stack slot, which no longer exists. ! 5745: ! 5746: * reload1.c (bad_spill_regs): Should be static. ! 5747: ! 5748: * combine.c (subst, gen_lowpart_for_combine): Propagate ! 5749: RTX_UNCHANGING_P when making a new MEM. ! 5750: * c-typeck.c, cplus-typeck.c (build_indirect_ref): ANSI says that ! 5751: de-reference of pointer-to-const is not readonly so don't set ! 5752: RTX_UNCHANGING_P. ! 5753: * explow.c (validize_mem): Use change_address so flags get copied ! 5754: to new MEM. ! 5755: * expr.c (convert_move, block_block_{to,from}_reg, emit_move_insn): ! 5756: Likewise. ! 5757: (do_tablejump): Set RTX_UNCHANGING_P in MEM accessing address table. ! 5758: * function.c (optimize_bit_field, instantiate_virtual_regs_1): ! 5759: Preserve flags when making new MEM. ! 5760: * loop.c (invariant_p): Memory references to an invariant address ! 5761: are invariant if RTX_UNCHANGING_P is set. ! 5762: * recog.c (adj_offsettable_operand): Propagate RTX_UNCHANGING_P ! 5763: when making new MEM. ! 5764: * reload.c (find_reloads_toplev): Likewise. ! 5765: * reload1.c (alter_reg): Stack slot is readonly if pseudo was. ! 5766: (eliminate_regs): Propagate RTX_UNCHANING_P in new MEM. ! 5767: * varasm.c (force_const_double_mem): Set RTX_UNCHANGING_P in new MEM. ! 5768: ! 5769: Tue Jul 3 21:50:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5770: ! 5771: * expmed.c (expand_and): New function. ! 5772: ! 5773: * stmt.c (expand_expr_stmt): ! 5774: If value is volatile, fetch it and then ignore it. ! 5775: ! 5776: * expr.c (expand_expr): Error if variable type is incomplete. ! 5777: ! 5778: * c-decl.c (grokdeclarator): Don't warn of incomplete array in typedef. ! 5779: ! 5780: Tue Jul 3 18:03:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5781: ! 5782: * fold-const.c (fold): Convert "(1 << foo) & bar" to "(bar >> foo) & 1" ! 5783: In "(a & 1) != 0", can convert to simply "a & 1". ! 5784: * combine.c (subst): Convert branch on sign bit to signed comparison ! 5785: with zero (possibly adding a SUBREG). ! 5786: Convert ZERO_EXTRACT of the low-order bit of a right shift into a ! 5787: ZERO_EXTRACT of the proper bit. ! 5788: ! 5789: Mon Jul 2 12:07:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5790: ! 5791: * jump.c (jump_optimize): Convert conditionals for storing one ! 5792: value into a store-flags insn. ! 5793: ! 5794: * vax.md (call_pop, call_value_pop): New names for call patterns. ! 5795: Include the popping explicitly in the rtl. ! 5796: ! 5797: * jump.c (jump_optimize): Delete case for condjump followed ! 5798: by unconditional to same label; was special case of another case. ! 5799: Switch back to next_active_insn or prev_active_insn in a few cases. ! 5800: ! 5801: * function.c (init_function_start): Initialize ! 5802: frame_pointer_needed to zero. ! 5803: ! 5804: * i386.md (tstsf): Clobber reg 0 in SImode. ! 5805: ! 5806: Sun Jul 1 14:31:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5807: ! 5808: * jump.c: Use next_real_insn instead of next_active_insn. ! 5809: Likewise for prev_active_insn. USE insns make a difference! ! 5810: ! 5811: * function.c (assign_stack_temp): Use largest alignment if BLKmode. ! 5812: ! 5813: * stddef.h: Check __SIZE_T also. ! 5814: ! 5815: * toplev.c: Include types.h first. ! 5816: ! 5817: * i386.md (trunc*2): Don't allow moving symbolic constant to memory. ! 5818: Use wider move only for symbolic constant. ! 5819: ! 5820: * tm-convex.h (LINK_SPEC): Posix link flags. ! 5821: * tm-convex.h (STARTFILE_SPEC): Posix start files. ! 5822: * tm-convex[12].h (CPP_SPEC): Posix defines. ! 5823: * tm-convex[12].h (LIB_SPEC): Posix libraries. ! 5824: * tm-conv[12]os7.h: New files. ! 5825: * config.gcc: use tm-conv*os7 if /usr/include/stdlib.h isn't there. ! 5826: ! 5827: * xm-convex.h (S_IFMT, S_IFREG): make visible if hidden for posix. ! 5828: * xm-convex.h (_PROTO): define to keep 8.0 includes from screwing up. ! 5829: ! 5830: * tm-convex.h (ASM_OUTPUT_{FLOAT,DOUBLE}, PRINT_OPERAND): ! 5831: use %e instead of %#g, which is broken or non-posix. ! 5832: ! 5833: * tm-convex.h (current_section_is_text): make extern. ! 5834: * out-convex.c (current_section_is_text): define here. ! 5835: * tm-convex.h (OVERRIDE_OPTIONS), out-convex.c (override_options): ! 5836: useless; remove. ! 5837: * tm-convex.h (CPP_PREDEFINES): remove parsec, long gone from ! 5838: system includes. ! 5839: ! 5840: Sat Jun 30 14:01:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5841: ! 5842: * c-decl.c (pending_xref_error): Fix typo in arg order. ! 5843: ! 5844: * cccp.c (do_include): Mention non-ex system headers for -M. ! 5845: Guess the directory. ! 5846: (check_macro_name): Should not be static. ! 5847: ! 5848: * rtl.def (inline_header): Add a vector at the end. ! 5849: * rtl.h (ORIGINAL_ARG_VECTOR): New macro. ! 5850: (RTVEC_ELT): New macro. ! 5851: * emit-rtl.c (gen_inline_header_rtx): New argument for that vector. ! 5852: * integrate.c (save_for_inline): Copy arg rtls if nec, then make ! 5853: an arg vector to put in the header. ! 5854: (expand_inline_function): Look in that vector for the rtl. ! 5855: (copy_parm_decls): Likewise. ! 5856: ! 5857: * c-decl.c (duplicate_decls): Warn if function declared external ! 5858: and later static. ! 5859: ! 5860: Fri Jun 29 13:29:24 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5861: ! 5862: * cccp.c (handle_directive): Supply missing *. ! 5863: ! 5864: Thu Jun 28 21:39:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5865: ! 5866: * m68k.md (muldf3 for 68881): Generate fscale if appropriate. ! 5867: * out-m68k.c (floating_exact_log2): New function. ! 5868: ! 5869: Wed Jun 27 17:19:36 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5870: ! 5871: * c-decl.c (finish_struct): New handling of zero-width bit fields. ! 5872: Store appropriate data in them like other bit fields. ! 5873: Don't delete them until after layout. ! 5874: Don't mess with alignment of following field; set its own. ! 5875: If PCC_BITFIELD_TYPE_MATTERS, get alignment from type. ! 5876: * stor-layout.c (layout_record): For zero-width field, if ! 5877: PCC_BITFIELD_TYPE_MATTERS, alignment does not affect that of structure. ! 5878: (layout_decl): Don't abort for zero-width if no name. ! 5879: ! 5880: * function.c (expand_function_start): ! 5881: Output ...FUNCTION_BEG note here, after assign_parms. ! 5882: (init_function_start): Not here. ! 5883: ! 5884: * sdbout.c (sdbout_record_type_name): Conditionalize for ! 5885: SDB_ALLOW_FORWARD_REFERENCES. Don't use typedef names, just tags. ! 5886: (sdbout_begin_block): Likewise. ! 5887: (plain_type_1): Likewise. Also move code to output structure size. ! 5888: (sdbout_symbol): Output the type if not yet output. ! 5889: Don't output top-level initialized variables yet. ! 5890: Avoid crash if variable never got any rtl. ! 5891: Add conditional for SDB_AUTO_NORMALIZE_OFFSET. ! 5892: (sdbout_toplevel_data, sdbout_queue_anonymous_type): ! 5893: (sdbout_dequeue_anonymous_type): New functions. ! 5894: (sdbout_tags): Reverse the list first. ! 5895: Output enums before other things. ! 5896: (sdbout_reg_parm): Fake a name if necessary. Use C_REGPARM. ! 5897: * toplev.c (compile_file): Call sdbout_toplevel_data. ! 5898: ! 5899: * c-typeck.c (convert_for_assignment): Disable warnings for pointers ! 5900: to const and volatile functions. ! 5901: ! 5902: * expr.c (expand_expr): Mark variable as used. ! 5903: ! 5904: Tue Jun 26 17:05:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5905: ! 5906: * tm-sparc.h (LINK_SPEC): Delete spurious `-'. ! 5907: ! 5908: * tm-sun3.h (ASM_OUTPUT_FLOAT_OPERAND): Handle minus zero. ! 5909: (ASM_OUTPUT_DOUBLE_OPERAND): Likewise. ! 5910: ! 5911: * stor-layout.c (layout_type): Check TYPE_NO_FORCE_BLK in union fields. ! 5912: ! 5913: Tue Jun 26 01:48:57 1990 Michael Tiemann (tiemann at cygnus.com) ! 5914: ! 5915: * tree.c (dump_tree_statistics): Dummy function. To be filled in ! 5916: later when we decide what tree statistics should be measured. ! 5917: (build): Now ok to take arguments of length 1. `build1' cannot be ! 5918: used to allocate 's' tree nodes whcih might have length 1. ! 5919: ! 5920: * All GNU C++ files updated to 1.37.2 (alpha 2). NOTE: cplus-decl.c ! 5921: needs to be fixed to not us RTL. I'm leaving this file in its ! 5922: current state so that the GNU C++ compiler at least compiles. ! 5923: ! 5924: * All SPARC files: modified to use registers %f30 and %f31 as ! 5925: temporaries for holding floating-point zero. Used to use %f0 and ! 5926: %f1, which made it impossible to compare function return values with ! 5927: zero. ! 5928: ! 5929: Mon Jun 25 16:54:13 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5930: ! 5931: * function.c (init_function_start): New args give file/line for first note. ! 5932: * c-decl.c (store_parm_decls): Pass them. ! 5933: * integrate.c (output_inline_function): Pass dummies for them. ! 5934: * final.c (final_start_function): For sdb, don't output a line number, ! 5935: just set last_linenum. ! 5936: ! 5937: * c-parse.y (hash, is_reserved_word): New keyword __label__. ! 5938: ! 5939: * stddef.h: Check _T_SIZE as well as _SIZE_T. ! 5940: ! 5941: Sun Jun 24 16:09:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5942: ! 5943: * expr.c (expand_expr): Do preserve_temp_slots for TARGET_EXPR. ! 5944: ! 5945: Sat Jun 23 09:52:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5946: ! 5947: * genpeep.c (gen_peephole): Ignore USE and CLOBBER insn as well as ! 5948: NOTE when matching peephole. ! 5949: ! 5950: Fri Jun 22 17:40:56 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5951: ! 5952: * c-typeck.c (process_init_constructor): Set up TREE_PURPOSE ! 5953: in record constructor elements. ! 5954: ! 5955: * cexp.y (exp1): If pedantic, warn about commas. ! 5956: (tokentab2): Add entries for ++ and --. ! 5957: (yylex): Error if those are used. ! 5958: ! 5959: * c-decl.c (lookup_tag): For wrong kind of type, just set flag. ! 5960: (shadow_tag): Clear the flag. ! 5961: (pending_xref_error): Print the error message here if flag set. ! 5962: * c-parse.y (setspecs): Call that. ! 5963: ! 5964: * calls.c (emit_call_1): Use call_pop and call_value_pop insns ! 5965: to record when the called function pops its args. ! 5966: ! 5967: Fri Jun 22 16:43:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5968: ! 5969: * local-alloc.c (wipe_dead_reg): Remove REG_DEAD note for unset reg. ! 5970: ! 5971: * tm-sparc.h: Replace FIX_FRAME_POINTER_ADDRESS with ! 5972: INITIAL_FRAME_POINTER_OFFSET. ! 5973: ! 5974: * tm-vax.h (RTX_COSTS): Show shifts are relatively expensive. ! 5975: ! 5976: Fri Jun 22 15:05:24 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 5977: ! 5978: * Makefile.in (GEN): New variable. ! 5979: (P): New variable. ! 5980: (cc1, cc1plus, cc1obj): Use $(P). ! 5981: ! 5982: * cccp.c (check_macro_name): New subroutine taken from do_define. ! 5983: (do_define, do_undef): Use this. ! 5984: (do_undef): Warn if junk follows name. ! 5985: (handle_directive): Always ignore empty directive. ! 5986: Warn if \f or \v in directive. Error for malformed directive name. ! 5987: ! 5988: * tree.h (BUILT_IN_NEXT_ARG): Define it. ! 5989: * c-decl.c (init_decl_processing): Declare __builtin_next_arg. ! 5990: * expr.h (current_function_arg_offset_rtx): Declare it. ! 5991: * function.c (assign_parms): Set that variable at end. ! 5992: * expr.c (expand_builtin): Implement __builtin_next_arg. ! 5993: * stdarg.h (va_start): Use __builtin_next_arg. ! 5994: ! 5995: * c-decl.c (grokdeclarator): Check for TRADITIONAL_RETURN_FLOAT. ! 5996: ! 5997: Fri Jun 22 07:07:53 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 5998: ! 5999: * final.c (final_scan_insn): Put label for jump table in same section ! 6000: (read-only data) as jump table. ! 6001: ! 6002: * loop.c: Allow tm.h to define ..._BENEFIT and COPY_PENALTY. ! 6003: ! 6004: Wed Jun 20 13:03:53 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6005: ! 6006: * tm-apollo68.h (FUNCTION_ARG_PADDING): Never pad. ! 6007: (STACK_BOUNDARY): Make it 32. ! 6008: (CPP_SPEC): Add spaces. Define _APOLLO_SOURCE if not -ansi. ! 6009: ! 6010: * c-common.c (check_case_value): New function. ! 6011: * c-parse.y (stmt, when parsing case): Use that. ! 6012: Add new rule for case range. ! 6013: ! 6014: * reload1.c (reload_inheritance_insn): New variable. ! 6015: (reg_reloaded_insn): New variable. ! 6016: (choose_reload_regs): Update those variables. ! 6017: (emit_reload_insns): Use them to remove deaths from insns ! 6018: that used input reloads. ! 6019: (reload_as_needed): Clear reg_reloaded_insn when necessary. ! 6020: ! 6021: * m68k.md (ashlsi3, lshlsi3): Use add to self to shift one bit. ! 6022: ! 6023: * dbxout.c (STAB_CODE_TYPE): New macro defined as type for stab codes. ! 6024: Use in place of enum __stab_debug_code. ! 6025: ! 6026: Tue Jun 19 22:56:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6027: ! 6028: * expr.c (expand_increment): For preincrement, don't load value twice: ! 6029: use TEMP as input to addition. ! 6030: ! 6031: Tue Jun 19 06:53:13 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6032: ! 6033: * explow.c (adjust_stack, anti_adjust_stack): Use expand_binop instead ! 6034: of gen_{add,sub}2_insn since the latter will abort if the constant is ! 6035: out of range for the machine. ! 6036: ! 6037: Tue Jun 19 00:35:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6038: ! 6039: * local-alloc.c (post_mark_life): Don't decrement DEATH ! 6040: if it equals BIRTH. Don't ever increment DEATH. ! 6041: ! 6042: * varasm.c (output_constructor): Discard non_lvalue_expr, not nop_expr. ! 6043: Handle missing values. Use field in the tree_list, if any. ! 6044: (output_addressed_constants): Don't die if value is missing. ! 6045: * c-typeck.c (process_init_constructor): Handle index and field specs. ! 6046: * c-parse.y (initlist): Parse them. ! 6047: ! 6048: Mon Jun 18 15:58:48 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6049: ! 6050: * c-decl.c, cplus-decl.c (duplicate_decls): ! 6051: Types don't "match" if one is error. ! 6052: ! 6053: * c-parse.y (label_decl): Use new keyword __label__, not colon. ! 6054: ! 6055: * c-parse.gperf (__label__): New keyword. ! 6056: ! 6057: * mips.md (probe): Make a single insn, just a memref. ! 6058: ! 6059: Mon Jun 18 14:27:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6060: ! 6061: * loop.c (loop_optimize): Set max_luid to last luid + 1, as documented. ! 6062: ! 6063: * local-alloc.c (qty_clobber): New variable. ! 6064: (local_alloc): Allocate and initialize it. ! 6065: (reg_is_set): Set qty_clobber for a clobber of a pseudo used only ! 6066: in this insn. ! 6067: (find_free_reg): Pass qty_clobber to post_mark_life. ! 6068: (post_mark_life): If CLOBBER if non-zero, register isn't live after ! 6069: its death insn. ! 6070: ! 6071: * integrate.c (expand_inline_function): Don't call try_constants on ! 6072: an insn that sets CC0 until we have processed the next insn. Then ! 6073: call it on both. This is because the recognizer for these insns ! 6074: may want to look at the user of CC0. ! 6075: ! 6076: Mon Jun 18 13:25:59 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6077: ! 6078: * mips.md (ashlqi3, ashlhi3, one_cmplqi2, one_cmplhi2): Deleted. ! 6079: (ashlsi3, ashrsi3, lshrsi3, neg*, one_cmplsi2): Simplified. ! 6080: Don't output comments. Use more specific predicates. ! 6081: ! 6082: * mips.md (movsf, movdf): Use L, M codes to avoid #ifdef's. ! 6083: Also simplify and don't output comments. ! 6084: (anonymous patterns for those insns): Deleted. ! 6085: (loading floating constant): New patterns added. ! 6086: (move qi to si pattern): Deleted; ridiculous. ! 6087: (movdi, movsi, movhi, movqi): No need to check for moving reg to self. ! 6088: ! 6089: * mips.md (nop): Use .set noreorder to placate assembler. ! 6090: ! 6091: Sun Jun 17 20:01:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6092: ! 6093: * gcc.c (set_spec): Don't use `name' for both old spec and name of ! 6094: spec. Use new var old_spec for the former use. ! 6095: Don't use (char *) 0 for null spec; use a null string instead. ! 6096: ! 6097: * jump.c (jump_optimize): Don't special-case deleting an ADDR_DIFF_VEC. ! 6098: Merge code to detect trivial ADDR_VEC and ADDR_DIFF_VEC. ! 6099: (mark_jump_label): Don't count the use of a vector table label in ! 6100: ADDR_DIFF_VEC. ! 6101: (delete_insn): Can now handle ADDR_DIFF_VEC. ! 6102: (delete_labelref_insn): New function. ! 6103: (redirect_tablejump): Call new function to delete insn that references ! 6104: the jump table. ! 6105: ! 6106: Sun Jun 17 01:19:26 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6107: ! 6108: * genemit.c (gen_expand): Don't generate `operands' if size is 0. ! 6109: ! 6110: * tm-i860.h (GO_IF_LEGITIMATE_ADDRESS): Displacement must be multiple ! 6111: of the alignment of the operand. ! 6112: ! 6113: * i860.md (signed bit field recognizers): Don't shift by >31 bits. ! 6114: ! 6115: * out-i860.c (output_delayed_branch): Pass register properly to ! 6116: load_opcode. ! 6117: ! 6118: * mips.md (general/fp reg move patterns): Use codes L, M, D. ! 6119: (movdi): Likewise. And don't output useless comments. ! 6120: Use the assembler temp reg for non-offsettable address. ! 6121: (movsi, movhi, movqi): Output nothing for move from reg to itself. ! 6122: Output li to load a constant. Use `move' instead of `add'. ! 6123: Don't output useless comments. ! 6124: (load-address pattern): Deleted; handled by addsi3 pattern. ! 6125: ! 6126: * mips.md (addsi3, mulsi3): Make both input predicates arith_operand ! 6127: since they are commutative. ! 6128: (andsi3, iorsi3, xorsi3): Likewise. ! 6129: ! 6130: * tm-mips.h (MOST_SIGNIFICANT_WORD, LEAST_SIGNIFICANT_WORD): New. ! 6131: ! 6132: * tm-mips.h (PRINT_OPERAND): New codes D, L, M. ! 6133: * mips.md (anddi3, iordi3, xordi3): Use earlyclobber to stop overlap. ! 6134: Use new print code D. ! 6135: ! 6136: * mips.md (andsi3, iorsi3, xorsi3): Make predicates more specific. ! 6137: (andhi3, ..., andqi3, ...): Patterns deleted. ! 6138: (patterns for nor): New anonymous patterns. ! 6139: * out-mips.c (uns_arith_operand): New function. ! 6140: ! 6141: * mips.md (trunc*, zero_extend*, extend*, fix_trunc*, float*): ! 6142: Use more specific predicates. ! 6143: ! 6144: * mips.md (addhi3, ..., addqi3, ...): Patterns deleted. ! 6145: (addsi3, subsi3, mulsi3, divsi3): Make predicates more specific. ! 6146: Delete useless comments from assembler code. ! 6147: Use more generic op codes rather than special cases such as addiu. ! 6148: (divmodsi4, udivmodsi4, udivsi3, modsi3, umodsi3): New patterns. ! 6149: (abssf2, absdf2): New patterns. ! 6150: ! 6151: Sun Jun 17 06:56:10 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6152: ! 6153: * cse.c (COST, rtx_cost, make_regs_eqv): Indicate that hard registers ! 6154: in fixed_regs are even cheaper than pseudos. ! 6155: ! 6156: * function.c (instantiate_virtual_regs_1): If valid, replace PLUS ! 6157: whose second operand would be zero with its first operand. ! 6158: ! 6159: Sun Jun 17 00:17:03 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6160: ! 6161: * sdbout.c (sdbout_symbol): Get right regno for var-length object. ! 6162: ! 6163: * combine.c (simplify_set_cc0_and): Strip SUBREGs, but only if ! 6164: they truncate. Handle ASHIFTRT like LSHIFTRT. ! 6165: (try_combine): Call simplify_set_cc0_and in all those cases. ! 6166: (subst): Handle (zero_extract (subreg (lshift (reg )))). ! 6167: ! 6168: Sat Jun 16 23:11:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6169: ! 6170: * tree.c (get_narrower, get_unwidened): Bit field test was backwards. ! 6171: ! 6172: Sat Jun 16 19:07:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6173: ! 6174: * fold-const.c (fold): Fix typo in test for distributing binary ! 6175: operator over conditional and compound expressions. ! 6176: ! 6177: * genoutput.c: Remove vestiges of obsolete and never used ! 6178: INSN_MACHINE_INFO. ! 6179: ! 6180: * rtl.def (MATCH_PARALLEL): Add new RTL code. ! 6181: * genconfig.c (walk_insn_part): Support MATCH_PARALLEL. ! 6182: * genemit.c (max_operand_1): Likewise. ! 6183: (gen_exp): Just write operand for MATCH_PARALLEL. ! 6184: (gen_expand, gen_split): Support MATCH_PARALLEL. ! 6185: * genrecog.c (walk_rtx): Add support for MATCH_PARALLEL. ! 6186: * genoutput.c (scan_operands): Suppport MATCH_PARALLEL ! 6187: like MATCH_OPERATOR. ! 6188: * genpeep.c (match_rtx): Add code to support MATCH_PARALLEL. ! 6189: Don't write unnecessary cast to `rtx'. ! 6190: * genrecog.c (add_to_sequence): Simplify handling of mode. ! 6191: Support MATCH_PARALLEL. ! 6192: ! 6193: * expr.c (move_block_{to,from}_reg): Support load/store multiple. ! 6194: * function.c (instantiate_virtual_regs_1): If can't substitute ! 6195: new pseudo for virtual register, try doing the substitution ! 6196: globally throughout the entire insn. This lets load/store multiple ! 6197: insns refer to virtual registers in their addresses. ! 6198: ! 6199: * genrecog.c (write_split_tree, write_split_subroutine): Deleted. ! 6200: (break_out_subroutines, write_subroutine, write_tree): Accept ! 6201: parameters that indicate whether we are making gen_split or gen_recog. ! 6202: (main): Pass new parameters to break_out_subroutines and write_tree. ! 6203: ! 6204: * final.c (final_scan_insn): Process insns that set CC whenever a ! 6205: REG_CC_STATUS note is found; not only JUMP_INSNs can use CC. ! 6206: When scanning REG_CC_STATUS insns, set cc_prev_status from cc_status ! 6207: each time. ! 6208: ! 6209: * recog.c (validate_replace_rtx): New function that tries to ! 6210: replace all occurrences of an object within an insn and see if the ! 6211: resulting insn is valid. ! 6212: ! 6213: Thu Jun 14 06:58:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6214: ! 6215: * optabs.c (emit_no_conflict_block): Write REG_NO_CONFLICT notes all ! 6216: all insns in the block that modify the output. Write them on the ! 6217: final insn even if we don't put a REG_EQUAL note there. ! 6218: ! 6219: * stmt.c (expand_return): Only distribute return down a conditional ! 6220: expression if tail recursion is possible in a branch. ! 6221: ! 6222: * expr.c (expand_expr): Remove obsolete reference to when we had ! 6223: a shared structure-value slot. ! 6224: ! 6225: * jump.c (get_label_before, get_label_after, follow_jumps): No longer ! 6226: static. ! 6227: * rtl.h: Define them. ! 6228: ! 6229: Mon Jun 11 17:35:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6230: ! 6231: * loop.c (INSN_LUID): Check for INSN_UID above the area that we ! 6232: know about. ! 6233: (loop_optimize): Cannot use INSN_LUID as lhs. ! 6234: (scan_loop): If first jump is to label made by loop, we can't ! 6235: tell if it is in range or not, so reject loop. ! 6236: Reject loop if SCAN_START was an insn previously made by loop since ! 6237: we won't know its luid. ! 6238: Only call loop_reg_used_before if argument has known luid. ! 6239: Mark partial invariant as global if its insn was made by loop. ! 6240: (ignore_some_movables): Don't assume all invariants have luids. ! 6241: (strength_reduce): Use no_labels_between_p instead of ! 6242: labels_in_range_p. ! 6243: Don't look at luid of insns for which one doesn't exist. ! 6244: (valid_initial_value_p): Reject initializations in insns whose ! 6245: luid we don't know. ! 6246: ! 6247: * loop.c (product_cheap_p): Put all our rtl into a separate obstack ! 6248: and free memory from it. If we use current_obstack, we may free ! 6249: memory allocated by gen_reg_rtx, which must be preserved. ! 6250: ! 6251: * c-common.c (rewrite_for_merged_ref): A non-zero one-bit signed field ! 6252: is -1, not 1. ! 6253: * c-typeck.c, cplus-typeck.c (build_binary_op_nodefault): If can't ! 6254: merge comparisons, don't use result of rewrite_for_merged_ref; ! 6255: comparisons with zero are more efficient. ! 6256: ! 6257: * protoize.c (main): Don't declare as extern. ! 6258: ! 6259: * c-aux-info.c (gen_aux_info_record): Don't declare extern. ! 6260: ! 6261: * genemit (gen_split): Rework to fix numerous bugs and typos. ! 6262: ! 6263: * function.c (assign_parms): Avoid generating (PLUS foo (const_int 0)). ! 6264: ! 6265: Wed Jun 6 20:03:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6266: ! 6267: * gencodes.c (main): Count a code number for DEFINE_SPLIT. ! 6268: ! 6269: * rtlanal.c (note_store): Pass SUBREG of a hard register to function. ! 6270: (reg_overlap_mentioned_p): Handle receiving SUBREG of hard register. ! 6271: * integrate.c (mark_stores): Likewise. ! 6272: * local-alloc.c (reg_is_set, reg_is_born): Likewise. ! 6273: * reload1.c (mark_not_eliminable): Likewise. ! 6274: ! 6275: * loop.c (move_movables): Don't blow up if moving last real insn ! 6276: in function. ! 6277: ! 6278: Wed Jun 6 19:44:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6279: ! 6280: * gcc.c (default_compilers): Pass -traditional before -f*. ! 6281: Delete -gg option. ! 6282: ! 6283: Sun Jun 3 22:44:12 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6284: ! 6285: * c-decl.c (grokdeclarator): Warn about extern with initializer. ! 6286: ! 6287: Sun Jun 3 22:32:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6288: ! 6289: * genrecog.c (main): Don't call write_tree with null if no insns ! 6290: were in file. ! 6291: ! 6292: Sat Jun 2 21:49:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6293: ! 6294: * expr.c (expand_expr, cases ABS_EXPR, MAX_EXPR, MIN_EXPR): Use target ! 6295: unless zero or safe_from_p rejects it. ! 6296: (expand_expr, conditional cases): Likewise. ! 6297: ! 6298: Sat Jun 2 14:46:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6299: ! 6300: * c-decl.c (grokdeclarator): Handle const and volatile with parm ! 6301: specified as function type. ! 6302: ! 6303: Fri Jun 1 16:13:39 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6304: ! 6305: * rtl.def (DEFINE_FUNCTION_UNIT): Change specifications so ! 6306: it now is one per operation type, rather than one per ! 6307: function unit. ! 6308: * genattr.c (write_units): Write out new function names and ! 6309: function unit table structure. ! 6310: * genattrtab.c (struct function_unit_op): New structure. ! 6311: (struct function_unit): Updated for new definition of ! 6312: DEFINE_FUNCTION_UNIT. ! 6313: (SIMPLIFY_TEST_EXP): New macro to reduce number of function calls ! 6314: to simplify_test_exp. Replace all call to the function with ! 6315: uses of the macro. ! 6316: (check_attr_test, make_alternative_compare): Show that EQ_ATTR with ! 6317: attribute of "alternative", MATCH_OPERAND, and comparison cases can't ! 6318: be simplified. ! 6319: (expand_units, gen_unit, write_function_unit_info): Support new ! 6320: meaning of DEFINE_FUNCTION_UNIT. ! 6321: (simplify_test_expr): Rework AND and IOR cases to reduce rescans. ! 6322: Once an expression has been simplified, set RTX_UNCHANGING_P so ! 6323: we won't try simplifying it again. Don't do this if INSN_CODE == -2. ! 6324: (write_attr_set): Don't make a recursive call if we know that ! 6325: the test we are writing will always be false. Also clean up a bit. ! 6326: (main): true_rtx and false_rtx don't need to be simplified. ! 6327: Write gen_attr_... routines before special routines. ! 6328: ! 6329: Fri Jun 1 14:17:48 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6330: ! 6331: * tm-sparc.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): ! 6332: Round frame size to multiple of STACK_BOUNDARY. ! 6333: ! 6334: Fri Jun 1 09:38:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6335: ! 6336: * optabs.c (emit_no_conflict_block): Place REG_NO_CONFLICT notes on ! 6337: insn that contains REG_EQUAL note instead of insn doing computation. ! 6338: ! 6339: * cplus-decl2.c, cplus-lex.c: Rename gettime to get_run_time. ! 6340: Likewise for my_gettime to my_get_run_time. ! 6341: ! 6342: * Makefile.in (varasm.o, calls.o, explow.o, integrate.o, loop.o): ! 6343: These do not depend on insn-codes.h. ! 6344: * function.c: Explicitly include insn-codes.h to make it clear that it ! 6345: is needed for the values of the CODE_FOR_... macros. ! 6346: ! 6347: Thu May 31 12:59:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6348: ! 6349: * gnulib2.c (__trampoline): New function. ! 6350: * Makefile.in (LIB2FUNCS): Compile it. ! 6351: * tm-m68k.h (TRAMPOLINE_ALIGN): Define it. ! 6352: * function.c (trampoline_address): Handle extra alignment. ! 6353: * tm-m68k.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): ! 6354: Redefine to transfer via __trampoline. ! 6355: (TRANSFER_FROM_TRAMPOLINE): Define it, for gnulib2.c. ! 6356: ! 6357: * fold-const.c (fold): Preserve sign on constant when other terms ! 6358: cancel (after call to split_tree). ! 6359: ! 6360: Thu May 31 12:39:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6361: ! 6362: * expr.c (preexpand_calls): Ignore BLOCK to avoid infinite recursion. ! 6363: ! 6364: * function.c (assign_parms): Fix typo getting mode of result. ! 6365: ! 6366: * cse.c (cse_basic_block): Don't go past TO if it is target of ! 6367: followed jump. ! 6368: ! 6369: Wed May 30 21:31:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6370: ! 6371: * c-parse.y (fndef, nested_function, notype_nested_function): ! 6372: Use YYERROR1 instead of YYERROR. ! 6373: (YYERROR1): New macro. ! 6374: * cplus-parse.y, objc-parse.y: Likewise. ! 6375: ! 6376: Tue May 29 21:53:19 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6377: ! 6378: * optabs.c (expand_float): Don't use hard reg as intermediate. ! 6379: ! 6380: * c-parse.y, objc-parse.y (yylex): Fix typo checking for ERANGE. ! 6381: * cplus-lex.c (yylex): Copy current code for ERANGE from c-parse.y. ! 6382: ! 6383: * toplev.c (get_run_time): Renamed from gettime. ! 6384: ! 6385: Mon May 28 15:47:48 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6386: ! 6387: * expr.c (emit_push_insn): Don't push by pieces if alignment ! 6388: forces use of small pushes that do problematical padding. ! 6389: ! 6390: * tm-sparc.h (SELECT_SECTION): Use TREE_SIDE_EFFECTS. ! 6391: (STACK_POINTER_OFFSET): Now 68; does not include REG_PARM_STACK_SPACE. ! 6392: (REG_PARM_STACK_SPACE): Now takes arg and has value. ! 6393: (ACCUMULATE_OUTGOING_ARGS): Define this. ! 6394: (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE, EXIT_IGNORE_STACK): Use ! 6395: current_function_outgoing_args_size, not ..._pretend_... ! 6396: (INITIALIZE_TRAMPOLINE): Use size_int. ! 6397: ! 6398: * varasm.c (make_decl_rtl, make_function_rtl): Run ENCODE_SEGMENT_INFO ! 6399: if it is defined. ! 6400: ! 6401: * tree.def (BIND_EXPR): Add operand, which holds the BLOCK. ! 6402: * expr.c (expand_expr): When BIND_EXPR is seen, flag the BLOCK. ! 6403: * dbxout.c (dbxout_block): Test the flag in the BLOCK. ! 6404: * sdbout.c (sdbout_block): Likewise. ! 6405: * symout.c (symout_function): Likewise. ! 6406: * c-parse.y (stmt expr rule): Corresponding change. ! 6407: ! 6408: Sun May 27 20:53:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6409: ! 6410: * caller-save.c (save_call_clobbered_regs): Correctly mark registers ! 6411: live for multi-word pseudos. ! 6412: ! 6413: Sat May 26 13:42:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6414: ! 6415: * sdbout.c (sdb_begin_function_line): Now -1 if not in use. ! 6416: (sdbout_end_function): Set it to -1. ! 6417: ! 6418: * tree.def: Rename EXIT_STMT to EXIT_EXPR and likewise for LOOP_STMT. ! 6419: Also LET_STMT to BIND_EXPR, and GOTO_STMT, LABEL_STMT, RETURN_STMT ! 6420: to ..._EXPR. ! 6421: (struct tree_stmt, struct tree_if_stmt, struct tree_bind_stmt): ! 6422: (struct tree_case_stmt): Types deleted. ! 6423: ! 6424: * tree.c (make_node, copy_node): Treat 's' like 'e' for size of node. ! 6425: In make_node, make BLOCK and BIND_EXPR savable. ! 6426: * expr.c (expand_expr): Rename, and use TREE_OPERAND to get body. ! 6427: * cplus-init.c (build_vec_delete): Likewise, and build appropriately. ! 6428: * print-tree.c (print_node): No special handling for these and IF_STMT. ! 6429: * stmt.c (warn_if_unused_value): Likewise. ! 6430: ! 6431: * tree.def (BLOCK): New tree code for binding blocks. ! 6432: * tree.h (BLOCK_VARS, BLOCK_TYPE_TAGS): ! 6433: (BLOCK_SUBBLOCKS, BLOCK_SUPERCONTEXT): Renamed from STMT_... ! 6434: (STMT_...): Except for those, all deleted. ! 6435: (BLOCK_CONTROLLER): Points to corresponding BIND_EXPR, if any. ! 6436: (BLOCK_CHAIN): New macro. ! 6437: * tree.c (build_block): Renamed from build_let. ! 6438: (decl_type_context, decl_function_context): Corresponding change. ! 6439: * print-tree.c (print_node): Likewise. ! 6440: * c-decl.c, cplus-decl.c (poplevel): Likewise. ! 6441: * integrate.c (copy_decl_tree): Likewise. ! 6442: * function.c (setjmp_protect, uninitialized_vars_warning): ! 6443: (instantiate_decls_1): Likewise. ! 6444: * c-parse.y, cplus-parse.y, objc-parse.y (stmt expr rule): Likewise. ! 6445: * dbxout.c (dbxout_block): Expect only BLOCKs in this tree. ! 6446: Ignore those with controllers that are not marked used. ! 6447: * sdbout.c (sdbout_block): Likewise. ! 6448: * symout.c (symout_function): Likewise. ! 6449: ! 6450: * tree.def: Delete IF_STMT, COMPOUND_STMT, WITH_STMT. ! 6451: * expr.c (expand_expr): Delete handling of IF_STMT. ! 6452: * tree.c (build_if, build_loop, build_case, build_goto): Deleted. ! 6453: (build_expr_stmt, build_asm_stmt, build_return, build_exit): Likewise. ! 6454: (build_compound): Likewise. ! 6455: * cplus-init.c (build_vec_delete): Use COND_EXPR instead of IF_STMT. ! 6456: ! 6457: Sat May 26 13:23:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6458: ! 6459: * calls.c (struct arg_data): Add new fields slot_offset and stack_slot. ! 6460: (expand_call): Compute both location of start of stack slot and the ! 6461: place in the stack slot where the first byte of the argument will be ! 6462: placed. ! 6463: Use stack_slot when loading a BLKmode object into registers. ! 6464: When loading into registers, don't check reg_parm_seen, just look ! 6465: at args[i].reg. ! 6466: (expand_call, store_one_arg): Save and restore stack slot starting ! 6467: from beginning of slot, not begining location where arg is stored. ! 6468: (store_one_arg): After calling emit_push_insn, argument is really ! 6469: at arg->stack_slot instead of arg->stack because if we want to ! 6470: load it into registers, we include any padding. ! 6471: ! 6472: Sat May 26 01:37:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6473: ! 6474: * tree.h (struct tree_type): Rename sep=>minval, sep_unit=>precision. ! 6475: ! 6476: * tree.c (init_obstacks, init_tree_codes): init_tree split in two. ! 6477: * toplev.c (compike_file): Call them. ! 6478: ! 6479: Fri May 25 16:40:45 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6480: ! 6481: * stor-layout.c (layout_record): Nuke excess set of DECL_FIELD_BITPOS. ! 6482: * varasm.c (output_constructor): Bitpos is zero for array (field == 0). ! 6483: ! 6484: Fri May 25 00:48:45 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6485: ! 6486: * final.c (final_scan_insn): Restore inadvertent deletion in change ! 6487: of May 24th. ! 6488: ! 6489: Fri May 25 00:13:12 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6490: ! 6491: * print-tree.c (print_node): Print some missing fields for decls. ! 6492: (print_node_brief): Always print value of integer or real constant. ! 6493: ! 6494: Thu May 24 21:28:36 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6495: ! 6496: * fold-const.c (real_zerop): Function deleted; was redundant. ! 6497: ! 6498: * tree.h (DECL_OFFSET): Macro deleted. ! 6499: (struct tree_decl): Field deleted. ! 6500: ! 6501: * c-typeck.c (build_unary_op): For ADDR_EXPR of COMPONENT_REF, ! 6502: use DECL_FIELD_BITPOS and handle non-constant values. ! 6503: * stor-layout.c (layout_record, layout_union): Likewise. ! 6504: * expr.c (expand_assignment, store_constructor, expand_expr): Likewise. ! 6505: * dbxout.c (dbxout_type): Likewise. ! 6506: * sdbout.c (sdbout_one_type): Likewise. ! 6507: * c-common.c (merge_component_comparisons, make_merged_ref): Likewise. ! 6508: * print-tree.c (print_node): Likewise. ! 6509: * varasm.c (decode_addr_const, output_constructor): Likewise. ! 6510: * objc-actions.c (build_ivar_list_initializer): Likewise. ! 6511: * cplus-typeck.c (build_component_addr): Likewise. ! 6512: And preserve TREE_CONSTANT flag. ! 6513: (unary_complex_lvalue): Likewise. ! 6514: ! 6515: * tree.h (DECL_FUNCTION_CODE): Use the frame_size field, not `offset'. ! 6516: Now meaningful only if function is built in. ! 6517: (DECL_BUILT_IN): New flag macro. ! 6518: * c-decl.c (builtin_function): Set the flag. ! 6519: (pushdecl, duplicate_decls): Use and set it. ! 6520: * c-typeck.c, cplus-typeck.c (build_function_call): Test it. ! 6521: * cplus-decl.c (define_function): Set the flag. ! 6522: (pushdecl, duplicate_decls): Use and set it. ! 6523: * expr.c (expand_expr, preexpand_calls): Test it. ! 6524: ! 6525: * tree.h (DECL_INCOMING_RTL): New macro. ! 6526: * function.c (assign_parms): Set up that field. ! 6527: * dbxout.c (dbxout_parms, dbxout_reg_parms): Don't try to use ! 6528: DECL_OFFSET for a parm; it is not set. Use DECL_INCOMING_RTL. ! 6529: (PARM_PASSED_IN_MEMORY): New macro. ! 6530: * sdbout.c (sdbout_parms, sdbout_reg_parms): Likewise. ! 6531: (PARM_PASSED_IN_MEMORY): New macro. ! 6532: ! 6533: * cccp.c (macarg): When popping frame, free via free_ptr, not buf. ! 6534: ! 6535: Thu May 24 18:04:06 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6536: ! 6537: * emit-rtl.c (next_cc0_user): New function. ! 6538: * recog.c (next_insn_tests_no_inequality): Use next_cc0_user. ! 6539: * rtl.h: Define next_cc0_user. ! 6540: ! 6541: * cse.c (cse_insn): Make canon_reg calls in separate loop over the ! 6542: SETs to avoid problems when MATCH_DUPs are present in an insn ! 6543: pattern. ! 6544: Don't canon CLOBBER in PARALLEL. Instead, canon MEM of CLOBBER, ! 6545: both within a PARALLEL and standalone. Also, call note_mem_clobbered ! 6546: only for MEM. ! 6547: ! 6548: Thu May 24 13:08:25 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6549: ! 6550: * gnulib2.c (__negdi2): Make this inline for other functions. ! 6551: ! 6552: Thu May 24 07:15:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6553: ! 6554: * jump.c (no_labels_between_p, prev_real_insn, next_real_insn): ! 6555: (prev_active_insn, next_active_insn, next_label): Delete from here. ! 6556: * rtlanal.c (no_labels_between_p): Put here. ! 6557: * emit-rtl.c (prev_real_insn, next_real_insn, prev_active_insn): ! 6558: (next_active_insn, next_label): Add to here. ! 6559: ! 6560: * c-common.c: Define NULL so NULL_TREE macro will work. ! 6561: ! 6562: * cplus-typeck.c (common_parms): Use oballoc and obfree to ! 6563: avoid external current_obstack. ! 6564: ! 6565: * cse.c (fold_cc0, cse_insn): Use HASH macro instead of call to ! 6566: canon_hash. ! 6567: (cse_insn): When just recording jump insn, show it doesn't set CC0 ! 6568: and set it as previous insn. ! 6569: ! 6570: * genoutput.c (gen_split): Fix typo in comment. ! 6571: ! 6572: * reorg.c: No longer need define next_label and next_real_insn as ! 6573: extern. ! 6574: ! 6575: * toplev.c (rest_of_compilation): Use DELAY_SLOTS instead of ! 6576: obsolete HAVE_DELAYED_BRANCH; include insn-attr.h. ! 6577: ! 6578: * final.c (dbr_sequence_length): Now present #ifdef DELAYED_BRANCHES. ! 6579: Eliminate references to obsolete DBR_INSN_SLOTS. ! 6580: (get_attr_length): Support ADJUST_INSN_LENGTH. ! 6581: (get_attr_length, shorten_branches): Handle a SEQUENCE built for an ! 6582: insn with filled delay slots. ! 6583: (final_scan_insn): Avoid unnecessary call to recog_memoized. ! 6584: Use validate_change instead of assuming replacement of CC0 by ! 6585: STORE_FLAG_VALUE or const0_rtx is valid. ! 6586: ! 6587: Wed May 23 16:32:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6588: ! 6589: * out-m68k.c, out-alliant.c (output_btst): ! 6590: Use next_insn_tests_no_inequality, not next_insns_test_... ! 6591: * recog.c (next_insns_test_no_inequality): Function deleted. ! 6592: ! 6593: Wed May 23 13:26:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6594: ! 6595: * expmed.c (store_bit_field): Don't bother making a SUBREG when we ! 6596: call ourself recursively; the recursive call will just strip it off. ! 6597: ! 6598: * reorg.c: Include insn-attr.h before testing DELAY_SLOTS. ! 6599: (emit_delay_sequence): Assign new INSN_UID to the SEQUENCE. ! 6600: Chain insns through the sequence via NEXT_INSN and PREV_INSN. ! 6601: * emit-rtl.c (next_insn, prev_insn): Go inside a SEQUENCE to ! 6602: find the next or previous insn. ! 6603: (make_insn_raw): No longer static. ! 6604: * rtl.h: Define make_insn_raw, prev_active_insn, next_active_insn, ! 6605: next_insn, and previous_insn. ! 6606: ! 6607: * genattrtab.c (write_eligible_delay): Always use "*delay_type"; ! 6608: annuling only applies to candidate insn, not insn needing slot. ! 6609: ! 6610: * tree.c (init_tree): tree_node_counter doesn't exist any more. ! 6611: (make_node, copy_node, make_tree_vec, build1): No longer set TREE_UID. ! 6612: ! 6613: Wed May 23 00:48:57 1990 Michael Tiemann (tiemann at cygnus.com) ! 6614: ! 6615: * genemit.c, genextract.c: Add support for MATCH_OP_DUP and ! 6616: DEFINE_SPLIT. ! 6617: ! 6618: * cplus-init.c (build_delete): TREE_SIDE_EFFECTS can be ! 6619: nonzero when address to be deleted is a cast of something ! 6620: with side-effects (like a call). ! 6621: (build_vec_delete): Simplify code now that `make_node' does the ! 6622: right thing for _STMT nodes. ! 6623: ! 6624: Tue May 22 22:59:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6625: ! 6626: * cse.c (cse_end_basic_block): Don't crash if NEXT_INSN of ! 6627: our branch target is zero. ! 6628: Don't skip scanning first insn after destination label of branch. ! 6629: ! 6630: * expr.c (emit_move_insn): Abort if modes differ. ! 6631: (expand_expr, comparison cases): Use TMODE when convenient. ! 6632: (expand_expr, case COND): When optimizing (C ? 1 : 0), ensure ! 6633: we return a result of the correct mode. ! 6634: ! 6635: * integrate.c (expand_inline_function): Can't call try_constants for ! 6636: JUMP_INSN since we may have changed RETURN to jump. ! 6637: ! 6638: Tue May 22 22:40:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6639: ! 6640: * tree.h (struct tree_common): Delete field `uid'. ! 6641: (TREE_UID): Macro deleted. ! 6642: ! 6643: * c-decl.c (finish_decl): Discard any variable sizes in the decl. ! 6644: ! 6645: * calls.c (expand_call): When making reg_notes for const function, ! 6646: don't test is_const twice, and take account of order of pushing. ! 6647: ! 6648: Tue May 22 21:41:48 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6649: ! 6650: * reload1.c (eliminate_regs): Ensure we process pseudo that is first ! 6651: operand of PLUS. ! 6652: ! 6653: * expmed.c (store_bit_field): When stripping a SUBREG, adjust the ! 6654: bit position to correspond to the change in modes. ! 6655: ! 6656: * cse.c (rtx_cost): Use COSTS_N_INSNS macro. ! 6657: ! 6658: * cse.c (qty_comparison_*): New vars. ! 6659: (new_basic_block): Initialize qty_comparison_code. ! 6660: (fold_rtx): If we see a comparison, check if we have seen the ! 6661: same comparison before. If so, we know the result. ! 6662: (record_jump_equiv): Save the comparison being passed in the ! 6663: qty_comparison_* variables for possible later use by fold_rtx. ! 6664: (cse_insn): If the current insn doesn't reference cc0, but the ! 6665: previous insn sets it, delete the previous insn; presumably we ! 6666: used to test it. ! 6667: (cse_basic_block): Allocate new qty_comparison_* vars. ! 6668: ! 6669: * reload1.c (eliminate_regs): Second arg is now mode of enclosing ! 6670: MEM, if any, rather than simply flag indicating inside MEM. ! 6671: Use this mode to determine amount that, e.g., PRE_DEC adjusts by. ! 6672: ! 6673: * reload1.c (reload): Set regs_ever_live for a register that couldn't ! 6674: be eliminated. ! 6675: * final.c (only_leaf_regs_used): Don't do it here. ! 6676: ! 6677: * reorg.c: Eliminate obsolete macros *_REORG_FUNCTION. ! 6678: Entire file is conditional on #ifdef DELAY_SLOTS. ! 6679: ! 6680: * Makefile.in: Use reorg.c instead of dbranch.c. ! 6681: ! 6682: Tue May 22 20:40:30 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6683: ! 6684: * c-decl.c (complete_array_type): Get string elt size in bytes. ! 6685: ! 6686: Tue May 22 00:42:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6687: ! 6688: * toplev.c (rest_of_compilation): Turn off VERBOSE arg to thread_jumps. ! 6689: ! 6690: * objc-parse.y, objc-actions.c: Replaces uses of build with build1 ! 6691: when being used for 1-operand nodes. ! 6692: ! 6693: Mon May 21 23:59:21 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6694: ! 6695: * global-alloc.c (hard_reg_full_preferences): New variable. ! 6696: (global_alloc): Allocate and initialize it. ! 6697: (prune_preferences): Include in regs_someone_prefers all words ! 6698: of multi-word items that have preferences. Don't includes registers ! 6699: we also prefer unless they are prefered by an allocno that needs ! 6700: more registers. ! 6701: (set_preference): Set hard_reg_full_preferences also. ! 6702: ! 6703: Mon May 21 21:36:29 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6704: ! 6705: * tree.c (make_node): All ..._STMT nodes have side effects, type void. ! 6706: ! 6707: Mon May 21 16:03:23 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6708: ! 6709: * integrate.c (expand_inline_function): Set insns_at_start before ! 6710: processing parameters since it might be needed during that processing. ! 6711: Set RTX_INTEGRATED_P in all insns emitted, including labels and ! 6712: barriers. ! 6713: Ensure COPY is set correctly when replacing RETURN and avoid ! 6714: duplicate barriers by calling emit_jump_insn instead of emit_jump. ! 6715: Call note_stores for JUMP_INSNs and CALL_INSNs in case they have ! 6716: side-effects we care about. ! 6717: (copy_rtx_and_substitute): Convert (use (subreg FOO)) to (use FOO). ! 6718: (subst_constants): Don't crash if we see a SUBREG replaced by a ! 6719: REG or vice versa; we have no work to do in that case. ! 6720: Fix typo in case MULT. ! 6721: ! 6722: * recog.c (constrain_operands): Call reg_fits_class_p with original ! 6723: mode of OP, not mode of SUBREG_REG (op) when OP is SUBREG. ! 6724: ! 6725: Mon May 21 14:25:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6726: ! 6727: * expmed.c (extract_bit_field): Use class of TMODE for simple reg case. ! 6728: ! 6729: * flags.h (flag_pic): Declare it. ! 6730: * tree.h (mode_for_size): Declare it. ! 6731: * c-tree.h (merge_component_comparisons): Declare it. ! 6732: ! 6733: Mon May 21 07:27:12 1990 Michael Tiemann (tiemann at cygnus.com) ! 6734: ! 6735: * jump.c (thread_jumps): New function to optimize the case where one ! 6736: conditional jump jumps to another testing the same condition. This ! 6737: function usefully optimzies code both before common subexpression ! 6738: elimination (where it "finds" common subexpressions that cse won't ! 6739: find) and after loop optimization (where the loop optimizer ! 6740: introduces new conditional jumps after rearranging loops). ! 6741: (rtx_equal_for_thread_p): cheaply builds equivalences between ! 6742: register so that jump threading can be effectively run before cse. ! 6743: ! 6744: * emit-rtl.c (init_emit_once): Initialize PIC_OFFSET_TABLE_RTX if ! 6745: PIC_OFFSET_TABLE_REGNUM is defined. ! 6746: ! 6747: * tree.c (build,build1,build_nt): Set TREE_RAISES in addition to ! 6748: TREE_SIDE_EFFECTS. ! 6749: ({temp,saveable,perm}_tree_cons): Call `tree_cons' with arguments ! 6750: instead of calling `make_node' directly. Eventually, `tree_cons' ! 6751: could be faster than `make_node'. ! 6752: (get_identifier): Use `bcmp' instead of `strcmp', since it's ! 6753: faster. Also, test the first letter of each string before calling ! 6754: the string comparison function. ! 6755: ! 6756: * toplev.c: Add new flags FLAG_THREAD_JUMPS and FLAG_PIC. The ! 6757: former gives better common sub-expression elimination while the ! 6758: latter tells the compiler to emit position-independent code. ! 6759: (rest_of_compilation): Thread jumps if requested. ! 6760: ! 6761: * stor-layout.c (layout_{record,union}): For loop bodies meant only ! 6762: for FIELD_DECLs, make sure we have a FIELD_DECL before proceeding. ! 6763: ! 6764: * stmt.c (expand_end_case): Use ADDR_DIFF_VEC if FLAG_PIC is ! 6765: nonzero. ! 6766: @@ NOTE: This would look a lot nicer if CASE_VECTOR_PC_RELATIVE were ! 6767: an expression (like zero/nonzero) instead of soley a #define. ! 6768: (fixup_cleanups): If cleanups emitted no code, don't call ! 6769: `reorder_insns'. ! 6770: (expand_decl_cleanup): Return 0 in case we are not in a block ! 6771: (but instead at top-level). ! 6772: ! 6773: * stack.h: New GNU C++ file. ! 6774: ! 6775: * rtl.c (REG_NOTE_NAMES): Add REG_CC_STATUS and REG_TAIL_CALL. ! 6776: * rtl.h: Ditto. Also make external declaration of ! 6777: pic_offset_table_rtx. ! 6778: * rtl.def: Add the following new RTL codes: DEFINE_SPLIT, ! 6779: MATCH_OP_DUP, LO_SUM and HIGH. ! 6780: ! 6781: * reorg.c: New file. Performs instruction reorganizations ! 6782: (primarily branch scheduling) after register allocation. ! 6783: ! 6784: * local-alloc.c (local_alloc): If defined, execute ! 6785: ORDER_REGS_FOR_LOCAL_ALLOC. ! 6786: ! 6787: * genrecog.c (struct decision): Extended to handle DEFINE_SPLITs. ! 6788: (write_tree): Split into three subroutines: `write_tree_1' which ! 6789: does the main work, `write_tree' which does the original job, and ! 6790: `write_split_tree' which builds the recognizer for insn splitting. ! 6791: (add_to_sequence): Handle MATCH_OP_DUP. ! 6792: (main): Bui.Build both insn->insn_code and insn->insn_list ! 6793: recognizers. ! 6794: Also, fixed comment at the top of the file. ! 6795: * genpeep.c (main): Handle DEFINE_SPLIT. ! 6796: (match_rtx): Handle MATCH_OP_DUP. ! 6797: * genoutput.c (main): Handle DEFINE_SPLIT. ! 6798: * genconfig.c (main): Handle DEFINE_SPLIT and MATCH_OP_DUP. ! 6799: * genattrtab.c (main): Handle DEFINE_SPLIT. ! 6800: ! 6801: * fold-const.c (various places): Use `build1' constructor instead of ! 6802: `build' constructor whenever possible. ! 6803: ! 6804: * final.c (final_scan_insn): If we know the status of the condition ! 6805: codes at a particular JUMP_INSN (by dint of the fact that it has a ! 6806: REG_CC_STATUS note), set CC_STATUS to reflect that value. ! 6807: (only_leaf_regs_used): @@ For some reason the frame pointer register ! 6808: is not marked live, even when it is. If FRAME_POINTER_NEEDED is ! 6809: nonzero, set REGS_EVER_LIVE[FRAME_POINTER_REGNUM] to 1. ! 6810: ! 6811: * expr.c (emit_library_call): Round ARGS_SIZE.CONSTANT up, not down. ! 6812: Use new macro MAX to accomplish this. ! 6813: (safe_from_p): Don't check that EXP is nonzero. Instead, make ! 6814: caller check (only in one place) that argument to `safe_from_p' is ! 6815: non-zero. ! 6816: (expand_expr): In COND_EXPR case, make sure that the predicate is ! 6817: safe from the two conditions. Lossage occured in a construct of the ! 6818: form (c = c < 0 ? d : -d). ! 6819: ! 6820: * explow.c (plus_constant): Handle LO_SUM rtl. ! 6821: ! 6822: * c-typeck.c (build_binary_op_nodefault): If optimizing, try merging ! 6823: component refs and/or comparisons into larger operations. ! 6824: ! 6825: * c-common.c (rewrite_for_merged_ref): New function. Canonicallizes ! 6826: expressions to be recognizable as candidates for merged ! 6827: COMPONENT_REF operations. ! 6828: (make_merged_ref): Builds custom FIELD_DECLs for accessing multiple ! 6829: bits in a byte simultaneously. ! 6830: (merge_component_comparisons): Optimize COMPONENT_REFs in ! 6831: expressions that look like (x.p == y.p && x.q == y.q) or ! 6832: (x.p != y.p || x.q != y.q). Also optimize (x.p == c1 && x.q == c2), ! 6833: where C1 and C2 are known constants. ! 6834: ! 6835: * c-lang.c (print_lang_statistics): Added new hook function. ! 6836: Currently does nothing for C. ! 6837: ! 6838: * c-convert.c: Use `build1' constructor instead of `build' ! 6839: constructor whenever possible. ! 6840: ! 6841: * cplus-typeck.c (build_binary_op_nodefault): Call this function for ! 6842: better applicability of the merged component ref optimization. ! 6843: Also, add more recognized cases. ! 6844: ! 6845: * cplus-type2.c (merge_component_comparisons): Code improved, and ! 6846: moved to c-common.c. ! 6847: ! 6848: * cplus-parse.y (operator_name): Recognize `operator,'. ! 6849: (expr): On parsing ',', call `build_x_compound_expr' instead of ! 6850: `build_compound_expr'. ! 6851: (various places): Call `note_decl_list_got_semicolon' instead of ! 6852: `note_decl_got_semicolon' where object in question is a list instead ! 6853: of a type. ! 6854: (component_declarator0): Set CURRENT_DECLSPECS from the bitfield ! 6855: type. ! 6856: ! 6857: * cplus-method.c (hack_wrapper): Rename parameter TYPE to CNAME, ! 6858: since it is a type name we pass in, not a type. ! 6859: ! 6860: * cplus-lex.c (opname_tab): Add `operator,'. ! 6861: (note_decl_list_got_semicolon): Make notation that a list of ! 6862: declarations should be considered as having "gotten a semicolon". ! 6863: (extract_interface_info,interface_strcmp): Commented. ! 6864: ! 6865: * cplus-init.c (build_delete): Rest of changes to reimplement new ! 6866: destructor mechanism. ! 6867: (build_vbase_delete): Fix bug whereby arrays of length 0 and 1 were ! 6868: not being correctly handled. Also, where elsements were not being ! 6869: deleted. Use new destrouct calling convention. ! 6870: (various places): Change TYPE_HAS_CONSTRUCTOR to ! 6871: TREE_HAS_CONSTRUCTOR where appropriate. ! 6872: ! 6873: * cplus-expr.c (cplus_expand_expr): Use `emit_block_move' to copy ! 6874: data from RETURN_TARGET to CALL_TARGET in case they do not line up ! 6875: normally. ! 6876: ! 6877: * cplus-decl2.c (finish_file): No need to call `build_vbase_delete' ! 6878: on top-level objects anymore, since destructors now do the right ! 6879: thing. ! 6880: ! 6881: * cplus-decl.c (finish_function): Implement new destructor ! 6882: mechanism: destroy virtual baseclass objects if (in$charge & 2) is ! 6883: nonzero. Deallocate if (in$charge & 1) is nonzero. ! 6884: ! 6885: * cplus-cvt.c (build_up_reference): Use TREE_HAS_CONSTRUCTOR, not ! 6886: TYPE_HAS_CONSTRUCTOR on non-TYPE tree nodes. ! 6887: (build_up_reference): Only build up references between compatible ! 6888: types. I.e., don't build a char& to an int object. ! 6889: (convert_to_aggr): Set the TREE_SIDE_EFFECTS bit if the result is a ! 6890: CALL_EXPR. ! 6891: ! 6892: * cplus-class.c (build_vbase_path): Recover from bad parse errors. ! 6893: (build_method_call): Implement new ctor/dtor semantics to allow ! 6894: differentiation between tearing an object down and deallocating it. ! 6895: This also means that ctors and dtors can now aviod going through the ! 6896: virtual function table mechanism as they construct/destruct their ! 6897: objects. ! 6898: ! 6899: * ALL GNU C++ files: Use new macro IDENTIFIER_TYPE_VALUE to lookup ! 6900: type value of an identifier. Also implement related macros ! 6901: IDENTIFIER_HAS_TYPE_VALUE, and IDENTIFIER_TYPEDECL_VALUE. ! 6902: ! 6903: * cplus-cadillac.c (cadillac_switch_source): Change Prototype ! 6904: declaration to non-prototype declaration. ! 6905: (readable_p): Ditto. ! 6906: ! 6907: Sun May 20 20:23:39 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6908: ! 6909: * c-typeck.c (c_sizeof): For incomplete type, warn and return 0. ! 6910: (c_sizeof): Similar. ! 6911: ! 6912: Sun May 20 17:20:48 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6913: ! 6914: * emit-rtl.c (gen_highpart): Support SUBREG like gen_lowpart. ! 6915: ! 6916: Sun May 20 16:59:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 6917: ! 6918: * c-typeck.c (build_c_cast): Warn about pointer-integer casts ! 6919: where size differs. ! 6920: ! 6921: * stor-layout.c (layout_type): Multi-word field doesn't force BLKmode. ! 6922: ! 6923: * expmed.c (extract_bit_field): Use mode_for_size for lsb-aligned ! 6924: fields in regs. No longer knows explicit modes for this. ! 6925: ! 6926: Sun May 20 15:12:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 6927: ! 6928: * Makefile.in: (reload1.o): Now depends on output.h. ! 6929: ! 6930: * calls.c (expand_call): No need to set frame_pointer_needed. ! 6931: ! 6932: * emit-rtl.c (gen_rtx): If reference to sp, ap, or fp, use ! 6933: appropriate already-made rtx (e.g., stack_pointer_rtx). ! 6934: ! 6935: * expr.c (expand_builtin, case BUILT_IN_ALLOCA): No need to set ! 6936: frame_pointer_needed. ! 6937: ! 6938: * final.c (final_start_function): No longer round size of frame here. ! 6939: (final_scan_insn): Call constrain_operands with new operand. ! 6940: ! 6941: * flow.c (life_analysis): Change test on whether sp is live or ! 6942: not to depend on FRAME_POINTER_REQUIRED and -fomit-frame-pointer. ! 6943: (This code may not be relevant any more.) ! 6944: ! 6945: * function.c (push_function_context, pop_function_context): No need ! 6946: to save and restore frame_pointer_needed. ! 6947: (assign_{outer_,}stack_local): No need to set frame_pointer_needed. ! 6948: (assign_parms): Likewise. ! 6949: (init_function_start): Don't initialize frame_pointer_needed here. ! 6950: ! 6951: * function.h (frame_pointer_needed): Deleted. ! 6952: ! 6953: * genattrtab.c (write_attr_case): Write call to constrain_operands ! 6954: with new second argument (reload_completed). ! 6955: ! 6956: * global-alloc.c (global_alloc): Don't left fp be allocated if we ! 6957: already know we can't eliminate it. ! 6958: (find_reg): Argument LOSERS is now a HARD_REG_SET instead of an array. ! 6959: Precompute HARD_REG_SETs before loop over registers to speed up ! 6960: allocation. ! 6961: (retry_global_alloc): Argument FORBIDDEN_REGS is now a HARD_REG_SET. ! 6962: (check_frame_pointer_required): Deleted; no longer needed. ! 6963: ! 6964: * integrate.c (save_for_inline, output_inline_function): No longer ! 6965: need to save and restore frame_pointer_needed. ! 6966: ! 6967: * local-alloc.c (block_alloc): No longer have to worry that having ! 6968: a stack variable might cause a frame pointer to be needed when it ! 6969: might otherwise not be. ! 6970: (find_free_reg): Don't allocate into registers that may be eliminated ! 6971: later even if they are not FIXED_REGS. ! 6972: ! 6973: * output.h: Define reload_completed. ! 6974: ! 6975: * recog.c (constrain_operands): Add new argument, STRICT. If zero ! 6976: and the constraints could not be matched, try again with a less ! 6977: strict view (i.e., assume that reload will fix those things that ! 6978: it can). This allows attribute values to be obtained prior to ! 6979: reload. ! 6980: Don't call alter_subreg or assume it has been called. Instead, ! 6981: look inside SUBREGs. ! 6982: ! 6983: * reload.c (find_reloads_address{,_1}): Handle an address that ! 6984: is a MEM; it may have been produced by register elimination. ! 6985: (find_reloads_address): sp can also be the base register for a ! 6986: stack slot. ! 6987: (form_sum): No longer static. ! 6988: ! 6989: * reload1.c: Rewrite code that performs frame pointer elimination. Do ! 6990: it during reload to ensure that all addresses and operands remain ! 6991: valid; also generalize to support more than one pair of eliminations. ! 6992: (reg_equiv_stack_slot, bad_spill_regs): New vars. ! 6993: (forbidden_regs): Now a HARD_REG_SET. ! 6994: (struct elim_table): New structure to describe register eliminations. ! 6995: (reload): Start scanning registers after virtual registers. ! 6996: Initialize reg_equiv_stack_slot for each register. Compute ! 6997: reg_equiv_{mem,address} during register scan only if not eliminating ! 6998: registers. ! 6999: Compute initial default value of frame_pointer_needed. ! 7000: Round frame size to BIGGEST_ALIGNMENT. ! 7001: Create obstack for scratch rtl created by register elmination. ! 7002: Initialize elimination table and spill registers that we know can't ! 7003: be eliminated. ! 7004: On each scan of the insns: Reset all elimination entries to initial ! 7005: offsets, compute reg_equiv_{mem,address}, and see if any potentially ! 7006: eliminable register changed status. ! 7007: Try to eliminate registers from each insn unless we know that none ! 7008: can be eliminated. ! 7009: Don't complete groups for spill registers from registers that ! 7010: shouldn't be used as spill registers. ! 7011: Call reload_as_needed if register eliminations can be done, even if ! 7012: no reloads are needed. ! 7013: (new_spill_reg): Don't allow spilling an eliminable register. ! 7014: Don't set forbidden_regs here. ! 7015: Indicate something changed if a register that wasn't ever used before ! 7016: was made a spill register. ! 7017: (eliminate_frame_pointer, {alter,fix}_frame_pointer_address): Deleted. ! 7018: (delete_dead_insn): New function. ! 7019: (alter_reg): Call it. ! 7020: Always set reg_equiv_stack_slot; if not eliminating registers, also ! 7021: set reg_equiv_{mem,address}. ! 7022: (eliminate_regs, eliminate_regs_in_insn): New functions. ! 7023: (spill_hard_reg): Add new argument, CANT_ELIMINATE. ! 7024: Set bit for register being spilled in forbidden_regs. ! 7025: Use new argument instead of seeing if we are spilling fp. ! 7026: No longer need to have frame pointer just because a reg needs a ! 7027: stack slot. ! 7028: (order_regs_for_reload): Set bad_spill_regs to contain those registers ! 7029: that can't be used for spill registers. ! 7030: Consider any eliminable register as bad to use as a spill register. ! 7031: Rework initialization of potential_reload_regs. ! 7032: (reload_as_needed): Handle register elimination in a similar manner ! 7033: as function reload. ! 7034: (gen_input_reload): When generating a reload for a PLUS, first try to ! 7035: use a three-operand add insn. If that fails, emit two two-operand ! 7036: insns. ! 7037: ! 7038: * rtl.h (FUNCTION_FLAGS_FRAME_POINTER_NEEDED): Deleted; all others ! 7039: renumbered. ! 7040: ! 7041: * stmt.c (expand_decl): No longer have to set frame_pointer_needed ! 7042: for variable-sized decl. ! 7043: ! 7044: * stupid.c (stupid_find_reg): Don't try to allocate an eliminable ! 7045: register. ! 7046: ! 7047: * tm-vax.h (INITIAL_FRAME_POINTER_OFFSET): Add definition. ! 7048: ! 7049: * recog.c (next_insn_tests_no_inequality): If no next insn, return 0. ! 7050: ! 7051: * print-tree.c (print_node): Set length for TREE_VEC. ! 7052: ! 7053: * calls.c (store_one_arg): Set arg->value to location where argument ! 7054: was placed (either register or stack). ! 7055: ! 7056: * recog.c: Needs flags.h (for flag_pretend_float): ! 7057: * Makefile.in (recog.o): Likewise. ! 7058: ! 7059: * expr.c (convert_move): Add missing RETURN statements. ! 7060: ! 7061: Sat May 19 14:26:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 7062: ! 7063: * expr.c (expand_expr, case EXIT_STMT): Return rather than falling ! 7064: out of switch statement (and into `binop'). ! 7065: ! 7066: * cse.c (cse_insn): Allow conditional branches to be turned into ! 7067: noops when the condition is known false by not calling validate_change. ! 7068: ! 7069: * cse.c (fold_rtx): Add LABEL_REF to list of fast RTL codes. ! 7070: ! 7071: Sat May 19 12:41:44 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7072: ! 7073: * tm-i386gas.h (ASM_OUTPUT_ALIGN): Use log as arg to .align. ! 7074: (ASM_OUTPUT_ALIGN_CODE): Likewise. ! 7075: ! 7076: * gcc.c (default_compilers): For .cc, pass -g* to cc1. ! 7077: ! 7078: Sat May 19 06:51:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 7079: ! 7080: * tree.c (push_obstacks, pop_obstacks): Put struct obstack_stack ! 7081: in obstack instead of using xmalloc/free. ! 7082: (init_tree): Initialize new obstack for {push,pop}_obstacks. ! 7083: ! 7084: * tree.c (simple_cst_list_equal): No longer static. ! 7085: ! 7086: Fri May 18 19:38:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 7087: ! 7088: * expr.h (MUST_PASS_IN_STACK): Refine test for case where padding ! 7089: requirement prohibits passing in register. ! 7090: ! 7091: Fri May 18 18:14:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7092: ! 7093: * fixincludes: Fix CAT macro in memvar.h. ! 7094: ! 7095: Fri May 18 16:13:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 7096: ! 7097: * expr.c (do_jump): Don't explicitly copy item being tested from ! 7098: MEM to REG. If needed, this will be done later. ! 7099: ! 7100: Thu May 17 14:33:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 7101: ! 7102: * Makefile.in (bootstrap): Pass LANGUAGES to inner makes. ! 7103: ! 7104: Thu May 17 13:57:34 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7105: ! 7106: * fixincludes: Handle _CTRL like CTRL. ! 7107: ! 7108: Wed May 16 21:09:42 1990 Richard Kenner (kenner at vlsi1.ultra.edu) ! 7109: ! 7110: * fold-const (fold): Two conversions in a row are needed if from an ! 7111: integer type to a pointer type of a different precision. ! 7112: ! 7113: Wed May 16 16:09:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7114: ! 7115: * expr.c (expand_expr): Make sure a volatile value is referenced ! 7116: even if value is ignored. ! 7117: ! 7118: * c-typeck.c (truthvalue_conversion): Result COND_EXPR gets type int. ! 7119: (invert_truthvalue): Simplify COND_EXPR. ! 7120: ! 7121: Tue May 15 00:25:03 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7122: ! 7123: * stor-layout.c (layout_record): Do set TYPE_SIZE if size is var. ! 7124: ! 7125: * reload.c (push_reload): If insn is an asm, verify that CLASS ! 7126: is at least possible for the specified mode. ! 7127: ! 7128: * c-decl.c (complete_array_type): Compensate for wide string constant. ! 7129: ! 7130: * final.c (leaf_function_p): Reject everything if profiling. ! 7131: ! 7132: * function.c (optimize_bit_field): Adjust OFFSET if ! 7133: BITS_BIG_ENDIAN != BYTES_BIG_ENDIAN. ! 7134: ! 7135: * expmed.c (store_bit_field, extract_bit_field): Rework the code ! 7136: to adjust XBITPOS for the size within which to count. ! 7137: (extract_bit_field): When converting MEM to REG, don't make SUBREG ! 7138: immediately; fall through and let this happen in the code that ! 7139: handles original registers of the wrong mode. ! 7140: ! 7141: Mon May 14 16:01:13 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7142: ! 7143: * cexp.y (yylex): Ignore carriage return. ! 7144: * cccp.c (initialize_char_syntax): Likewise. ! 7145: (newline_fix, name_newline_fix): Likewise. ! 7146: ! 7147: * c-common.c: New file. ! 7148: (combine_strings): Moved here. Fix errors for wide string length. ! 7149: * c-parse.y, objc-parse.y, cplus-lex.c: Function deleted here. ! 7150: ! 7151: Sun May 13 08:08:41 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 7152: ! 7153: * integrate.c (subst_constants): Fix typo in case 'E'. ! 7154: ! 7155: Sat May 12 17:14:26 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7156: ! 7157: * combine.c (subst): Don't change -(y-x) to x-y for IEEE floats. ! 7158: Include real.h. ! 7159: ! 7160: * cse.c (fold_rtx): Don't simplify float+0, float-0, float*0 ! 7161: if using IEEE floating point. ! 7162: Don't simplify float-self even if not IEEE. ! 7163: * fold-const.c (fold): Likewise. ! 7164: ! 7165: * i386.md (trunc**): Use long move if source is constant. ! 7166: * out-i386.c (PRINT_REG): Handle CODE == 'k'. ! 7167: ! 7168: * fixincludes: Use rm -fr to delete before making link. ! 7169: ! 7170: * optabs.c (init_optabs): Support MULDI3_LIBCALL, etc. ! 7171: ! 7172: Sat May 12 17:04:58 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 7173: ! 7174: * cse.c (find_best_addr): Don't modify constant address MEMs; they ! 7175: are shared. ! 7176: ! 7177: Sat May 12 15:17:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7178: ! 7179: * ns32k.md (signed bitfield extract): Don't output assembler comment. ! 7180: ! 7181: Fri May 11 15:23:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) ! 7182: ! 7183: * Makefile.in: Don't use $(libsubdir) as a target since it involves ! 7184: shell `...` constructs. ! 7185: ! 7186: * genattr.c (fatal, main): Remove relics of old program name. ! 7187: * genattrtab.c: Likewise. ! 7188: ! 7189: * expr.c (expand_expr, case COND_EXPR): Add missing argument to ! 7190: operand_equal_p. ! 7191: ! 7192: * reload.c (form_sum): Handle case where second operand is ! 7193: (plus foo (const_int ...)). ! 7194: ! 7195: * c-typeck.c (c_sizeof{,_nowarn}, c_alignof): Don't blow up for ! 7196: ERROR_MARK. ! 7197: * cplus-typeck.c (c_sizeof{,_nowarn}, c_alignof): Likewise. ! 7198: ! 7199: * cplus-typeck.c (c_sizeof{,_nowarn}): Convert from bytes to chars, ! 7200: since c defines sizeof (char) as 1. ! 7201: ! 7202: * loop.c (mark_loop_jump): RETURN, SIGN_EXTEND, and ZERO_EXTEND can ! 7203: also occur in JUMP_INSN's. ! 7204: ! 7205: * reload.c (find_reloads, find_reloads_address): Correct errors where ! 7206: an arg to find_reloads is "VOIDmode" instead of "0" and vice versa. ! 7207: (find_reloads_address_1): Likewise. ! 7208: ! 7209: * global-alloc.c (global_alloc): Avoid divide-by-zero for allocnos ! 7210: where all regs have reg_live_length == -2. ! 7211: ! 7212: Fri May 11 14:45:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7213: ! 7214: * tm-i860.h (ASM_OUTPUT_CASE_LABEL): Align to multiple of 4. ! 7215: ! 7216: Thu May 10 23:43:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) ! 7217: ! 7218: * out-i860.c (single_insn_src_p, strict_single_insn_src_p): ! 7219: Correct conditions for needing multiple instructions. ! 7220: (output_delayed_branch): Likewise. ! 7221: ! 7222: See file ChangeLog.1. ! 7223: ! 7224: Local Variables: ! 7225: mode: indented-text ! 7226: left-margin: 8 ! 7227: fill-column: 76 ! 7228: version-control: never ! 7229: End:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.