|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: C T
Length: 71058 (0x11592) Types: TextFile Names: »ChangeLog«
└─⟦a05ed705a⟧ Bits:30007078 DKUUG GNU 2/12/89 └─⟦d53cfc7b2⟧ »./gcc-1.35.tar.Z« └─⟦90f628c1d⟧ └─⟦this⟧ »gcc-1.35/ChangeLog«
Wed Apr 26 02:44:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * Version 1.35 released. * c-decl.c (grokdeclarator): Use INT_CST_LT only on int constants. Tue Apr 25 15:47:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * reload.c (find_reloads_address_1): Always return a value. * flow.c (mark_set_1): Look inside zero_extract, sign_extract. * expr.c (emit_library_call) [STACK_ARGS_ADJUST]: Fix typo for `struct args_size'. Mon Apr 24 00:12:18 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * flow.c (mark_set_1): Look inside strict_low_part. * c-typeck.c (decl_constant_value): Don't use var's init if volatile. * print-tree.c (dump): Don't call walk on rtx's. * integrate.c (expand_inline_function): Convert expanded arg from passed mode to nominal mode. Sun Apr 23 13:14:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * fixincludes: fix _IO macros if split across two lines. Fix typo: EOF was indented. * gnulib2.c: New file with DImode library routines. * Makefile (gnulib2): Put them into gnulib. Must be explicitly requested. Fri Apr 21 13:45:45 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * cccp.c (main): Don't turn on trigraphs for -Wtrigraphs or -Wall; use -trigraphs for that. * cccp.c (main): Use -trigraphs to enable trigraphs. * gcc.c: Pass -trigraphs to cpp; don't pass -T. * Makefile: Variable srcdir relates location of sources to current directory. Default is `.'. * integrate.c (expand_inline_function): When copying expanded arg, use mode it's passed in, not arg's nominal mode. * dbxout.c (dbxout_block): Print generated name with assemble_name. Thu Apr 20 12:36:09 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * stdarg.h: check __sparc__ instead of sparc. Tue Apr 18 18:58:03 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * tm-next.h (STARTFILE_SPEC): Define it. Mon Apr 17 19:56:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * dbxout.c (dbxout_block): Use ASM_GENERATE_INTERNAL_LABEL to format the labels LBB... and LBE... Sun Apr 16 23:57:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * mips.md: Change MINUS to COMPARE where appropriate. Sat Apr 15 16:11:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * c-decl.c (finish_struct, redeclaration_error_message): Rename variables named OLD and NEW. * sparc.md (cse'd mult pattern): Handle memory operands. Optimize small integer operands. * stmt.c (expand_decl): On sparc, ensure dynamic arrays of doubles are properly aligned, despite unaligned STACK_POINTER_OFFSET. Fri Apr 14 10:59:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * expr.c (expand_call): Bugs treating struct value address as param: do so only if it's supposed to be pushed; decode value of FUNCTION_ARG properly. * tm-altos3068.h (CPP_SPEC): Some braces were dropped. * gcc.c (pexecute): Print message when exec fails. (perror_exec): New fn. (perror_with_name,pfatal_with_name): Change message syntax. * tm-hp9k320.h (ASM_IDENTIFY_GCC): Define as no-op. Wed Apr 12 00:20:31 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * cse.c (cse_insn): Can record constant value being stored in a bit field, if we can tell that truncation won't change it. * m68k.md (bfset, bfclr, bfchg insns): Do CC_STATUS_INIT since the cc's are set from the old contents. * gcc.c (compilers): Running `as', put -o option before input file. * gcc.c: Delete output file only if that file's compilation fails. * gcc.c (record_temp_file): Changed args: always_delete, fail_delete. (store_arg): Likewise. Callers changed. (clear_failure_queue): Called after each compilation. Tue Apr 11 01:18:53 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * combine.c (subst): (SET (ZERO_EXTRACT) (OR (ZERO_EXTRACT) const)) optimization was sometimes invalid. * tm-m68k.h (NOTICE_UPDATE_CC): A doubleword move that requires 2 insns does not set the cc's usefully. * Makefile (cleanlinks): Just do `clean', not `realclean'. (realclean): Delete config links also. * expr.c (expand_call): Handle case where return value is in memory but TARGET is a register. * c-typeck.c (build_binary_op_nodefault): New arg ERROR_CODE is passed to binary_op_error instead of CODE. All callers changed. (binary_op_error): CODE = NOP_EXPR is new special case. (truthvalue_conversion): Call build_binary_op_nodefault directly and specify NOP_EXPR for the error code. * c-decl.c (xref_tag): If pedantic, warn on fwd ref to enum. Mon Apr 10 19:44:48 1989 Chris Smith (csmith at mozart) * tm-convex.h (PCC_BITFIELD_TYPE_MATTERS): It doesn't, but set it anyway. It makes for better code on this word machine. * convex.md (one_compl*): add not:QI and not:HI, which do get used after all. * tm-convex.h (A_REG_P, S_REG_P): define new macros convex.md: use them * convex.md (addsi3): tidy up constraints. * tm-convex.h (REG_OK_FOR_INDEX_P): stack pointer is not ok. * convex.md: add a pattern to push REG+CONST so we can prefer an A reg. * tm-convex.h (tstqi): should sign extend, not zero extend. * expr.c (convert_move): Extending narrow to DI via SI, operand of extendsidi2 was wrong. * emit-rtl.c (gen_lowpart): Handle CONST_DOUBLE. Mon Apr 10 05:19:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * recog.c (nonmemory_operand): Test constant operands as general_operand does. * tm-m68k.h (PRINT_OPERAND): Limit effect of code `d' to constant addresses. * loop.c (can_eliminate_biv_p, eliminate_biv): Don't rely on givs with nonconstant coefficients, since the coeffs could be zero. * loop.c (can_eliminate_biv_p): Check each giv for ! ignore before assuming it can be used. (check_eliminate_biv): New fn, a piece of strength_reduce broken out. * cccp.c (error_from_errno): New fn, like error and perror_with_name. (do_include): Call that if open fails. (finclude): Print I/O error msg before closing desc. * c-decl.c (shadow_tag): If more than one tag or structure, or anything other than a tag, warning. * c-parse.y (components): Just warn if memb decl has no member, and only if pedantic. * loop.c (strength_reduce): Print uids, not luids, for dump. (record_giv): giv_count field counts only DEST_REG givs. (check_dbra_loop): src_two_before_end was set wrong. * loop.c (record_giv): New arg LOOP_END; all callers changed. Don't mark giv replaceable if used past LOOP_END. (find_mem_givs): New arg LOOP_END; all callers changed. * out-i386.c (FP_CALL): Make this a `return' stmt. Fri Apr 7 11:56:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * expr.c (expand_expr, case ..._DECL): Preserve mode thru calling change_address. * expr.c (emit_library_call): Typo: ARGNUM => COUNT. * expr.c (preexpand_calls, expand_call): Take note of RETURN_IN_MEMORY. * stmt.c (assign_parms): Likewise. * integrate.c (function_cannot_inline_p): Likewise. * STACK_ARGS_ADJUST: Arg is now a `struct arg_data' and it should be updated in place. * tm-mips.h: Define it. * expr.c (expand_call): Adapt to this. Assume padding comes after args so turn off the feature of changing the args' offsets. (emit_library_call): Adapt to this. * tm-mips.h (PRINT_OPERAND): Use CONST_DOUBLE_{LOW,HIGH}. Truncate SFmode constants to single precision. * c-typeck.c (mark_addressable): Fix test for local vs global reg var. * config.gcc: Change `:-' to `-' in var refs. Shell on convex doesn't handle `:-'. Thu Apr 6 00:09:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * integrate.c (expand_inline_function): Compare actual's mode against formal's DECL_ARG_TYPE's mode, not TREE_TYPE's mode. * c-decl.c (implicitly_declare): Make the decl permanent if in global binding level. (Can happen for certain invalid input.) * c-typeck.c (build_modify_expr): Block path that made a MODIFY_EXPR containing an ERROR_MARK. * config/tm.h: New file. * loop.c (only_reg_use_p): Fix bugs in recursion, add some fast special cases. Comment on return value was backwards. (strength_reduce): Negate the value of only_reg_use_p. * genoutput.c (output_prologue): Output `#include hard-reg-set.h'. * Makefile: insn-output.o depends on that. * toplev.c (main): Typo recognizing -Wswitch. * config.gcc (mips): New alternative. * tm-mips.h, out-mips.c, mips.md, va-mips.h: New files. * varargs.h: Include va-mips.h if on mips. Wed Apr 5 16:58:04 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * c-decl.c (duplicate_decls): Rename OLD, NEW to OLDDECL, NEWDECL. * stmt.c (expand_function_start): Ref subr instead of current_function_decl; should make no difference. * stmt.c (assign_parms): Do extra padding for some parms, controlled by MAX_PARM_BOUNDARY. * expr.c (expand_call): Same thing for caller side. Note this is implemented only for machines that lack push insns. Also, in both cases, it doesn't handle variable-size args. Tue Apr 4 12:22:06 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * gcc.c (find_file): Try STANDARD_EXEC_PREFIX for startfiles too. * varasm.c (make_decl_rtl): Delete never-executed clause. * spur.md (movqi, loadhi, extend*, zero_extendhisi): Make subregs with C code, not RTL patterns, so we can avoid generating subreg of subreg. * optabs.c (emit_cmp_insn): Not all clauses always succeed, so stop using `else' structure. * stmt.c (expand_return): Avoid moving void to void, in cleanups case. Mon Apr 3 18:04:33 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * m68k.md (cmphi): Don't allow a-reg vs a-reg, since that sign-extends. If there is one a-reg, make sure it is not last. Sun Apr 2 13:02:26 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * stor-layout.c (agg_mode): Use highest mode that has desired size. Allow all integer modes, but reject sizes > MAX_FIXED_MODE_SIZE. (That defaults to the size of DImode.) * machmode.def: Add PSI, PDI and XF, CXF modes. Sat Apr 1 00:50:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * ns32k.md (ashd, lshd): Delete patterns that logand the count with 31. The shift count is not truncated on this machine. * combine.c (subst): Simplify nested or's, nested xor's. (try_distrib): XOR doesn't distribute through anything. * rtl.c (rtx_equal_p): Don't die on null pointers. * loop.c (eliminate_biv): Use COMPARE, not MINUS, in generated compare. * loop.c (invariant_p): Mem refs in constant pool are invariant. * c-decl.c (redeclaration_error_message): If -traditional, allow redeclarations of typedef provided they agree. * c-decl.c (start_decl): Do expand_decl on the decl that pushdecl returns. If there was a prev. decl with a different type, we have changed its type and cleared its old rtl, so it need new rtl. Sat Apr 1 00:50:11 1989 Matthew Self (rms at sugar-bombs.ai.mit.edu) * expr.c (convert_move): Modified to use mode classes instead of refering to specific machine modes. * expr.c (do_jump): Converted to use CONST0_RTX macro. do_jmp no longer refers to any machine modes directly except for VOIDmode! * expr.c (compare, compare1): Modified to use CONST0_RTX macro. No longer refers to any machine modes directly except VOIDmode and BLKmode! * machmode.def: Documented assumptions made about the order of machine modes during mode widening. * optabs.c (expand_binop, expand_twoval_binop, expand_unop, emit_cmp_insn): Added mode widening which is independent of specific machine modes. It assumes that we may widen to any higher numbered mode of the same mode class. NOTE: the checks for VOIDmode ops which were present in QI and HI to SI widening are now present in all widening. I assume this is correct. Also, widening is now possible from QI to HI. This may or may not be a good thing.... * rtl.h (CONST0_RTX): Added definition of new macro CONST0_RTX (mode). * rtl.h (GET_NOTE_INSN_NAME, GET_REG_NOTE_NAME): New macros. * rtl.c (note_insn_name, reg_note_name): New tables. * rtl.def (NOTE): Change last field from `i' to `n'. * rtl.c (print_rtx): Print mode of INSN_LIST or EXPR_LIST as reg-note. Print operand code `n' as name of kind of note. (read_rtx): treat `n' like `i'. * loop.c (struct induction): Add `mode' field. (strength_reduce, record_giv): Set the `mode' field in V. (can_eliminate_biv_p, eliminate_biv): Use that field. * loop.c (struct iv_class): `init_insn' records what inits the biv. Replaces `init_val_set' flag. (strength_reduce): Update and test `init_insn' instead. Use of a biv between its init and the start of the loop does not preclude its elimination from the loop. Setting a giv is ok for eliminating a biv, even if giv is "ignore", since that just means giv will be combined with another. Handle some DEST_ADDR givs for that purpose. Test for giv-setting before check can_eliminate_biv_p. New error check for replaceable giv whose value needed after loop. (only_reg_use_p): New fn. * expr.c (expand_expr): PLUS, MINUS with EXPAND_SUM: Associate even harder. * loop.c (strength_reduce): Treat all constant biv init vals like ints. * loop.c (strength_reduce): Clear all_reduced when v->ignore is set; the code to check this later didn't always do the job. * loop.c (verify_loop): Set loop_continue. (scan_loop): mention its value. * rtl.h: Define NOTE_INSN_LOOP_CONT. * stmt.c (expand_loop_continue_here): Output one. Fri Mar 31 10:08:29 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * c-typeck.c (pointer_int_sum, pointer_diff): Treat const void * like void *. * rtl.c (rtx_addr_varies_p): Don't die on null exp. * cse.c (refers_to_mem_p, refers_to_p): Likewise. * gcc.c (validate_switches, validate_all_switches): New fns. Mark a switch as valid if any compiler spec or the linker spec matches it, even for languages not being used. Thu Mar 30 00:22:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * loop.c (loop_optimize, move_movables): when moving a `clr' insn used in zero-extension, sometimes change it to an `and' so that the significant low bits are not clobbered. * cccp.c: Implement __BASE_FILE__ and #once. (savestring): New fn. (struct file_name_list): new name for struct directory_stack. (enum node_type): Add T_ONCE, T_BASE_FILE. (directive_table): Add #pragma once. (initialize_builtins): Add __BASE_FILE__. (special_symbol): Handle __BASE_FILE__, together with __FILE__. (do_include): Ignore the file if it's on the #pragma once list. (do_once): New fn; add current file to #pragma once list. * cccp.c (do_include): Don't add non-ex files to list of deps. * config.gcc: Use {...:-...}, not {...=...}. * c-parse.y: Add precedence for IF/ELSE, and for parens; avoids some conflicts. * tm-newsgas.h: Include tm-news.h and define USE_GAS. * tm-news.h: New name for tm-news800.h. If not USE_GAS, define SONY_ASM. Don't define USE_GAS by default. (CPP_PREDEFINES): Various alternatives depending on processor type. (ASM_FORMAT_PRIVATE_NAME): Override this. (ASM_IDENTIFY_GCC): Override; output nothing. (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Round fsize up to % 4. Max for halfword link insn is 32k, not 64k. (FUNCTION_EPILOGUE): Don't output move.l if no regs to restore. (PRINT_OPERAND_ADDRESS): Change handling of tableref pc-rel addresses. * m68k.md (movhi): Add SONY_ASM conditional. * cse.c (cse_insn): If replacing a dest address, preserve MEM_IN_STRUCT * gcc.c (error, fatal): alternate varargs defns if HAVE_VPRINTF. Wed Mar 29 09:54:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * gcc.c (process_command): Check WORD_SWITCH_TAKES_ARG, so that -Tdata can be handled right. * stmt.c (check_for_full_enumeration_handling): new fn, for warn_switch (expand_end_case): Call it, if orig index was enum. * toplev.c (main): Handle -Wswitch. * c-parse.y (SWITCH stmt): Pass orig switch expr to expand_end_case. * tm-*.h, out-*.c: Uniformly use reg_names, not reg_name, and don't define any duplicates. * final.c: Delete reg_name. * c-parse.y (is_reserved_word): Add keywords __asm and __inline; also __const and __volatile. (yylex): Keywords that start with `__' are recognized regardless of -traditional or -ansi. * c-parse.y (check_newline): Always recognize #ident. Macro IDENT_DIRECTIVE is no more. If ASM_OUTPUT_IDENT is undefined, don't output anything for #ident. * tm-3b1.h: Don't define IDENT_DIRECTIVE or ASM_OUTPUT_IDENT. * tm-encore.h, tm-i386gas.h, tm-i368v.h, tm-sun386i.h, tm-vaxv.h: Don't define IDENT_DIRECTIVE; define ASM_OUTPUT_IDENT to output in default way. * expr.h (RETURN_IN_MEMORY): New macro, default defn here. * expr.c (expand_call): Use it to control where to return value. * stmt.c (expand_function_start): Likewise. * out-sparc.c (find_addr_reg): Abort if none found. Eliminate confusion; do only one change between tests for PLUSness. (output_move_double): Arg to find_addr_reg is address, not mem ref. * out-m68k.c, out-spur.c, out-i386.c, out-alliant.c: Likewise. * jump.c (find_cross_jump): Don't let either E1 or E2 be included in the range of matching insns preceding the other (E2 or E1). * c-parse.y (check_newline): No error for `#pragma\n'. * Makefile (gcc.o): Control STANDARD_STARTFILE_PREFIX here. * stmt.c (walk_fixup_memory_subreg): handle null. * tm-sparc.h (FUNCTION_BLOCK_PROFILER): Change LPBnn to LPYnn, to avoid conflict with final.c. Tue Mar 28 15:23:17 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * cccp.c (do_include): If fail, print system error message. (perror_with_name): Use more standard error format. Inc. `errors'. * dbxout.c (dbxout_function): Output any temporary types that were made by dbxout itself. * stmt.c: always use an epilogue if pcc-struct-return. (expand_function_start): Compute return_label after testing that. (expand_function_end): Output a return insn after pcc-struct-return processing, if there is a return insn. (expand_null_return): Don't output a return insn, in that case. Simplify the conditions--depends entirely on HAVE_return. * tm-m68k.h (FUNCTION_BLOCK_PROFILER): Use jsr, not call. * reload.c (find_reloads): Certain mem addresses will be offsetable after reloading; in particular, those where reg_equiv_address applies. * loop.c (check_dbra_loop): Change MINUS to COMPARE. * c-typeck.c (convert_for_assignment): Return THE standard error_mark. Thu Mar 23 09:39:02 1989 Richard M. Stallman (rms at watson) * c-parse.y (components): Error if empty. * dbxout.c (dbxout_symbol): Output const variables as N_STSYM. * varasm.c (force_const_mem): Use ASM_OUTPUT_DOUBLE_INT if defnd. * c-decl.c (grokdeclarator): Warn about `long long long'. * reload1.c (reload): When changing REG to MEM, clear REG_USERVAR_P. * final.c (alter_subreg): Preserve volatile bit of MEM. * m68k.md (cmpsi, cmphi): Permit cmpm. * gcc.c (find_file): Use standard_startfile_prefix_2. Now search /usr/local/lib/, /lib/ and /usr/lib/. * tm-m68k.h (PRINT_OPERAND): Support code `d'. * m68k.md (cmpsi, cmphi, cmpqi): Use it for all mem addresses. * final.c (output_asm_insn): Don't allow %LETTER without an operand number. * tm-m68k.h, m68k.md, tm-hp9k320.h, tm-news*.h: Use %@ instead of %s. * tm-alliant.h, alliant.md: Likewise. * i386.md, out-i386.h: Put `0' after each %L, %W, %B, %S, %Q, %R. * stmt.c (expand_end_stmt_expr): Pop pending stack args. * varasm.c (assemble_variable): For 0-size common variable, allocate at least 1 byte. * tm-encore.h (ASM_OUTPUT_DOUBLE, PRINT_OPERAND): Use 0f, not 0l, for doubles. Mon Mar 13 10:24:56 1989 Richard M. Stallman (rms at ccvi) * out-i386.h (function_prologue, function_epilogue): Use call_used_regs, not a copy, so -f options work. Save regs in the opposite order. Save regs even starting from 0 if they happen to be call-saved. * Bug fixes from Rob McMahon. * loop.c (strength_reduce): When inserting insn to set nonreplaceable giv, put it after all the consecutive insns that compute it. * reload.c (find_reloads): When forcing const to mem, use the insn's operand mode, not the const's mode. * reload1.c (choose_reload_targets): Use wider of inmode and outmode when determining have_groups. * reload1.c (choose_reload_targets): typo checked wrong insn with constraint_accepts_reg_p. * reload1.c (choose_reload_targets): Enable #if-0'd code for forgetting old reloads in case of output reload from a non-spill-reg. Sun Mar 12 00:04:49 1989 Richard M. Stallman (rms at ccvi) * c-parse.y (yyerror): Add forward-decl here. * c-tree.h: Delete decl here. * New macro USE_C_ALLOCA. * cse.c (cse_main): Do alloca (0) to clear out C alloca. * flow.c (life_analysis): * local-alloc.c (local_alloc): * reload1.c (reload_as_needed): likewise. * loop.c (emit_iv_init_code, eliminate_biv): Always put constant in a PLUS last. * gcc.c (make_switch): Unused function deleted. *gcc.c (switches): Each switch has a `used' field. (process_command): Init it to 0 when making `switches'. (do_spec_1, handle_braces, give_switch): Set to 1 when switch is used. (main): If it remains 0 at the end, print error message. * expr.c (convert_move, convert_to_mode): Don't truncate a MEM in place if it is volatile. * loop.c (strength_reduce): When reducing a giv, if the biv is incremented between the giv's creation and its use, increment the reduced giv var *after* its use. * c-decl.c (duplicate_decls): Warn about proto vs nonproto only if no other errors apply. * jump.c (invert_exp): Don't crash if arg is null. * alliant.md (float*i*f2): Don't allow immediate ops. (sne): Fix typo, fsne => fsneq. * expr.c (store_one_arg, expand_call): When size doesn't matter, pass const0_rtx, not (rtx) 0. * expr.c (do_jump): Args to invert_exp were missing. * gcc.c (store_arg): Now 2 separate args for delete-on-success and delete-on-failure. All calls changed. (do_spec_1): DELETE_THIS_FILE is meaningful for output files. * config/xm-alliant.h (LINK_SPEC): Pass -X to linker. Sat Mar 11 10:30:41 1989 Richard M. Stallman (rms at ccvi) * tm-*.h, xm-*.h, *.md: Moved to subdir `config'. * output-*.c: Moved to `config/out-*.c'. * Makefile (.c.o): Define rule to use -Iconfig when compiling. (various): Delete the commands from some compilation rules. Put -Iconfig in other compilation commands. Also some reordering of variable defs and comments for cleanliness. (realclean): Change a shell comment to a Make comment. * fold-const.c (fold): Simplify and extend TRUTH_... operators knowing that args must be ints and values will be 0 or 1. * gcc.hlp: New file (for VMS). * reload1.c (reload): Don't let two 2-groups overlap. * reload.c (push_reloads): When a plain reg matches a reload for an increment, don't change the reload_in to a plain reg. Leave the increment there. * integrate.c (expand_inline_function): Don't try to inline unless the parm machine modes really match what's expected. * stmt.c (emit_case_nodes): default_label is an rtx, not tree. * tm-next.h (DOLLARS_IN_IDENTIFIERS): Define it as 1. * output-sparc.c (output_move_double): Don't trust random structs to be double-word aligned. * gcc.c: Pass -Wcomments to cpp. * rtl.def (ASM_OPERANDS): New operands, source file and line. * rtl.h (ASM_OPERANDS_*): New macros for components of ASM_OPERANDS. * stmt.c (expand_asm_operands): Use new fields, not REG_ASM_* notes. * toplev.c (error_for_asm): likewise. * rtl.h (enum reg_note): Delete REG_ASM_FILE, REG_ASM_LINE. * combine.c (try_combine): Check explicitly for volatility in I2, I1. Fri Mar 10 19:30:10 1989 Richard M. Stallman (rms at ccvi) * c-parse.y (GOTO stmt): Set TREE_USED for the label. * c-decl.c (poplevel): Warn about unused label. * c-decl.c (warn_pointer_arith, warn_strict_prototypes): New vars. (lang_decode_options): Options to set them. * c-typeck.c (pointer_int_sum, c_sizeof): Maybe warn if bad target. * c-decl.c (grokparms): Maybe warn if nonprototype fn decl. * flags.h, toplev.c (warn_shadow): New flag. * toplev.c (main): Decode it. * c-decl.c (pushdecl): Maybe warn about any shadowing. Existing parm-shadowing warning now disabled if shadowing decl is also a parm. * flags.h, toplev.c (warn_id_clash, id_clash_len): New flags. * toplev.c (main): Decode -Wid-clash-LEN. * tree.c (get_identifier): Implement warning if two idents match. * toplev.c (compile_file): Warn about statics defined and unused. * rtl.h (CONST0_RTX): New macro. * recog.c (offsetable_address_p): New 1st arg says whether to demand a strictly valid address. (offsetable_memref_p): Pass nonzero. * stmt.c (optimize_bit_field): Pass zero. * cccp.c (main): Allow -Wcomment like -Wcomments. * c-decl.c (lang_decode_options): Likewise. Sun Mar 5 15:02:59 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) * m68k.md [tstdf, cmp[sd]f, truncdfsf2, floatsi[sd]f2, add[sd]f3, sub[sd]f3, mul[sd]f3, div[sd]f3, neg[sd]f2, abs[sd]f2]: Made sure that the test function's in the match_operands of the define_expand and define_insn's matched, and made that test function "register_operand" when both define_insn's really needed registers in that spot. Sat Mar 4 00:25:37 1989 Richard M. Stallman (rms at c2v) * expr.c (emit_push_insn): Don't ever bypass the big-endian padding at the end. * cccp.c (deps_output): Break line if would otherwise exceed 75 chars. Make a name for that value 75. * combine.c (subst): Handle general case of (subreg (sign_extend X)). * tm-sun386i.h (CPP_PREDEFINES): Define `sun'. * fixincludes: change `find' calls to find dirs thru symlinks. * flow.c (mark_set_1): (set (subreg (reg N))...) does make reg N significant for this basic block. Fri Mar 3 13:55:25 1989 Richard M. Stallman (rms at c2v) * c-decl.c (parmlist_tags_warning): Print an explanation for the first such warning. * i386.md (extendsfdf): Let op 1 match op0 if that is an fp reg. * expr.c (expand_call): Fix stupid errors copying pcc struct value. * varasm.c (output_constructor): Discard NOP_EXPRs from build_c_cast. Thu Feb 23 05:55:57 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * Version 1.34 released. * c-typeck.c (build_c_cast): If EXPR is an error mark, return that. * fold-const.c (div_and_round_double): Abort if divisor is 0. (combine): Likewise, for real constants. (real_zerop): New subroutine. (fold): Don't try to fold division if divisor is 0. Don't try to fold reals if can't do arithmetic on them. Don't try to compare reals for TRUTH_..._EXPR if can't do arith. Use real_zerop to test reals for zeroness. For TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR, can simplify based on first operand alone. * c-typeck.c (store_init_value): Fix error msg text. * tm-sparc.h (FUNCTION_PROFILER): Use `mcount'. * tm-sun4os3.h (FUNCTION_PROFILER): Override it; use `.mcount'. Wed Feb 22 04:33:22 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * tm-hp9k320.h (CPP_SPEC, CPP_PREDEFINES): Make handling of -Dmc68000 depend on TARGET_DEFAULT. * tm-sparc.h (FUNCTION_PROFILER): Missing newline in fprintf. * integrate.c (expand_inline_function): Don't map struct-value-address in memory if fn does not use it. * c-parse.y (check_newline): At skipline, detect eof. * stmt.c (uninitialized_vars_warning): Change text of warning. Tue Feb 21 03:58:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * output-sparc.c (output_mul_insn): Handle case of both args in reg 8, or both in reg 9. * tm-sparc.h (ASM_SPEC): Define, to handle -pipe. * tm-sparc.h (FUNCTION_PROFILER): Add omitted fprintf args. (BLOCK_PROFILER): Likewise. Use tempvar. * m68k.md (QImode btst): Allow nonoffsetable mem refs. Mon Feb 20 00:32:42 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * flow.c (mark_used_regs): Don't record about global reg vars. * config.gcc (convex-*): tm file names are tm-convex1.h, tm-convex2.h. * tm-vax.h, tm-ns32k.h, tm-alliant.h: Define PCC_STATIC_STRUCT_RETURN. * gcc.c (compilers): Pass `-a' to cc1. * tm-sun3.h, tm-sparc.h (LIB_SPEC): Define, to handle `-a'. * expr.c (emit_push_insn): Copy stack addresses to be passed to bcopy; old method of preadjustment is broken by changes in emit_library_call. * c-decl.c (finish_decl): New temp `temporary'; don't get confused about whether allocation was temporary. Sun Feb 19 17:03:35 1989 Chris Smith (csmith at mozart) * tm-convex.h: define PCC_STATIC_STRUCT_RETURN * convex.md: remove pshea patterns, movsi does it better. add ashift:DI abs:DF abs:SF (tstdi): use a clobbered register instead of a bogus DImode zero. (trunchiqi2): delete noninstruction cvth.b (udivsi3, udivhi3, udivqi3): deleted, expand_divmod does it now. (call, call_value): delete stupid call/ret -> jump optimization. (call, call_value): flush call_ap_check, use reg_mentioned_p instead. * convex.md: (movxx): swap constraint alternatives so that the leftmost alternative is (set =g r). This makes (set mem const) get combinable input reloads of const instead of uncombinable output reloads to mem. They still do not combine, but wtf, I'll inch up on it. * output-convex.c: (const_double_{high,low}_int): new routines to pick apart const_doubles for assembler. Sun Feb 19 01:40:17 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * sparc.md (shift memory right 24 bits): Another `a1' typo. * config.gcc (convex-*): Delete troublesome whitespace. * c-decl.c (grokparms): Delete redundant `parm != 0' tests. * stmt.c (fixup_memory_subreg): Slight simplification. * tm-sparc.h (FUNCTION_PROFILER): Fill delay slot. (FUNCTION_BLOCK_PROFILER): Use sethi. (BLOCK_PROFILER): Use %g2, not %g0. Use sethi. Sat Feb 18 02:11:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * expr.c (expand_expr): Ignore const array's initial value if it's an error_mark. * c-decl.c (finish_decl): Set DECL_INITIAL to an error_mark if the decl is a permanent node. * cccp.c (rescan): If traditional, if macro ends inside string, keep scanning for the end of the string. (handle_directive): A line of just `#' becomes blank. (collect_expansion): \ in strings traditionally doesn't hide macro arg. * m68k.md, alliant.md (addsi3): New alternative a=r+a, in addition to old a=a+r, needed since reload-insns are not commuted. Fri Feb 17 03:15:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * tm-m68k.h (PCC_STATIC_STRUCT_RETURN): Define it. * toplev.c, flags.h: New var flag_pcc_struct_return. * stmt.c (expand_function_start): Obey new flag and new variable. * expr.c (expand_call): Obey new flag and new variable. * varasm.c (assemble_static_space): New function. * stmt.c (expand_return): If we need cleanups, compute retval first into pseudo reg, then do the cleanups, then copy it to return reg. Thu Feb 16 02:59:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * regclass.c (init_reg_sets_1): Win if STATIC_CHAIN_REGNUM undefined. * expr.c (expand_call): Handle conflict between two precomputed args that are both function calls returning structures. * loop.c (move_movables): Bkwds test of m->partial, for a matching reg. * expr.c (emit_library_call, expand_call): Handle STACK_ARGS_ADJUST. Wed Feb 15 01:59:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * toplev.c (flag_caller_saves): New var, for -fcaller-saves. DEFAULT_CALLER_SAVES controls initial value. * global-alloc.c (find_reg): Do caller saves only if flag set. * local-alloc.c (find_free_reg): Do caller saves only if flag set. * tm-alliant.h, tm-convex.h: Define DEFAULT_CALLER_SAVES. Wed Feb 15 01:59:15 1989 Chris Smith (rms at sugar-bombs.ai.mit.edu) * caller-save.c: New file. * regs.h (CALLER_SAVE_PROFITABLE): New macro. (reg_n_calls_crossed): new int-vector replaces reg_crosses_calls. * flow.c (allocate_for_life_analysis, propagate_block, dump_flow_info): Use reg_n_calls_crossed. * stupid.c (stupid_mark_refs, stupid_life_analysis): Likewise. * global-alloc.c (find_reg): Sometimes allocate call-clobbered regs for call-crossing pseudos. New arg ACCEPT_CALL_CLOBBERED; callers changed. * local-alloc.c (find_free_reg): Similar changes. (qty_n_calls_crossed): New int-vector replaces qty_crosses_calls. (alloc_qty, local_alloc, combine_regs, find_free_reg): change that var. * regclass.c (call_fixed_regs, call_fixed_reg_set): new vars. (init_reg_sets_1): Initialize them. * reload1.c (reload): Call caller-saves processing if needed. Wed Feb 15 01:59:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * expr.c (expand_expr): INTEGER_CST for DImode: don't handle endianness here. So CONST_DOUBLE_LOW is always the low word. * varasm.c (force_const_mem): Handle it here. * expr.c (convert_move): widening followed by extendsidi2 had braino. * integrate.c: Don't include ctype.h; not needed and kills Sun cpp. * m68k.md (cmpsf, cmpdf and their recognizers): Replace MINUS with COMPARE. Also, use VOIDmode for COMPAREs, not SF or DF. * optabs.c (sign_expand_binop): Handle ops such as division where an unsigned char could be widened and handled with signed int insns. * expmed.c (expand_divmod): Use that. * c-typeck.c (digest_init): Allow for type variants in validating initialization from a string constant. * c-typeck.c (decl_constant_value): Disable opt. if pedantic or outside functions, so that validity of program is never affected. * fold-const.c (fold): Signedness-test for ABS_EXPR was backwards. Tue Feb 14 01:30:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * cccp.c (main): Don't omit normal output, if we want deps on a separate stream. * c-decl.c (grokdeclarator): Don't record any arg types for functions if -traditional. * print-tree.c (prtypeinfo): Mention permanent attribute. * tm-next.h: New file. * c-typeck.c (decl_constant_value): The DECL_INITIAL may be ERROR_MARK. * c-decl.c (duplicate_decls): For fns, new static decl overrides old non-static one. * emit-rtl.c (gen_lowpar, gen_highpart): Use change_address, so we preserve volatility, etc. * stmt.c (expand_expr_stmt): Use emit_filename, emit_lineno as file and line for any warning. * emit-rtl.c (emit_line_note): Set those vars. * c-decl.c (store_parm_decls): If -Wimplicit, warn of arg with no decl. * recog.c (offsetable_address_p): Use strict_memory_address_p, since called from reload.c. Mon Feb 13 03:11:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * sparc.md (compare-to-reg patterns): Some still had MINUS. * toplev.c (main): Warn if `-a' on system that can't handle it. * stmt.c (expand_asm_operands): Delete unused local `val'. (pushcase_range): Likewise for `value'. (fixup_var_refs): Likewise for `insn'. * emit-rtl.c (start_sequence): Likewise for `save'. * loop.c (scan_loop): Likewise for `before_start'. * expr.c (expand_expr): Delete label `binop1'. * reload1.c (constraint_accepts_reg_p): Handle SUBREGs of REGs. Sun Feb 12 05:37:46 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * gnulib.c (__bb_init_func): New function * tm-m68k.h (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): Defined. Sat Feb 11 00:05:55 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * tm-sparc.h (FUNCTION_PROFILER): Make it really work. (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): New macros. * final.c (final): Use BLOCK_PROFILER at start of each basic block. (final_start_function): Use FUNCTION_BLOCK_PROFILER if -a. (end_final): New fn to output the block-profiling tables. * toplev.c (profile_block_flag): Set if -a. (compile_file): Call end_final. * combine.c (try_combine): Avoid combining in most cases if I3 has an inc or dec and I1 or I2 uses the same register. * tree.c (size_in_bytes, int_size_in_bytes): Use type's main variant. * c-typeck.c (actualparameterlist): Error if parm type is incomplete. * expr.c (expand_call): Ignore args that have incomplete type. Fri Feb 10 02:26:02 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * c-parse.y (case stmts): strip dummy NOP_EXPRs. * reload1.c (reload_as_needed): Clear reg_{has,is}_output_reload here, (choose_reload_targets): not here. Thu Feb 9 01:35:55 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * output-sparc.c (output_mul_by_constant): Forget cc status. * stmt.c (assign_parms): Don't put volatile parms in regs. * vax.md (jlbs/jlbc recognizers): Move them before jbc/jbs recognizers. * cse.c (fold_rtx): Handle (EQ (COMPARE ...) (CONST_INT 0)). * c-typeck.c (default_conversion, digest_init): For static const nonvolatile scalar variable, use its initial value if known. * expr.c (expand_expr: case COMPONENT_REF): If containing structure comes out volatile, leave the component MEM volatile too. * hard-reg-set.h: Fix multi-word case macros to swallow semicolon. * c-typeck.c (default_conversion): In array=>ptr, volatility of target type comes from TREE_THIS_VOLATILE, not TREE_VOLATILE. * reload1.c (forget_old_reload_1, choose_reload_targets): New array reg_is_output_reload is converse of reg_has_output_reload. forget_old_reload_1 needs both. Wed Feb 8 01:26:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * reload1.c (forget_old_reloads_1): New fn, guts of forget_old_reloads. Do process a spill reg if it isn't used for reloading in this insn. (forget_old_reloads): Deleted, replaced with note_stores. (reload_as_needed): Undo Feb 1 change. Call forget_old_reloads_1 on pseudos autoincremented and not reloaded. * c-typeck.c (convert_for_assignment): Handle variant types. * c-decl.c (lang_decode_option): -Wall implies -Wunused. Tue Feb 7 01:32:28 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * combine.c (try_combine): Don't try adding outputs to an asm_operands. * cse.c (CHEAPER): Don't ever let a hard reg get ahead of a pseudo. * stmt.c (fixup_gotos): Don't crash on undef label if THISBLOCK is 0. * c-decl.c (parmlist_tags_warning): New fn. * c-parse.y (parmlist, parmlist_or_identifiers): Call it, to warn about any tags defined inside the parmlist. * c-decl.c (grokparms): Don't warn about ptr to incomplete type. The new warning is better. Mon Feb 6 01:11:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * expr.c (store_constructor): Incorrect ALIGN arg in store_field calls. * c-parse.y (%union): Delete unused alternative. * c-decl.c (grokparms): Use main variant to test for ptr to incomplete. * c-decl.c (finish_enum): Delete superfluous init for `pair'. * cse.c (fold_rtx): Optimize X+0, X-0 in floating point. Fix typo in PLUS case; omitted value to compare GET_MODE_CLASS against. (equiv_constant): Allow CONST_DOUBLE. * cse.c: Optimize past if-statements that are known to fail. (cse_insn): If condjump becomes uncond to end of this block, set cse_skip_to_next_block. (cse_basic_block): If that happens, ignore rest of block, and maybe treat next block as part of this one (if tables have room). Resume insn that starts next basic block to be scanned. (cse_main): Make room for at least 500 qtys. (cse_end_of_basic_block): Subroutine broken out of cse_main. * c-parse.y (hash, is_reserved_word): Rewrite: new hash technique. * c-decl.c (duplicate_decls): Be smart about proto vs nonproto mismatch involving a function definition. Sun Feb 5 17:31:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * alliant.md (movdi): Typo in `fmoved'. (ftruncsf2): Handle moving into fp reg. * jump.c (jump_optimize): Typo in testing PRESERVE_DEATH_INFO_REGNO_P. * reload1.c (choose_reload_targets): Move all death notes to the output reload insn. * m68k.md (fix_truncsfsi2,fix_truncdfsi2): Use accurate rtl pattern. * loop.c (delete_insn_forces): Use presence of REG_RETVAL to check for value-of-library-call insn. Sat Feb 4 18:17:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * integrate.c (expand_inline_function): Make addresses of stack slots valid somehow. * tm-3b1.h (DIVSI3_LIBCALL, etc.): Define these macros; avoid gnulib. * expmed.c (store_bit_field): Avoid (subreg (mem)) when converting VALUE1 to SImode. * jump.c (jump_optimize): Do delete USE and CLOBBER insns. This is needed for proper jump optimization. * rtl.def (COMPARE): New code. * *.md (compare and related patterns): Use COMPARE, not MINUS:VOID. * loop.c (eliminate_biv, can_eliminate_biv_p): Likewise. * cse.c (fold_rtx, fold_cc0, cse_insn): * output-m88k.c (output_{f,}compare, output_store): * output-sparc.c (strict_single_insn_op_p, single_insn_src_p, safe_insn_src_p): * combine.c (subst): * jump.c (jump_back_p): Fri Feb 3 18:34:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * output-i386.c (notice_update_cc): If arith insn sets the cc's, discard all remnants of previous cc value and flags. * sparc.md (ashiftrt mem by 24): Fix typo `a1'. Thu Feb 2 14:55:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * output-sparc.c (output_mul_insn): Clear the CC status. Wed Feb 1 20:01:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * Version 1.33 released. * reload1.c (reload_as_needed): On entering new basic block, if it didn't need reload regs, forget all inherited contents of those. * tm-alliant.h (NOTICE_UPDATE_CC): Floating moves don't set the cc's. Also delete the clauses and tests for FPA regs. Tue Jan 31 21:51:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * config.gcc: Handle convex-c1, convex-c2. * tm-convex1.h, tm-convex2.h: New files that include tm-convex.h. * tm-convex.h: Define switches -mnoc1, -mnoc2. * config.gcc: rename `nofp' to `nfp', to match the file names. Mon Jan 30 22:12:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * output-sparc.c (output_delay_insn): Extract the operands, call alter_subreg, constrain_operands and NOTICE_UPDATE_CC. So callers other than output_eager_then_insn don't lose. (output_eager_then_insn): No need to do that stuff. * symout.c (symout_block_symbols): Handle (MEM (REG)) for variable-sized arrays. * tm-encore.h (ASM_SPEC): Always pass -j; avoid jump-range lossage. Sun Jan 29 17:06:26 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * alliant.md: Fix refs to CONST_DOUBLEs to use CONST_DOUBLE_{HIGH,LOW}. * combine.c (subst): (minus (zero_extend ...) (const_int ...)) opt. now limited to within the context of (set (cc0) ...). Sat Jan 28 14:26:08 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * cse.c (fold_cc0): Missing `&' extracting CONST_DOUBLEs. (fold_rtx): Don't put CONST_DOUBLEs together into a (CONST (PLUS...)). * output-convex.c (gen_cmp): Recognize CONST_DOUBLE as a constant. * tree.c (build_real_from_int_cst): Typo in REAL_ARITHMETIC case. * Makefile (bootstrap2): Don't use bootstrap3 as subroutine. * varasm.c (force_const_mem): Put the CONST_DOUBLE on the chain if its MEM is stored in it; so it can be cleared at end of function. * stmt.c (emit_case_nodes): Put a compare before each cond-jump. Two cond-jumps after one cond is invalid and makes cse produce garbage. Fri Jan 27 01:05:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * tm-sun2.h (CPP_SPEC): Define __HAVE_68881__ only if -m68881. * c-decl.c (start_decl): Don't expand_decl if DECL already has rtl. (grokparms): If just declaring fcn, incomplete parm type is just a warning, and don't discard the specified type. * expmed.c (expand_divmod): Be smarter about not clobbering args with intermediate results; one mem can clobber another, and a reg can clobber a mem. * tm-i386.h (FUNCTION_PROFILER): Use LPREFIX. May actually work now. * tm-i386gas.h: Include tm-bsd386.h, not tm-att386.h. This means changing asm syntax. #undef DBX_NO_XREFS and DBX_CONTIN_LENGTH. * sparc.md (eager branch peepholes): Don't forget 2nd arg to safe_insn_src_p. Don't print warnings. * output-sparc.c: (strict_single_insn_op_p): Return 0 for floating REG or MEM, since copying that may take 2 insns. (operands_satisfy_eager_branch_peephole): require delay insn to be strict_single_insn_op_p as well as safe_insn_src_p. (operand_clobbered_before_used_after): Don't print warnings. * varasm.c (decode_rtx_const): Clear entire structure incl. gaps. Avoids spurious hash mismatches. (force_const_mem): If CONST_DOUBLE, store its CONST_DOUBLE_MEM field. Also look in that field rather than hashing, to save time. * c-typeck.c (build_c_cast): If value is literal, mark NOP_EXPR as so. (store_init_value): Change error msg. * c-decl.c (duplicate_decls): Classify prototype vs nonprototype mismatches better. * tm-3b1.h: Fix comment. Wed Jan 25 12:46:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * Makefile (cleanlinks): Use -f. Tue Jan 24 17:54:16 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * cse.c (canon_hash): Fix paren error in last change. * varasm.c (immed_real_const_1): Missing arg to bcmp. Mon Jan 23 02:43:45 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * stor-layout.c (layout_type): BLKmode elts force array to be BLKmode. * genpeep.c, genoutput.c, genemit.c: Put `#include "real.h"' in output. * stmt.c (expand_expr_stmt): No "no effect" warning for error-mark. * varargs.h: Rename implicit arg name to __builtin_va_alist which triggers code in assign_parms. Does this really matter? * sparc.md (sne): New define_expand. (seq recognizers): Handle sne as well. * output-sparc.c ({strict_,}single_insn_src_p): Some NEG and MINUS insns are actually 2 asm insns. (safe_insn_src_p): No floating arith is safe; they can trap. (eq_or_neq): New fn, for seq/sne recognizers. * c-decl.c (grokdeclarator, size of array type): Strip from SIZE any NOP_EXPRs that don't change anything. * reload.c, recog.c: Include real.h so constraint macros can examine CONST_DOUBLEs. Sun Jan 22 04:12:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * c-decl.c (init_decl_processing): Define __builtin_saveregs. * tree.h: likewise. * expr.c (expand_builtin): Handle it. * tm-sparc.h: Define TARGET_EAGER and -meager. * sparc.md (eager branch peepholes): Reenable, but test TARGET_EAGER. Change fb insns to use %F. Delete `,a' from some of them. * jump.c (jump_optimize): Don't delete USE and CLOBBER insns. * xm-vms.h (const): Define it as empty. * make-cccp.com: Move the rename of cexp_tab.c. Compile cccp.c with no macro definitions. * cccp.c (main): VMS conditional for setting max_include_len. Sat Jan 21 12:53:00 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * varargs.h (va_start): On sparc, call __builtin_saveregs. Delete the old conditional that used va-sparc.h. Rename macros and locals to start with two underscores. * va-sparc.h: File deleted. * c-decl.c (store_parm_decls): Initialize OTHERS. * stmt.c (assign_parms): Obey layout_decl. Fri Jan 20 02:19:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * cse.c (fold_rtx): For SYMBOL_REF and LABEL_REF, mask address to 16 bits. * tree.h (NUM_TREE_CODES): NUM_TREE_CODE renamed. Thu Jan 19 13:53:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * c-typeck.c (mark_addressable): For global reg var, report error. Now returns an int; value of 0 means caller should fail. All calls (in this file) changed. * stor-layout.c (layout_decl): Don't let an more than 1 word of any aggregate go in any 1 register. (Needed for machines whose integer regs are 64 bits). * tm-convex.h, xm-convex.h, convex.md, output-convex.c: new files. * expr.c (convert_move): Use extendqidi2, etc. for converting small ints to double ints. Use zero_extendsidi2 rather than clearing the high half. Wed Jan 18 01:20:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * varasm.c (make_decl_rtl): If global `register' decl is invalid, make ordinary non-register rtl. * output-sparc.c (operand_clobbered_before_used_after): new fn. (reg_clobbered_p, safe_insn_src_p): New fns. (single_insn_src_p): Treat constants all as ok, even though not always literally so. Also accept some SIGN_EXTENDs and ZERO_EXTENDs. (strict_single_insn_src_p): New fn, like above but is strict about constants and constant memory addresses. (relop): New fn. (output_move_double): Don't make a MEM, and don't use %m. (output_delayed_branch): New name for output_delay_insn. Now handle non-small constant operands. Avoid duplicate loads of g1 for constant addresses. Use recog_operand directly for output of the delay insn. (output_delay_insn): Now a completely new fn. (output_eager_then_insn, next_real_insn_no_labels): New fns. (operands_satisfy_eager_branch_peephole): New fn. * sparc.md: New peepholes for testing a recently used operand. New peepholes for delayed branches, incl. conditional ones. ** Some of them commented out because they seem not to work. (andcc recognizer): Fix typo, missing %. (bgt): Change bgt to bg in output. (reversed jumps): Replace with one pattern using match_operand. It uses %F to output the condition. (movsi): For round-valued immed const, use just a sethi. For other immed, use explicit sethi and or. (movhi, movqi): use `move' for reg source or small int source. For other immed, use explicit sethi and or. (movsi, etc.): Handle all constant addresses like SYMBOL_REFs. (movsf): Delete never-used duplicate code for constant addresses. (addsi3, subsi3, cse'd multiply): Use sethi and or, rather than set. (andsi3, iorsi3, xorsi3): Likewise. (jump): Make an annulled branch. * tm-sparc.h (PROMOTE_PROTOTYPES): Define this. (GO_IF_LEGITIMATE_ADDRESS): Now accept all constant addresses; also cleaned up. (NOTICE_UPDATE_CC): Don't change the G1 status when storing in memory. Assume all PARALLEL insns are peepholes. (PRINT_OPERAND): New codes C and N for outputting conditions, either forward or reversed. Also F for reversed floating. * jump.c (delete_for_peephole): New function to delete range of insns. * genpeep.c (gen_peephole): Output code to use this. * Makefile (install): Fix typo, had $${name} for $${file}. Tue Jan 17 00:00:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * i386.md (ashlsi3): Use addl or leal for special cases. * c-decl.c (grokdeclarator): Make a non-global VAR_DECL public if it is external. * masm386.c: Clean up formatting. * cse.c (fold_rtx): Typo simplifying x|0 or x^0 when the 0 comes second. * expmed.c (store_fixed_bit_field): For halfwords, verify that the field fits in an *aligned* halfword. (extract_fixed_bit_field): likewise. * expmed.c (store_split_bit_field): New arg align, passed in from store_fixed_bit_field and passed back to it. (extract_split_bit_field): likewise. * expr.c: Reinsert changes from Jan 2, mysteriously deleted Jan 3. Also changes from Dec 23, Dec 28 and Dec 29. * tm-i386.h: Likewise for changes from Dec 30. * c-typeck.c (build_component_ref): If field's type is error-mark, return an error-mark. Mon Jan 16 14:16:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * genpeep.c (main): Output code to exit early if insn is followed by a barrier. (gen_peephole): Reject barriers just like labels. * stmt.c (do_jump_if_equal): New arg UNSIGNEDP, for emit_cmp_insn. Caller changed. Now static. * final.c (final): Set INSN_DELETED_P in insns when output. * final.c (final): Re-set BODY if peephole does anything. * c-decl.c (grokparms): Ignore anything but PARM_DECLs in the list. (store_parm_decls): If we had a prototype, separate out anything other than a PARM_DECL declared in it, and pushdecl those at the end, after DECL_ARGUMENTS is set. * stmt.c (expand_end_case): Do stack adjusts after computing index. * expr.c (store_one_arg): Handle padding for case of BLKmode for which space was preallocated. * integrate.c (copy_rtx_and_substitute): When copying asm insn, preserve sharing of the input-operand vectors. (expand_inline_function): Clear {orig,copy}_asm_operands_vector to make that mechanism work. (save_for_inline, copy_for_inline): Likewise. * stmt.c (expand_asm_operands): Reject `+' in constraints. Every output constraint requires `='; inputs reject it. * stmt.c (expand_function_end): Arg to fixup_gotos was missing. Sun Jan 15 00:28:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * cccp.c, gcc.c (main): Handle SIGPIPE. (pipe_closed): New fn; report suitable fatal error. * loop.c (loop_optimize): Initialize moved_once. * gcc.c (do_spec): Don't call `execute' if value != 0. Delete redundant second call to do_spec_1. * toplev.c (compile_file): Make declared-but-not-defined warnings only if -Wunused. * stmt.c (emit_case_nodes): Fix typo setting gen_ble_pat. * tm-sparc.h ({U,}MODSI3_LIBCALL): Name was wrong. * gcc.c (env_exec_prefix refs): Don't try to open via it if it's null. * output-sparc.c (output_store, output_load_{fixed,floating}): Fixed confusions between the mem ref and its address. * cse.c (canon_hash): global_regs has entries only for hard regs. * flow.c (insn_dead_p, mark_set_p, mark_used_regs): Likewise. * cse.c (fold_rtx): More simplifications for MULT, IOR, AND, XOR DIV and shifts with one arg 0 or 1. Sat Jan 14 11:41:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * c-typeck.c (build_array_ref): If pedantic, check for regdecl arrays. * fixincludes: Make all subdirs in advance, so no need for `dirname'. * genpeep.c (gen_peephole): Delete code to increment LABEL_NUSES; instead, clear JUMP_LABEL for any jumps being deleted. No need to test INSN1 for being a label, since not called then. [If any of the matched insns is a JUMP_INSN, set want_jump, and in that case make the matched peephole a JUMP_INSN itself.] That's in an #if 0 now; it's good in jump, but not in final. * jump.c (jump_optimize): Don't do peepholes here. * final.c (final): Do them here. * jump.c (jump_optimize): In optimizing `if (foo) bar; else break;', don't try to invert anything but a standard-looking conditional jump. * jump.c (jump_optimize): Do peepholes on ALL BUT the first pass. * gcc.c (env_exec_prefix): New var used like user_exec_prefix but set from envvar GCC_EXEC_PREFIX. Fri Jan 13 13:21:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * genpeep.c (gen_peephole): Test INSN1 for a label at the very start, then test following insns at the end of the loop. * sparc.md (call recognizers): do CC_STATUS_INIT, for %g1. Thu Jan 12 02:13:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * varasm.c (make_decl_rtl): Recognize more error cases for reg vars: BLKmode, or initializer given. Distinguisn missing asm from invalid name. * expr.c (expand_call): Never return 0; return const0_rtx instead. This makes expand_expr more uniform. * c-decl.c (grokparms): For ptr to incomplete type, just warn; don't change the parm's type. * stmt.c (expand_return): Set RETVAL_RHS so as to recognize tail-recursive fcn returning void. Unconditionally test value of expand_expr for being a REG. * reload.c (find_reloads): Don't process insns that have no constraint alternatives. No more need for have_constraints. * recog.c (constrain_operands): New local var nalternatives. Don't bother checking the insn if nalternatives is 0. Wed Jan 11 01:27:48 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * Implement global register decls. * varasm.c (make_decl_rtl): Handle global register vars. (make_function_rtl): Set function_defined: after 1st function dfn. (assemble_variable): Ignore global register vars. * c-decl.c (grokdeclarator): Don't reject global register decls. (builtin_function): Use make_decl_rtl, not make_function_rtl, to avoid setting function_defined. * regclass.c (init_reg_class{,_1}): Init and process global_regs. They are fixed, and call-clobbered. * flow.c (insn_dead_p): Storing one of global_regs is never dead. (mark_used_regs, mark_set_1): A global reg is never dead. * cse.c (canon_hash): Consider global regs volatile. * expr.c (do_jump): Know how to invert jumps which are sequences. * dbxout.c, symout.c, final.c: On USG, use our own stab.h. * tm-i386gas.h: New file for GAS on sysV (with DBX debugging info). * m68k.md (bfchg and bfins patterns): Make # alternatives uniform. * alliant.md: Likewise; also in movdf patterns. * genoutput.c (output_epilogue): Spurious `break' disabled error check for mismatched # of alternatives. (output_epilogue, scan_operands): Errors in input are not fatal. * flow.c (regno_uninitialized): Avoid crash if no basic blocks. * sparc.md (move insns): Delete special patterns that handled symbolic constant addresses. The main move patterns now do this. * output-sparc.c (output_store, output_load_{fixed,floating}): Subroutines to do the work for this; has the code from those special patterns. Also fixed bugs in testing against cc_status.mdep. * output-sparc.c (output_delay_insn): Clear the CC status. This is necessary for %g1 in the case of a call insn. * tm-i386.h (REG_CLASS_CONTENTS): INDEX_REGS is now all but ESP. (REGNO_REG_CLASS): Corresponding change. (REG_CLASS_FROM_LETTER): Eliminate `x' letter since not used. * optabs.c (emit_cmp_insn): New arg ALIGN, used for BLKmode. All callers changed. Pass alignment (as rtx) as 4th arg to cmpstr gen functions. Use cmpstrhi if available. * expr.c (compare): Only this call passes a nonzero ALIGN. * expr.c (emit_push_insn, emit_block_move): Pass alignment (as rtx) as 4th arg to movstr gen functions. Tue Jan 10 23:43:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * stor-layout.c (layout_type): Use BLKmode, if a struct isn't aligned well enough for a scalar mode. * expr.c (expand_expr): For static CONSTRUCTOR, ensure memory address is made valid. * genpeep.c (match_rtx): For MATCH_OPERATOR, set max_opno, n_operands. Mon Jan 9 17:07:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * varasm.c (output_constant): Split strings every 2000 chars. * stmt.c (expand_end_case): Test bkwds, handling constant switch arg. Fri Jan 6 09:11:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * output-sparc.c (output_delay_insn): Add parens to first if test. (output_move_double): Turn addr for `sethi' into MEM for %m. * c-typeck.c (convert_for_assignment): move test for ERROR_MARK. * c-parse.y (unary_expr): Allow cast_expr as arg of unary op. * stmt.c (expand_decl): Don't abort if FUNCTION_DECL lacks rtl; assemble_variable is called after this. * c-parse.y (primary -> identifier): Separate case for undeclared identifier outside of functions; avoids confusing error msgs. Thu Jan 5 01:24:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * Makefile (install): Ignore errors in all `if' commands. Create $(libdir) if nec. * Makefile (insn-*.[ch]): Put in empty commands. May help Ultrix Make. * stmt.c (emit_case_nodes): New arg UNSIGNEDP says do unsigned jumps. Arg INDEX is an rtx, not a tree. (expand_end_case): Pass that arg. (node_has_{low,high}_bound): check for overflow, avoid confusion. Wed Jan 4 02:24:21 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * sparc.md (movdi, movdf): Use `&' constraint when loading reg from; otherwise can lose on (set (reg X) (mem (plus (reg X) (reg X+1)))). * expr.c (emit_push_insn): For memory scalar partially going in regs, copy each word to reg before pushing. Avoids memory-to-memory move. Make the displaced address valid. Also delete unfinished STACK_OFFSET variable. * c-parse.y (check_newline): Read just one #-directive and return. This prevents lossage when toplev.c calls it to get the main input file name, and it gets a following #ident as well. * c-decl.c (lang_decode_option): Set warn_cast_qual for -Wcast-qual. * c-typeck.c (build_c_cast): Issue some warnings if set. * tm-3b1.h (ASM_OUTPUT_CASE_LABEL): Missing `;'. Tue Jan 3 18:07:31 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * expr.c (emit_library_call): Do force_operand on each operand if it isn't a REG, MEM or constant. Do this, or mode conversions, earlier, before loading any hard regs. * m68k.md (addsi3) [SGS]: Put a zero displacement in the `lea'. * c-typeck.c (default_conversion): Don't lose `const' or `volatile' when converting array type to pointer. Mon Jan 2 01:18:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * expmed.c (store_bit_field, store_fixed_bit_field): New arg, alignment in bytes the structure is known to have. (store_fixed_bit_field): Handle working in halfwords, in case the pointer isn't known to have fullword alignment. * expmed.c (extract_bit_field, extract_fixed_bit_field): likewise. (extract_bit_field): fix unsignedp arg to extract_fixed_bit_field. * expr.c (store_field): New arg, passed to {store,extract}_bit_field (expand_assignment, store_constructor): Pass that arg. (expand_expr): Pass new arg to extract_bit_field. * m68k.md (casesi_2 recognizer): Offset always 6 for 3b1. * c-typeck.c (convert_for_assignment): Strip from rhs no-op NOP_EXPRs put on by build_c_cast (to make the result not an lvalue). (build_modify_expr, build_compound_expr): likewise. (build_conditional_expr): likewise. (actualparameterlist, build_function_call): likewise. (default_conversion, truthvalue_conversion): likewise. * loop.c (move_movables): If reg has moved out of one loop, divide `savings' by 2. Sun Jan 1 03:00:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * c-typeck.c (truthvalue_conversion): Distribute the conversion into the arms of a COND_EXPR. * cse.c (fold_rtx): Don't fold a MINUS with VOIDmode into a symbolic constant--it's incorrect. * cse.c (cse_insn): If SRC is a subreg with known value, simplify it. * integrate.c (copy_rtx_and_substitute): Allow a ref to a part of MEM parm whose actual parm is a reg, provided it refs the low part of the MEM. (function_cannot_inline_p): Don't inline functions which have aggregate parameters and take their addresses. This could produce refs to non-low-parts, which copy_rtx_and_substitute can't handle. * c-typeck.c (build_modify_expr): If lhs is COND_EXPR, make a COMPOUND_EXPR to ensure the rhs is computed before the branch. * Implement -pipe. * gcc.c (do_spec_1): `|' is now a special delimiter which goes in the argbuf. When a newline is preceded by a `|', delete it if no -pipe. Otherwise, don't execute yet, and keep scanning. (do_spec): At end, if we have stuff with no newline, execute it. (handle_braces): Implement %{|foo:...}. (execute): If argbuf contains some `|'s, run several processes and pipe them together. (pexecute): new subroutine to make one of the processes. (find_exec_file): new fn to search for program to execute. (record_temp_file): new arg FAIL_ONLY. (store_arg): 2nd arg == 3 means delete file on failure. This is used for output files. (delete_temp_files): delete certain files only if fail. * cccp.c (include_defaults): /usr/include before /usr/local/include. * recog.c (asm_noperands): 1-off in loop checking CLOBBERS when no output operands and PARALLEL. * expmed.c (negate_rtx): Sign-extend the high bits rather than clear. * cse.c (fold_rtx): fold negation of real values. (fold_cc0): fold comparisons on real values. * Makefile (install): Use $(INSTALL) for gcc.1 and files in USER_H. * Handle floating-point problems for cross-compilation. * real.h (CONST_DOUBLE_LOW, etc.): new macros to access CONST_DOUBLE. * varasm.c (immed_double_const, decode_rtx_const): Use these. ({force,clear}_const_double_mem): Likewise. * output-*.c (output_move_double): Use these. * output-m68k.c (standard_{68881,sun_fpa}_constant_p): Likewise. * tm-*.h (PRINT_OPERAND): Use these. * output-i386.c (print_operand): Use these. * final.c (output_addr_const): Likewise. * emit-rtl.c (gen_rtx): Delete special code for CONST_DOUBLE. * real.h (union real_extract): Portable type for storing real as ints. * varasm.c (immed_double_const, decode_rtx_const): Use these. * varasm.c (immed_real_const_1, decode_rtx_const): Don't assume REAL_VALUE_TYPE is 2 ints long. * emit-rtl.c (init_emit_once): Likewise. * real.h (REAL_VALUE_TYPE): Define as `double' if not defined. (REAL_IS_NOT_DOUBLE): Define this if default REAL_VALUE_TYPE not used. (REAL_VALUES_EQUAL, REAL_VALUES_LESS): Define, if not already defined. (REAL_VALUE_LDEXP, REAL_VALUE_ATOF): Likewise. * tree.h (struct tree_real_cst): Use REAL_VALUE_TYPE for the value. * rtl.c (init_rtl): Increase length of CONST_DOUBLE if REAL_VALUE_TYPE needs more space. Change the rtx_format element to match. * varasm.c (immed_real_const_1): 1st arg now has REAL_VALUE_TYPE. (force_const_mem): Assume a CONST_DOUBLE contains REAL_VALUE_TYPE. * emit-rtl.c (init_emit_once): Likewise. And use REAL_VALUE_ATOF to get a floating zero. * optabs.c (expand_float): Use REAL_VALUE_TYPE, REAL_VALUE_LDEXP. * c-parse.y (yylex): Likewise, and use REAL_VALUE_ATOF. * fold-const.c (split_tree): Don't accept REAL_CSTs. (combine, fold_convert, fold): Use REAL_ARITHMETIC if defined; else don't fold reals if they are not doubles. * tree.c (build_real_from_int_cst): Likewise. * print-tree.c (dump) [REAL_IS_NOT_DOUBLE]: output float value in hex, since we don't know how to do it right. Sat Dec 31 14:15:13 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * optabs.c (init_optabs): Handle new macros {U,}MULSI3_LIBCALL, DIVSI3_LIBCALL, MODSI3_LIBCALL. * tm-sparc.h: Define {,U}{MUL,DIV,MOD}SI3 to call Sun's library direct. * tm-sun3-nfp.h, tm-sun3-fpa.h: New files. Fri Dec 30 00:14:36 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * cccp.c (main): Certain envvars specify a file to write deps info to. * toplev.c (compile_file): Warn about undefined fns declared static. * m68k.md (casesi_2 recognizer) [SGS] RTX_INTEGRATED_P test backwards. * tm-3b1.h (ASM_OUTPUT_CASE_LABEL): Likewise. Also missing `\'. * reload1.c (count_occurrences): New function. (choose_reload_targets): Don't delete a reload if the same reg is used elsewhere in the current insn. (delete_output_reload): code split out from choose_reload_targets. * c-typeck.c (build_c_cast): Always put on some operator, so the cast is never an lvalue for strict ANSI. * c-typeck.c (initializer_constant_valid_p): Don't depend on distinction between NOP_EXPR and CONVERT_EXPR. * c-convert.c: Fns reordered; new comments. * fold-const.c (fold): If simplifying a NOP_EXPR within a BIT_AND_EXPR, return a NOP_EXPR. New var TYPE holds type of expr. * c-parse.y (expr_no_commas): Split off cast_expr and unary_expr, to reject `sizeof (int) foo'. * toplev.c (main): Treat plain `-' as input filename. * final.c (final): If an insn's output routine returns 0, it means to output the deleted compare insn immediately preceding. * m68k.md (branch insns): Use 0 as 3rd arg for OUTPUT_JUMP rather than explicitly clearing the overflow flag. * tm-i386.h (OUTPUT_JUMP): Really use NO_OV; don't abort. * i386.md (branch insns): Put real data (sometimes 0) in 3rd arg of OUTPUT_JUMP. 0 means preceding test may not be deleted. (lea pattern): Clear the cc's. * output-i386.c (notice_update_cc): various arith insns set the cc's. Thu Dec 29 13:22:01 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * stmt.c (expand_decl_init): Do nothing for static decls. * reload.c (find_reloads_address{,_1}): Return 1 iff entire arg was reloaded as a whole, else 0. (find_reload): If find_reloads_address returns 1, don't let that MEM satisfy a `>' or `<' constraint. * m68k.md (cmpmb): Delete special pattern, make cmpqi handle it. The special pattern couldn't handle reloading the incremented register. * integrate.c (copy_rtx_and_substitute): Test BYTES_BIG_ENDIAN, not BITS... * combine.c (subst): Consider big-endian correction when simplifying (subreg (mem ...) ...). * reload.c (find_reloads): Don't crash if matching operands in `asm' are both read or both write. * expr.c (emit_push_insn): Address for movstr must be XINNER, not X. * toplev.c (main): Typo parsing `-fno...'. Wed Dec 28 13:07:21 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * toplev.c (rest_of_compilation): `volatile' fns need jump_optimize for warnings, as if -Wreturn-type. * c-typeck.c (c_expand_return): Warn about `return' in a `volatile' fn. * c-decl.c (finish_function): Warn if `volatile' fn can drop thru end. * cse.c (canon_reg): Handle nulls as subexpressions. (fold_rtx, canon_hash, mention_regs, exp_equiv_p): Likewise. * loop.c (invariant_p, replace_regs, replace_call_address, may_trap_p, {basic,general}_induction_var): Likewise. * expr.c (expand_call): Handle `const' functions: Local IS_CONST is 1 if function is const. Attach REG_RETVAL and REG_LIBCALL notes around the call. Copy fn address to register outside of those notes. Likewise precompute all parms outside them. * expr.c (expand_call): If fn is volatile, emit barrier after the call. * c-decl.c (grokdeclarator): Allow function declared const or volatile. Sat Dec 24 18:40:12 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * integrate.c (function_cannot_inline_p): If STRUCT_VALUE_INCOMING or STRUCT_VALUE is defined, can't inline functions returning BLKmode. Fri Dec 23 13:26:26 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * expr.c (store_constructor): Compute array's size with int_size_in_bytes. * varasm.c (assemble_variable): If shared data, go to data section before outputting an uninitialized symbol. * tm-sequent.h (ASM_OUTPUT_ALIGN_CODE): Missing backslash. (SHARED_SECTION_ASM_OP): Macro defined. * tm-seq386.h (SHARED_SECTION_ASM_OP): Macro defined. * c-typeck.c (c_expand_asm_operands): Warn if output op is `const'. * Fix problem where a stmt expr in an initialization refers to the variable it is initializing. * stmt.c (expand_decl_init): New fn split out from `expand_decl'. * c-decl.c (finish_decl): Call that. Don't call expand_decl if already done. (start_decl): Call expand_decl if type is complete already. * Makefile (install): Typo in ranlib command. Thu Dec 22 15:57:12 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * tree.h (tree_identifier): New field. (IDENTIFIER_ERROR_LOCUS): Accessor for it. * c-parse.y (primary => IDENTIFIER): Undeclared variable gets one err msg per function it appears in. * ns32k.md (andsi3): Delete extra brace. * alliant.md, xm-alliant.h, tm-alliant.h, output-alliant.c: New files. * combine.c (SUBST, SUBST_INT): Store new field `is_int'. (copy_substitutions): Don't copy an int as an rtx. * Makefile (INSTALL): Install gcc.1 properly. * tm-ns32k.h (FUNCTION_PROLOGUE, ASM_OUTPUT_ALIGN_CODE): Add missing backslashes. See file OChangeLog. \f Local Variables: mode: indented-text left-margin: 8 fill-column: 76 version-control: never End: