|
|
1.1 root 1: Thu May 10 22:48:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2:
3: * rtl.def (DEFINE_DELAY): Change description to describe annulling.
4:
5: * genattr.c (main): Write out definitions for annulling, if present.
6:
7: * genattrab.c (expand_delays): Build internal attributes for
8: which insns can be annulled in a delay slot.
9: (gen_delay): Validate number of elements in DEFINE_DELAY list.
10: (write_eligible_delay): Write out routines for validating annulled
11: insns as well as those in normal delay slot.
12: (main): Call write_eligible_delays to output annulling information,
13: if it exists for this machine.
14:
15: * out-m68k.c (not_sp_operand): New function.
16: * m68k.md (andsi3): Don't allow sp as ourput to avoid reload
17: inefficiency.
18:
19: * calls.c (struct arg_data): Delete field STORED; add fields
20: PASS_ON_STACK and SAVE_AREA.
21: (prepare_call_address): Static chain value can't have QUEUED.
22: (expand_call): Rework to support additional calling sequence options.
23:
24: Major changes include:
25: Call FUNCTION_ARG_PASS_BY_REFERENCE to determine whether an
26: object should be passed by invisible reference.
27: Handle arguments passed both on stack and in a register; this can be
28: used to allow arguments that are hard to compute directly into
29: registers to be passed.
30: Support option (ACCUMULATE_OUTGOING_ARGS) where the largest amount
31: of stack for outgoing arguments is computer and pushed during the
32: function prologue. Stack space usage is tracked and any location
33: that would need to be reused will be saved and restored.
34: If preallocating arg block, compute address where each arg will be
35: placed and pass it as target to expand_expr.
36:
37: Other changes:
38: Use virtual regs to see if structure value address isn't stable.
39: If inlined, return TARGET if TARGET and TEMP are equivalent.
40: UNNAMED_ARGS_IN_REGISTERS is redundant with the NAMED parameter to
41: FUNCTION_ARG and has been deleted.
42: Use virtual_outgoing_stack_rtx instead of FIRST_PARM_CALLER_OFFSET.
43: Use locate_and_pad_parm to compute any needed padding for argument.
44: If REG_PARM_STACK_SPACE is defined, allocate backing stack locations
45: for args passed in registers; these are not included in the length
46: of stack space required unless OUTGOING_REG_PARM_STACK_SPACE is also
47: defined.
48: When precomputing register parameters, can stop computation when we
49: obtain any rtx, not necessarily a register.
50: No longer need code to protect data written below bottom of stack;
51: this is taken care of by preexpanding calls in argument.
52: target_for_arg no longer needed; its function is performed by
53: store_one_arg.
54: Always copy function return result to our target since they cannot
55: possibly be the same.
56: (target_for_arg): No longer used.
57: (store_one_arg): Save and restore in-use argument list location.
58: Support args passed both in register and on stack.
59: No need for explicit code for preallocated area; now pass location
60: as target to expand_expr; only copy if result in different place.
61: Put sequence point after expanding one value.
62:
63: * cse.c (struct write_data): Add bit to indicate stack pointer changed.
64: (canon_hash): Allow recording of stack pointer.
65: (cse_insn): Indicate stack pointer invalidated by subroutine calls.
66: Pass stack push and pop operations to note_mem_written.
67: Process stack pointer assignment as normal operation.
68: Finish change of April 7th that excludes ap and fp from being marked
69: as clobbered by calls. Also exclude sp; if it is clobbered by a
70: call, an explicit CLOBBER will be written.
71: (note_mem_written): Look for adjustment of stack pointer.
72: (invalidate_from_clobbers): Invalidate stack pointer, if required.
73:
74: * emit-rtl.c (gen_inline_header_rtx): Add field for outgoing args size.
75: (copy_rtx_if_shared): Check for any virtual register instead of frame
76: or argument pointer.
77: (init_emit): Start normal pseudos after virtual pseudos.
78: Copy the unique virtual regs into regno_reg_rtx.
79: (init_emit_once): Incoming and outgoing static chain can be the same;
80: inlining of nested functions won't need the distinction.
81: Create unique copies of virtual registers.
82:
83: * explow.c (memory_address): Don't worry about refs to fp or ap;
84: force_reg knows how to handle them correctly.
85: (fix_lexical_addr): Moved to function.c
86: (adjust_stack, anti_adjust_stack): Do nothing for adjustment of zero.
87: (allocate_dynamic_stack_space): New function copied from
88: expand_builtin. Handle STACK_POINTER_OFFSET via
89: virtual_stack_dynamic_rtx. When STACK_POINTER_OFFSET is defined,
90: perform alignment by always reserving a multiple of STACK_BOUNDARY
91: stack bits. This avoids concern about whether sp itself or the top of
92: stack needs to be aligned; if we start with an aligned stack, we keep
93: it aligned.
94: (round_push): Use ADD and AND rather than DIV and MULT.
95:
96: * expr.c (init_expr): Initialize some more vars.
97: (push_block): Use virtual_outgoing_args_rtx so don't need
98: STACK_POINTER_OFFSET here.
99: Merge extra and size more efficiently; no need to call force_operand
100: since memory_address is called.
101: (emit_push_insn): Pass type for FUNCTION_ARG_PADDING.
102: Use REG_PARM_STACK_SPACE instead of FIRST_PARM_CALLER_OFFSET.
103: To see if must copy address, check if it is a virtual register that
104: will be mapped to sp; only need check if not accumulating space
105: space for outgoing parms.
106: Ignore EXTRA if argument block has already been allocated.
107: (emit_library_call): Major rework to support calling sequences similar
108: to expand_call in calls.c, but only support a very small subset of
109: the conventions; abort if something outside our subset occurs.
110: Abort if incorrect mode is passed; we can't convert here since we don't
111: know the signedness.
112: (store_field): Check for virtual registers instead of hard registers
113: when seeing if stable.
114: (safe_from_p): Location in outgoing stack area is known to be safe.
115: (expand_builtin, BUILT_IN_ALLOCA): Use allocate_dynamic_stack_space.
116:
117: * expr.h: Define current_function_outgoing_args_size and
118: locate_and_pad_parm; delete definition of get_structure_value_addr.
119: (ARGS_SIZE_RTX): Always return a valid operand.
120: (ARGS_SIZE_TREE): New macro.
121: (FUNCTION_ARG_PADDING): Accept MODE and TYPE like other
122: FUNCTION_ARG_... macros.
123: (FUNCTION_ARG_BOUNDARY): Provide default for new macro.
124: (MUST_PASS_IN_STACK): New macro.
125: (allocate_dynamic_stack_space): New function.
126: * tm-3b1.h, tm-3b1g.h, tm-apollo68.h, tm-crds.h, tm-mot3300.h:
127: Change definition of FUNCTION_ARG_PADDING to use TYPE instead of SIZE.
128:
129: * function.c (current_function_outgoing_args_size): New var.
130: (arg_pointer_save_area, virtuals_instantiated): Likewise.
131: (invalid_stack_slot): No longer used.
132: (push_function_context, pop_function_context): Save and restore
133: outgoing args size and arg pointer save area.
134: No longer save or restore invalid_stack_slot.
135: (pop_function_context): Set up variables whose value is constant
136: throughout rtl generation.
137: (get_frame_size): No longer adjust by STARTING_FRAME_OFFSET.
138: (assign_stack_local): Use virtual_stack_vars_rtx instead of fp
139: until virtuals have been instantiated, then use fp.
140: Remove reference to obsolete invalid_stack_slot.
141: Can no longer be called with size == 0.
142: (assign_outer_stack_loc): Use virtual_stack_vars_rtx instead of fp.
143: Remove references to obsolete invalid_stack_slot.
144: Push to obstack of containing function when allocating rtx.
145: (put_var_into_stack): Only switch obstacks around making of
146: queue entry.
147: Replace call to parm_stack_loc with reference to info in proper
148: function.
149: (fixup_stack_1): Handle any virtual register instead of handling
150: just fp.
151: (instantiate_virtual_regs, instantiate_virtual_regs_1): New functions.
152: (use_variable, use_variable_after): Check for virtual register
153: instead of checking against ap and fp.
154: (parm_stack_loc): Function deleted.
155: (assign_parms): No longer need internal_arg_pointer.
156: Accept SECOND_TIME argument that suppresses rtl generation and
157: assignments to DECL_RTL. Used by integrate.c to recompute vars.
158: Don't use FIRST_PARM_OFFSET here; use virtual_incoming_args_rtx.
159: Replace test for nonstable incoming arg pointer.
160: If structure value address is treated as the first argument, add
161: it into the list of arguments; this means we can have a RESULT_DECL
162: in with the PARM_DECL's.
163: DECL_OFFSET is no longer needed by integrate.c.
164: Handle args passed by invisible reference.
165: Support new macro, SETUP_INCOMING_VARARGS, to save all registers used
166: for args including and beyond those for the current arg. Used for
167: non-ANSI varargs.
168: Pass locate_and_pad_parm data it needs to handle reg->stack boundary
169: if register parameters have assigned stack space.
170: If we received the function's incoming structure pointer as a
171: normal argument, update DECL_RTL of DECL_RESULT.
172: Round total argument size if required; similarly, always use at
173: least REG_PARM_STACK_SPACE bytes if defined.
174: (locate_and_pad_parm): Do not need PARM.
175: Major rework to do much of the job of aligning and padding stack
176: location. Now a void function wich is passed pointers to struct
177: args_size vars that are set to the argument position, size, and
178: initial offset.
179: Accept flag denoting if a parm was passed in a register and also
180: the current function declaration.
181: If register parameters are assigned stack locations and there is a
182: minimum required size for the area assigned to register parameters,
183: pad the stack position when a parameter not assigned to a register
184: is encountered.
185: Remove redundant code in MAX_PARM_BOUNDARY case.
186: (lookup_static_chain): Use virtual_stack_vars_rtx instead of fp.
187: (fix_lexical_addr): Move from explow.c.
188: If referencing variable that lives in the incoming argument area
189: of its parent and a separate ap is required, allocate a save area in
190: the parent for it and use it here. If no separate ap is require,
191: compute offset between ap and fp.
192: (trampoline_address): No need to push obstacks here.
193: (init_function_start): Initialize new vars; delete obsolete vars.
194: (expand_function_start): Don't need to handle case where incoming
195: structure return address is passed as hidden parameter here; now done
196: completely in assign_parms.
197: (expand_function_end): Save ap if a save area was made for it.
198: Set REG_FUNCTION_VALUE_P when copying address of returned
199: structure.
200: Be consistent in use of FUNCTION_... macros vs. hard_function_value.
201:
202: * function.h (outgoing_args_size, arg_pointer_save_area): New fields.
203: (invalid_stack_slot): Obsolete, deleted.
204:
205: * integrate.c: Major rework and simplification.
206: Split up vars into two classes. Those used for expand_inline_function
207: and children are now part of struct inline_remap. Most of the others
208: are for save_for_inline and its children.
209: (function_cannot_inline_p): The only type of arguments that will
210: cause us to reject inlining are variable-sized arguments; also
211: reject functions that return variable-sized objects.
212: For now, don't inline a nested function. We'll support this shortly.
213: Use current_function_returns_pcc_struct instead of duplicating test.
214: (save_for_inline): No need to set TREE_VOLATILE for parms.
215: Save outgoing args size in header.
216: Use unique copy of virtual reg rtx's.
217: Handle any required fixups for INSN_LIST forward-references.
218: Don't bother resetting dead static vars when we are done.
219: Need not save current_function_pretend_args_size.
220: (copy_for_inline): First copy all insns, then all REG_NOTES to avoid
221: problems with forward references.
222: (struct inline_remap): Move all previously-static vars used by
223: expand_inline_function and children into this structure. This avoids
224: potential problems due to recursive calls to expand_inline_function.
225: (expand_inline_function and children): Allocate a struct inline_remap
226: and pass to all children.
227: (expand_inline_function): Rework parameter handling by looking at
228: DECL_RTL and using it to determine what types of mappings need to be
229: done. Support objects passed by invisible reference. Put any
230: constant memory addresses into const_equiv_map. parm_map is no longer
231: used.
232: Likewise for the return value: consult DECL_RTL (DECL_RESULT)).
233: Don't allocate space for called function's frame until referenced.
234: No longer need special handling for insn following CALL.
235: Ignore USE whose argument has REG_FUNCTION_VALUE_P true.
236: Ignore setting function register if we don't have a mapping for it
237: (e.g., we are ignoring the result of the call).
238: Look at new SET_SRC for constant equivalences. Some new ones may
239: have resulted from constant folding.
240: Pass both new and old rtx to try_constants.
241: Discard NOTE_INSN_DELETED notes.
242: Copy insns first, then REG_NOTES, to avoid problems with forward refs.
243: (copy_parm_decls): Compute new address of parameter using the
244: constant equivalence map, which will contain the remapping of
245: the frame and argument pointer.
246: (copy_decl_tree): Likewise.
247: (copy_rtx_and_substitute): Handle references to frame and argument
248: pointers by allocating a space equal to the size of the frame and
249: incoming arguments, respectively, and setting a pseudo to point to
250: the start of each area. Set up an equivalence in CONST_EQUIV_MAP
251: between fp or ap and the actual address. Return the pseudo.
252: Don't need to deal with possibility of (SUBREG (CONST_INT)) since
253: we are only replacing register with other registers here.
254: No longer need to special-case PLUS and MEM; subst_constants will do
255: this work.
256: Update detection of sets of ap and fp.
257: (try_constants, subst_constants): Accept old and new rtx. They will
258: be isomorphic, with only register numbers changed. Use old rtx to
259: look up register in CONST_EQUIV_MAP and new rtx for substitution.
260: Correctly handle SUBREG of CONST_INT and CONST_DOUBLE.
261: Fix typos in handling of PLUS.
262: (access_parm_map, copy_address): Delete functions.
263: (try_fold_cc0): Handle both compare and test.
264: (fold_out_cnst_cc0): Rework to simplify and remove dubious cases.
265: (output_inline_function): Call assign_parms to perform any needed
266: setups.
267: Need not restore pretend arg size (will be computed by assign_parms).
268: Restore outgoing argument size.
269:
270: * output.h (current_function_outgoing_args_size): New var.
271:
272: * rtl.h (OUTGOING_ARGS_SIZE): New field in INLINE_HEADER.
273: (PRETEND_ARGS_SIZE): No longer needed.
274: (virtual_..., VIRTUAL_...): Define virtual register numbers and rtx.
275:
276: * rtlanal.c (rtx_equal_p): Update comment on use of
277: REG_FUNCTION_VALUE_P.
278:
279: * stmt.c (expand_goto): Just restore fp; non-local goto handler
280: will restore ap if needed.
281: (expand_return): Don't use STARTING_FRAME_OFFSET here.
282: (expand_end_bindings): Adjust fp in nonlocal-goto handler. If needed,
283: reload ap from its save area in the frame; allocate save area if none.
284: (expand_decl): Use new function allocate_dynamic_stack_space.
285:
286: * toplev.c (rest_of_compilation): Instantiate virtual registers.
287: Clear rtx_equal_function_value_matters immediately after possibly
288: saving current routine for inlining.
289:
290: * stupid.c (stupid_life_analysis): Don't try to allocate virtual
291: registers (which don't exist any more).
292:
293: Thu May 10 13:59:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
294:
295: * reload1.c (modes_equiv_for_class_p): Don't compare HARD_REGNO_NREGS.
296:
297: * combine.c (subst): Simplify
298: (sign_extend:M (subreg:N (ashiftrt:M (sign_extend:M (any:N ...))))).
299:
300: * fixincludes: Verify that a link leads back to /usr/include
301: by checking name of dir it arrives in. If so, use rest of dirname
302: as target for new link.
303:
304: * Makefile.in (tmpgnulib): Put dummy entry in loop with LIBFUNCS_EXTRA
305: so loop is never null. Then ignore that entry when it comes up.
306:
307: * gcc.c (default_compilers): Add explicit suffix to arg of -dumpbase.
308:
309: Tue May 8 13:54:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
310:
311: * tm-ultrix.h: New file.
312:
313: Mon May 7 18:47:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
314:
315: * i386.md (test... recognizers): Output symbolic constant first.
316:
317: Sun May 6 22:51:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
318:
319: * function.c (fixup_memory_subreg): Make a sequence if -fforce-addr.
320:
321: * fixincludes: When going to directory of link name, don't lose
322: if name has no directory.
323: Move the code to fix netinet/ip.h; was in the middle of something.
324:
325: * Makefile.in (tmpgnulib): Test LIBFUNCS_EXTRA for nonempty.
326:
327: Sun May 6 08:29:27 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
328:
329: * Makefile.in (LIBFUNCS): Remove extraneous "\".
330:
331: * Makefile.in (stamp-gnulib2): Move "-" to proper line.
332:
333: * gnulib2.c (clear_cache): Ignore routine unless INSN_CACHE_SIZE
334: is defined (avoids cpp-detected divide-by-zero).
335:
336: * expr.c (safe_from_p): Don't blow up when passed a null tree.
337:
338: * varasm.c (get_pool_size): New function to return constant pool size.
339:
340: Fri May 4 16:11:54 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
341:
342: * expr.c (safe_from_p): If EXP has some rtx, just check it.
343: Handle TREE_LIST, RTL_EXPR, and WITH_CLEANUP_EXPR.
344: Note that CALL clobbers memory and hard registers.
345: Look at enclosed object for SUBREG, but SUBREG of a hard reg is unsafe.
346:
347: * expr.c (store_constructor): Now that safe_from_p has been applied
348: to the target, need not avoid hard register targets.
349: Abort if called with neither ARRAY_TYPE or RECORD_TYPE.
350:
351: * reload.c (find_equiv_reg): Handle goal of (plus (sp) (const)).
352:
353: * Makefile.in (STAGESTUFF): Include hard-params.
354:
355: Fri May 4 15:33:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
356:
357: * gcc.c (add_prefix): New arg WARN. Record in prefix_list.
358: (main): Calls changed. Pass nonzero for -B prefixes.
359: Later, call unused_prefix_warning.
360: (unused_prefix_warning): Warn about prefixes never used.
361:
362: Thu May 3 16:56:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
363:
364: * print-tree.c (print_node): Align the `align' line with the others.
365:
366: * expmed.c (store_bit_field): Maximum size for loading mem struct
367: into reg comes from the mode of the value to be stored.
368: Alignment is no restriction if it matches BIGGEST_ALIGNMENT.
369: Always do the real work in SImode if couldn't use MEM.
370: (extract_bit_field): Likewise.
371:
372: * combine.c (subst): Handle (sign_extend:M (subreg (sign_extract:M)))
373: on big-endian machine like corresponding zero_extend case.
374:
375: * combine.c (try_combine): Use rtl_equal_p instead of == when
376: testing for sources and destinations that match.
377:
378: * pyr.md (bitw recognizer): Set CC_NO_OVERFLOW.
379:
380: Thu May 3 13:03:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
381:
382: * expr.c (expand_expr, case COND_EXPR): Can always use original
383: target if specified.
384: In "X ? A + B : A" case, use safe_from_p to see if target conflicts
385: with B.
386:
387: * cse.c (cse_insn): Don't rewrite (set REG0 REG1) if REG1 is a hard
388: register even if is REG0 cheaper.
389:
390: Thu May 3 12:04:19 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
391:
392: * reload1.c (reload): Handle multiple size groups for one class.
393:
394: * stdarg.h: Typo in conditional.
395:
396: Wed May 2 16:34:25 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
397:
398: * tm-sun3.h (CC1_SPEC): Ignore -target.
399: (WORD_SWITCH_TAKES_ARG): Define it.
400: * tm-sparc.h (CC1_SPEC): Ignore -target and -dalign.
401: (WORD_SWITCH_TAKES_ARG): Define it.
402:
403: Wed May 2 09:38:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
404:
405: * cse.c (cse_insn): Always replace registers with oldest equivalent,
406: including the case when the destination is present in the source.
407:
408: Tue May 1 15:55:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
409:
410: * gnulib2.c (__adddi3, __subdi3): New, simpler algorithm.
411:
412: Tue May 1 14:48:03 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
413:
414: * Makefile.in: Insert "else true;" in *_ALLOCA macros.
415:
416: * stor-layout.c (mode_for_size): No longer static.
417: Accept LIMIT parameter to limit mode to MAX_FIXED_MODE_SIZE.
418: (layout_decl, layout_type): Pass appropriate limit parameter to
419: mode_for_size.
420:
421: Tue May 1 13:09:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
422:
423: * stmt.c (assign_parms): Don't make entry_parm and stack_parm valid.
424: Leave them explicit stack slots.
425: * explow.c (validize_mem): Copy it, don't alter it.
426:
427: * out-m68k.c (standard_68881_constant_p): Handle HOST_WORDS_BIG_ENDIAN.
428:
429: * integrate.c (save_for_inline): Copy reg notes after all insns.
430:
431: * combine.c (subst): When checking reg_last_set, verify nonzero.
432:
433: * gcc.c (default_compilers): Use %b, not %i, after -dumpbase.
434:
435: * stor-layout.c (make_unsigned_type): Change like make_signed_type.
436:
437: Tue May 1 07:36:21 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
438:
439: * tm-m68k.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Allocate space
440: for local variables even if no frame pointer; adjust size to account
441: for place where old frame pointer would have been placed.
442: (INITAL_FRAME_POINTER_OFFSET): Add frame size instead of subtracting
443: it and perform adjustment described above.
444:
445: * expr.c (validate_subtarget): Deleted.
446: (expand_expr): Replace calls to validate_subtarget with safe_from_p.
447:
448: Mon Apr 30 01:39:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
449:
450: * Makefile.in (install-headers): Simplify loop by cd'ing to srcdir.
451:
452: * stor-layout.c (layout_type): Get alignment of all scalar types
453: from the mode.
454: (make_signed_type): Get rid of ptr_size_node, function_size_node.
455: * tm-*.h (POINTER_BOUNDARY): Deleted.
456:
457: * c-typeck.c (build_unary_op): For ADDR_EXPR of COMPONENT_REF,
458: mark the PLUS_EXPR constant if appropriate.
459: (parser_build_binary_op): Record C_SET_EXP_ORIGINAL_CODE here.
460: (build_binary_op): Not here.
461:
462: * fold-const.c (size_int): Make arg unsigned.
463:
464: * varasm.c (output_addressed_constants): Fixed typo.
465:
466: * cccp.c (macarg1): `\' not special outside strings.
467:
468: * c-typeck.c (build_unary_op): In increment ops,
469: typo checking for ptr to void/function.
470: Check original type for this and for amount of increment.
471:
472: Sat Apr 28 16:43:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
473:
474: * c-typeck.c (build_indirect_ref): Error if target is incomplete type.
475:
476: Fri Apr 27 13:56:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
477:
478: * reload1.c (order_regs_for_reload): Count multi-word pseudos right.
479:
480: Thu Apr 26 17:52:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
481:
482: * cccp.c (handle_directive): Don't pass directive through if no_output.
483:
484: * c-parse.y (yylex): Large hex constants are signed if -traditional.
485:
486: Tue Apr 24 13:57:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
487:
488: * i860.md, m88k.md: Add missing = in some output constraints.
489:
490: * tm-ns32k.h (POINTER_BOUNDARY): Now 32.
491:
492: * out-*.c (output_move_double): Use split_double.
493: * final.c (split_double): New function, handles byte-order differences.
494:
495: * stmt.c (expand_decl): Check size for integer, not "constant".
496: * stor-layout.c (layout_decl, layout_type): Likewise.
497: * c-decl.c (finish_decl): Likewise.
498: * c-typeck.c (digest_init): Likewise.
499: * varasm.c (assemble_variable, output_constructor): Likewise.
500: (decode_addr_const): Distinguish getting rtl by code alone.
501: (output_addressed_constants): No need to abort.
502: In ADDR_EXPR case, check TREE_CODE_CLASS.
503:
504: * c-tree.h (C_DECLARED_LABEL_FLAG): New flag.
505: * c-parse.y (label declarations): Set it.
506: * c-decl.c (pop_label_level, lookup_label): Use it.
507:
508: * expr.c (string_constant): Accept variable offsets.
509: (expand_expr): Check for explicit integers, not constants, in sizes.
510: (safe_from_p): No need to check TREE_CONSTANT.
511:
512: * Makefile.in (prefix): Now replaces /usr/local instead of adding on.
513:
514: Mon Apr 23 02:01:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
515:
516: * cplus-tree.h (DECL_FRIENDLIST): Use DECL_INITIAL.
517:
518: * expr.c (expand_assignment): Use expr_size to compute size.
519:
520: Sun Apr 22 21:53:55 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
521:
522: * expr.c (expand_assignment, expand_expr): Check for COMPONENT_REF
523: before testing DECL_BIT_FIELD.
524:
525: * stor-layout.c (convert_units): Deleted. All calls eliminated.
526:
527: * TREE_CONSTANT renamed from TREE_LITERAL.
528: * TYPE_READONLY split off from TREE_READONLY.
529: * TREE_SIDE_EFFECTS renamed from TREE_VOLATILE.
530: * TYPE_VOLATILE split off from TREE_VOLATILE/TREE_THIS_VOLATILE.
531:
532: Sun Apr 22 15:26:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
533:
534: * loop.c (strength_reduce): Avoid problems in biv elimination by not
535: being forced to use giv's that have complex new_reg values while the
536: underlying giv is marked maybe_dead; clear maybe_dead in this case.
537:
538: * loop.c: Make verification of loops take linear, not quadratic, time.
539: (verify_loop, can_jump_in_range_p): Deleted.
540: (prescan_loop): New function, contents are from old verify_loop.
541: (scan_loop): Call prescan_loop.
542: (find_and_verify_loops, mark_loop_jump): New functions.
543: (loop_optimize): Allocate new tables and call find_and_verify_loops
544: once instead of calling verify_loop for each loop.
545: Use data from find_and_verify_loops instead of scanning all insns.
546:
547: * expr.c (safe_from_p): New function.
548: (validate_subtarget): Use safe_from_p.
549: (expand_expr, case CONSTRUCTOR): Likewise.
550:
551: * expr.c (store_expr): Handle cases where EXP is a compound
552: or conditional expression specially to avoid unnecessary temporaries.
553:
554: Sun Apr 22 00:15:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
555:
556: * tree.h (struct tree_type): Delete size_unit.
557: (struct tree_decl): Delete size_unit and voffset_unit.
558: Reduce lang_flags to save 1 word.
559:
560: * function.c (init_function_start): Don't use DECL_RESULT_TYPE.
561: * integrate.c (expand_inline_function): Likewise.
562: * c-decl.c (start_function, duplicate_decls): Likewise.
563: * tree.h (struct tree_decl): Delete voffset.
564: (DECL_RESULT_TYPE): Deleted.
565:
566: * objc-actions.c (encode_field_decl, objc_copy_list):
567: Switch to DECL_FRAME_SIZE.
568: * cplus-class.c (finish_struct): Likewise.
569: * cplus-decl2.c (grokbitfield): Switch to DECL_BIT_FIELD.
570: * c-parse.y, cplus-parse.y, objc-parse.y: Likewise.
571:
572: * tree.h (TYPE_NO_FORCE_BLK): New flag in types.
573: * stor-layout.c (layout_type): Use it.
574: * tree.h (DECL_TOO_LATE): New flag.
575: * stmt.c (expand_end_bindings, expand_goto_internal): Use it.
576: * tree.h (TREE_PACKED): Deleted.
577:
578: * cplus-typeck.c (unary_complex_lvalue): Confusing use of
579: DECL_SIZE_UNIT; not clear what to do.
580: * cplus-tree.c (layout_vbasetypes): Likewise.
581: * cplus-class.c (modify_vtable_entry): Likewise.
582:
583: * cplus-parse.y (YYDEBUG): Force it on.
584: (print_parse_statistics, init_parse): No-op if not YYDEBUG.
585:
586: * fold-const.c (fold): REAL_INFINITY affects reals, not ints.
587:
588: * protoize.c (edit_fn_declaration): Make arg volatile to stop warning.
589:
590: Sat Apr 21 03:04:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
591:
592: * expmed.c (store_bit_fields): Adjust for elimination of BImode.
593:
594: * c-parse.y (simple_if, stmt): Store stmt_count in proper place,
595: which is slot 1 of the if.
596: (simple_if, lineno_stmt, stmt): Output the note at beginning of
597: stmt, not in lineno_stmt. Use emit_line_note.
598: (simple_if): Set if_stmt_*, then use lineno_stmt directly.
599: (lineno_stmt): Before most uses, call skip_white_space.
600: (finput): Move to top of file.
601:
602: * cplus-class.c (build_instantiated_decl): Fix typo.
603:
604: * cplus-tree.h (C_TYPE_FIELDS_READONLY): Use lang_flag_1.
605: (TYPE_HAS_CONSTRUCTOR, TYPE_HAS_DESTRUCTOR, TYPE_NEEDS_CONSTRUCTOR):
606: (TYPE_NEEDS_DESTRUCTOR): Advance each to next lang_flag.
607: * tree.h (TREE_LANG_FLAG_5, TREE_LANG_FLAG_6): Define them.
608:
609: * config.gcc: Delete ./Makefile.in iff not in the source dir.
610:
611: * Makefile.in (for-bootstrap): New target.
612:
613: * dbxout.c (dbxout_finish_symbol, dbxout_type, dbxout_prepare_symbol):
614: Add temporary conditionals on WINNING_GDB.
615:
616: * print-tree.c (print_node): Print the TYPE_SYMTAB_ADDRESS.
617:
618: * Makefile.in (protoize.o, unprotoize.o, SYSCALLS.c.X):
619: Include from or look in dir $(srcdir).
620:
621: Fri Apr 20 16:30:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
622:
623: * varasm.c (output_constructor): Backward test for bit-field.
624:
625: * Makefile.in (stamp-*): Delete .c or .h from these names.
626:
627: Fri Apr 20 15:56:21 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
628:
629: * cplus-typeck.c (compparms, comp_target_parms, build_modify_expr_1):
630: (build_modify_expr): Clean parens in complicated if.
631: * cplus-decl.c (finish_decl, grokdeclarator): Likewise.
632:
633: Fri Apr 20 14:42:36 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
634:
635: * tm-3b1.h (ASM_SPEC, PRINT_OPERAND_ADDRESS): Support 68020, 68881.
636: Useful even though this isn't one.
637: (ASM_OUTPUT_OPCODE): Convert fbne to fbneq. Don't change ftst.
638: (REGISTER_NAMES): Define it. Fpreg names not same as hp.
639:
640: * stor-layout.c (mode_for_size): Don't check MAX_FIXED_MODE_SIZE.
641: (layout_type): Check it here when appropriate.
642:
643: * loop.c (strength_reduce): Clean parens in complicated if.
644:
645: * fold-const.c (mul_double, const_binop): Add parens around shifts.
646:
647: Thu Apr 19 03:03:39 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
648:
649: * machmode.def: Delete unused modes.
650:
651: * stor-layout.c (mode_for_size): Accepts mode class as arg.
652: Calls changed.
653: (layout_type): Can now use mode_for_size for floating types.
654:
655: * stor-layout.c (layout_type): Get mode of function type from size.
656: * c-decl.c, cplus-decl.c (grokdeclarator): Don't worry about
657: mode of a function type.
658: * calls.c (prepare_call_address): No values contain static chains.
659:
660: * tree.h (struct tree_decl, struct tree_common): Rename the flag bits.
661: * cplus-tree.h: References here changed.
662:
663: * tree.h (DECL_BIT_FIELD): New macro, with new flag.
664: * print-tree.c: Print it.
665: * stor-layout.c (layout_decl): Use on input instead of TREE_PACKED.
666: Clear it if field happens to be aligned.
667: * expr.c, tree.c, varasm.c, symout.c, objc-actions.c, c-typeck.c:
668: Use this to distinguish bit-fields.
669: * c-decl.c, cplus-class.c (finish_struct): Set this for bit-fields.
670:
671: * c-typeck.c (build_binary_op): Make NON_LVALUE_EXPR, not NOP_EXPR.
672:
673: * out-sparc.c (find_addr_reg): Avoid using frame pointer.
674:
675: * config.gcc: Delete all formfeeds from Makefile.
676:
677: * stor-layout.c (layout_decl): Delete `bitsize'.
678: (layout_record): Test size for CONST_INT, not TREE_LITERAL.
679: (layout_type): Simplify array case.
680:
681: * fold-const.c (size_binop): Division not special case.
682:
683: Wed Apr 18 16:05:23 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
684:
685: * c-typeck.c (datatype): Function deleted.
686: (build_binary_op_nodefault, pointer_int_sum, pointer_diff):
687: Don't use it.
688: * cplus-typeck.c (build_binary_op_nodefault, pointer_int_sum):
689: (pointer_diff): Likewise.
690: (convert_for_assignment): Likewise. Took some work.
691: (datatype): Function deleted.
692:
693: * c-typeck.c (common_type): Renamed from commontype.
694: (function_types_compatible_p): New function.
695: (compparms): Deleted.
696: (self_promoting_args_p): Renamed from compparms1.
697: * cplus-typeck.c (common_type, self_promoting_args_p): Likewise.
698: * c-typeck.c (build_function_call): Eliminate local value_type.
699:
700: * c-typeck.c (parser_build_binary_op): Detect +/- within boolean.
701:
702: * c-typeck.c (convert_arguments): Renamed from actualparameterlist.
703: Push results on front, and reverse at end.
704: * cplus-typeck.c: Likewise. All calls changed.
705:
706: * tree.h (STMT_BIND_SIZE): Deleted.
707: (struct tree_bind_stmt): Deleted that slot.
708: * tree.c (build_let_stmt): Don't set it.
709:
710: * print-tree.c (print_node): Call print_lang_identifier.
711: * c-decl.c, cplus-ptree.c (print_lang_identifier): New function.
712:
713: * gnulib2.c (__clear_cache): New function.
714:
715: Tue Apr 17 16:57:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
716:
717: * cplus-tree.c (build_member_type): Use TYPE_HASH, not TREE_UID.
718: (TYPE_HASH): Use the address. Delete the duplicate definition.
719:
720: * c-typeck.c (build_unary_op): Bug in pedantic warning about ++.
721:
722: * tree.h (TYPE_SEP, TYPE_SEP_UNIT): Deleted.
723: * stor-layout.c (layout_type): Don't set them.
724: (mode_for_size): New name for agg_mode; code cleaned up.
725: * c-tree.h (C_TYPE_FIELDS_READONLY): Use TREE_LANG_FLAG_1.
726:
727: * fold-const.c (size_int, size_binop): New names for build_int
728: and genop, moved here. All callers changed.
729: (const_binop): New name for combine, and now static.
730: * stmt.c (expand_end_case, group_case_nodes, node_has_low_bound):
731: (node_has_high_bound): Don't call `combine' directly.
732:
733: * tree.h (DECL_VOFFSET, DECL_VOFFSET_UNIT): Deleted.
734: * tree.c (staticp): Don't use DECL_VOFFSET.
735: * stor-layout.c (layout_*): Don't use it or set it.
736: (layout_record): Simplify: Keep all sizes in units of 1.
737:
738: * tree.c (debug_tree, print_node, print_node_brief, indent_to):
739: New functions to print a tree.
740: * c-decl.c (print_lang_decl, print_lang_type): Define as no-op.
741: * cplus-ptree.c (print_lang_type): Complete rewrite.
742: Most other functions deleted.
743: * tree.c (print_node): Call print_lang_* unconditionally.
744:
745: * tree.c (TYPE_HASH): Now use the address.
746:
747: Mon Apr 16 16:27:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
748:
749: * final.c: Check LEAF_REGISTERS, not LEAF_REGS.
750:
751: * real.h (*_FLOAT_FORMAT): Change enums to macros.
752: (REAL_INFINITY): Define it if IEEE format.
753:
754: * c-decl.c (c_decode_options): Handle -Wconversion here.
755: * toplev.c (main): Not here.
756:
757: * tm-*.h (INITIAL_FRAME_POINTER_OFFSET): Count get_frame_size.
758:
759: Mon Apr 16 15:05:49 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
760:
761: * loop.c (eliminate_biv): Build COMPARE with VOIDmode, not mode
762: of operands.
763:
764: Mon Apr 16 14:55:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
765:
766: * jump.c: Include real.h.
767:
768: Sun Apr 15 20:30:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
769:
770: * c-typeck.c (pedantic_lvalue_warning): New function.
771: (build_component_ref): Handle COMPOUND_VALUE and COND_EXPR by moving
772: reference inside it and calling pedantic_lvalue_warning.
773: (build_unary_op): Incrementing a cast-expression is warning, not
774: error; call new pedantic_lvalue_warning.
775: (unary_complex_lvalue): Use of compound or conditional expression as
776: lvalue is warning, not error.
777: (build_modify_expr): Likewise.
778: * cplus-typeck.c: Likewise.
779:
780: Sun Apr 15 12:27:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
781:
782: * cse.c (fold_rtx, fold_cc0): Check TARGET_FLOAT_FORMAT,
783: not FLOAT_NOT_IEEE.
784: * jump.c (jump_back_p): Likewise. FLOAT_NOT_IEEE is now gone.
785:
786: * cccp.c (collect_expansion): Handle warn_stringify.
787: (main): Set it for -Wtraditional.
788:
789: * function.c (init_function_start):
790: Set current_function_returns_pointer here.
791: (expand_function_start): Not here.
792:
793: * expr.c (emit_library_call): Precompute reg and partial of all parms,
794: to do it in proper order.
795:
796: * final.c (final_scan_insn): Typo in deleting obvious no-ops.
797:
798: * expr.c (emit_push_insn): Change #if to ordinary if.
799:
800: Sat Apr 14 13:20:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
801:
802: * expr.c (do_jump): In COMPONENT_REF, check TYPE is nonzero.
803:
804: * tm-i386.h (ASM_OUTPUT_ADDR_DIFF_ELT): Delete spurious `abort ()'.
805:
806: * emit-rtl.c (reverse_comparison): New function.
807: (get_last_insn_anywhere): New function.
808: * i386.md (ble, blt): New define_expands.
809:
810: * Makefile.in (LANGUAGES): New parameter chooses languages to build.
811: (native): Use that.
812: (c, c++, objc): Targets for use in LANGUAGES.
813:
814: * Makefile.in (install): Split up.
815: (install-cross, install-headers, install-gnulib, install-proto):
816: (install-man, $(libsubdir)): New targets.
817:
818: * Makefile.in (native): New target, split from start.encap.
819: (tmpgnulib): Split out from gnulib.portable.
820: (gnulib.convert): Makes tmpgnulib, then converts.
821: (LIBCONVERT): New parameter.
822: (GCC_FOR_TARGET): New parameter.
823: (hard-params.o, hard-params, stamp-gnulib2): Use that.
824:
825: * cse.c (fold_cc0): Compare equivalence classes of non-constants.
826: Waiting for papers from Steven McCanne.
827:
828: Fri Apr 13 14:12:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
829:
830: * stor-layout.c (layout_type): If record is BLKmode because not
831: aligned, set TREE_PACKED. Don't force BLKmode due to field
832: with TREE_PACKED.
833:
834: * cse.c (fold_rtx): Use dconst1, not atof.
835: * varasm.c (output_constant): Likewise.
836:
837: * c-parse.y (yylex): Handle SIGFPE in atof.
838:
839: * tm-tti68k.h: New file.
840:
841: * toplev.c, flags.h (flag_pretend_float): New flag.
842:
843: * regclass.c (reg_class_record): Handle `E' constraint, for float
844: constants but only if can examine their bits.
845: * reload.c (find_reloads): Likewise.
846: * recog.c (constrain_operands): Likewise.
847: * out-m68k.c (output_move_double): Abort on float constant
848: if can't examine the bits.
849: (standard_68881_constant_p): Fail if can't examine the bits.
850: (standard_sun_fpa_constant_p): Likewise.
851:
852: * m68k.md (DFmode move recognizers): Use `E', not `F'.
853: * tm-m68k.h (PREFERRED_RELOAD_CLASS): Handle float constants.
854:
855: * tm-next.h (ASM_OUTPUT_FLOAT, ASM_OUTPUT_FLOAT_OPERAND):
856: (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_DOUBLE_OPERAND): Use REAL_VALUE_ISINF.
857: * tm-sun3.h, tm-sparc.h: Likewise.
858:
859: * xm-vax.h (HOST_FLOAT_FORMAT): Define it.
860: * tm-vax.h (TARGET_FLOAT_FORMAT): Define it.
861:
862: * real.h (enum float_format): Define codes for formats.
863: (HOST_FLOAT_FORMAT, TARGET_FLOAT_FORMAT): New macros, defaulted here.
864: (REAL_IS_NOT_DOUBLE, REAL_VALUE_TYPE): Override if formats differ.
865: (REAL_VALUE_ISINF): New macro.
866: * xm-vax.h (isinf): Define as macro.
867:
868: * Makefile.in (LIBFUNCS_EXTRA): New variable.
869: (gnulib.portable): Compile those files.
870:
871: * Makefile.in (AUX_OUTPUT2): New variable.
872: (OBJS): Use it.
873: (aux-output2.o): New target.
874:
875: * Makefile.in (RANLIB, RANLIB_TEST): New variables.
876:
877: * Makefile.in (AR_FLAGS, OLDAR_FLAGS): New variables.
878: (gnulib.portable, stamp-gnulib2): Use them.
879:
880: * i386.md: Add patterns for `bt' insns.
881:
882: Fri Apr 13 12:54:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
883:
884: * c-decl.c (builtin_function): Now returns decl that was made.
885:
886: * config.gcc: Support both -host= and +host=.
887:
888: Thu Apr 12 22:39:10 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
889:
890: * Changes from Data General.
891:
892: * syms.h: New file.
893: * sdbout.c: Include that if not USG.
894:
895: * tree.h (enum built_in_function): Added BUILT_IN_STRCPY and
896: BUILT_IN_STRCMP.
897: * c-decl.c (init_decl_processing): Create additional pointer and
898: function types. Declare strcpy, strcmp, memcpy, memcmp built-in.
899: * expr.c (expand_builtin): Support strcpy, strcmp, memcpy, memcmp.
900: If special handler breaks out of switch, do library call.
901: By default, print error message and do library call.
902: (get_pointer_alignment, string_constant): New functions.
903:
904: * dbranch.c: Put entire contents in conditional on HAVE_DELAYED_BRANCH.
905: (init_flags, enote): Clear and set memr.
906: (enote): Don't move a store across a fetch.
907: (insn_eligible_p): Check enote before volatility and dependencies.
908: Check for volatility if memw or memr.
909: (loads_from_mem_p): New function.
910:
911: * Makefile.in (dbranch.o): New target.
912: (OBJS): Add dbranch.o.
913:
914: Thu Apr 12 22:39:10 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
915:
916: * calls.c (expand_call): Count args in order written, with argpos.
917:
918: Thu Apr 12 22:01:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
919:
920: * expmed.c (synth_mult): Ensure OPS is always valid in returned alg.
921:
922: * local-alloc.c (block_alloc): If we have an operand that is an
923: address, look inside it for registers to combine with.
924:
925: * reload.c (combine_reloads): If the output reload is for an
926: earlyclobber operand, can't combine it.
927: Try to use a register that dies in an insn for a single output reload
928: if the insn has only one output.
929:
930: Thu Apr 12 21:27:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
931:
932: * c-decl.c (duplicate_decls): Preserve DECL_INITIAL from old
933: function def to new one.
934:
935: Thu Apr 12 07:55:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
936:
937: * expr.c (expand_assignment): Order of source and destination to
938: bcopy/memcpy was reversed.
939:
940: Wed Apr 11 17:29:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
941:
942: * tm-i386.h (ABC_REGS): New register class.
943: (REG_CLASS_CONTENTS, REG_CLASS_NAMES, enum reg_class): Changed.
944: * i386.md (divsi3, etc.): Exclude register d from constraints.
945:
946: * c-parse.y (save_filename, save_lineno): New nonterminals
947: to record text location at start of statement.
948: (lineno_stmt): New nonterminal, outputs line note before statement.
949: (lineno_decl): Likewise for decl, to avoid conflicts.
950: (stmt): Don't emit line notes at start of statement.
951: (simple_if): Collect file and line using save_filename, save_lineno.
952:
953: * Changes from Data General.
954:
955: * cccp.c (main, do_include): Implement -H to print header names.
956:
957: * c-parse.y (component_decl_list): Parse even if final `;' missing.
958:
959: Wed Apr 11 16:49:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
960:
961: * gcc.c: Fix miscellaneous typos.
962:
963: Wed Apr 11 12:59:57 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
964:
965: * config.gcc: Typos in setting pass1done, testing it,
966: and calling sed for usage msg.
967:
968: * cccp.c (macroexpand): Count Newline Space as part of whitespace
969: sequence when stringifying.
970:
971: * expmed.c (expand_mult): Handle synth_mult returning no operations.
972:
973: Tue Apr 10 21:08:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
974:
975: * cccp.c (do_line): No error if string follows number without space.
976:
977: Tue Apr 10 20:52:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
978:
979: * recog.c (apply_change_group): Return a zero if rejected changes.
980:
981: * loop.c (update_giv_derive): If a giv is only set conditionally, it
982: may only derive other givs in its own basic block.
983:
984: Tue Apr 10 13:09:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
985:
986: * tm-ctix.h: New file. Waiting for papers from Ronald Cole.
987: [email protected].
988:
989: * cse.c (rtx_cost): Use new macro RTX_COSTS.
990: (COSTS_N_INSNS): New macro for use in RTX_COSTS.
991:
992: * config.gcc: Fix typos in conditionals and case. Also usage message.
993: Missing backslashes in `echo | tee'.
994: Unset various vars after pass 1.
995:
996: * c-typeck.c (build_c_cast): Complain if function type specified.
997:
998: * expmed.c (synth_mult): Accept max_cost as arg and cut off there.
999: Pass it along recursively, making it smaller.
1000: Eliminate quadratic loop, thus postponing powers of 2.
1001: Costs are now signed. Initialize best_alg->cost from max_cost
1002: and change to -1 only before returning.
1003: (expand_mult): Pass cost of multiply as max cost.
1004: Use synth_mult only if optimizing.
1005: In alg_compound case, sign was backward.
1006: Use TEM as target for force_operand there, to get better output.
1007:
1008: Tue Apr 10 07:09:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1009:
1010: * expr.c (expand_expr, case COND_EXPR): Add missing argument to
1011: operand_equal_p.
1012: Check for (X ? unop A : A) in addition to (X ? A + B : A).
1013:
1014: * Makefile.in (protoize, unprotoize): Compile with GCC, not just link.
1015:
1016: * fold-const.c (fold): Fix typo in converting conditional to COND.
1017:
1018: * expr.c (expand_expr): Treat (A ? 1 : 0) as A when A is a comparison.
1019: (do_jump): Special-case (A ? 1 : 0) and (A ? 0 : 1).
1020:
1021: * expr.c (store_expr): Fix typo in checking mode of target.
1022:
1023: Mon Apr 9 18:33:55 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1024:
1025: * integrate.c (expand_inline_function): Clear out parm_copies.
1026:
1027: Mon Apr 9 18:00:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1028:
1029: * tree.def: SAVE_EXPR now has three operands.
1030: * tree.h: Add new field SAVE_EXPR_CONTEXT; SAVE_EXPR_RTL remains last.
1031: * tree.c (save_expr): Set context to current function.
1032: (decl_function_context): Context is in SAVE_EXPR_CONTEXT if SAVE_EXPR.
1033: * calls.c (expand_call): Call make_tree to build an RTL_EXPR instead
1034: of explicitly making SAVE_EXPR.
1035: * cplus-typeck.c (c_expand_return): Use make_tree instead of SAVE_EXPR.
1036: * c-parse.y, objc-parse.y: Don't call mark_addressable here.
1037: * expr.c (expand_expr, ..._DECL cases): If non-local, make addressable.
1038: (expand_expr, case SAVE_EXPR): If defined in containing function, put
1039: put into stack.
1040: * function.c (put_var_into_stack): Use SAVE_EXPR_RTL for SAVE_EXPR.
1041: * print-tree.c (dump): SAVE_EXPR_RTL is now third operand.
1042: * stmt.c (expand_asm_operands): Call save_expr instead of making
1043: tree node directly.
1044:
1045: Mon Apr 9 00:08:15 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1046:
1047: * Makefile.in (install): Turn off x bit on SYSCALLS.c.X.
1048:
1049: * i860.md (cmpeqsf, etc.): Change opcode name to pfeq.ss, etc.
1050:
1051: * tm-m68k.h (PRINT_OPERAND_PRINT_FLOAT): Delete spurious backslash.
1052:
1053: * c-decl.c (store_parm_decls): Don't do storedecls in prototype case.
1054: That was discarding the enumerators already pushdecl'd.
1055:
1056: * gcc.c (exec_prefix, startfile_prefix): Record prefix search paths.
1057: (find_a_file): New function to search a path.
1058: (find_exec_file): Deleted; find_a_file used instead.
1059: (find_file): Just call find_a_file.
1060: (add_prefix): Add name to a prefix path.
1061: (process_command): Call that.
1062:
1063: * gcc.c (spec_list): Generalize asm_spec, etc., to arbitrary names.
1064: (set_spec): New function. Set the old specific vars and spec list.
1065: (do_spec_1): Handle `%(' and `%[' for general specs.
1066:
1067: * ns32k.md (ashlhi3): Use %0, not %1.
1068:
1069: * cplus-tree.h (TREE_ANON_UNION_ELEM, DECL_ANON_UNION_ELEM):
1070: regdecl_attr is now in decl, not common.
1071: (TREE_PARMLIST): Use external_attr.
1072: (TREE_VIA_PUBLIC): Use static_attr.
1073:
1074: Sun Apr 8 23:43:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1075:
1076: * fold-const (fold): Two conversions in a row are needed if from a
1077: pointer type to an integer type of a different precision.
1078:
1079: * flow.c (mark_used_regs): When replacing addition with register
1080: in auto-increment creation, mark that insn must be re-recognized.
1081:
1082: Sun Apr 8 13:56:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1083:
1084: * tm-m68k.h (ASM_OUTPUT_FLOAT): Defn depends on CROSS_COMPILER.
1085: (PRINT_OPERAND): Depends on CROSS_COMPILER and HOST_WORDS_BIG_ENDIAN.
1086: (PRINT_OPERAND_EXTRACT_FLOAT, PRINT_OPERAND_PRINT_FLOAT):
1087: These new subroutines contain the code that depends.
1088:
1089: * xm-m68k.h, xm-mips.h, xm-pyr.h, xm-tahoe.h (HOST_WORDS_BIG_ENDIAN):
1090: New macro, defined in these files.
1091:
1092: * config.gcc: Define macro CROSS_COMPILE if making cross-compiler.
1093: * Makefile.in (INTERNAL_CFLAGS): Include CROSS.
1094:
1095: * config.gcc: Decode -host argument. Set $host and $target.
1096: Rename vars for files to link to, to tm_file, xm_file, etc.
1097: Let $host override xm_file value.
1098: Mention $host in messages and config.status if diff from $target.
1099: Check for errors in args at beginning of processing.
1100:
1101: * expmed.c (expand_shift): Make no insns if count is 0.
1102:
1103: * cse.c (rtx_cost): Increase default cost of mult and div.
1104:
1105: * expmed.c (synth_mult): New function. Finds best way to multiply
1106: by given constant, and the cost.
1107: (expand_mult): Use that.
1108: (init_expmed): Init new vars add_cost, shift_cost, mult_cost,
1109: and negate_cost. mult_is_cheap has been deleted.
1110:
1111: * expmed.c (store_bit_field): Don't use insv if unit for copying
1112: mem to reg won't hold the entire field.
1113:
1114: Sun Apr 8 12:54:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1115:
1116: * expr.c (expand_expr, case COND_EXPR): Add OK_DEFER_POP to path with
1117: only OK_DEFER_POP.
1118:
1119: Sun Apr 8 12:50:54 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1120:
1121: * i386.md (insv): Use SImode for operand 0.
1122:
1123: Sat Apr 7 15:24:56 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1124:
1125: * emit-rtl.c (gen_lowpart, gen_highpart): When checking mode class,
1126: check for not MODE_FLOAT.
1127: * cse.c (fold_rtx): Likewise when avoiding x-x -> 0 for IEEE float.
1128: * jump.c (jump_back_p): Likewise.
1129: * optabs.c (emit_cmp_insn): Likewise, comparing result of libcall.
1130: * expr.c (move_block_to_reg, emit_push_insn): Likewise,
1131: when putting floats in memory.
1132:
1133: * machmode.def (PSImode, PDImode): Class is now MODE_PARTIAL_INT.
1134: * expr.c (convert_to_mode): Don't treat them as ints.
1135:
1136: * fixincludes: When making directory links, assume any relative path
1137: is within /usr/include.
1138:
1139: Sat Apr 7 14:56:27 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1140:
1141: * function.c (assign_stack_local, assign_outer_stack_local):
1142: Don't use division for rounding to avoid problems with negative
1143: dividends; use logical operations instead.
1144: No need to ever align stricter than BIGGEST_ALIGNMENT.
1145:
1146: Sat Apr 7 14:38:36 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1147:
1148: * expr.c (expand_expr, case CONSTRUCTOR:): Finish Jan 12 change
1149: in store_expr by calling store_constructor if target is a temp.
1150:
1151: * cse.c (cse_insn): For regs invalidated by calls, go back to
1152: checking for fp and ap explicitly, not fixed_regs.
1153:
1154: Sat Apr 7 14:06:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1155:
1156: * recog.h: Define num_validated_changes and cancel_changes.
1157: * recog.c (validate_change, apply_change_group, cancel_changes):
1158: Support changes both within an insn and within a MEM.
1159:
1160: Sat Apr 7 00:45:49 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1161:
1162: * sparc.md (addcc and subcc patterns): Set CC_NO_OVERFLOW.
1163:
1164: Fri Apr 6 15:20:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1165:
1166: * cccp.c (lookup_import): Return -1 for not found to agree with
1167: the open system call. Use -2 for duplicate.
1168: (do_include): -2 now means duplicate; previously, -1 meant not found
1169: from open and duplicate from lookup_import.
1170:
1171: Fri Apr 6 00:06:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1172:
1173: * c-decl.c (poplevel): Use DECL_INITIAL to detect undef label.
1174:
1175: * sparc.md (peephole for returning sum): Use more restrictive preds.
1176:
1177: * reload1.c (choose_reload_regs): When testing reload reg
1178: for HARD_REGNO_MODE_OK, use SImode instead of VOIDmode.
1179:
1180: Thu Apr 5 14:00:41 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1181:
1182: * cccp.c (main, include_defaults): Use STANDARD_INCLUDE_DIR
1183: instead of /usr/include.
1184: * Makefile.in (cccp.o): Specify STANDARD_INCLUDE_DIR.
1185:
1186: * varasm.c (assemble_variable): No sdb output for initialized global.
1187: * toplev.c (compile_file): Output it here, at end of run.
1188:
1189: * stdarg.h (va_start): Round initial pointer value down
1190: to double boundary. This is to eliminate big-endian adjustment.
1191:
1192: * fixincludes: Delete netinet/ip.h and sundev/vuid_event.h
1193: if no changes are needed.
1194:
1195: * c-typeck.c (build_c_cast): Reject array types for result.
1196: * cplus-typeck.c (build_c_cast): Likewise.
1197:
1198: * tm-*.h (ASM_OUTPUT_SKIP): Print size as unsigned.
1199: (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Likewise.
1200:
1201: * fold-const.c (fold): Simplify double truncation, double extension,
1202: or extension followed by truncation.
1203:
1204: * fixincludes: Don't ignore errors when making dirs.
1205: But check whether dir already exists.
1206:
1207: * cse.c (fold_rtx): Don't simplify real*0, because of nans.
1208:
1209: * real.h (dconst0, dconst1, dconstm1): Declare them.
1210: * tree.c (real_zerop, real_onep): New functions.
1211: * fold-const.c (fold): Check for trivial +, -, * with reals.
1212: Also use dconst0 instead of computing with REAL_VALUE_ATOF.
1213:
1214: Tue Apr 3 22:52:26 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1215:
1216: * m68k.md (32-bit bit fields): Special patterns added.
1217: (push byte and adjust stack by 2): New peephole.
1218: These from Bruce Robertson.
1219:
1220: * c-decl.c (grokdeclarator): Complain if fn defn has `typedef' etc.
1221:
1222: Tue Apr 3 21:39:54 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1223:
1224: * expr.c (preexpand_calls): Reinsert check to not expand calls
1225: already preexpanded.
1226:
1227: Mon Apr 2 07:05:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1228:
1229: * c-typeck.c (digest_init): Don't blow up on null list.
1230:
1231: * Makefile.in (cc1obj): Link OBJC_OBJS instead of C_OBJS.
1232: * objc-actions.c: Correct compilation errors.
1233: * objc-parse.y: Likewise.
1234:
1235: Mon Apr 2 03:33:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1236:
1237: * objc-actions.h: Define the objc tree codes.
1238: Declare doing_objc_thang.
1239:
1240: Fri Mar 30 17:28:30 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1241:
1242: * sdbout.c (PUT_SDB_EPILOGUE_END): Write out assembler name for
1243: function (i.e., usually include leading "_").
1244:
1245: * sdbout.c (PUT_SDB_...): Use new macro SDB_DELIM; it defaults to ";".
1246:
1247: Fri Mar 30 15:25:20 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1248:
1249: * jump.c (prev_active_insn, next_active_insn): New functions.
1250: These skip USEs and CLOBBERs.
1251: (jump_optimize): Use them instead of ..._real_insn
1252: for the simple optimizations.
1253:
1254: * integrate.c (expand_inline_function): Always index const_equiv_map
1255: with regno from current function. And set up the map only after
1256: creating all the pseudos we will need for the parms.
1257: This requires intermediate tables parm_equivs and parm_copies.
1258: Make const_equiv_map big enough to handle all the pseudos we
1259: expect to make. Record actual size, and don't look in it
1260: for regnos too large.
1261: (subst_constants, const_equiv): Don't access const_equiv_map
1262: if regno is too large.
1263:
1264: * function.c (trampoline_address): Push and pop obstacks around
1265: call to assign_outer_stack_local.
1266:
1267: * function.c (push_function_context, pop_function_context):
1268: Save and restore max_parm_reg and parm_reg_stack_loc.
1269: * function.h (struct function): Make slots.
1270:
1271: * c-decl.c (c_build_type_variant): New function.
1272: (grokdeclarator): Call that, for ARRAY_TYPE only, in fields and vars.
1273: * c-decl.c, c-typeck.c: All calls to build_type_variant use that now.
1274:
1275: * emit-rtl.c (reinstate_emit_status): Unused function deleted.
1276:
1277: Thu Mar 29 15:35:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1278:
1279: * tree.c (rtl_in_current_obstack): New function.
1280: * toplev.c (rest_of_compilation): Call that.
1281: This makes it true that rtl is allocated in current_obstack
1282: during optimization.
1283:
1284: * reload1.c (eliminate_frame_pointer): Scan equivalent addresses
1285: of pseudo-regs, and eliminate frame-pointer there too.
1286: (reload): Don't do this here.
1287:
1288: * c-decl.c (build_enumerator): Return pair of decl and value.
1289: (finish_enum): Go through the list replacing decls with names.
1290:
1291: * function.c (fixup_var_refs): Eliminate all but first arg.
1292: Use current sequence_stack, insn chain and rtl_expr_chain.
1293: (put_var_into_stack): Don't pass those args.
1294: If var is nonlocal, don't do it now; put it on fixup_var_refs_queue.
1295: (pop_function_context): Do fixup_var_refs on vars queued up.
1296:
1297: * tree.c (function_maybepermanent_obstack): Make a separate
1298: saveable obstack for each nested function level.
1299: (init_tree): Init this variable.
1300: (save_tree_status, restore_tree_status): Save and restore it.
1301: Create and free a new obstack for the purpose.
1302: (temporary_allocation, resume_temporary_allocation): Use this var.
1303: (preserve_data, preserve_initializer): Use this var.
1304: (make_node): Use this var for PARM_DECL nodes.
1305:
1306: * tree.c (push_obstacks): New name for push_obstack.
1307: Additional arg specifies saveable_obstack. All calls changed.
1308: (pop_obstacks): New name for pop_obstack. All calls changed.
1309:
1310: * config.gcc: Add `3300'.
1311: (genix): Fix typo in name of makevar file.
1312: * tm-mot3300.h, xm-mot3300.h: New files.
1313: * math-3300.h: New file.
1314:
1315: * output.h: Fix typo in SDB_DEBUGGING_INFO.
1316:
1317: * tm-sun386i.h (LINK_SPEC): Moved here, and -static handled.
1318: * xm-sun386i.h: Moved from here.
1319: * tm-alliant.h (LINK_SPEC): Moved here, from xm-alliant.h.
1320:
1321: * tm-convex.h, tm-i860.h, tm-spur.h, tm-vax.h, tm-tahoe.h, tm-pyr.h:
1322: Delete FIX_FRAME_POINTER_ADDRESS.
1323:
1324: * tm-sparc.h, tm-m88k.h: Turn off FIX_FRAME_POINTER_ADDRESS.
1325: INITIAL_FRAME_POINTER_OFFSET could be written later.
1326:
1327: * tm-m68k.h, tm-ns32k.h, tm-alliant.h, tm-i386.h, tm-mips.h:
1328: Define INITIAL_FRAME_POINTER_OFFSET.
1329:
1330: * toplev.c (compile_file): Remove .m and .cc suffixes, like .c.
1331:
1332: * final.c (end_final): For basic block profiling, don't output
1333: source file name. Instead, append ".d", and remove ".c".
1334: * gnulib2.c (__bb_init_func): New name for __bb_init_function.
1335: Conditionalize on mc68000, not m68k.
1336: Fix other typos.
1337:
1338: Wed Mar 28 16:07:15 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1339:
1340: * c-decl.c, cplus-decl.c (duplicate_decls): Preserve DECL_FRAME_SIZE
1341: from definition past subsequent declarations.
1342:
1343: * c-decl.c (xref_tag): If global_binding_level, make nodes permanent.
1344:
1345: * expmed.c (init_expmed): Set up mult_is_very_cheap.
1346: (expand_mult): Never use shifts if mult_is_very_cheap.
1347:
1348: * expr.c (store_expr): When copying through new temporary,
1349: allocate temporary first and use as target.
1350:
1351: * tm-m68k.h (HARD_REGNO_MODE_OK): Abort on VOIDmode.
1352:
1353: * reload1.c (fix_frame_pointer_address): New function.
1354: (alter_frame_pointer_addresses): New arg INSN. Calls changed.
1355: Use that function instead of macro FIX_FRAME_POINTER_ADDRESS
1356: which is now obsolete.
1357: (eliminate_frame_pointer): Use macro INITIAL_FRAME_POINTER_OFFSET
1358: to initialize depth. Abort if that macro is missing.
1359:
1360: * expmed.c (store_bit_field): If loading MEM into a reg, use the
1361: mode of the MEM if that is not BLKmode.
1362: (extract_bit_field): Likewise.
1363:
1364: * tm-mips.h (STRUCTURE_SIZE_BOUNDARY): Changed from 16 to 8.
1365:
1366: * calls.c (expand_call): Handle STACK_BOUNDARY when using push insns.
1367:
1368: * function.c (assign_parms): Note how PUSH_ROUNDING affects stack
1369: parm size.
1370:
1371: Tue Mar 27 19:40:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1372:
1373: * c-decl.c (poplevel): Output inline nested functions if needed.
1374: * cplus-decl.c: Likewise.
1375:
1376: * i386.md (insv): New pattern added for the moment.
1377:
1378: Tue Mar 27 17:47:35 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1379:
1380: * function.c (lookup_outer_static_chain): Deleted, no longer used.
1381: (trampoline_address): RTL for trampoline, rather than its address, is
1382: stored in trampoline list.
1383: Just add entry to list; don't fill in the trampoline here.
1384: (expand_function_end): Fill in any required trampolines here.
1385: (expand_function_start): Move tail recursion entry to after
1386: creation of display list; size computations come next.
1387:
1388: Tue Mar 27 14:09:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1389:
1390: * m68k.md (movsi, movhi, movstricthi, movqi, movstrictqi):
1391: Avoid both clr and st on volatile mem, but only on 68000.
1392: (SImode store 0 recognizer): Likewise.
1393:
1394: * stor-layout.c (agg_mode): Don't consider PSImode, etc.
1395:
1396: Mon Mar 26 21:12:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1397:
1398: * local-alloc.c (combine_regs): Only set suggested bit for first
1399: register if multi-word quantity.
1400: (find_free_reg): Look at suggested regs for first in set, then use
1401: all available for subsequent regs.
1402:
1403: Mon Mar 26 15:01:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1404:
1405: * c-decl.c (start_enum): Don't lay out the type.
1406: (finish_enum): Always lay it out, and always set the precision.
1407: Change the type of the enumerators if int is too narrow.
1408:
1409: * tm-m68k.h (NOTICE_UPDATE_CC): addq and subq do update cc's
1410: even if destination is an address register.
1411:
1412: * c-parse.y, objc-parse.y (check_newline): Call HANDLE_PRAGMA if def.
1413: * out-next.c: New file.
1414: (handle_pragma): New function.
1415: * tm-next.h (HANDLE_PRAGMA): Define it.
1416:
1417: * Makefile.in (GNULIB2): New variable.
1418: (gnulib2): Use it.
1419: (gnulib2.portable): New name for old rule.
1420: (install-headers): Split out part of install rule.
1421: (INSTALL_HEADERS): New variable.
1422:
1423: * make-next: New file.
1424:
1425: * function.c (assign_parms): Get type from proper place.
1426: internal_arg_pointer is now an arg. Compute arg_pointer_copied
1427: from that. Fix typos.
1428: (expand_function_start): Compute internal_arg_pointer here.
1429: Fix typos handling incoming struct value address.
1430:
1431: * cccp.c (do_include): Ignore null strings found in stackp.
1432:
1433: * cccp.c (discard_comments): Handle backslash-newline.
1434:
1435: Mon Mar 26 07:18:58 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1436:
1437: * function.h (temp_slot, temp_slot_level): Now saved by function.c.
1438: * function.c (struct temp_slot): Move from stmt.c.
1439: (push_function_context, pop_function_context): Save/restore temp slots.
1440: (assign_parms): Pass type to locate_and_pad_parms.
1441: (locate_and_pad_parms): Accept TYPE.
1442: Don't need STACK_OFFSET.
1443: (expand_function_start): Pass type to locate_and_pad_parms.
1444: (init_function_start): Initialize temp_slot info.
1445: * stmt.c (temp_slot, init_stmt_for_function, save_stmt_status,
1446: restore_stmt_status): Delete temp_slot stuff from here.
1447:
1448: Sun Mar 25 20:21:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1449:
1450: * expr.c (emit_move_insn): Turn memory address checking back on,
1451: but allow push_operand for x.
1452:
1453: * ns32k.md (movstrsi): If UTEK_ASM, output $0 operand in movsd.
1454: (movsi): Handle UTEK_ASM like GNX_V3.
1455: * out-ns32k.c (print_operand_address): Add UTEK_ASM conditionals.
1456: * tm-merlin.h: New file.
1457:
1458: * tm-ns32k.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE):
1459: Use save and restore insns if no frame pointer.
1460:
1461: * cccp.c (handle_directive): Discard backslash-newline within <...>.
1462:
1463: Sat Mar 24 13:23:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1464:
1465: * gcc.c (default_compilers): Add entry for .m files, for Objective C.
1466: Always pass some -lang... option to cpp.
1467:
1468: * cccp.c (do_include): Support #import as well as #include.
1469: (lookup_import, add_import, import_hash): New functions.
1470: (main): Handle options -lang-c++ and -lang-objc and -lang-c.
1471: Set variables cplusplus and objc.
1472: (enum node_type, directive_table): Add #import.
1473: (handle_directive): Treat #import as undefined unless objc is nonzero.
1474: (initialize_builtins): If objc, define __OBJC__.
1475:
1476: * Makefile.in (lang-objc, cc1obj): New targets.
1477: (objc-parse.o, objc-parse.c, objc-actions.o): New targets.
1478: (C_OBJS): Add c-lang.o.
1479:
1480: * objc.gperf: New file.
1481: * objc-parse.y, objc-actions.c, objc-actions.h: New files.
1482:
1483: * c-lang.c: New file.
1484: * c-decl.c (c_decode_option): New name for lang_decode_option.
1485: Used from c-lang.c and objc-actions.c.
1486:
1487: * toplev.c (compile_file): Call lang_init and lang_finish.
1488: * c-lang.c, objc-actions.c, cplus-decl.c: Define those functions.
1489:
1490: * c-typeck.c (comptypes): Call maybe_objc_comptypes for record types.
1491: * c-lang.c, objc-actions.c (maybe_objc_comptypes): New functions.
1492:
1493: * c-decl.c (implicitly_declare, finish_decl, finish_struct):
1494: Call maybe_objc_check_decl before rest_of_decl_compilation.
1495: * c-lang.c, objc-actions.c (maybe_objc_check_decl): New functions.
1496:
1497: * function.c (assign_stack_local): Align each slot only as needed.
1498: Normally don't round size up, just align first.
1499: New argument ALIGN specifies alignment, or 0 for that of MODE.
1500: All callers changed.
1501: (assign_outer_stack_local): Likewise.
1502: * final.c (final_start_function): Round frame size to STACK_BOUNDARY.
1503:
1504: * function.c (assign_stack_temp, preserve_temp_slots):
1505: (free_temp_slots): Moved from stmt.c.
1506:
1507: * stmt.c (expand_decl): Use convert_units to avoid overflow.
1508:
1509: Fri Mar 23 00:52:34 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1510:
1511: * c-decl.c (grokdeclarator): Warn if array element is incomplete.
1512:
1513: * varasm.c (assemble_variable): Use convert_units to compute
1514: size in bytes.
1515: (output_constructor): Likewise, for non-bit fields.
1516:
1517: * c-typeck.c (check_format, my_strchr): New functions.
1518: (build_function_call): Call check_format.
1519: * c-decl.c (lang_decode_options): Handle -Wformat.
1520: * c-tree.h (warn_format): New flag.
1521:
1522: * xm-hp9k320.h (USE_C_ALLOCA): Define if not compiling with GCC.
1523:
1524: Thu Mar 22 23:35:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1525:
1526: * c-decl.c (get_parm_info): Void parm is special only if no name.
1527:
1528: * loop.c (may_not_optimize): Static var replaces local `may_not_move'.
1529: (strength_reduce): Don't accept those regs as givs.
1530:
1531: Thu Mar 22 06:45:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1532:
1533: * integrate.c (expand_inline_function): Compute delta to frame
1534: from the address at which it was allocated.
1535:
1536: Wed Mar 21 17:36:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1537:
1538: * recog.c: Increase number of changes saved for validate_change.
1539: (validate_change): If INSN == 0 and in group, add to group; if not,
1540: always OK.
1541: (apply_change_group): If INSN == 0, change is always OK.
1542:
1543: * cse.c (cse_basic_block): If extending block, don't call
1544: cse_end_of_basic_block with null insn if we got to end of function.
1545:
1546: Wed Mar 21 14:08:35 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1547:
1548: * calls.c (expand_call): Don't reuse pending_stack_adjust for argblock
1549: if inhibit_defer_pop.
1550:
1551: * expr.c (push_block): New argument EXTRA. All callers changed.
1552: (emit_push_insn): Use that for the padding when using push_block.
1553:
1554: * tm-sparc.h (FUNCTION_ARG, FUNCTION_INCOMING_ARG):
1555: Only word-aligned BLKmodes can go in registers.
1556: (FUNCTION_ARG_PARTIAL_NREGS): Likewise.
1557: * tm-spur.h (FUNCTION_ARG, FUNCTION_INCOMING_ARG): Likewise.
1558: * expr.c (expand_call): If encounter a stack parm before offset
1559: gets up to zero, make it zero.
1560: * function.c (assign_parms): Likewise.
1561:
1562: * ns32k.md (stack adjust insn): Don't use cmpd or cmpqd on Sequent.
1563: * tm-sequent.h (SEQUENT_ADJUST_STACK): Define this.
1564:
1565: * make-hp9k320g (AR): Define it.
1566: * Makefile.in (gnulib): Use OLDAR.
1567: (OLDAR): New variable.
1568:
1569: * make-iris: New file.
1570:
1571: * xm-iris.h: Undef alloca before defining it.
1572:
1573: * Makefile.in (stage1, ...): Always copy gnulib, never link.
1574:
1575: * cccp.c (main): Use -d...M... as option for macro dump.
1576: * gcc.c (default_compilers): Pass -d* to cpp.
1577:
1578: Tue Mar 20 01:41:49 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1579:
1580: * c-parse.y (datadef): Error message fix.
1581: * cplus-parse.y: Likewise.
1582:
1583: Mon Mar 19 15:26:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1584:
1585: * integrate.c (expand_inline_function): Save static chain value.
1586: (copy_rtx_and_substitute): Substitute it where called function
1587: copies its static chain.
1588: * emit-rtl.c (init_emit_once): Make static_chain_incoming_rtx
1589: distinct.
1590:
1591: * function.c (current_function_contains_functions): New variable.
1592: (init_function_start): Initialize it.
1593: (pop_function_context): Set it to 1.
1594: * integrate.c (function_cannot_inline_p):
1595: Don't inline fn with nested fns.
1596:
1597: * integrate.c (copy_rtx_and_substitute): Don't replace fp
1598: as destination of assignment.
1599:
1600: * assert.h (__assert) [not __GNUC__]: Rename arg to avoid stringify.
1601:
1602: * function.c (expand_function_start): If struct_value_incoming_rtx
1603: is 0, get the address from first parm reg or first stack slot.
1604: (assign_parms): In that case, skip the space it occupies.
1605:
1606: * calls.c (expand_call): If STRUCT_VALUE is 0, pass address as parm
1607: even if that means using a register.
1608:
1609: Mon Mar 19 07:43:46 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1610:
1611: * integrate.c (function_cannot_inline_p): Check for non-ANSI varargs
1612: as well as ANSI varargs.
1613: Allow inlining of functions with large frames now that we can share
1614: them between inlined functions.
1615: (expand_inline_function): Save static vars in case we were called
1616: recursively.
1617: Make sure we don't free temporary stack slot used for argument.
1618:
1619: * tree.def: Add new code types '<', '1', and '2' for comparison,
1620: unary arith, and binary arith, resp. Change some 'e' types to those.
1621: * expr.c (init_comparisons): Delete fn.
1622: (expand_expr): Handle X ? A binop B : A with copy and conditional op.
1623: In X ? A : B, if A and B both simply, do with only one jump.
1624: Remove existing test for things like x = y | (a == b).
1625: (preexpand_calls): Handle new code types for expressions.
1626: * optabs.c (init_optabs): No longer call init_comparisons.
1627: * fold-const.c (operand_equal_p): No longer static.
1628: Ignore NON_LVALUE_EXPR.
1629: Only require constants if new operand ONLY_CONST is non-zero.
1630: (fold): Treat tree code types '<', '1', and '2' as 'e'.
1631: Handle cases where an arithmetic operation is applied to a compound,
1632: conditional, or comparison operation by distributing the arithmetic
1633: operation inside the compound, conditional, or comparison operation.
1634: Update calls to operand_equal_p.
1635: Convert A ? B : B to (A, B).
1636: * expmed.c (make_tree): No longer static.
1637: * tree.h: Define new macro TREE_CODE_CLASS.
1638: Define extern make_tree.
1639: * print-tree.c (prtypeinfo): New new macro TREE_CODE_CLASS.
1640: (dump): Use new macro and treat types '<', '1', and '2' as 'e'.
1641: * cplus-lex.c (init_lex): Likewise.
1642: * tree.c (make_node, copy_node): Ditto.
1643:
1644: Mon Mar 19 00:05:50 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1645:
1646: * gcc.c (main): Trap SIGPIPE.
1647:
1648: Sat Mar 17 13:09:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1649:
1650: * jump.c (jump_optimize): Also delete no-op insns to store bit fields.
1651:
1652: * sparc.md (patterns for addcc, subcc, andcc, andncc, orcc, orncc):
1653: (and xorcc, xorncc): Use arith32_operand as predicate.
1654:
1655: Fri Mar 16 15:19:21 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1656:
1657: * tm-vms.h (NO_DOLLAR_IN_LABEL): Define this.
1658:
1659: * function.c (assign_parms): Use INIT_CUMULATIVE_INCOMING_ARGS
1660: if that is defined.
1661:
1662: * c-decl.c (duplicate_decls): `static' always prevails, for functions.
1663: * cplus-decl.c (duplicate_decls): Likewise.
1664:
1665: * sparc.md (patterns for andncc, orncc, xorncc):
1666: Delete `%' from constraint.
1667: (patterns for addcc, andcc, orcc, xorcc): Use symmetrical predicates.
1668: (peephole for returning sum): Likewise.
1669:
1670: Thu Mar 15 22:02:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1671:
1672: * expmed.c (expand_mult_add): Handle either x or mult having VOIDmode.
1673: Always pass both args to type_for_mode.
1674:
1675: * expmed.c (extract_bit_field, store_bit_field):
1676: When changing mode of a reg to SImode, also do big-endian correction.
1677: Consistently use BYTES_BIG_ENDIAN to decide how bits are numbered.
1678: Fix stray ref to CODE_FOR_extzv in case for extv.
1679:
1680: * c-typeck.c (build_unary_op): Allow function type args to `!',
1681: since they convert to pointers.
1682: * cplus-typeck.c (build_unary_op): Likewise.
1683:
1684: Thu Mar 15 06:30:21 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1685:
1686: * expr.c (convert_to_mode): Don't copy constant to register.
1687: Use GET_MODE_CLASS instead of integer_mode_p.
1688: (integer_mode_p): Delete obsolete fn (only use above).
1689:
1690: * loop.c (product_cheap_p): Don't crash if no insns need to multiply;
1691: that case is cheap.
1692:
1693: Thu Mar 15 02:11:34 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1694:
1695: * regclass.c (init_reg_sets_1): Set n_non_fixed_regs.
1696: * loop.c (scan_loop, strength_reduce): Set threshold from num of regs.
1697:
1698: Wed Mar 14 19:31:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1699:
1700: * integrate.c (function_cannot_inline_p): Allow BLKmode parms.
1701: Allow address of aggregate parm.
1702: (expand_inline_function): Create and maintain const_equiv_map
1703: and const_age_map. Increment const_age at basic blocks.
1704: Don't substitute constant values for parm regs;
1705: instead, call try_constants for each insn copied.
1706: When structure_value_addr in't 0, check aggregate_value_p too.
1707: Round size of parm_map up.
1708: Don't init inline_fp_rtx unless it is used.
1709: Don't use emit_move_insn when copying a SET insn.
1710: (copy_rtx_and_substitute): Handle inline_target being used when 0.
1711: Don't build a SUBREG of a CONST_INT.
1712: For PLUS of constant, do plus_constant whether mem address or not.
1713: Set up inline_fp_rtx if we need it.
1714: Clear RTX_UNCHANGING_P in all MEMs.
1715: (try_constants, subst_constants): New functions.
1716: (access_parm_map): No big-endian offset for BLKmode parms.
1717: Do change_address if mode doesn't match.
1718: (const_equiv): New function.
1719: (try_fold_cc0): Use that function.
1720: In "small win" case, extract CODE_LABEL out of LABEL_REF for emit_jump.
1721: (output_inline_function): Set return_label to 0.
1722:
1723: * recog.c (cancel_changes, num_validated_changes): New functions.
1724:
1725: Tue Mar 13 17:30:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1726:
1727: * recog.c (constrain_operands): Define `V' constraint.
1728:
1729: Tue Mar 13 17:10:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1730:
1731: * cplus-lex.c (operator_name_string, init_lex): Cast enums to ints
1732: to avoid errors from some C compilers.
1733:
1734: * cplus-init.c (expand_aggr_vbase_init): Make declarations consistent.
1735:
1736: Sun Mar 11 18:37:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1737:
1738: * ns32k.md (movsi): Flush spurious arg to abort.
1739:
1740: * Makefile.in (gnulib.portable, stamp-gnulib2): Ignore error in ranlib.
1741:
1742: Sat Mar 10 19:38:36 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1743:
1744: * function.h: Add new fields temp_slots and temp_slot_level.
1745: * stmt.c (struct temp_slot): New structure.
1746: (init_stmt_for_function): Initialize temp slot info.
1747: (save_stmt_status, restore_stmt_status): Save and restore temp slots.
1748: (expand_asm_operands): Remove redundant assignment to LAST_EXPR_TYPE.
1749: Free any temporaries made.
1750: (assign_stack_temp, preserve_temp_slots, free_temp_slots): New fns.
1751: (expand_expr_stmt): If last expression had a value (i.e., in ({..})
1752: grouping), maybe preserve temporaries.
1753: (expand_return, tail_recursion_args): Free any temporaries allocated.
1754: (expand_start_bindings): Push temporary stack level.
1755: (expand_end_bindings): Pop temporary stack level.
1756: (expand_decl): Use kept temporary slots for automatic variables.
1757: Free temporary slots after computing size.
1758: (expand_decl_init, expand_cleanups, expand_end_case): Free any
1759: allocated temporaries.
1760: * calls.c (expand_call): Use assign_stack_temp instead of
1761: get_structure_value_addr.
1762: Make a new temporary level while expanding a call and free
1763: temporaries as soon as we know they aren't going to be reused.
1764: (store_one_arg): Free any temporary slots made for arg being stored.
1765: * function.c (get_structure_value_addr): Delete fn.
1766: (init_function_start): No longer initialize structure value addr.
1767: * integrate.c (expand_inline_function): Use temporary slot for
1768: inlined function's frame.
1769: Free temporaries needed while evaluating arguments.
1770: * expr.c (expand_assignment, do_jumps): Free temps no longer needed.
1771: (store_expr): Don't check for structure value addr.
1772: (save_noncopied_parts, expand_expr): Call assign_stack_temp
1773: instead of assign_stack_local.
1774: (preexpand_calls): No longer special-case fns returning structures.
1775: * c-typeck.c (c_expand_asm_operands): Free any temporaries made.
1776: * cplus-typeck.c (c_expand_asm_operands): Ditto.
1777: * cplus-decl2.c (finish_file): Ditto.
1778: * cplus-init.c (expand_aggr_init_1): Ditto.
1779: * cplus-type2.c (make_merged_ref): Preserve result and free
1780: other temporaries.
1781: * cplus-parse.y (stmt): Free any temporaries in EXCEPT clause.
1782:
1783: Sat Mar 10 16:07:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1784:
1785: * loop.c (other_reg_use_p): New name for only_reg_use_p.
1786: Return 0 if IN == EXPR.
1787: (check_eliminate_biv): Re-invert the test using other_reg_use_p.
1788:
1789: Fri Mar 9 18:34:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1790:
1791: * optabs.c (init_optabs): Handle PSImode insns.
1792:
1793: Fri Mar 9 18:24:11 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1794:
1795: * local-alloc.c (local_alloc): Clear qty_phys_sugg and _has_sugg
1796: when doing loop, not just when doing bzero.
1797: Add new vars qty_phys_copy_sugg and _has_copy_sugg.
1798: (block_alloc): Rework detection of possible tied registers to use
1799: extracted insn operands rather than trying to parse operands from
1800: RTL description.
1801: Don't tie registers if output has earlyclobber.
1802: For REG_NO_CONFLICT, check commutativity of expression in REG_EQUAL,
1803: rather than of operation of attached insn.
1804: If insn is a simple copy, pass that info to combine_regs.
1805: (combine_regs): For multi-word items, mark all registers actually
1806: used as preferred.
1807: If the insn is a simple copy, record hard reg suggestions in
1808: qty_phys_copy_sugg instead of qty_phys_sugg.
1809: (find_free_reg): Correctly check for all registers used.
1810: If qty_phys_has_copy_sugg is non-zero, use that register set. If
1811: none of them couldn't be allocated, try the other suggest set if
1812: it exists.
1813:
1814: Thu Mar 8 02:17:50 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1815:
1816: * jump.c (jump_optimize): Detect tablejumps that always go to
1817: the same place, and change to unconditional jumps.
1818:
1819: * fold-const.c (fold): Simplify comparison of integer value with self.
1820:
1821: * rtl.h (FUNCTION_FLAGS...): Additional flag bits for saving
1822: current_function_returns_pointer, and several others.
1823: (FUNCTION_PRETEND_ARGS_SIZE): New component in inline header.
1824: * integrate.c (save_for_inline): Record these flags.
1825: (output_inline_function): Get them out again.
1826: Also restore current_function_args_size and ..._pretend_...
1827:
1828: * ns32k.md (movsi, movdi): Handle floating point registers.
1829:
1830: * dbxout.c (dbxout_prepare_symbol): New function, output N_SOL stab.
1831: (dbxout_symbol, dbxout_parms, dbxout_reg_parms): Call it.
1832: * final.c (output_source_file): New function.
1833:
1834: * reload.c (find_reloads_toplev): Do BYTES_BIG_ENDIAN offset
1835: only within a word.
1836:
1837: * stdarg.h: Use _VA_LIST_ as macro to indicate already loaded.
1838:
1839: * fixincludes: Supply missing semicolon in netinet/ip.h.
1840:
1841: * tm-alliant.h (FUNCTION_PROLOGUE): Use `linkl' on 68020.
1842:
1843: * regclass.c (init_reg_sets): For subunion, keep largest candidate.
1844:
1845: Wed Mar 7 00:37:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1846:
1847: * emit-rtl.c (in_sequence_p): New function.
1848:
1849: * expr.c (expand_builtin): For BUILT_IN_SAVEREGS, insert after
1850: the initial NOTE insn.
1851:
1852: * dbxout.c (dbxout_finish_symbol): New argument is a decl or 0.
1853: Output line number in desc field.
1854: All callers changed to pass the argument.
1855:
1856: * tree.h (TREE_PUBLIC): Move back to tree_common.
1857:
1858: * dbxout.c (dbxout_init): Output working dir in a N_SO symbol.
1859:
1860: * expr.c (emit_library_call): Handle PUSH_ROUNDING.
1861:
1862: * explow.c (break_out_memory_refs): Use same mode as the MEM has.
1863:
1864: * out-mips.c (output_load_immediate): Let the assembler do the work.
1865:
1866: Tue Mar 6 22:20:49 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1867:
1868: * cccp.c (macroexpand): Fix bug in scanning strings for stringify.
1869:
1870: * stmt.c (expand_goto_internal): Adjust stack after cleanups.
1871: (expand_end_bindings, fixup_cleanups): Likewise.
1872:
1873: * tm-alliant.h (STATIC_CHAIN_REGNUM): Use 10.
1874:
1875: Tue Mar 6 15:23:11 1990 Jim Kingdon (kingdon at pogo.ai.mit.edu)
1876:
1877: * config.gcc: Accept srcdir & vint with either '-' or '+'.
1878:
1879: * c-parse.y (hash, is_reserved_word): Use __inline so it can
1880: be compiled with `gcc -traditional'.
1881:
1882: Tue Mar 6 14:52:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1883:
1884: * c-parse.y (compstmt): Don't return null tree for empty group. This
1885: will cause the compiler to dump core on a ({}) construct.
1886: * cplus-parse.y (compstmt): Ditto.
1887:
1888: Tue Mar 6 14:33:42 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1889:
1890: * tree.h (TREE_STATIC): Move back to common.
1891:
1892: Tue Mar 6 06:04:30 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1893:
1894: * function.h (expr_stmts_for_value): New field.
1895: * stmt.c (init_stmt_for_function): Initialize vars for expression
1896: statements.
1897: (save_stmt_status, restore_stmt_status): Save and restore value of
1898: expr_stmts_for_value.
1899:
1900: * cse.c (record_jump_equiv): Ensure previous insn is an INSN before
1901: testing it (it might be a NOTE).
1902:
1903: Tue Mar 6 00:26:20 1990 Richard Stallman (rms at geech)
1904:
1905: * tm-ns32k.h (NOTICE_UPDATE_CC): Use abort in case
1906: that shouldn't happen.
1907:
1908: Mon Mar 5 23:11:57 1990 Richard Stallman (rms at geech)
1909:
1910: * Makefile.in (cplus-tab.h): Say expect 12 reduce/reduce conflicts.
1911:
1912: * genoutput.c (output_prologue): Include insn-attr.h.
1913:
1914: * pyr.md (addsi3, mulsi3, umulsi3, andsi3, iorsi3, xorsi3):
1915: Make input arg predicates symmetrical.
1916: (adddi3, anddi3, iordi3, xordi3): Likewise.
1917: (addsi3): Use immediate subtract if suitable.
1918:
1919: Sat Mar 3 21:08:25 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1920:
1921: * expr.c (move_block_to_reg, emit_push_insn): Don't treat double 0.0
1922: as two words of zero.
1923: Handle DImode constants as two integers.
1924: Support CONST_INT (currently only called with const0_rtx).
1925:
1926: * expr.c (convert_move): Can only use slt if STORE_FLAG_VALUE == -1.
1927:
1928: Sat Mar 3 15:03:00 1990 Richard Stallman (rms at geech)
1929:
1930: * function.c (setjmp_protect_args, setjmp_args_warning): New functions.
1931: * toplev.c (rest_of_compilation): Call setjmp_args_warning.
1932: * c-decl.c (finish_function): Call setjmp_protect_args.
1933:
1934: * flow.c (regno_clobbered_at_setjmp): Argument registers
1935: are in effect set at start of function.
1936:
1937: * tm-sparc.h (ASM_OUTPUT_DOUBLE): Replace missing line.
1938:
1939: * print-tree.c (prtypeinfo): Don't check DECL-only
1940: flags for other nodes.
1941:
1942: * toplev.c: Eliminate `#ifdef 0'.
1943:
1944: * dbxout.c (print_int_cst_octal): New function.
1945: (dbxout_type): Use that for long long types.
1946:
1947: * Makefile.in (start.encap, rest.encap): Split all.internal.
1948:
1949: * tahoe.md: Adjust formatting.
1950:
1951: * tahoe.md (ashlsi3, lshlsi3): Don't clobber a const_int.
1952: Instead, use %s to convert shift count to multiplier.
1953: * tm-tahoe.h (PRINT_OPERAND): Handle %s.
1954:
1955: * tm-tahoe.h (CONST_COSTS): Specify cost of MULT.
1956:
1957: Fri Mar 2 01:00:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1958:
1959: * cse.c (rtx_cost): By default, multiply and divide are expensive.
1960:
1961: * expmed.c (expand_mult_add): Use type_for_mode.
1962: Allow ADD to have a different mode.
1963: * c-typeck.c (type_for_mode): New function.
1964: (get_floating_type): Function deleted.
1965: * cplus-typeck.c: Likewise.
1966:
1967: * jump.c (jump_optimize): Simplify `if (x) goto foo; else goto foo;'.
1968:
1969: Thu Mar 1 17:41:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
1970:
1971: * out-mips.c (tree_code_name): Declaration deleted.
1972:
1973: * stmt.c (expand_expr_stmt): No "no side effects" warning for (void)0.
1974:
1975: * assert.h (__assert): Don't call abort; use 0 as value.
1976: * gnulib2.c (__eprintf): Call abort here.
1977:
1978: * c-decl.c (pushdecl): Don't warn if shadowing error_mark_node.
1979:
1980: * optabs.c: Use GET_MODE_WIDER_MODE instead of INC_MODE.
1981:
1982: * machmode.def: Set up next-wider-mode for floating modes.
1983:
1984: Wed Feb 28 18:58:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
1985:
1986: * stmt.c (expand_goto_internal): Add missing stack adjust.
1987: (expand_fixup): Don't do stack adjust if fixup isn't for current pos.
1988:
1989: * stmt.c (expand_start_stmt_expr, expand_end_stmt_expr): No need to
1990: save result from start_sequence in RTL_EXPR.
1991:
1992: * stmt.c (expand_end_loop): Correctly see if NOTE_INSN_LOOP_CONT
1993: was written.
1994:
1995: * stmt.c (expand_decl): Omit move to OLDADDR if it would be noop.
1996:
1997: * expr.c (expand_expr): Don't use variable TYPE in subblocks that
1998: hides TYPE at function level.
1999:
2000: * expr.c (force_operand): Always generate PLUS for constant.
2001: Use negate_rtx to negate constant.
2002:
2003: * expr.c (expand_expr): Ensure that type is not wider than
2004: HOST_BITS_PER_INT when assuming that constant is entirely in
2005: TREE_INT_CST_LOW.
2006: Simplify EXPAND_SUM code for PLUS_EXPR and MINUS_EXPR.
2007: Call preexpand_calls at binop instead of all places that branch to it.
2008:
2009: * expmed.c (expand_shift): Skip widening try for rotates; avoid
2010: passing UNSIGNEDP == -1 to expand_binop.
2011:
2012: * expr.c (expand_builtin): Use a sequence instead of reorder_insns.
2013:
2014: * tree.c (save_expr): Ignore NON_LVALUE_EXPRs.
2015: Mark as TREE_VOLATILE so won't be inadvertently deleted.
2016: (build): Special-case LENGTH == 1 also.
2017:
2018: Wed Feb 28 12:57:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2019:
2020: * expr.c (convert_move): Handle conversions to and from PSImode.
2021:
2022: * stor-layout.c (layout_type): For integer types, don't consider
2023: PSImode, etc.
2024:
2025: * expmed.c (init_expmed): Typo: test was backwards.
2026:
2027: * Makefile (install): When installing $${eachfile}, use basename.
2028:
2029: Tue Feb 27 14:48:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2030:
2031: * tree.h (struct tree_common): Delete certain attributes.
2032: external, public, static, nonlocal, regdecl, inline.
2033: (struct tree_decl): Insert them here.
2034:
2035: * combine.c (try_combine): Avoid generating nested SUBREGs for
2036: operands when handling case where I2 or I1 is a SUBREG assignment.
2037: Never combine with an insn that sets a register to itself if it has
2038: a REG_EQUAL note.
2039: (subst): Correct errors in changing (minus (x) (c)) to (plus (x) (-c)).
2040: Recompute CODE before second switch.
2041: Case NOT: in second switch failed to set undobuf.storage.
2042: (gen_lowpart_for_combine): Don't allow multi-word modes; do allow
2043: null conversions.
2044:
2045: Tue Feb 27 07:13:17 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2046:
2047: * combine.c (try_combine): Don't combine when doing so would
2048: replace destination that is being modified, as opposed to replaced.
2049:
2050: * function.c (fixup_var_refs_1): Rework to correctly support
2051: bit-field insns that don't allow memory operands.
2052: Correctly detect insns that simply copy a variable to or from a
2053: register.
2054: (optimize_bit_field): Use a sequence rather than reorder_insns.
2055: * Makefile.in (function.o): Update dependancies.
2056:
2057: * recog.h: Delete obsolete insn_machine_info.
2058:
2059: * function.c (assign_parms): Use move_block_from_regs to place
2060: first part of parameter partially in registers into memory.
2061:
2062: Mon Feb 26 19:02:56 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2063:
2064: * fixincludes: Find only .h files when looking for headers.
2065:
2066: * function.c (expand_function_start): Save arg ptr reg
2067: if there are nonlocally-referenced parms.
2068:
2069: Fri Feb 23 13:21:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2070:
2071: * c-parse.y (readescape): For x, avoid overflow when shifting in if.
2072:
2073: Thu Feb 22 19:14:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2074:
2075: * fixincludes: Delete directories before creating them.
2076: When making internal symbolic directory links, chase
2077: chain of existing links to the end.
2078:
2079: * dbxout.c (dbxout_type): Always use main variant (until
2080: there is code to report the distinctions usefully).
2081:
2082: Wed Feb 21 13:20:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2083:
2084: * math-68881.h (hypot): New function.
2085:
2086: * optabs.c (expand_binop): Swap operands if that makes modes match.
2087:
2088: * expr.c (expand_expr): For ARRAY_EXPR, when converting to
2089: multiplication and addition, use type of index for product.
2090:
2091: * gcc.c (LIB_SPEC): Link with -lg if -g specified.
2092: * tm-isi68.h, tm-next.h, tm-sparc.h, tm-sun3.h, tm-sun386i.h: Likewise.
2093: * tm-mips.h (LIB_SPEC): Override to avoid using -lg.
2094:
2095: * toplev.c (main): Warn for -g if not supported.
2096:
2097: * c-decl.c (grokdeclarator): Do pedantic checks for const functions
2098: where function decls and variant function types are made.
2099:
2100: Mon Feb 19 20:06:48 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2101:
2102: * optabs.c: Restore Feb 13 change.
2103:
2104: * varasm.c (readonly_data_section): New fn.
2105: (assemble_variable, get_or_assign_label, output_constant_pool):
2106: Use new fn instead of text_section.
2107: * final.c (end_final): Write profiling table to read-only section.
2108: (get_attr_length, shorten_branches): Address vectores take no space
2109: if not in text section.
2110: Vectors are in operand 0 for ADDR_VEC but 1 for ADDR_DIFF_VEC.
2111: (final_scan_insn): Merge cases for ADDR_VEC and ADDR_DIFF_VEC.
2112: Put vector tables in read-only section.
2113:
2114: Sun Feb 18 13:58:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2115:
2116: * gnulib2.c (__shtab): New vector.
2117: * Makefile.in (LIB2FUNCS): Add that member.
2118:
2119: * *tahoe*: New versions of these files.
2120:
2121: * optabs.c: File was deleted. Copied last backup.
2122: Feb 13 change lost.
2123:
2124: * tm-sparc.h (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT): Handle nans.
2125: Don't output more digits than the numbers have.
2126: * tm-sun3.h (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT): Likewise.
2127: (ASM_OUTPUT_DOUBLE_OPERAND): Don't output excess digits.
2128:
2129: * m68k.md (movqi): Don't use clrb or st if dest is volatile.
2130:
2131: * expmed.c (expand_mult): Don't use sum of shifts if mult is cheaper.
2132: (init_expmed): Set mult_is_cheap based on rtx_cost.
2133: * toplev.c (compile_file): Call init_expmed.
2134: * cse.c (rtx_cost): Not static.
2135:
2136: * tm-mips.h (ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_INTERNAL_LABEL):
2137: Start name with $.
2138:
2139: * tm-alliant.h, tm-convex.h, tm-hp9k3bsd.h, tm-news.h, tm-seq386.h:
2140: * tm-sequent.h, tm-spur.h, tm-sun2.h, tm-tahoe.h, tm-vax.h:
2141: (LIB_SPEC): Put in -lc with appropriate alternatives.
2142:
2143: * toplev.c (rest_of_compilation):
2144: Clear rtx_equal_function_value_matters just before final.
2145:
2146: * cccp.c (rescan): If don't find paren after macro, back up over space.
2147:
2148: Sat Feb 17 20:58:21 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2149:
2150: * tm-hp9k320.h (CPP_SPEC): Remove _INCLUDE__STDC__.
2151:
2152: Wed Feb 14 09:06:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2153:
2154: * loop.c (struct movable): Add SET_DEST and SET_EQUAL fields.
2155: (single_set): New fn.
2156: (scan_loop, force_movables, move_movables, consec_set_invariant_p):
2157: Use new fn to look for insns that contain a single set.
2158: Use new fields in struct movable.
2159: (scan_loop, strength_reduce): Pass number of registers to
2160: strength_reduce.
2161: (libcall_benefit): New fn.
2162: (scan_loop, strength_reduce, consec_sets_giv): Use it.
2163: (skip_consec_insns): Correctly count insns to be skipped when
2164: NOTEs are present.
2165: (combine_movables): In some cases, combine regs that load CONST_INTs
2166: even if the modes of the destination differ. This requires starting
2167: the inner loop from the start of the movable list.
2168: Use find_reg_note to search for notes.
2169: Don't choose a use of an equivalence instead of the insn that sets
2170: the register directly (hence setting up the equivalence).
2171: Set DONE for the matched movable to ensure it isn't duplicated.
2172: (replace_call_address): No longer used.
2173: (move_movables): When moving a LIBCALL block where the address of
2174: the fn is in a register, emit an insn to move the actual address
2175: in case the original move was CSE'ed out of the block.
2176: Emit AND insn via expand_binop instead of explicit RTL.
2177: Search for matching from start of list, not from movable being matched.
2178: If mode of combined movables differ, use SUBREG to replace narrower.
2179: (replace_regs): Don't replace register if it is the destination.
2180: (count_nonfixed_reads): Mem ref is fixed if addres is loop invariant.
2181: (can_jump_into_range_p): Speed up common cases.
2182: (count_loop_regs_set): Do same thing for parts of PARALLEL as when
2183: they occur standalone.
2184: (struct induction): Delete fields forces, forces2, and consec.
2185: Store dest and src reg rtx instead of register number.
2186: Add new fields always, cant_derive, combined_with, maybe_dead, and
2187: derive_adjustment.
2188: (struct iv_class): Add new fields initial_test, init_set, incremented.
2189: (all strength reduction routines): Use single_set and use new
2190: struct induction fields; forces is no longer used.
2191: (record_biv): New fn.
2192: (strength_reduce): Use it.
2193: (record_initial, valid_initial_value_p): New fns.
2194: (strength_reduce): Scan for bivs in loop order.
2195: Refine handling of maybe_never.
2196: A reg isn't a biv if it is never incremented.
2197: Use note_stores and record_initial to correctly note all changes
2198: to a biv's register prior to the start of the loop.
2199: We may know biv's initial value if it was tested NE before the loop.
2200: Use new valid_initial_value_p.
2201: Ensure giv's insn is the last in a LIBCALL block or if consec.
2202: Don't set maybe_never on jump back to top of loop.
2203: Don't delete any insns setting givs; flow will eliminate them as
2204: dead. Ditto for biv updates when biv can be eliminated.
2205: If giv's last use is in a computation of another giv, mark that it
2206: might be dead.
2207: Make two passes over givs. In first pass, handle non-matched
2208: givs. In second pass, handle the matched givs.
2209: (only_reg_use_p): Now static.
2210: (delete_insn_forces): Fn deleted; no longer used.
2211: (update_giv_derive): New fn.
2212: (strength_reduce): Call it for every insn and label.
2213: (record_giv): If giv never used, ignore it.
2214: (basic_induction_var): Always set *MULT_VAL to something.
2215: A set of a biv from an invariant MEM is allowed.
2216: (simplify_giv_expr, expr_cost): New fns.
2217: (general_induction_var): Rewrite to use them. More types of
2218: expressions are now recognized as givs.
2219: Use results produced by update_giv_derive to ensure that giv derivation
2220: works correctly when spanning biv update.
2221: (consec_sets_giv): Can allocate temporary induction struct on stack.
2222: Skip insns that set irrelevant items between two updates to giv.
2223: (gen_iv_mult, emit_iv_init_code): Replace with emit_iv_add_mult.
2224: (update_reg_last_use): New fn.
2225: (emit_iv_add_mult): Call it for all operands.
2226: (express_from, combine_givs_p, combine_givs): New fns.
2227: (strength_reduce): Call them to combine givs.
2228: (product_cheap_p): Rewrite to handle more cases.
2229: Free any memory allocated.
2230: (get_condition): New fn.
2231: (strength_reduce, check_dbra_loop): Use it.
2232: (check_dbra_loop): Use emit_move_insn instead of writing explicit SET.
2233: Use emit_cmp_insn/emit_jump_insn to write out replacement test.
2234: (check_eliminate_biv): Use single_set.
2235: Refine test for insns that use biv only to calculate giv.
2236: Return non-zero if can eliminate biv; don't set eliminable.
2237: (can_eliminate_biv_p): Remove some duplicate code and allow
2238: all constants in some cases where only CONST_INT was allowed.
2239: Don't replace biv with giv that might be dead.
2240: (eliminate_biv): Compute whether to put an invariant before insn
2241: in which the biv is being eliminated or at the start of loop.
2242: Allow more types of constants.
2243: Don't replace biv with giv that might be dead.
2244: Use validate_change when substituting into insn.
2245: (strength_reduce): Change calls to check_eliminate_biv and
2246: eliminate_biv. Call the former again after maybe_dead has possibly
2247: been set on some givs.
2248:
2249: Tue Feb 13 19:58:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2250:
2251: * tree.c (function_obstack): New variable.
2252: (init_allocation): Init it to temporary_obstack.
2253: (save_tree_status): Save it, make new obstack for it.
2254: (restore_tree_status): Free new obstack, restore old.
2255: (temporary_allocation, resume_temporary_allocation): Use that one.
2256: * function.h (struct function): Slot for saved function_obstack.
2257: * tree.c (push_obstack, pop_obstack): New functions.
2258: These implement a stack for obstack selection.
2259: * function.c (put_var_into_stack): If var is nonlocal,
2260: switch to obstacks of the function it is in.
2261:
2262: Tue Feb 13 17:52:15 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2263:
2264: * optabs.c (emit_no_conflict_block): During reload, don't do
2265: any encapsulation or add notes.
2266: Allow single insn or no insns in sequence.
2267:
2268: Tue Feb 13 12:51:45 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2269:
2270: * stor-layout.c (build_int): Increase limits of cache size.
2271:
2272: * sdbout.c (sdbout_symbol): Force output of symbol's type.
2273:
2274: Tue Feb 13 08:28:37 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2275:
2276: * toplev.c (rest_of_compilation): Don't skip compilation of function
2277: if TREE_INLINE but no saved insns (e.g., if not -O).
2278:
2279: * rtlanal.c (replace_rtx): New function.
2280: * rtl.h: Define it.
2281:
2282: Tue Feb 13 00:02:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2283:
2284: * c-decl.c (finish_struct): Lay out any existing array types
2285: of newly completed struct.
2286: (layout_array_type): New subroutine.
2287:
2288: Mon Feb 12 11:33:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2289:
2290: * function.c (assign_parms): If not -O, keep all parms in memory.
2291:
2292: * expr.c (clear_pending_stack_adjust): Ignore TREE_INLINE if not -O.
2293:
2294: * out-i386.c (output_fix_trunc): New function.
2295: (fp_pop_int): Re-enabled. Handle more modes, individually.
2296: (print_operand): Handle %D.
2297: * i386.md (fix_truncdfdi2, fixuns_truncdfdi2): New patterns.
2298: These changes from James Van Artsdalen.
2299:
2300: * gnulib2.c (__builtin_vec_delete): Use __builtin_delete, not free.
2301:
2302: * sdbout.c (sdbout_field_types): Do look through pointer types.
2303:
2304: Sat Feb 10 19:31:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2305:
2306: * sdbout.c (plain_type_1): Don't output tag until known.
2307: (sdbout_one_type): Don't record tag in KNOWN_TYPE_TAG until end.
2308: Reenable output of member types before original structure.
2309:
2310: * expr.c (expand_expr): Convert post-inc to pre-inc if result ignored.
2311:
2312: Sat Feb 10 14:35:03 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2313:
2314: * ns32k.md (movsf): Convert double constant to float.
2315:
2316: Fri Feb 9 00:02:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2317:
2318: * c-decl.c (duplicate_decls): Don't lose alignment of OLDDECL.
2319:
2320: * cccp.c (handle_directive): Keep comments by copying them explicitly.
2321:
2322: * cccp.c (rescan): When scanning for open-paren after macro name,
2323: discard comments if appropriate.
2324:
2325: Fri Feb 9 18:26:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2326:
2327: * cse.c (cse_insn): Suppress infinite loop when associating
2328: operations in cases where a reg, R, is equal to "R OP const1" and
2329: we are looking at "R OP const2" for some associative operator OP.
2330:
2331: Thu Feb 8 14:19:41 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2332:
2333: * c-decl.c (build_enumerator): Pedantic warning if value not an int.
2334: Access default value after checking for constant specified,
2335: as it should no longer be possible to have NON_LVALUE_EXPR
2336: in the default.
2337:
2338: * c-typeck.c (default_conversion): Don't truncate wide enums.
2339:
2340: * tm-hp9k320.h (CPP_SPEC): Define _INCLUDE__STDC__ if not traditional.
2341: * tm-hp9k310.h (CPP_SPEC): Likewise.
2342:
2343: Wed Feb 7 12:59:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2344:
2345: * emit-rtl.c (emit_insns_before): New fn.
2346: (init_emit_once): Add uses of new macros to support static chain
2347: passed in memory.
2348: * calls.c (prepare_call_address): Rework to set static chain for
2349: languages that have EPmode function addresses and for nested
2350: functions in C.
2351: Emit USE insn for static_chain_rtx into list of USE insns to be
2352: placed later.
2353: (emit_call_1): USE_INSNS is now a list of insns, not a SEQUENCE.
2354: (expand_call): Remove gratuitous forcing of FUNEXP to Pmode (it
2355: might have been EPmode).
2356: Make USE_INSNS a list, rather than a SEQUENCE.
2357: Use prepare_call_address to emit load into static chain.
2358: * expr.c (emit_library_call): Update call to prepare_call_address.
2359: * function.c (expand_function_start): Use incoming static chain rtx
2360: instead of outgoing form (was correct in one place, wrong in one).
2361: * stmt.c (expand_goto): Set static_chain rtx after stack pointer
2362: in case it uses the stack pointer.
2363: Only write one USE for stack_pointer_rtx.
2364:
2365: Tue Feb 6 17:26:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2366:
2367: * jump.c (jump_optimize): Suppress optimization of `if (...) x = 1;
2368: else {...} if (x) ...', when a label is present between the
2369: assignment to X and the unconditional jump.
2370:
2371: Mon Feb 5 23:22:30 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2372:
2373: * combine.c (try_combine): If I2 or I1 is a PARALLEL, ignore only
2374: CLOBBER parts when combining. Previously used to ignore USE parts
2375: also but the latter can indicate that the insn needs some setup that
2376: isn't shown in its rtl.
2377:
2378: Mon Feb 5 13:32:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2379:
2380: * vax.md (addhi3, addqi3): Fix typo checking for dec insn.
2381:
2382: * cccp.c (struct file_buf): New field `nominal_fname' is name spec'd
2383: in #line command; `fname' is name of actual input file.
2384: Many functions now use or set this field as well or instead.
2385:
2386: * c-decl.c (grokdeclarator): Fix missing paren.
2387:
2388: Sun Feb 4 12:37:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2389:
2390: * tm-3b1g.h: New file.
2391: * config.gcc (3b1g, 3b1-gas): New alternative.
2392:
2393: * loop.c (move_movables): Skip USE insns when checking for
2394: the insn that loads the address of a library function.
2395:
2396: * combine.c (combine_instructions): Compute total_distrib_*.
2397:
2398: * final.c (final): Do basic block profiling at end of function.
2399: (final, final_scan_insn): Run CC_STATUS_INIT after block profiling.
2400: (final_scan_insn): Detect cond jumps that use PARALLEL.
2401:
2402: Sun Feb 4 00:04:22 1990 Richard Kenner (rms at sugar-bombs.ai.mit.edu)
2403:
2404: * function.c (assign_stack_local): Use plus_constant to avoid
2405: PLUS when offset is zero.
2406: (assign_outer_stack_local): Ditto.
2407:
2408: Sun Feb 4 00:04:22 1990 Ron Guilmette (rms at sugar-bombs.ai.mit.edu)
2409:
2410: * explow.c (fix_lexical_addr): Fix typo.
2411:
2412: * tree.c (build_type_variant): Special handling for protoize.
2413:
2414: * protoize.c: New file.
2415:
2416: * toplev.c (flag_gen_aux_info): Define it.
2417: (f_options): Recognize the flag.
2418: (compile_file): Open and close the aux_info file.
2419:
2420: * flags.h (flag_gen_aux_info): Declare it.
2421:
2422: * c-typeck.c (comptypes): Handle equivalent variant types for protoize.
2423:
2424: * c-decl.c (implicitly_declare): Call gen_aux_info_record.
2425: (start_decl, store_parm_decls): Likewise.
2426: (pushdecl): For protoize, distinguish different names for same type.
2427: (grokdeclarator): For protoize, don't always get main variant.
2428: (finish_function): Take the main variant here.
2429:
2430: * c-aux-info.c, SYSCALLS.c: New files.
2431:
2432: * Makefile.in (proto, protoize, unprotoize): New targets.
2433: (protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize): More new.
2434: (c-aux-info.o): Also new.
2435: (STAGESTUFF): Add protoize, unprotoize.
2436: (install): Install protoize, unprotoize and SYSCALLS.c.X.
2437:
2438: Sat Feb 3 17:09:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2439:
2440: * c-typeck.c (digest_init): Allow conversion of array exp to pointer.
2441: Constructors with types are simply expressions, so don't treat as
2442: initializers.
2443:
2444: * Makefile.in (uninstall): New target.
2445:
2446: * Makefile.in (include/README): Target deleted.
2447: (include): Deleted.
2448: (INSTALL): Create include dir here.
2449:
2450: * Makefile.in (all.internal): Enable compiling cc1plus.
2451: (lang-cplus): New target.
2452: (*.o): Add some missing dependencies.
2453: (STAGESTUFF): Add cc1plus.
2454:
2455: Fri Feb 2 18:21:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2456:
2457: * tree.c (decl_function_context): Don't abort when passed ERROR_MARK.
2458:
2459: Fri Feb 2 17:04:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2460:
2461: * integrate.c (copy_for_inline): Use real width of rtunion in bcopy.
2462: * emit-rtl.c (copy_rtx_if_shared): Likewise.
2463:
2464: * assert.h (assert) [__STDC__]: Use comma operator to avoid warning.
2465:
2466: * c-decl.c (grokdeclarator): Traditionally change return type float
2467: to double.
2468:
2469: * cse.c (predecide_loop_entry): Give up unless simple jump enters loop.
2470:
2471: Thu Feb 1 19:32:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2472:
2473: * c-parse.y (yylex, skip_white_space): CR is not whitespace.
2474:
2475: Thu Feb 1 17:18:33 1990 Richard Kenner (kenner at sugar-bombs.ai.mit.edu)
2476:
2477: * tm-m68k.h (PREFERRED_RELOAD_CLASS): Never return DATA_REGS for
2478: ADDR_REGS, even for QImode.
2479:
2480: * cse.c (cse_insn): If source equivalent is not in table, but
2481: source is, put equivalent in same class as source. But do not
2482: do this if the destination has a STRICT_LOW_PART.
2483: (cse_main): Call init_recog instead of init_recog_no_volatile.
2484:
2485: Thu Feb 1 17:18:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2486:
2487: * Makefile.in (cplus-tab.c, cplus-tab.h): Renamed from cplus-parse.*.
2488: (TAGS, realclean): Renamed these files.
2489: (cplus-decl2.o, cplus-type2.o, cplus-search.o): New targets.
2490: (cplus-except.o, cplus-expr.o): New targets.
2491: (new-method.o): Target deleted.
2492: (CPLUS_OBJS): Add and delete object files.
2493: (CPLUS_TREE_H): Change header names.
2494: (INTERNAL_CFLAGS): Set the MERGED flag.
2495:
2496: * calls.c (expand_call): Flush junk in assign of CONTEXT.
2497:
2498: * expr.c (expand_expr): LOOP_STMT is just an infinite loop.
2499: Handle EXIT_STMT.
2500: * tree.def (EXIT_STMT): Change meaning: exit if expression is true.
2501: * stmt.c (warn_if_unused_value): Do nothing for EXIT_STMT.
2502:
2503: Thu Feb 1 14:10:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2504:
2505: * optabs.c (emit_no_conflict_block): Accept optional expression
2506: to be placed in REG_EQUAL note on last insn emitted.
2507: Just emit insns if TARGET is not a register.
2508: (expand_binop, expand_unop): Change calls.
2509:
2510: Thu Feb 1 01:03:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2511:
2512: * tree.def (NON_LVALUE_EXPR): New tree code.
2513: * fold-const.c (non_lvalue): No longer static.
2514: Make NON_LVALUE_EXPR. Do nothing if arg certainly not lvalue.
2515: * c-typeck.c (build_c_cast): Call non_lvalue.
2516: (default_conversion, build_function_call, actualparameterlist):
2517: (build_binary_op_nodefault, truthvalue_conversion, build_modify_expr):
2518: (convert_for_assignment, digest_init): Strip NON_LVALUE_EXPR from args.
2519: (build_unary_op, build_modify_expr): No longer need to check for
2520: NOP_EXPR that indicates not an lvalue.
2521: (build_compound_expr, build_c_cast): Don't strip NON_LVALUE_EXPR
2522: * expr.c (expand_expr, do_jump): Handle NON_LVALUE_EXPR.
2523: * c-decl.c (build_enumerator, grokdeclarator): Strip them.
2524: * c-parse.y (case label): Strip them.
2525:
2526: * limits.h (INT_MIN): Define so it has type `int', not unsigned.
2527: (CHAR_MIN, SCHAR_MIN, SHRT_MIN): Put arens around value.
2528:
2529: * reload1.c (inc_for_reload): Forget reg_last_reload_reg
2530: for the reg being inc'd.
2531:
2532: Wed Jan 31 17:37:53 1990 Michael Tiemann (rms at sugar-bombs.ai.mit.edu)
2533:
2534: * cplus-*: New files.
2535:
2536: * tree.def (TARGET_EXPR): New name for NEW_EXPR.
2537: * tree.c (simple_cst_equal): Change NEW_EXPR to TARGET_EXPR.
2538:
2539: * stmt.c (estimate_case_costs): Check all nodes against ASCII range.
2540:
2541: * stmt.c (warn_if_unused_value): Delete obsolete node types.
2542:
2543: * recog.c (validate_change): Fix one-off bug testing recog_memoized.
2544:
2545: * local-alloc.c (local_alloc): Initialize qty_phys_reg.
2546:
2547: * fold-const.c (non_lvalue): Propagate TREE_LITERAL, TREE_VOLATILE.
2548:
2549: * expr.c (expand_expr): Delete DELETE_EXPR.
2550: Call lang_expand_expr for any unknown tree code.
2551: Handle IF_STMT, LOOP_STMT, LET_STMT for real.
2552:
2553: * dbxout.c (dbxout_type): Output args for method type.
2554: Treat OFFSET_TYPE as int if not using GDB extensions.
2555:
2556: Wed Jan 31 17:32:35 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2557:
2558: * stmt.c (node_has_high_bound, node_has_low_bound):
2559: Use integer_one_node, not new node.
2560:
2561: * expr.c (do_jump): In comparisons against zero, used unsigned, rather
2562: than signed, extensions, as that is more likely to be the faster one.
2563:
2564: Wed Jan 31 14:09:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2565:
2566: * toplev.c (rest_of_compilation): Ignore TREE_INLINE if not -O.
2567:
2568: * out-mips.c (mips_prologue): Handle big stack frames > 2**16.
2569:
2570: * tree.h (struct tree_type): Rename `max' field to `maxval'.
2571: (TYPE_MAX_VALUE, TYPE_OFFSET_BASETYPE, TYPE_METHOD_BASETYPE):
2572: Use new name.
2573:
2574: * reload1.c (reload): Reject fixed regs when spilling large groups.
2575:
2576: * c-decl.c (start_function):
2577: Optionally warn if non-proto defn without previous prototype.
2578:
2579: * Makefile.in: New rule to make .../include subdir.
2580: New rule to run fixincludes into it.
2581: Rule `install' depends on them.
2582:
2583: * assert.h (assert) [no NDEBUG]: Split into versions with/out __STDC__
2584: (_assert) [__STDC__]: Pass expression and file separately to _eprintf.
2585: (_assert) [not __STDC__]: Likewise, but implemented differently.
2586: * gnulib2.c (__eprintf): Handle 3 args plus format string.
2587:
2588: * tm-i386.h (STACK_BOUNDARY): Define it.
2589:
2590: Tue Jan 30 16:24:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2591:
2592: * Makefile.in (install): Fix typo in name of varargs file.
2593:
2594: * combine.c (try_combine): Don't allow combine to violate machine's
2595: alignment restriction.
2596:
2597: Sun Jan 28 03:53:28 1990 Michael Tiemann (tiemann at rio)
2598:
2599: * stmt.c (warn_if_unused_value): Don't warn for LOOP_STMT, IF_STMT,
2600: or LET_STMT.
2601:
2602: * toplev.c (compile_file): Code to mention symbol that was not
2603: written to asm file is now #if 0'd out. What good is it telling the
2604: debugger about a symbol it cannot see?
2605:
2606: * dbxout.c (dbxout_type): Change METHOD_TYPE print character from
2607: '@' to '#'. Also, don't try to output CONST_DECLs. GDB doesn't
2608: understand them, and they don't have DECL_OFFSETs.
2609:
2610: * sparc.md (floatsidf2): Changed constraint from "rfm" to "rm" for
2611: second operand.
2612:
2613: * toplev.c (lang_expand_expr): New variable is pointer-to-function
2614: which expands language-specific tree codes. Its default is
2615: `fancy_abort'.
2616:
2617: Sat Jan 27 10:18:44 1990 Michael Tiemann (tiemann at rio)
2618:
2619: * gcc.c (main): Initialize COMPILERS before calling
2620: `validate_all_switches'.
2621:
2622: * tree.c (decl_{type,function}_context): Handle LET_STMT.
2623:
2624: * stmt.c (expand_decl_cleanup): New function.
2625:
2626: * stmt.c (expand_decl): No longer takes CLEANUP parameter.
2627: All callers changed.
2628:
2629: * tree.c (build_{loop,if,goto,compound}, etc): Turn these tree
2630: constructors back on.
2631:
2632: * tree.def: Delete DELETE_EXPR, PUSH_EXPR, POP_EXPR.
2633:
2634: * c-typeck.c (max): New macro.
2635:
2636: * c-decl.c (maybe_build_cleanup): New function.
2637:
2638: * tree.c ({value,purpose}_member): New functions. Returns first
2639: element of LIST that matches respective components with ELEM.
2640:
2641: * varasm.c (first_global_object_name): Variable defined.
2642:
2643: Sat Jan 27 23:31:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2644:
2645: * reload1.c (reload): Reject fixed regs when completing group of 2.
2646:
2647: Fri Jan 26 17:28:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2648:
2649: * expr.c (do_jump): Don't use CONST0_RTX when value to be tested is
2650: CONST_INT.
2651:
2652: Fri Jan 26 13:39:01 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2653:
2654: * gcc.c (main): Warn about bad switches at beginning, not at end.
2655:
2656: Thu Jan 25 22:03:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2657:
2658: * loop.c (general_induction_var): Reject widening multiply.
2659:
2660: * cccp.c (grow_outbuf): Always return 0.
2661:
2662: Thu Jan 25 07:04:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2663:
2664: * combine.c (subst): Correctly reference length in
2665: (zero_extract (zero_extend ... )) combinations.
2666:
2667: * c-decl.c: Define warn_traditional.
2668: (build_enumerator): Remove NOP_EXPRs from default value also.
2669:
2670: * fold-const.c (fold): Strip NOP_EXPRs when looking for constants.
2671:
2672: Thu Jan 25 01:57:34 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2673:
2674: * Makefile.in (install): Clear execute bit for nonexecutable files.
2675:
2676: * i860.md (andsi3): Truncate xop2 constant to 16 bits.
2677:
2678: Wed Jan 24 22:32:47 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2679:
2680: * genemit.c (main): Include output.h in insn-emit.c.
2681: * genpeep.c (main): Similar.
2682: * genrecog.c (main): Ditto.
2683: * Makefile.in (insn-emit.h, insn-peep.h, insn-recog.h): Add dependancy.
2684:
2685: Wed Jan 24 20:13:08 1990 Richard Stallman (rms at albert.ai.mit.edu)
2686:
2687: * cccp.c (do_define): Report error for duplicate macro args.
2688:
2689: Mon Jan 22 07:52:28 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2690:
2691: * reload1.c (alter_reg): Rework change of January 7th to allow
2692: for no previous insn and clear equivalence information of correct
2693: pseudo.
2694:
2695: Mon Jan 22 01:22:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2696:
2697: * fold-const.c (fold): Don't simplify non-lvalue to an lvalue.
2698: (non_lvalue): New fn; makes a NOP_EXPR with readonly flag.
2699: * c-typeck.c (build_unary_op, build_modify_expr): Reject such.
2700:
2701: Sun Jan 21 20:53:49 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2702:
2703: * c-typeck.c (lvalue_p): Don't call language_lvalue_valid.
2704: Don't bother with looking for NEW_EXPR or REFERENCE_TYPE.
2705: (language_lvalue_valid): Deleted.
2706:
2707: Sat Jan 20 19:50:15 1990 Michael Tiemann (mtiemann at apple-gunkies.ai.mit.edu)
2708:
2709: * expr.c (expand_expr): Implemented language-independent expansion
2710: for NEW_EXPR.
2711:
2712: Thu Jan 18 14:29:10 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2713:
2714: * cccp.c (rescan): Set beg_of_line when string ends at newline.
2715: (skip_quoted_string): Don't swallow newline that ends a string.
2716: (handle_directive): No need to back up here.
2717: Pass LIMIT as second arg to skip_quoted_string.
2718:
2719: Thu Jan 18 12:50:09 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2720:
2721: * emit-rtl.c (gen_lowpart): Verify CONST_DOUBLE is integer mode.
2722: (gen_highpart): Add support for CONST_INT and CONST_DOUBLE.
2723:
2724: * recog.c (general_operand): Don't allow nested SUBREGs.
2725: (nonmemory_operand, memory_operand, register_operand): Ditto.
2726:
2727: * emit-rtl.c (gen_reg_rtx): Don't allow creation of pseudos
2728: during or after reload.
2729:
2730: Thu Jan 18 11:41:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2731:
2732: * c-typeck.c (actualparameterlist): -Wconversion warns if
2733: representation or width is changed.
2734:
2735: Thu Jan 18 01:09:47 1990 Michael Tiemann (mtiemann at apple-gunkies.ai.mit.edu)
2736:
2737: * dbxout.c (various places): Don't assume that DECL_NAME of a
2738: PARM_DECL is non-zero. It might be empty for anonymous parms.
2739:
2740: Thu Jan 18 00:06:58 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2741:
2742: * local-alloc.c (local_alloc): qty_phys_sugg is now an array of
2743: HARD_REG_SETs. Initialize new variable qty_phys_has_sugg.
2744: (block_alloc): Don't test for nonlocal gotos here.
2745: Test qty_phys_has_sugg instead of qty_phys_sugg to see if
2746: quantity needs early allocation.
2747: (qty_compare, qty_compare_1): No longer consider whether a quantity
2748: has a hard register suggestion as part of its priority.
2749: (combine_regs): We now record multiple hard register suggestions
2750: in qty_phys_sugg.
2751: (find_free_reg): Test here for nonlocal gotos.
2752: Support new meaning of qty_phys_sugg by restricting to those
2753: registers if just_try_suggested.
2754: Check for no registers available prior to looping over registers.
2755:
2756: * global-alloc.c (prune_preferences): New fn.
2757: (global_alloc): No longer keep a single vector of which registers
2758: someone prefers; instead keep this record one per allocation number.
2759: Record registers not saved over calls as already used for register
2760: allocation purposes, so we can feel free to allocate them with no
2761: cost.
2762: Call new fn to prune preferences and build list of registers
2763: preferred by earlier allocnos.
2764: find_reg no longer gets preference information as argument.
2765: (find_reg): Don't take preferred registers as argument; get the
2766: info from global variables.
2767: (set_preference): Remove regs_someone_prefers.
2768: (dump_conflicts): Print register preferences in dump file.
2769:
2770: Wed Jan 17 16:00:59 1990 Michael Tiemann (mtiemann at apple-gunkies.ai.mit.edu)
2771:
2772: * tree.c (decl_function_context): New function, returns the
2773: innermost DECL_CONTEXT of FNDECL when that context is a
2774: FUNCTION_DECL.
2775: * tree.c (decl_type_context): New function, returns the
2776: innermost DECL_CONTEXT of FNDECL when that context is a
2777: TYPE_DECL.
2778: * All callers changed to use `decl_function_context' when handling
2779: nested functions.
2780: * All C++ callers changed to use `decl_type_context' when handling
2781: member functions.
2782:
2783: * expr.c (fixed_type_p): New function says whether the compiler
2784: guarantees that it knows the true type of an object.
2785: * expr.c (expand_expr): Call that function for INIT_EXPR and
2786: MODIFY_EXPR. Also, for MODIFY_EXPR, check both RHS and LHS.
2787:
2788: * tree.h (DECL_ARG_TYPE): Use INITIAL, not ARGUMENTS slot in
2789: `tree_decl. Now reserving ARGUMENTS slot for VAR_DECL and
2790: PARM_DECL for language-specific features.
2791:
2792: * tree.c (build_decl): Don't set DECL_PRINT_NAME by default.
2793:
2794: * assert.h: Assume that undefined __GNUC__ implies `assert' must
2795: rely on printf.
2796:
2797: Wed Jan 17 15:31:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2798:
2799: * cccp.c (rescan): If traditional, end preproc number after expt sign.
2800:
2801: Wed Jan 17 15:18:25 1990 Michael Tiemann (mtiemann at apple-gunkies.ai.mit.edu)
2802:
2803: * stmt.c: Extended struct nesting to hold exception handling
2804: contours. New functions:
2805:
2806: expand_start_try, expand_end_try, in_try_block
2807: expand_start_except, expand_end_except, in_except_block
2808: expand_start_catch, expand_end_catch, expand_catch_default
2809: expand_raise, expand_escape_except, in_exception_handler
2810:
2811: Wed Jan 17 13:48:01 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2812:
2813: * cccp.c (main): Typo, had `includes' for `include'.
2814: Always increment p.
2815:
2816: * reload1.c (alter_reg): Delete spurious `break'.
2817:
2818: * local-alloc.c (block_alloc): Delete ref to undef var first_time.
2819:
2820: Wed Jan 17 13:35:47 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
2821:
2822: * toplev.c: Unmerge all changes of Bryan Boreham--no papers (yet).
2823:
2824: Wed Jan 17 12:33:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2825:
2826: * stor-layout.c (layout_type): Struct requires BLKmode if any field
2827: crosses a word boundary.
2828:
2829: Wed Jan 17 12:04:18 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
2830:
2831: * stor-layout.c (layout_type): Unterminate comment terminated.
2832:
2833: * tree.c (lvalue_p,lvalue_or_else): Remove these functions from this
2834: file.
2835: * c-typeck.c (lvalue_p,lvalue_or_else): Put them in this file.
2836:
2837: Wed Jan 17 00:46:24 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2838:
2839: * c-decl.c (pushdecl): Delete garbage accidentally added before.
2840:
2841: * tree.c (set_identifier_size): SIZE is size in bytes.
2842: * tree.c (get_identifier): If `set_identifier_size' has not been
2843: called, abort.
2844: * c-decl.c (init_decl_processing): Don't call `set_identifier_size'
2845: from here.
2846: * c-parse.y (init_lex): Call `set_identifier_size' from here.
2847:
2848: * varasm.c (force_const_mem): Save DESC's label on the
2849: saveable_obstack. (Note, saveable is misspelled.)
2850:
2851: * listing: New file.
2852:
2853: Tue Jan 16 20:43:55 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2854:
2855: * c-typeck.c (convert_sequence): Put in #if 0.
2856:
2857: Tue Jan 16 17:25:43 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
2858:
2859: * toplev.c: Merged Bryan Boreham's undumping code.
2860:
2861: * print-tree.c (dump): Handle TREE_VEC.
2862:
2863: * varasm.c (output_constant_pool): When done, set FIRST_POOL,
2864: LAST_POOL to zero.
2865:
2866: * varasm.c (first_global_object_name): New variable. Records the
2867: name of the first global declaration (variable or function) whichi
2868: is written to the assembly file.
2869:
2870: * tree.h (tree_code_name): Add declaration.
2871:
2872: Tue Jan 16 17:06:29 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2873:
2874: * local-alloc.c (block_alloc): Make an initial pass to try to
2875: allocate registers that have suggested hard registers.
2876: (find_free_reg): Add new argument to only try suggested hard register.
2877:
2878: Tue Jan 16 15:54:06 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
2879:
2880: * tree.h (tree_vec): Added.
2881:
2882: * tree.def (IDENTIFIER_NODE): Default length is 2.
2883: * tree.def (TREE_VEC): Define it.
2884: * tree.def ({NEW_,DELETE_,REFERENCE_}EXPR): fixed comments.
2885:
2886: * tree.c (preserve_initializer): New function. Like
2887: `preserve_data', but saves nodes on momentary_obstack as well.
2888: * tree.c (make_tree_vec): New function. Allocates a TREE_VEC node.
2889: * tree.c (copy_node): Support added for TREE_VEC.
2890: * tree.c (build_parse_node): New function. Builds tree node on
2891: TEMP_DECL_OBSTACK.
2892:
2893: Tue Jan 16 15:23:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2894:
2895: * expr.h: Eliminate definitions of andcb_optab and expand_bit_and.
2896: * expmed.c (expand_bit_and): Eliminate function.
2897: (store_fixed_bit_field, extract_fixed_bit_field, expand_divmod):
2898: Replace expand_bit_and with call to expand_binop.
2899: * expr.c (expand_expr): Handle TRUTH_AND_EXPR and BIT_AND_EXPR
2900: as normal binary operations.
2901: (do_store_flag): Replace expand_bit_and with expand_binop.
2902: * optabs.c (expand_binop, init_optabs): Eliminate andcb_optab.
2903:
2904: * expmed.c (expand_shift): Don't use extzv for rotate.
2905: If all three tries at a shift operation failed, delete the
2906: insns made during the last try.
2907: Handle failure of extzv operation.
2908: Call protect_from_queue before convert_to_mode for op1.
2909:
2910: Tue Jan 16 10:38:28 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
2911:
2912: * tree.c: Added temp_decl_obstack for building declarators without
2913: needing to use permanent_obstack at top level.
2914: * tree.c (init_tree): Init temp_decl_obstack.
2915: * tree.c (permanent_allocation): Free nodes allocated on
2916: temp_decl_obstack.
2917: * tree.c (build_decl_list,decl_tree_cons): New functions. Like
2918: `build_tree_list' and `tree_cons', but for building on
2919: temp_decl_obstack.
2920: * tree.c (build1): New function. Builds tree node for unary tree
2921: node kinds; doesn't use varargs.
2922: * tree.c (simple_cst_equal): Interface changed to return 1 if
2923: arguments are equal, 0 if not, and -1 if arguments were not
2924: understood by the function.
2925: * tree.c (build_{method,offset}_type): TYPE_*_BASETYPE is the
2926: TYPE_MAIN_VARIANT of BASETYPE.
2927:
2928: Mon Jan 15 01:50:51 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2929:
2930: * cexp.y (exp): Accept unary +.
2931:
2932: * Makefile.in (hard-params): Compile with GCC.
2933: (hard-params.o): Likewise, and depend on the GCC executables.
2934:
2935: * tm-sparc.h (CONST_COSTS): Give 1, not 0, for immed consts.
2936:
2937: Sun Jan 14 14:38:10 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
2938:
2939: * stmt.c (estimate_case_costs): New function. Case code no longer
2940: assumes that all case values are equally likely for all types. In
2941: particular, when the type of argument for the switch statement does
2942: not look like it is not ASCII text, we assume that it might be, and
2943: assign a weight to its value based on frequency distribution of
2944: characters in ASCII text.
2945: * stmt.c (balanace_case_nodes): If case values look like ASCII text,
2946: then use the cost table. Otherwise, do not. Using the cost table
2947: means that the otherwise almost-balanced binary tree may be skewed
2948: in hopes of picking up common values more quickly than just
2949: log(n). This is done at the direct expense of the less common
2950: values, which will be reached at more than log(n).
2951: * stmt.c (emit_case_nodes): If using COST_TABLE and the most likely
2952: case value is on one side of the tree or another, hand-pick boundary
2953: tests so that condition codes can be reused (if possible).
2954: * stmt.c (expand_end_cast): If optimizing, and the type of
2955: ORIG_INDEX is not an enumeral type, then call `estimate_case_costs.'
2956:
2957: Sun Jan 14 12:18:49 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2958:
2959: * fold-const.c (lshift_double, rshift_double, lrotate_double):
2960: (rrotate_double): Don't shift more than width of operand.
2961:
2962: Fri Jan 12 12:17:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2963:
2964: * recog.c (next_insns_test_no_inequality): Return 1 at end of rtl.
2965:
2966: * expr.c (store_expr): No special handling for constructor
2967: unless value is going in struct value block.
2968:
2969: * stor-layout.c (layout_type): Use common nodes for sizes of ptrs, fns.
2970: (make_signed_type, make_unsigned_type): Create those nodes.
2971: (layout_record): Just ignore VAR_DECL if not static.
2972:
2973: Thu Jan 11 14:09:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
2974:
2975: * c-decl.c (lang_decode_option): Decode -Wtraditional.
2976: * c-decl.c (implicitly_declare): Warn if extern decl previously seen.
2977: * c-typeck.c (c_expand_start_case): Warn if switch exp is long.
2978:
2979: * c-typeck.c (actualparameterlist): Optionally warn on truncation.
2980: * toplev.c (main): Handle -Wconversion.
2981:
2982: * cccp.c (skip_if_group): Skip strings even if -traditional.
2983: (handle_directive): Likewise, when handling copy_command.
2984:
2985: Thu Jan 11 14:15:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
2986:
2987: * cse.c (cse_insn): Only check for REG_EQUAL notes and make
2988: REG_EQUAL notes instead of REG_EQUIV notes.
2989: * explow.c (force_reg): Make REG_EQUAL note instead of REG_EQUIV
2990: note. Check for and reuse old note if present.
2991: * local-alloc.c (block_alloc): Convert REG_EQUAL to REG_EQUIV for
2992: constant when register is only set once.
2993: * loop.c (combine_movables, move_movables): Check for REG_EQUAL notes
2994: instead of REG_EQUIV notes.
2995: * optabs.c (expand_binop): Correct typo in writing REG_EQUAL note.
2996: (emit_no_conflict_block): Suppress REG_NO_CONFLICT notes for
2997: non-registers.
2998:
2999: Thu Jan 11 14:09:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3000:
3001: * i860.md (movsf): Ensure F to f is reloaded via r.
3002:
3003: * expr.c (expand_increment): Don't call stabilize.
3004:
3005: Wed Jan 10 15:03:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3006:
3007: * c-decl.c (duplicate_decls): If old fn decl follows new ellipsis decl,
3008: warn only if pedantic.
3009:
3010: * loop.c (loop_skip_over): Do nothing if don't find expected compare.
3011:
3012: Tue Jan 9 21:31:46 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
3013:
3014: * jump.c (jump_optimize): Don't delete USE and CLOBBER insns.
3015: The later call to find_equiv_reg can malfunction if CLOBBERs are
3016: deleted.
3017:
3018: Mon Jan 8 17:48:20 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3019:
3020: * gcc.c (link_command_spec): Always check gnulib both first and last.
3021:
3022: Mon Jan 8 17:07:25 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
3023:
3024: * optabs.c (expand_unop): Perform multi-word logical negation one
3025: word at a time.
3026: (expand_binop, expand_unop): Insert REG_EQUAL note on last insn of
3027: multi-insn sequence.
3028: Use TARGET_PIECE instead of TARGET in multi-word logical operations.
3029: (emit_no_conflict_block): New fn.
3030: (expand_binop, expand_unop): Call it.
3031: (gen_add2_insn, gen_sub2_insn): Abort if operands do not match those
3032: of the predicates for the appropriate generators.
3033:
3034: * expr.h: Fix typo and define emit_no_conflict_block.
3035:
3036: Mon Jan 8 15:33:19 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3037:
3038: * rtl.h (REG_UNSET): Fix the code.
3039: * rtl.c (reg_note_name): Add REG_UNSET.
3040:
3041: * c-decl.c (struct binding_level): parm_flag now 2 for def, 1 for decl.
3042: (declare_parm_level): New parm distinguishes them. All calls changed.
3043: (pushdecl): Don't warn about shadowing with parm name in fn decl.
3044:
3045: Mon Jan 8 15:15:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
3046:
3047: * cse.c (cse_basic_block): Allow NOTEs between LOOP_BEG and jump to
3048: end test.
3049: (predecide_loop_entry): Accept JUMP_INSN rather than LOOP_BEG NOTE.
3050:
3051: * reload1.c (gen_input_reload): When adding constant to register,
3052: move the constant into the output, then add the register, rather than
3053: the other way around.
3054:
3055: Mon Jan 8 12:20:26 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3056:
3057: * c-parse.y (components): Don't allow to be empty.
3058: (component_decl): Special cases if empty, to call shadow_tag.
3059: Recognize the semicolon here.
3060: (component_decl_list): No semicolon here.
3061:
3062: * c-decl.c (shadow_tag): Print warning if nameless structure defined.
3063:
3064: Sun Jan 7 19:09:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3065:
3066: * varasm.c (output_constant): Use size of machine mode
3067: to choose how to output the constant.
3068:
3069: * varasm.c (immed_real_const_1): Detect 1 as well as 0.
3070:
3071: * reload1.c (reload): When deleting reg_equiv_init insn,
3072: also delete the prev insn if it is no longer needed.
3073:
3074: * real.h (REAL_VALUE_FROM_CONST_DOUBLE, CONST_DOUBLE_FROM_REAL_VALUE):
3075: New macros.
3076:
3077: * reload.c (find_reloads_address_1): Preserve original X value
3078: in case we replace it with new memory reference.
3079:
3080: * optabs.c (expand_binop): Handle case of no previous insns.
3081:
3082: * jump.c (jump_back_p): Check for floating point if not IEEE.
3083:
3084: * global-alloc.c (dump_global_regs): Break the line occasionally.
3085:
3086: * flow.c (mark_used_regs): Recognize post-decrement properly.
3087: It looks like (plus REG -CONST), not (minus REG CONST).
3088: Also, patch out old insn as a note in the usual way.
3089:
3090: * calls.c (emit_call_1): Arg to RETURN_POPS_ARGS is FUNTYPE itself.
3091:
3092: * expr.c (STACK_PUSH_CODE): New macro, which config.h can override.
3093: (gen_push_operand): Use it.
3094: (emit_push_insn): Reverse padding if pushing is post-increment.
3095: (expand_expr): For MINUS, sign-extend negated value.
3096:
3097: * emit-rtl.c (init_emit_once): Initialize new variables
3098: fconst1_rtx, dconst1_rtx, dconst0, dconst1, dconstm1.
3099:
3100: * cse.c (fold_rtx): For COMPARE and MINUS, test for floating zero arg.
3101: Also handle equal floating args if FLOAT_NOT_IEEE.
3102: For NEG, eliminate silly temp var.
3103: For MULT and DIV, handle more cases with floating point.
3104: Change division by floating constant into multiplication.
3105:
3106: * config.gcc: Add i386-mach.
3107: * xm-i386.h: Use built-in alloca if compiling with GCC.
3108:
3109: * Makefile.in (c-parse.tab.o): Delete -o switch.
3110: (cexp.o): Put in explicit command.
3111:
3112: * combine.c (record_dead_and_set_regs): Ignore stack pushes.
3113:
3114: Sat Jan 6 15:33:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3115:
3116: * out-mips.c (function_arg, function_arg_advance):
3117: Define typedef for CUMULATIVE_ARGS, and use it here.
3118:
3119: * c-parse.y (yylex): Put 0 at end of wide string.
3120:
3121: * tm-mips.h (CC1_SPEC): Don't distort meaning of -O.
3122:
3123: Fri Jan 5 12:12:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3124:
3125: * optabs.c, expr.h: All use of umul_optab deleted.
3126: * gnulib.c (__umulsi3): Deleted.
3127:
3128: * gcc.c (link_command_spec): If LIBS_COMPILED_WITH_GCC, gnulib is last.
3129:
3130: * Makefile.in (INTERNAL_CFLAGS): New parameter.
3131: (ALL_CFLAGS): New variable, replaces CFLAGS when compiling.
3132: (HOST_CFLAGS): Define from ALL_CFLAGS.
3133:
3134: * Makefile.in (insn-*.o, cccp.o, others): Use CPPFLAGS.
3135:
3136: * Makefile.in (gnulib): Add null command.
3137:
3138: Fri Jan 5 08:11:20 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
3139:
3140: * combine.c (subst): When applying De`Morgan's law, compute NOT
3141: of constant.
3142:
3143: * integrate.c (save_constants, restore_constants): Clean up fns
3144: by passing in a pointer to an rtx so that insns can be modified
3145: in place.
3146: (save_for_inline): Change call to save_constants.
3147: Apply save_constants to REG_NOTES.
3148: (expand_inline_function): Use emit_move_insn instead of generating
3149: an explicit SET.
3150: Apply copy_rtx_and_substitute to REG_NOTES.
3151: (output_inline_function): Change call to restore_constants.
3152: Apply restore_constants to REG_NOTES.
3153:
3154: Thu Jan 4 23:58:59 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3155:
3156: * Makefile (c-parse.tab.o): Add explicit compilation cmd.
3157:
3158: Thu Jan 4 22:48:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
3159:
3160: * cse.c (insert_regs, insert, use_related_value): Don't assume REG is
3161: first in class.
3162: (HASH): Handle register with HASHREG macro for speed.
3163: (insert): No longer need equivalence_only.
3164: Use COST macro.
3165: (use_related_value): No longer need to check for valid address.
3166: (find_best_addr): New function.
3167: (fold_rtx): Remove copyflag argument and replace with insn.
3168: Check for common cases before making recursive call.
3169: Call validate_change to ensure change is valid, but always return
3170: simplified expression.
3171: Replace operand with folded operand, or constant operand, whichever
3172: is cheaper and is valid.
3173: Call find_best_addr for MEMs.
3174: (fold_cc0): Add insn operand to pass to calls to fold_rtx.
3175: (cse_insn): Rework to enumerate all possible equivalences and replace
3176: source with cheapest valid.
3177: Simplify associative operations with constants where an operand is
3178: equivalent to the same operation with another constant.
3179: Use validate_change for all changes.
3180:
3181: Thu Jan 4 17:58:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3182:
3183: * stmt.c (expand_end_loop): Put NOTE_INSN_LOOP_CONT at top by default.
3184:
3185: * c-typeck.c (actualparameterlist):
3186: Convert parmnum to origin-1 to print.
3187:
3188: * Makefile.in (USER_H): Add float.h.
3189:
3190: Wed Jan 3 00:27:53 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3191:
3192: * gnulib.c (__extendsfdf2): Delete unused var.
3193:
3194: * reload1.c (alter_reg): Undo big-endian conversion from
3195: assign_stack_local.
3196:
3197: * calls.c (store_one_arg): Round size up for move_block_to_reg.
3198: (expand_call): Round up when emitting USE insns.
3199: * function.c (assign_parms): Round size up for move_block_from_reg.
3200:
3201: * Makefile (install): Use nested foreach-loop to expand va*.h.
3202:
3203: Tue Jan 2 16:01:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3204:
3205: * mips.md (call_value): Ignore calls to __builtin_saveregs.
3206:
3207: * tm-mips.h (STARTING_FRAME_OFFSET): Change from -8 to 0.
3208: (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Use new fns in out-mips.c.
3209: * out-mips.c (prologue_looks, mips_prologue, mips_epilogue): New.
3210:
3211: * gnulib2.c: Everything except arithmetic support moved from gnulib.c.
3212: * Makefile.in (LIB2FUNCS, LIBFUNCS): Likewise.
3213:
3214: Sun Dec 31 20:10:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3215:
3216: * tree.h (struct tree_common): Declare `code' as char, not int.
3217:
3218: Thu Dec 28 13:49:43 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3219:
3220: * Makefile.in (includes): Set variable LIB. Run from `./'.
3221:
3222: Wed Dec 27 18:54:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3223:
3224: * reload1.c (eliminate_frame_pointer): Special case for reg = reg2+fp.
3225:
3226: * loop.c (can_eliminate_biv_p, eliminate_biv): If add_val non zero,
3227: it must be a constant or register.
3228:
3229: Wed Dec 27 18:11:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3230:
3231: * i860.md (load DF constant to reg): Typo: extra percent sign.
3232: (floatsidf2): Two words of a double were backwards.
3233:
3234: Mon Dec 25 16:32:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3235:
3236: * emit-rtl.c (emit_note_before): New function.
3237: * stmt.c (expand_end_loop): Output NOTE_INSN_LOOP_CONT if none.
3238: ** Above change turned off.
3239:
3240: Mon Dec 25 00:02:31 1989 Torbj|rn Granlund (tege at zevs.sics.se)
3241:
3242: * tm-pyr.h (CONST_COSTS): Define more optimal costs.
3243:
3244: * tm-pyr.h (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Should not be defined.
3245: The cvtdw instruction causes a trap for floating point values
3246: that are out-of-range for a signed int.
3247:
3248: * tm-pyr.h (CONST_DOUBLE_OK_FOR_LETTER_P): Don't accept any
3249: special constraint chars, since we don't use any.
3250:
3251: * tm-pyr.h (CONSTANT_ALIGNMENT): Correct comment.
3252:
3253: * out-pyr.c (weird_memory_memory): Flush decl of unused variables.
3254:
3255: * out-pyr.c (has_direct_base): Don't accept 0 as a base, if there
3256: is a register displacement. This is a workaround of a bug in
3257: /bin/as. (/bin/as changes things like "cmpw 8(reg),0(reg)" into
3258: "cmpw 8(reg),(reg)", which is invalid assembler.)
3259:
3260: Sun Dec 24 12:01:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3261:
3262: * c-decl.c (finish_struct): Ok to define nameless union in parms.
3263: * c-typeck.c (compparms): Allow union vs its member's type,
3264: but only if same size & union is nameless.
3265: (comptypes): In that case, for a parm, prefer the member's type.
3266: (actualparameterlist): Nameless union parm casts all its memb types.
3267:
3268: * integrate.c (copy_decl_tree, copy_parm_decls): Set TREE_INLINE.
3269: * c-decl.c (pushdecl): No shadow-warning if TREE_INLINE is set.
3270:
3271: * dbxout.c (current_sym_code): Declare as enum; avoid warnings.
3272:
3273: Sat Dec 23 10:54:22 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3274:
3275: * combine.c (subst): Under NOT, move it inside AND and IOR.
3276: Under XOR, move NOT out.
3277:
3278: * toplev.c (set_target_switch): Handle multiple entries for one name.
3279:
3280: * ns32k.md (adjust stack): Distinguish processor subtype at run-time.
3281: (extract byte from register): Likewise.
3282: * tm-ns32k.h (TARGET_32532, TARGET_32332): New target options.
3283: * tm-encore.h, tm-sequent.h (TARGET_DEFAULT): Default them.
3284:
3285: Fri Dec 22 20:33:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3286:
3287: * Makefile.in (all): Move above where make-MACHINE is inserted.
3288: (all.internal): Definition of `all' indirects through this.
3289: (GNULIB): Variable allows rule for gnulib to be redirected.
3290: (gnulib.portable): Name for the standard rule for gnulib.
3291:
3292: * tm-mips.h (ASM_OUTPUT_SOURCE_FILENAME): New macro.
3293: (REG_CLASS_SUBUNION, REG_CLASS_SUBCLASSES, REG_CLASS_SUPERCLASSES):
3294: Obsolete macros deleted.
3295:
3296: Thu Dec 21 16:20:00 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3297:
3298: * fold-const.c (fold): Bug taking assignments out of conversions:
3299: Use language-independent method.
3300:
3301: * reload1.c (alter_reg):
3302: Always do big-endian correction on slot address.
3303:
3304: * i386.md (float push recognizers): Don't pop fpreg if not dead.
3305:
3306: Wed Dec 20 10:54:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3307:
3308: * assert.h: Cast value to void.
3309:
3310: Tue Dec 19 09:42:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3311:
3312: * gcc.c (link_command_spec): Put %l first.
3313:
3314: Tue Dec 19 08:59:43 1989 Richard Kenner (rms at sugar-bombs.ai.mit.edu)
3315:
3316: * genattrtab.c (get_attr_value): Initialize has_asm_insn field when
3317: making a new attr_value.
3318:
3319: Sun Dec 17 12:06:37 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3320:
3321: * c-typeck.c (digest_init, process_init_constructor, store_init_value):
3322: Give error for each invalid element seen in an initializer.
3323: New arguments say whether context wants error messages.
3324: * c-parse.y (cast_expr): Pass new args.
3325: * Unfortunately, this doesn't do the job, since the whole initializer
3326: is parsed before any is digested.
3327:
3328: * c-decl.c (duplicate_decls): Source loc of definition is
3329: more important than that of declaration.
3330:
3331: * cccp.c (include_defaults): On unos, also search /include.
3332:
3333: * m68k.md (movsi, movhi, store-0 recognizer): Conditional for CRDS.
3334: (mulhi3, mulhisi3, umulhi3, umulhisi3): Add % and CRDS conditional.
3335: (zero-extend recognizers): Put % before period in clr insns.
3336: (divide and modulus recognizers): Likewise for and, ext, swap and div.
3337: (dbra recognizers): Likewise for sub and clr insns.
3338: (tablejump recognizer): Conditional for CRDS.
3339: * tm-crds.h, xm-crds.h: New files.
3340:
3341: * gcc.c (read_specs): Don't include trailing newline in data
3342: read from specs file.
3343: (skip_whitespace): Empty line is a delimiter in specs data.
3344:
3345: * cccp.c (grow_outbuf): Change value back to int.
3346:
3347: * cse.c (cse_end_of_basic_block): Fix unterminated comment.
3348:
3349: * cccp.c (main): Add `.C' as known suffix for deps output.
3350:
3351: * expr.c (do_jump): Cast vector length to int in case will subtract.
3352:
3353: * tm-att386.h (ASM_OUTPUT_LOCAL): Revert last change: put it data seg.
3354:
3355: * reload.c (decompose): Make a separate case for SUBREG.
3356:
3357: * Makefile.in (HOST_RTLANAL): Define like HOST_RTL.
3358: (genattrtab): Use that to get at rtlanal.o.
3359: ($(HOST_PREFIX_1)rtlanal.o): New rule for cross-compilation.
3360: (STAGESTUFF): Typo in stamp-attrtab.c.
3361:
3362: * tm-hp9k320.h (CPP_PREDEFINES): Add __hp9000s300, _HPUX_SOURCE.
3363:
3364: * stupid.c (reg_order): Make it int, in case reg # is large.
3365: (stupid_reg_compare, stupid_life_analysis): Implement this.
3366:
3367: * gnulib2.c (__floatdidf): Define WORD_SIZE.
3368:
3369: * flow.c (find_basic_blocks): Don't clobber stack if no basic
3370: blocks.
3371:
3372: Sat Dec 16 12:38:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3373:
3374: * loop.c (can_eliminate_biv_p, eliminate_biv): Check in case
3375: neither side of a compare is the biv by itself.
3376: (check_eliminate_biv): Test of only_reg_use_p was backwards.
3377: (general_induction_var): If V is 0 and G is not,
3378: combine additive terms with plus_constant, provided
3379: either one of them is an integer.
3380: Check both operands of a sum for being givs in their own right.
3381: (strength_reduce): When eliminating a biv, don't mung insns that use
3382: it via a giv that will be handled later.
3383: (loop_skip_over): Duplicate an endtest that takes several insns.
3384:
3385: * loop.c (strength_reduce): When writing insn to init a biv,
3386: update life range of reg used to init it.
3387:
3388: * combine.c (try_combine): Do combine (y = x, x = y).
3389:
3390: * loop.c (strength_reduce): When finding initial value of a biv,
3391: notice assignments to subregs of it, etc.
3392:
3393: * m68k.md (all shift patterns): Require register_operand for ops 0, 1.
3394:
3395: * reload1.c (alter_reg):
3396: Don't set spill_stack_slot_width if from_reg is -1.
3397:
3398: * cse.c (cse_main): Delete local redef of flag_cse_follow_jumps.
3399:
3400: * reload1.c (new_spill_reg): Fatal error if fixed reg is spilled.
3401: (order_regs_for_reload): Make sure all the regs are in spill_regs.
3402:
3403: * mips.md (movsf): Fix wrong opcode moving genreg to fpreg.
3404:
3405: * toplev.c: Undef FFS after including param.h.
3406:
3407: * final.c (final_scan_insn): Delete label reinsert_compare.
3408:
3409: * expmed.c (store_bit_field): Move var value1 inside HAVE_insv.
3410: (extract_bit_field): Similar for bitsize_rtx, bitpos_rtx.
3411:
3412: * c-typeck.c (pointer_diff): Delete unused var.
3413: * expr.c (emit_push_insn): Likewise.
3414: * gcc.c (execute): Likewise.
3415: * genrecog.c (try_merge_2):
3416: * loop.c (skip_consec_insns, scan_loop):
3417: * recog.c (asm_noperands, memory_operand):
3418: * function.c (expand_function_end):
3419: * stmt.c (emit_jump_if_reachable):
3420: * toplev.c (error_for_asm):
3421: * varasm.c (assemble_string):
3422:
3423: * integrate.c (fp_addr_p): Var deleted.
3424:
3425: * regclass.c (regclass_init): Now returns void.
3426: * emit-rtl.c (emit_insns): Likewise.
3427: * stmt.c (emit_nop): Likewise.
3428: * out-sparc.c (output_eager_then_insn): Likewise.
3429:
3430: * reload1.c (reload_reg_reaches_end_p, reload_reg_free_before_p):
3431: (reload_reg_free_p): Abort if switch drops through.
3432:
3433: * cccp.c: Supply a return type for every function (usually void).
3434: (grow_outbuf): Now returns void.
3435: (line_for_error): Abort if the loop terminates.
3436: * gcc.c: Supply a return type for every function (usually void).
3437:
3438: * jump.c (jump_optimize): Leave block-beg, block-end notes
3439: in old context when swapping two ranges of insns.
3440: (squeeze_block_notes): New function.
3441:
3442: * calls.c (expand_call): Compute valreg from pointer type
3443: in case of pcc struct return.
3444:
3445: * gnulib2.c (__builtin_saveregs): Use __ names for machine types.
3446:
3447: * fold-const.c (fold):
3448: Move constant out of assignment, within conversion.
3449:
3450: Fri Dec 15 00:42:31 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3451:
3452: * varasm.c (assemble_variable): Use new macro DATA_ALIGNMENT if def.
3453: (get_or_assign_label): Use this instead of CONSTANT_ALIGNMENT.
3454:
3455: * integrate.c (save_constant, restore_constant): Handle naked
3456: constant-pool SYMBOL_REF.
3457: (copy_for_inline, copy_rtx_and_substitute): Ditto.
3458:
3459: * integrate.c (expand_inline_function):
3460: Put caller's line number after inline stuff.
3461: Put callee's line number before parm manipulation.
3462:
3463: * tree.c (make_node): Have a DECL_SOURCE_FILE in every decl.
3464:
3465: * m68k.md (fpa float and float-trunc): Accept general_operand.
3466:
3467: * calls.c (expand_call): Do INIT_CUMULATIVE_ARGS just once.
3468:
3469: * calls.c (expand_call): If struct ret addr is passed as parm,
3470: count it in structure_value_addr_parm.
3471:
3472: * If local-alloc assumes a reg does not conflict,
3473: don't use it as dummy reload.
3474: * local-alloc.c (wipe_dead_reg): Add REG_UNSET note.
3475: * reload.c (find_dummy_reload): Check for that note.
3476:
3477: * jump.c (jump_optimize): Realize that more things can follow
3478: the NOTE_INSN_FUNCTION_END note. Change in two places,
3479: for optimized and one for unoptimized.
3480:
3481: Thu Dec 14 23:40:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3482:
3483: * Makefile.in (install, libsubdir): Change $(machine) to $(target).
3484:
3485: Tue Dec 5 07:35:57 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
3486:
3487: * rtl.h: Declare emit_jump_insn_before and emit_jump_insn_after.
3488:
3489: * reload.c (reg_class_subset_p): Delete duplicate copy.
3490: local-alloc.c (reg_class_subset_p): Move from here.
3491: regclass.c (reg_class_subset_p): Move to here.
3492:
3493: * combine.c (try_combine): Fix placement and content of LAST_CALL_CUID
3494: test to elminate memory faults.
3495:
3496: * final.c (asm_insn_count): New fn.
3497: (get_length_attr, shorten_branches): Rework length
3498: computation of insns with INSN_CODE == -1. Call above fn to more
3499: accurately obtain length of ASM insn.
3500:
3501: * genattrtab.c (check_attr_value): Allow CONST_INT to specify
3502: numeric values for attributes. Also, prevent memory faults
3503: on errors when ATTR is null.
3504: (make_canonical): Convert CONST_INT to appropriate CONST_STRING.
3505: (write_attr_case): Correctly check for ASM insns.
3506: (make_numeric_value): Generalize to all positive integers.
3507:
3508: * jump.c (jump_optimize): Set JUMP_LABEL on jump added
3509: in "{ ... x = 1;} if (x)" optimization and add to jump_chain.
3510:
3511: * local-alloc.c (no_conflict_p): Tighten up code to prevent
3512: memory faults.
3513:
3514: * reload.c (find_reloads): Fix typo in EXTRA_CONSTRAINT call.
3515:
3516: Tue Nov 28 11:20:47 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
3517:
3518: * expr.c (save_noncopied_parts): Rename stack_loc as target.
3519: Make the stack slot address correct.
3520:
3521: Mon Nov 27 15:39:40 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3522:
3523: * math-convex.h: New file.
3524:
3525: * c-decl.c (grokdeclarator): Don't test size of error_mark_node
3526: as type of a field.
3527:
3528: Sun Nov 26 12:36:01 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
3529:
3530: * tm-mips.h (CONST_OK_FOR_LETTER_P): Delete extra paren.
3531:
3532: Fri Nov 24 12:36:29 1989 Chris Smith (csmith at mozart)
3533:
3534: * tm-convex.h (OVERRIDE_OPTIONS): remove target=host default.
3535: * out-convex.c (override_options): remove.
3536:
3537: * tm-convex.h (*_TYPE_SIZE): define type sizes as the usual values.
3538: * convex.md (movstrictsi): new, for field insertion in DImode regs.
3539:
3540: * tm-convex.h (LEGITIMATE_CONSTANT_P): allow all CONST_DOUBLES.
3541: (PREFERRED_RELOAD_CLASS): reload nonimmediates from memory (NO_REGS).
3542: * convex.md (movdi, movdf): use 'G' to handle nonimmediates.
3543: (anddi3, iordi3, xordi3): allow immediates if high word is identity.
3544:
3545: * convex.md (tstdi): Finally figure out how to allocate a temp reg
3546: in a way that won't get optimized away; remove hardwired use of s1.
3547:
3548: * convex.md (cmpqi): don't sign extend to SImode because operands
3549: might be unsigned. Must compare bytes in registers instead.
3550:
3551: * convex.md (movtf): new.
3552:
3553: * convex.md (ash*, lsh*): rewrite to use shift vs. shiftrt.
3554: Better code because no need to sign or zero extend when going left.
3555: (shift, mask & test peephole): test next_insn_tests_no_inequality.
3556: (similar with lshiftrt): New peephole.
3557:
3558: * tm-convex.h: add g++ defines FASCIST_ASSEMBLER, VTABLE_USES_MASK.
3559:
3560: Sun Nov 26 11:39:13 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
3561:
3562: * reload.c (decompose): Handle SUBREGs.
3563:
3564: Wed Nov 22 11:26:00 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3565:
3566: * pyr.md (mode conversion peepholes): Set CC_NO_OVERFLOW.
3567: * out-pyr.c (consecutive_operands): Don't expect wrap from reg15 to 16.
3568:
3569: * make-pyr: Find the alloca which comes with the system.
3570:
3571: * tm-mips.h (CONST_OK_FOR_LETTER_P): Define `K'.
3572: (SMALL_INT): Range is 16 bits, not 17.
3573: (SMALL_INT_UNSIGNED): New macro.
3574: * mips.md (andsi3, iorsi3, xorsi3): Use `K', not `I'.
3575:
3576: * mips.md (negsi2): Accept general_operand as input.
3577:
3578: * stor-layout.c (build_int): Defend against negative arguments.
3579:
3580: * varasm.c (MAX_HASH_TABLE): Change to a prime.
3581:
3582: Tue Nov 21 10:58:28 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3583:
3584: * mips.md (one_cmpl*): Accept general_operand as input.
3585:
3586: Mon Nov 20 11:18:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3587:
3588: * optabs.c (emit_cmp_insn): New arg, COMPARISON.
3589: (emit_float_lib_cmp): New subroutine, handles soft-float comoare
3590: of floating point values. Chooses ibrary fn from COMPARISON.
3591: * expr.c, expmed.c, stmt.c, optabs.c: All calls changed.
3592: * gnulib.c (__eqdf2, __nedf2, __gtdf2, etc.): New functions.
3593: (__eqsf2, __nesf2, __gtsf2, etc.): New functions.
3594:
3595: * cse.c (fold_rtx): Simulate negative shift counts.
3596:
3597: Sun Nov 19 14:36:18 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3598:
3599: * out-pyr.c (notice_update_cc): Set CC_NO_OVERFLOW in many cases.
3600:
3601: * cse.c (fold_rtx, fold_cc0): Handle float trap.
3602:
3603: Sat Nov 18 00:17:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3604:
3605: * varasm.c (output_constant): Handle float trap in fprintf.
3606: * toplev.c (float_signal): Don't print message.
3607: * fold-const.c (combine): Print it here.
3608:
3609: * sparc.md (extend patterns): Handle CONST_INT as operand.
3610: * out-sparc.c (output_block_move, output_mul_by_constant):
3611: (output_eager_then_insn): Delete unused vars.
3612:
3613: * varasm.c (decode_rtx_const): Add a cast in SYMBOL_REF case.
3614:
3615: * tm-i386.h (TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE)
3616: (INITIALIZE_TRAMPOLINE): New macros.
3617: * i386.md (indirect_jump): New pattern.
3618:
3619: * out-i386.c (singlemove_string): Fix paren error.
3620:
3621: Fri Nov 17 12:19:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3622:
3623: * expr.c (expand_increment): For pre-increment, copy the rtx to return.
3624:
3625: * c-parse.y (compstmt): There may be implicit decls, so check
3626: and maybe keep the level.
3627:
3628: * tm-mips.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE):
3629: Use call_used_regs, not a private copy.
3630:
3631: Thu Nov 16 00:28:29 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3632:
3633: * reload1.c: Keep track of paradoxical subregs of each pseudo,
3634: and make extra stack space for their sake.
3635: (reload): Record max size paradoxical subreg for each pseudo.
3636: (scan_paradoxical_subreg): New subroutine for that.
3637: (reload): Make stack slots big enough for that size.
3638:
3639: * tm-i860.h (ASM_DECLARE_FUNCTION_NAME): Define it,
3640: so we can output a no-op before each function.
3641:
3642: * tm-pyr.h (INIT_CUMULATIVE_ARGS): Simplify.
3643: Pass function type to aggregate_value_p.
3644:
3645: * fold-const.c (fold):
3646: For foo++ > const, don't change if foo++ could overflow.
3647:
3648: * loop.c (eliminate_biv):
3649: Fix typo; check both coeffs when comparing givs.
3650:
3651: Wed Nov 15 00:12:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3652:
3653: * sdbout.c (sdbout_end_function, sdbout_end_block, sdbout_begin_block):
3654: Don't allow line numbers < 1.
3655:
3656: * integrate.c (copy_for_inline): `break' was missing for case 'u':.
3657:
3658: * sdbout.c (plain_type_1): Output .dim X,Y...; for multi-dim array.
3659: (sdbout_array_dim): New recursive subroutine.
3660: (PUT_SDB_DIM): Macro eliminated.
3661: (PUT_SDB_START_DIM, PUT_SDB_NEXT_DIM, PUT_SDB_LAST_DIM): New macros.
3662: * tm-3b1.h: Override PUT_SDB_START_DIM.
3663:
3664: * jump.c (delete_insn): Extra test for PREV != 0.
3665:
3666: Tue Nov 14 17:31:08 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3667:
3668: * tm-m68k.h (WORDS_BIG_ENDIAN): Define it.
3669: * out-m68k.c (output_move_double): Adapt CONST_DOUBLE case to that.
3670:
3671: * varasm.c (decode_rtx_const): For SYMBOL_REF, use addr of string.
3672:
3673: * tm-pyr.h (INIT_CUMULATIVE_ARGS):
3674: If -fpcc-struct-return, always do the scalar thing.
3675:
3676: * tm-sun3.h (LINK_SPEC): Specify -L to control choice of -lm.
3677:
3678: * function.c (expand_function_end): Use FUNCTION_OUTGOING_VALUE.
3679:
3680: Sat Nov 11 00:18:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3681:
3682: * calls.c (prepare_call_address): If NO_RECURSIVE_FUNCTION_CSE,
3683: don't do function cse on calls to same function.
3684: (emit_call_1): Don't call memory_address for SYMBOL_REF.
3685:
3686: * tm-att386.h (ASM_OUTPUT_COMMON): Use ROUNDED, not SIZE.
3687: (ASM_OUTPUT_LOCAL): Likewise. Also, generate .lcomm
3688: rather than a .data area symbol.
3689: * tm-sun386.h: Likewise.
3690:
3691: * tm-bsd386.h (ASM_OUTPUT_COMMON): Use ROUNDED, not SIZE.
3692: (ASM_OUTPUT_LOCAL): Likewise.
3693:
3694: * cexp.y (parse_escape): Delete unused var `count' from case 'x'.
3695:
3696: Fri Nov 10 15:04:15 1989 Richard Stallman (rms at rice-chex)
3697:
3698: * caller-save.c (emit_mult_restore, emit_mult_save):
3699: Improve arithmetic for address to save at.
3700:
3701: Thu Nov 9 00:14:19 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3702:
3703: * tm-pyr.h (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP):
3704: Don't use obsolete pushw and popw insns.
3705: (ASM_OUTPUT_ALIGN): Ensure arg in range 2 to 5.
3706: * pyr.md (tstdi): Pattern deleted.
3707: (SImode test recognizer): Output ucmpw if jump is unsigned.
3708:
3709: * out-sparc.c (operands_satisfy_eager_branch_peephole):
3710: Check for moves between FP and non-FP regs; they take two insns.
3711: * sparc.md (eager branch peepholes): Likewise.
3712: (Ordinary delayed branch peepholes): Similar check.
3713: * out-sparc.c (single_insn_extra_test): New subroutine.
3714:
3715: * final.c (final_scan_insn):
3716: Rearrange to avoid calling BLOCK_PROFILER for a jump table.
3717:
3718: * reload1.c (choose_reload_regs): Split up a hairy if.
3719:
3720: Wed Nov 8 00:48:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3721:
3722: * calls.c (expand_call): Handle UNNAMED_ARGS_IN_REGISTERS.
3723:
3724: * toplev.c (main): Handle -gsdb to make sdb output when that and dbx
3725: are both supported.
3726:
3727: * combine.c (subst): In (sign_extend:M (subreg:N (and:M .. <const>) 0))
3728: insist that constant be positive in mode N.
3729: Also test mode N in similar zero_extend case.
3730:
3731: * c-typeck.c (build_modify_expr): When assigning to COND_EXPR
3732: put cast to void around precomputed rhs.
3733:
3734: * calls.c (emit_call_1): Make funexp a valid address.
3735:
3736: Tue Nov 7 18:57:17 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3737:
3738: * expr.c (emit_move_insn): If args in memory, make addresses valid.
3739:
3740: * rtl.h: Undefine FFS in case it was defined by the system.
3741:
3742: * c-parse.y (combine_strings): Ignore warn_write_strings
3743: if -traditional or -fwritable-strings.
3744:
3745: * Makefile.in (gnulib2): Fix syntax in shell conditionals.
3746:
3747: * stmt.c (expand_return): Handle COND_EXPR specially.
3748:
3749: Mon Nov 6 14:43:55 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3750:
3751: * optabs.c (expand_float): Check sign of FROM; may be faster than TO.
3752:
3753: * fold-const.c (fold): If REAL_INFINITY, allow division by zero.
3754: * tm-sun3.h (REAL_INFINITY): Define it.
3755:
3756: * tm-i860.h, tm-m88k.h, tm-pyr.h, tm-spur.h (INIT_CUMULATIVE_ARGS):
3757: Test aggregate_value_p, not just BLKmode.
3758:
3759: * gnulib2.c (__builtin_saveregs): Moved from gnulib.c.
3760: Code added for mips.
3761:
3762: * pyr.md (conditional branch recognizers): Don't simplify if not -O.
3763:
3764: * out-pyr.c (extend_and_branch): Handle two constant operands.
3765:
3766: * integrate.c (function_cannot_inline_p): Don't inline if alloca used.
3767:
3768: Sun Nov 5 02:59:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3769:
3770: * Always make a LET_STMT and notes for the top level of a function
3771: if it has any subblocks.
3772: * c-decl.c (struct binding_level): New field keep_if_subblocks.
3773: (poplevel): Obey the new field.
3774: (keep_next_if_subblocks): New variable.
3775: (pushlevel): Use that variable.
3776: (store_parm_decls): Set that variable.
3777: (compstmt): Pass nonzero to expand_end_bindings
3778: for the new kept binding levels.
3779: (kept_level_p): New function.
3780:
3781: * xm-mips.h: Define USE_C_ALLOCA if compiling with CC.
3782:
3783: * tm-alliant.h (CHECK_FLOAT_VALUE): Define this.
3784:
3785: * calls.c (expand_call): Make valreg 0 if passing structure address.
3786:
3787: Sat Nov 4 23:27:02 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3788:
3789: * caller-save.c (emit_mult_save, emit_mult_restore):
3790: Test regs for suitability as address before using as temps.
3791:
3792: * cccp.c (make_definition, do_define): Better error checks for name.
3793:
3794: Fri Nov 3 01:05:04 1989 Torbj|rn Granlund (tege at echnaton)
3795:
3796: * pyr.md (tstdi): New pattern. Use 64-bit shift with count zero.
3797:
3798: * tm-pyr.h: -mretd pops args with the retd insn.
3799:
3800: * pyr.md (peep-holes for loop optimizations): Use the R output
3801: format in PRINT_OPERAND, don't use output_branch.
3802: * out-pyr.c: No need for functions output_branch, output_inv_branch.
3803:
3804: * tm-pyr.h (ASM_OUTPUT_ALIGN): Don't truncate alignment to two.
3805:
3806: Wed Nov 1 00:38:27 1989 Torbj|rn Granlund (tege at echnaton.sics.se)
3807:
3808: * out-pyr.c (output_inv_branch): When reversing test operands, ne
3809: remains ne, and eq eq eq.
3810:
3811: * pyr.md: Cleanup output code for compare patterns.
3812:
3813: * pyr.md (return): Adjust frame pointer if
3814: current_function_pretend_args_size != 0.
3815:
3816: * pyr.md (extendsidi2): Use general_operand for the input operand.
3817:
3818: * pyr.md, out-pyr.c: Output shift insns with output_shift.
3819:
3820: * tm-pyr.h, out-pyr.c: Make NOTICE_UPDATE_CC understand how
3821: condition codes are really set. Define flag CC_VALID_FOR_UNSIGNED
3822: with to make it possible not to reset cc after each compare or
3823: test.
3824: * pyr.md: Don't use CC_STATUS_INIT for most patterns.
3825:
3826: * out-pyr.c (already_sign_extended): Cleanup, correct, optimize.
3827:
3828: * out-pyr.c: rename radr_diff to constant_diff.
3829:
3830: * out-pyr.c (movdi_possible): Don't combine moves from memory to
3831: memory, because of possible address aliasing. Don't combine moves
3832: with register destination if the source operands are depending on
3833: the destination of the first move, as in
3834:
3835: movw (pr3),pr3
3836: movw 4(pr3),pr4.
3837:
3838: * out-pyr.c (consecutive_operands): Handle SUBREG in addition to REG.
3839:
3840: * out-pyr.c (output_move_double): movl of immediate *sign* extends.
3841:
3842: Tue Oct 31 22:51:39 1989 Torbj|rn Granlund (tege at echnaton.sics.se)
3843:
3844: * pyr.md (cmpsi): Don't expand this. It's just slower.
3845:
3846: * out-pyr.c (extend_and_branch): Handle only QImode and HImode.
3847: Flush code specific for SImode.
3848:
3849: * out-pyr.c (extend_and_branch): To make zero extensions to HImode
3850: of constants not crash:
3851: * out-pyr.c (ensure_extended): Call extend_const if it's a
3852: CONST_INT. Don't call extend_const from extend_and_branch.
3853: * pyr.md, out-pyr.md: Use global variable test_mode to determine the
3854: mode of tests and compares. Set in define_expands for tests and
3855: compares. Used in extend_and_branch.
3856: * out-pyr.c: Pass mode between extend_and_branch and ensure_extended.
3857:
3858: * out-pyr.c (extend_and_branch): Accept SUBREG whereever REG is
3859: accepted.
3860: * out-pyr.c (weird_memory_memory): Accept SUBREG whereever REG is
3861: accepted.
3862:
3863: Thu Nov 2 16:23:57 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3864:
3865: * gnulib2.c (lshrdi2, and other shifts): Take second arg as long long.
3866:
3867: * combine.c (subst):
3868: Simplify (zero_extract (subreg:SI (lshift:QI (mem:QI ...)) 0) ...)
3869:
3870: * expr.c (do_jump): Don't discard NOP_EXPR from around COMPONENT_REF.
3871: Put one on, if that allows extracting the component in natural mode.
3872:
3873: * final.c (get_attr_length): Omit the body if no length attribute.
3874:
3875: * Makefile.in (genattrtab): Use host-rtlanal.c as dep and to link.
3876: (insn-attrtab.o): Use $(INCLUDES).
3877:
3878: * cse.c: Include stdio.h.
3879:
3880: * c-decl.c (finish_enum): Local `value' was declared and set wrong.
3881:
3882: * Makefile.in (gen*.o): Find source files in $(srcdir).
3883: (LIBDEPS, HOST_LIBDEPS): Don't use USE_ALLOCA.
3884:
3885: Wed Nov 1 00:05:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3886:
3887: * stmt.c (init_function_start): Init max_parm_reg.
3888:
3889: * varasm.c (compare_constant_1): For ADDR_EXPR, compare symbol name.
3890: For PLUS_EXPR, etc., don't record code twice.
3891: (record_constant_1): Likewise.
3892:
3893: * expr.c (expand_assignment): Allow for overlap when storing into a
3894: structure value area supplied by the caller.
3895:
3896: * cse.c (remove): Handle an elt in the wrong bucket.
3897:
3898: * function.c (fixup_stack_1): Avoid using move insn for address arith.
3899:
3900: * out-sparc.c (output_mul_by_constant): Constant zero is legitimate.
3901:
3902: * caller-save.c (emit_mult_restore, emit_mult_save):
3903: Handle stack addresses which are invalid.
3904:
3905: * cse.c (use_related_value): Don't abort if offset is 0.
3906:
3907: Tue Oct 31 15:12:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3908:
3909: * config.gcc (pyramid): Set $machine to pyr.
3910:
3911: * calls.c (expand_call): Don't OK_DEFER_POP in is_const case.
3912:
3913: Mon Oct 30 17:00:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3914:
3915: * final.c (shorten_branches, init_insn_lengths):
3916: Define unconditionally; conditionalize the contents, perhaps.
3917:
3918: Mon Oct 30 03:23:52 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
3919:
3920: * final.c (shorten_branches): New function.
3921: (init_insn_lengths, get_attr_length): New functions.
3922: * function.c (init_function_start): Call init_insn_lengths.
3923: * recog.c (constrain_operands): Call alter_subreg if nec.
3924: * toplev.c (rest_of_compilation): Call shorten_branches.
3925: (compile_file): Init and print shorten_branch_time.
3926:
3927: Mon Oct 30 03:23:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3928:
3929: * reload1.c (spill_regs): Make it short, not char.
3930:
3931: Sun Oct 29 00:53:46 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
3932:
3933: * final.c (final_scan_insn): Delete no-op moves, even without -O.
3934:
3935: * c-parse.y (yylex): Prevent warning for numbers that underflow.
3936:
3937: * stmt.c (assign_parms): Convert stack addresses to valid addresses.
3938: (validize_mem): New subroutine.
3939:
3940: * c-decl.c (finish_enum): If -fshort-enums, round size up to match
3941: some ordinary C integer type.
3942: Compute precision properly when some values are negative.
3943: Make type double precision when necessary.
3944:
3945: * c-decl.c (lang_decode_option): Accept and ignore -fnotraditional.
3946:
3947: * gcc.c (default_compilers): Pass -ftraditional to cpp as -traditional.
3948:
3949: * DOLLARS_IN_IDENTIFIERS now has three values. 1 is now the default.
3950: It means enable $ only with -traditional. 2 means enable unless -ansi.
3951: * c-decl.c (lang_decode_option): Implement that.
3952: * cccp.c (main): Likewise.
3953: * tm-vms.h, tm-apollo68.h, tm-convex.h, tm-next.h:
3954: Define DOLLARS_IN_IDENTIFIERS as 2.
3955: * tm-pyr.h: Define it as 0.
3956: * cexp.y (initialize_random_junk): Test DOLLARS_IN_IDENTIFIERS
3957: for nonzeroness.
3958:
3959: * stmt.c (check_for_full_enumeration_handling): Accept enum type
3960: as argument (since was finding it incorrectly).
3961: Delete special case for constant index.
3962: (expand_end_case): Pass enum type; check for constant index.
3963:
3964: Sun Oct 29 00:53:46 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
3965:
3966: * varasm.c (force_const_double_mem): Remove redundant code.
3967: (record_constant_rtx): Use normal obstack since temporary data.
3968: (force_const_mem): Don't output constant immediately. Instead,
3969: save it for new fn to write. Also, make hash table mapping
3970: internal label to desired constant.
3971: (output_constant_pool): New fn to write constant pool.
3972: (assemble_function): Call it.
3973: (init_const_rtx_hash_table): Initialize new hash table and pool
3974: chain and offset.
3975: (find_pool_constant): New fn to map internal label SYMBOL_REF to
3976: data about constant.
3977: (get_pool_constant, get_pool_mode, get_pool_offset): New fns
3978: using above fn to return data about constant pool labels.
3979: * rtl.h: Define last three new fns.
3980:
3981: * integrate.c (save_constants): New fn to convert constant pool
3982: references to recognizable representation of constant that was
3983: being used.
3984: (save_for_inline): Call it.
3985: (copy_for_inline, output_inline_function): Undo this for copy to
3986: be compiled.
3987: (restore_constants): New fn used in output_inline_function.
3988: (copy_rtx_and_substitute): Make new constant pool entries for
3989: constants in pool when fn was inlined.
3990:
3991: * cse.c (cse_end_of_basic_block): Optionally make a "basic block"
3992: that follows branches. Now takes previous block as argument and
3993: computes which branch to follow/fall through next.
3994: (cse_main, cse_basic_block): Make compatible with above.
3995:
3996: * toplev.c: Add new flag, -fcse-follow-jumps.
3997: (rest_of_compilation): Pass dump file to cse_main.
3998:
3999: * flags.h: Add flag_cse_follow_jumps.
4000:
4001: Sat Oct 28 01:24:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4002:
4003: * optabs.c (emit_cmp_insn): Default MODE before computing CLASS.
4004:
4005: Fri Oct 27 16:25:19 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4006:
4007: * tm-next.h (__inline): define as macro for old 1.34 Next uses.
4008:
4009: Thu Oct 26 01:05:09 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4010:
4011: * mips.md (compare/branch peepholes): Combine using match_operator.
4012: * out-mips.c (relop, frelop, frelop_reversed): New functions.
4013: * tm-mips.h (PRINT_OPERAND): New codes `C' and `N' for comparisons.
4014: (ASM_OUTPUT_SOURCE_LINE): Output .loc--MIPS likes that.
4015: (EXTENDED_COFF, NO_UNDERSCORES, USE_COLLECT): Define, for collect.c.
4016: (COFF): Undefine, for collect.c.
4017:
4018: * getattrtab.c: Rename define_asm_insn to define_asm_attributes.
4019: * rtl.def: Likewise.
4020:
4021: Wed Oct 25 00:52:12 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
4022:
4023: * rtl.def: Add new RTL codes for insn attributes.
4024: Change last operand of DEFINE_INSN and DEFINE_PEEPHOLE.
4025:
4026: * rtlanal.c (rtx_equal_p): Add support for "V", "n", and "s" types.
4027:
4028: * genoutput.c (output_epilogue): No longer output machine_info
4029: stuff.
4030: (process_template): New function.
4031: (gen_insn, gen_peephole): Call process_template.
4032: (fatal): Add more args.
4033:
4034: * final.c: Allow called configuration macros to use attribute data.
4035:
4036: Wed Oct 25 00:52:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4037:
4038: * rtlanal.c (rtx_equal_p): Handle operand types n, V, S.
4039:
4040: * optabs.c (floattab): Record unsigned-float insns.
4041: (can_float_p): New arg UNSIGNEDP.
4042: (expand_float): Use those insns if available.
4043:
4044: Tue Oct 24 19:23:11 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
4045:
4046: * genattr.c, genattrtab.c: New files.
4047: * Makefile.in (insn-attr.h, insn-attrtab.c):
4048: New files made by those two.
4049:
4050: * Makefile.in (insn-*.[ch]): Name the temp file `tmp-foo.c', etc.,
4051: not `tmp-insn-foo.c'.
4052:
4053: * combine.c (subst): Generalize simplification of
4054: (zero_extend:M (subreg:N (zero_extract:M ...) 0)) and similar.
4055:
4056: Tue Oct 24 19:23:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4057:
4058: * combine.c (try_combine): Don't move a volatile asm.
4059:
4060: Mon Oct 23 01:45:34 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4061:
4062: * combine.c (try_combine): Don't install a subreg relating two modes
4063: that aren't tieable.
4064:
4065: * gnulib2.c (__fixdfdi): Declare __fixunsdfdi.
4066:
4067: * combine.c: Make uid_cuid an int *.
4068: (combine_instructions): Allocate as such.
4069: * loop.c: Make uid_luid an int *.
4070: (loop_optimize): Allocate as such.
4071:
4072: Sun Oct 22 20:35:55 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
4073:
4074: * combine.c (try_combine): Call simplify_set_cc0_and for SIGN_EXTEND.
4075: (subst): Start by putting constant last in commutative operations
4076: and convert MINUS of a constant to PLUS.
4077: Put CONST around any PLUS with 2 constants.
4078: Simplify (minus <foo> (and <foo> (const_int -pow2))).
4079: Handle (zero_extend (and ...)) when the and is nontrivial.
4080: Convert (XOR (NOT x) (NOT y)) to (XOR x y).
4081: Simplify (abs (neg <foo>)).
4082: Simplify abs of something known positive.
4083: Handle (zero_extend (truncate...)) using gen_lowpart.
4084: Do it for sign_extend too.
4085: Simplify (ZERO_EXTRACT (AND x) ...).
4086: Simplify (ZERO_EXTRACT (ZERO_EXTEND z) ...), etc.
4087: Extend "Extracting a single bit from result of shift" to SIGN_EXTRACT.
4088: (ashiftrt (*shift <X> <c1>) <c1>) can be (sign_extend <X>)
4089: (lshiftrt (*shift <X> <c1>) <c1>) can be (zero_extend (subreg <X>))
4090: Do (lshift <X> (sign_extend <Y>)) on non-regs using gen_lowpart.
4091: Eliminate AND in (lshift (and <X> <C1>) <C2>).
4092: Use gen_lowpart in (lshift:m1 (zero_extend:m2 <X>) <C>).
4093: Use gen_lowpart in (and x const) => (zero_extend (subreg x 0)).
4094: (simplify_set_cc0_and): Ignore outermost SIGN_ or ZERO_EXTEND.
4095: Handle constant bit number.
4096: Try to get into SImode for bitfield jumps.
4097:
4098: * recog.c (apply_change_group, validate_change): New functions.
4099:
4100: Sat Oct 21 00:51:49 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
4101:
4102: * cse.c (cse_end_of_basic_block): Optionally make a "basic block"
4103: that follows branches. Now takes previous block as argument and
4104: computes which branch to follow/fall through next.
4105: (cse_main, cse_basic_block): Make compatible with above.
4106:
4107: * cse.c (new_basic_block): Don't assume sizeof (rtx) == sizeof (int).
4108:
4109: * cse.c (make_new_qty, canon_hash): Add sanity checks.
4110:
4111: * cse.c (lookup_as_function): Don't assume VOIDmode == 0.
4112:
4113: * cse.c (exp_equiv_p): For commutative operations, check both orders.
4114: Detect unexpected operand-type letters.
4115: Mode is significant for all codes.
4116:
4117: * cse.c (fold_rtx): CONST_DOUBLE can also appear in DImode. Verify
4118: that floating-point is used before folding it.
4119: Verify that the host's INT width is wide enough to do folding.
4120:
4121: * cse.c (cse_insn): Treat each component of PARALLEL exactly the same
4122: way as if it were standing alone.
4123:
4124: * combine.c (combine_instructions): If an insn explicitly references
4125: CC0, try to combine it with the previous insn. Also, enable
4126: combining an insn with two different insns whose results it uses.
4127:
4128: * combine.c (try_combine): Ignore USE or CLOBBER parallel parts in
4129: I2 and I1 as they are not functional.
4130:
4131: Sat Oct 21 00:51:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4132:
4133: * out-pyr.c (extend_and_branch): Allow SUBREG like REG.
4134: * pyr.md (mem-reg and reg-mem HI, QI patterns):
4135: Don't match unless one arg is MEM.
4136:
4137: Sat Oct 21 00:28:48 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4138:
4139: * stor-layout.c (layout_decl): No more need to avoid >1 wd in one reg.
4140:
4141: * tree.c (build_index_type): Copy precision from sizetype.
4142:
4143: * reload.c (find_reloads_toplev): Don't truncate constant if bigger
4144: than host word size.
4145:
4146: * gnulib2 (__floatdidf, __fixunsdfdi): Use WORD_SIZE, not BITS_PER...
4147: (WORD_SIZE): # of bits in a `long' on the target.
4148:
4149: * genextract.c (gen_peephole): Use sizeof (rtx) copying operands.
4150:
4151: * fold-const.c (force_fit_type): Use POINTER_SIZE for pointers.
4152:
4153: * final.c (end_final, final_scan_insn): In sizes and aligns of
4154: profiling vars and tbls, use INT_TYPE_SIZE for size of an int,
4155: or give max alignment.
4156:
4157: * expr.c (do_jump): Comparing constant arg vs 0, take # sig bits
4158: from mode of data type.
4159:
4160: * gcc.c: Add CC1PLUS_SPEC like CC1_SPEC.
4161: (validate_all_switches, do_spec_1, process_command, read_specs):
4162: Handle it. Use %2 to use it.
4163: (default_compilers): Pass %2 to cc1plus.
4164:
4165: * out-sparc.c (output_fp_move_double): Use ldd only when safe,
4166: on same conditions used for std.
4167:
4168: * Makefile.in (USE_ALLOCA): New var is $(ALLOCA) if compiling with
4169: cc, null otherwise. Use this to refer to alloca.
4170:
4171: * Makefile.in (gnulib): Test vrbl HPUX_GAS to decide whether to run
4172: hpxt instead of ranlib.
4173: (stamp-gnulib2): Don't ranlib if HPUX_GAS.
4174: * make-hp9kgas: New file, sets HPUX_GAS.
4175:
4176: Fri Oct 20 13:33:34 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4177:
4178: * expmed.c (store_bit_field, extract_bit_field):
4179: Use mode whose size is UNITS_PER_WORD for struct in reg.
4180: (store_fixed_bit_field, extract_fixed_bit_field):
4181: Handle bigger constant masks.
4182: (mask_rtx, lshift_value): New subroutines.
4183:
4184: * c-parse.y (combine_strings): Use correct width of `int'.
4185:
4186: * varasm.c (make_decl_rtl): Warn for volatile explicit register vars.
4187:
4188: Fri Oct 20 00:27:00 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
4189:
4190: * reload1.c (reload_as_needed): Set new variable reload_in_progress
4191: and clear it after reload complete.
4192:
4193: * reload1.c (choose_reload_regs):
4194: Don't count deleted reloads vs number of spill regs.
4195:
4196: * reload1.c (choose_reload_regs): Arg of HARD_REGNO_MODE_OK
4197: was the pseudo; should be the reload reg.
4198:
4199: * reload1.c (gen_input_reload): Don't generate a move with a PLUS
4200: as an operand.
4201:
4202: * reload.c (find_reloads): Ignore unconstrained operands
4203: when looking for conflict with an earlyclobber.
4204:
4205: * reload.c (subst_indexed_address):
4206: Replace and canonicalize more thoroughly.
4207: (form_sum): New subroutine.
4208:
4209: * out-i386.c (singlemove_string): Handle ordinary constants as input.
4210:
4211: * tm-decstatn.h (CPP_PREDEFINES): Add bsd4_2, ultrix, MIPSEL,
4212: host_mips, R3000, LANGUAGE_C, SYSTYPE_BSD.
4213: * tm-mips.h (CPP_PREDEFINES): Add host_mips, R3000, MIPSEB, LANGUAGE_C.
4214: (CPP_SPEC): Remove those from here.
4215: Define __SYSTYPE_*__ always. Define SYSTYPE_* only if not -ansi.
4216: No CPP_SPEC needed for decstation.
4217: Correct typos in option tests.
4218:
4219: * c-parse.y (unary_expr): Handle EXTENSION here, not in primary.
4220:
4221: Thu Oct 19 18:16:40 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4222:
4223: * tm-m68k.h, tm-alliant.h (PRINT_OPERAND):
4224: Don't print :l for address if :w was already printed.
4225:
4226: * Allow elided braces with unions.
4227: * c-typeck.c (digest_init): Treat unions more like records.
4228: (process_init_constructor): Handle union types.
4229:
4230: * c-parse.y (program): Pedantic warning for empty file.
4231:
4232: Wed Oct 18 22:28:21 1989 Torbj|rn Granlund (tege at echnaton.sics.se)
4233:
4234: * out-pyr.c (extend_const, extend_and_branch): Make sure all const
4235: are CONST_INT.
4236:
4237: * out-pyr.c (movdi_possible): Handle combination of two immediate
4238: moves correctly. (Pyramid immediate move to a DImode operand
4239: (movl) work by SIGN extension of the 32 bit immediate source.)
4240: * Handle CONST tagged addresses.
4241:
4242: * out-pyr.c (already_sign_extended): Skip harmless JUMP_INSN when
4243: scanning after extension insn.
4244: * Check for right mode of extension.
4245: * Delete redundant register number test.
4246:
4247: * pyr.md (anonymous SImode test pattern): Predicate need to accept
4248: any operand that can be generated for corresponding compare. Used
4249: to reject "foo(p) int *p {int a=0; return *p==a;}".
4250:
4251: * pyr.md (shift patterns): Condition bogus if no insn really output.
4252:
4253: * pyr.md: Flush obsolete comment about conversion.
4254:
4255: * tm-pyr.h (FUNCTION_PROLOGUE): Don't really set up a frame pointer
4256: if it's never referenced. Also, don't round up frame size to a
4257: multiple of 32, since input args and alloca nevertheless breaks
4258: such alignment attempts.
4259: * tm-pyr.h (FUNCTION_EPILOGUE): Goodbye. Use (define_insn "return"
4260: ..) in md instead.
4261: * pyr.md (return): Use "ret" or "retd" depending on the existense
4262: of a freme pointer.
4263: * tm-pyr.h (EXIT_IGNORE_STACK): Ensure the stack pointer is
4264: preserved even when the frame pointer is not really set up.
4265:
4266: * pyr.md: Reinsert move-and-test peep-hole optimization.
4267:
4268: * pyr.md: Flush silly peep-hole optimizations for loops. They were
4269: inverted optimizations.
4270:
4271: * tm-pyr.h (NOTICE_UPDATE_CC): Make it identify the most important
4272: cases when set conditions codes can be used, without an explicit
4273: test.
4274:
4275: Wed Oct 18 13:01:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4276:
4277: * gcc.c (default_compilers): Support -E on .h file.
4278:
4279: * tm-mips.h (FUNCTION_PROLOGUE): Get rid of __0__gcc macro.
4280: Store that value in frame_stack_difference.
4281: (FUNCTION_EPILOGUE): Get rid of __0__gcc macro.
4282: (FIX_FRAME_POINTER_ADDRESS): Use frame_stack_difference.
4283: * out-mips.c (frame_stack_difference): Define here.
4284:
4285: * gcc.c (default_compilers): Define __GNUG__ for g++.
4286:
4287: Tue Oct 17 01:17:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4288:
4289: * tm-i860.h (HAVE_PRE_INCREMENT): Undefine this.
4290:
4291: * mips.md (movsf): New alternatives for r registers.
4292: * tm-mips.h (FUNCTION_PROLOGUE): Handle big stack frames.
4293: * out-mips.c (function_arg): Handle mode distinction for floating args.
4294:
4295: * pyr.md (mtstsw pattern): Accept general_operand.
4296:
4297: * Makefile.in (gcc): Force-move when installing new gcc.
4298: (realclean): Delete Makefile.
4299:
4300: * i860.md (movsf): New alternatives: allow loading r from F.
4301: Prefer f-reg as reload when moving m from F.
4302: * tm-i860.h (PRINT_OPERAND): Handle CONST_DOUBLE if SFmode.
4303:
4304: Sun Oct 15 14:27:48 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4305:
4306: * i860.md (movhi, movqi): Support moves to/from fp regs.
4307:
4308: * stmt.c (expand_goto): USE both stack ptr and static_chain_rtx
4309: just before jumping.
4310:
4311: * sparc.md (tablejump peepholes): Fix paren error that no-op'd them.
4312:
4313: * tm-sparc.h (*TRAMPOLINE*): Defined macros, but defns are wrong.
4314: * sparc.md (indirect_jump): New pattern; plus peepholes.
4315:
4316: * sparc.md (cse'd multiply): New pattern for mult. by -1.
4317:
4318: * out-i860.c (load_opcode, store_opcode): Handle DImode and fp reg.
4319:
4320: * toplev.c (compile_file): Always test TREE_USED and TREE_ADDRESSABLE
4321: in identifier as well as in decl.
4322: * c-decl.c (poplevel): Preserve TREE_ADDRESSABLE from local externs.
4323: * c-typeck.c (mark_addressable): Don't set bit in identifier here.
4324:
4325: Fri Oct 13 00:12:46 1989 Richard Kenner (rms at sugar-bombs.ai.mit.edu)
4326:
4327: * flow.c (life_analysis): No need to think abt CONSIDER on first pass.
4328:
4329: * flow.c (propagate_block): Remove duplicated code to update OLD.
4330:
4331: * flow.c (mark_set_1): Handle nested SUBREG, SIGN_EXTRACT,
4332: STRICT_LOW_PART, etc. Also, always set subreg_p when setting
4333: a bit field, even if modes are same.
4334:
4335: * expr.c (expand_expr): Check for |= or &= of two bitfields of size 1.
4336: Convert to test followed by assignment.
4337:
4338: * rtl.def (INLINE_HEADER): Correct erroneous field types.
4339:
4340: * rtl.h: Add definitions for saving flags in INLINE_HEADER.
4341:
4342: * emit-rtl.c (gen_inline_header): Correct out-of-date arguments.
4343: Add support for saving flags.
4344:
4345: * integrate.c (save_for_inline): Save function flags.
4346: Update comments.
4347: (expand_inline_function, output_inline_function): Let machine-dependant
4348: code view (or possibly modify) inlined insn, if desired.
4349:
4350: * function.c (assign_stack_local): Don't set frame_pointer_needed or
4351: invalid_stack_slot if assigning zero-sized area.
4352:
4353: * stmt.c (fixup_var_refs_1): If the machine's SIGN_EXTRACT or
4354: ZERO_EXTRACT insns can't accept a memory operand, fix them up.
4355:
4356: * expr.c (do_jump): Look inside EQ_EXPR or NE_EXPR if one arg is 0.
4357: Be smart about PLUS_EXPR, MINUS_EXPR, ABS_EXPR, REFERENCE_EXPR,
4358: NEGATE_EXPR, rotation, CONVERT_EXPR.
4359:
4360: * jump.c (reverse_condition): Make non-static.
4361: (swap_condition): New routine.
4362:
4363: * final.c (alter_cond): Use new swap_condition.
4364:
4365: * expr.c (expand_expr): In cases where a jump will be generated, use
4366: original_target because the registers won't be able to be merged due
4367: to the jump.
4368:
4369: * expr.c (expand_expr): Put constant last for PLUS.
4370:
4371: Fri Oct 13 00:12:46 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4372:
4373: * recog.c (constrain_operands): Add case for `&'.
4374:
4375: * tm-vax.h (TRAMPOLINE_TEMPLATE): Add a .word 0 at beginning.
4376: (TRAMPOLINE_SIZE): Increase by 2.
4377: (INITIALIZE_TRAMPOLINE): Copy reg mask from pure code to trampoline.
4378: Jump into the pure code after the reg mask.
4379:
4380: * expmed.c (expand_divmod): Use divmod insn for quotient if no div.
4381:
4382: * expmed.c (extract_bit_field): With structure reg fetched from mem,
4383: don't put in subreg if mode already correct.
4384: (store_bit_field): Typo: had extzv, wanted insv.
4385:
4386: * recog.c (init_recog): Set volatile_ok to 1.
4387: (init_recog_no_volatile): Similar, but set volatile_ok to 0.
4388: (recog_memoized): Don't set volatile_ok.
4389: * reload1.c (reload): Call init_recog.
4390: * combine.c (combine_instructions): Call init_recog_no_volatile.
4391: * loop.c (loop_optimize): Likewise.
4392: * cse.c (cse_main): Likewise.
4393: * function.c (expand_function_start): Call init_recog_no_volatile
4394: for the sake of predicates called from optabs.c.
4395:
4396: * toplev.c (compile_file): Warn if fun declared static and used
4397: but never defined.
4398:
4399: Thu Oct 12 01:48:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4400:
4401: * cccp.c (macarg1): Count newlines even after backslash.
4402:
4403: * c-decl.c (pushdecl): Don't warn for explicit extern
4404: followed by static. That case is useful for incomplete arrays.
4405:
4406: * c-decl.c (grokdeclarator): Delete some junk about Pmode vs EPmode.
4407:
4408: * tm-sparc.h (SELECT_RTX_SECTION): Test was backwards.
4409:
4410: * reload.c (reg_class_subset_p): New function.
4411:
4412: Wed Oct 11 00:35:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4413:
4414: * vax.md (indirect_jump): New pattern.
4415:
4416: * c-parse.y (primary): Turn off pedantic after `__extension__'.
4417: (hash, is_reserved_word, etc.): Recognize `__extension__'.
4418:
4419: * expr.c (emit_library_call, expand_call): Make a SEQUENCE for
4420: any needed USE insns and pass them to emit_call_1.
4421: (emit_call_1): Place the passed SEQUENCE immediately before the
4422: generated CALL_INSN even if gen_call made more than one insn.
4423:
4424: * tm-seq386.h (DBX_DEBUGGING_INFO): Override this.
4425: (HARD_REGNO_MODE_OK): Override this.
4426:
4427: * c-typeck.c (build_conditional_expr): Supply missing layout_decl arg.
4428:
4429: * dbxout.c (dbxout_symbol): Handle nested functions.
4430:
4431: Wed Oct 11 00:35:25 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
4432:
4433: * jump.c: Update jump_chain when insns change.
4434: (jump_optimize): Leave room in jump_chain for some extra labels.
4435: Record length in max_jump_chain. Check this when updating.
4436: When optimizing jump-to-return, delete from one chain and add to other.
4437: When cross-jumping turns cond jump to simple one, add to new chain.
4438: Zero jump_chain at end, so redirect_jump won't change it further.
4439: (redirect_jump): Delete from one chain, add to another.
4440: (do_cross_jump): Likewise.
4441: (delete_from_jump_chain): New subroutine.
4442:
4443: * cse.c: If `if (x != y) goto l;' fails to jump, assume x==y.
4444: (reg_invaliate): Add new argument for when value isn't
4445: changing, just its class.
4446: (invalidate): Update reg_invalidate call.
4447: (record_jump_equiv): New function.
4448: (cse_insn): Call it.
4449:
4450: * cse.c (cse_insn): Delete previous test based on
4451: prev_insn_explicit_cc0 just as based on prev_insn_cc0.
4452:
4453: Tue Oct 10 00:14:35 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4454:
4455: * reload.c (push_reload, combine_reloads): Let two reloads share
4456: if one's regclass is a subset of the other.
4457:
4458: * Makefile.in: What depends in expr.h, depends on insn-codes.h also.
4459:
4460: Mon Oct 9 19:11:38 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4461:
4462: * cccp.c (finclude): Close descriptor as soon as text is read.
4463: Eliminate `success'; return directly after successful processing.
4464: (do_include): Don't close descriptor here.
4465:
4466: * tm-i386.h (REG_CLASS_FROM_LETTER): Don't define `S' letter.
4467: It wasn't used; and now it means something else.
4468:
4469: * tm-ns32k.h (REG_CLASS_FROM_LETTER): Don't define `r' here.
4470: `r' is standard.
4471:
4472: Mon Oct 9 01:09:25 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
4473:
4474: * flow.c (life_analysis): Ignore USEs and CLOBBERs when finding
4475: redundant register copies.
4476: * jump.c (jump_optimize): Do the same thing here.
4477:
4478: * jump.c (mark_jump_label): Loop NOTEs aren't relevant after loop
4479: optimization.
4480:
4481: * integrate.c (copy_for_inline): Correctly handle RTL type "u".
4482: * final.c (output_operand_lossage): Make non-static.
4483:
4484: * recog.c (constrain_operands): Treat N, O, P like I, J, K, L, M.
4485: For Q...U, use EXTRA_CONSTRAINTS if defined.
4486: * reload.c (find_reloads): Likewise.
4487:
4488: * rtl.c (copy_rtx, read_rtx, print_rtx): Handle operand type `V'.
4489:
4490: * rtlanal.c (note_stores): Use variable Y instead of equivalent
4491: slower expression.
4492:
4493: * rtlanal.c (dead_or_set_p): Hard regs don't always have same RTX.
4494:
4495: * rtlanal.c (may_trap_p): Don't use const0_rtx here.
4496: So we can use this file in programs that don't have const0.
4497:
4498: Mon Oct 9 01:09:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4499:
4500: * Support language-specific tree codes.
4501: * tree.c (standard_tree_code_type, standard_tree_code_length):
4502: Renamed tables. tree_code_type and tree_code_length are now pointers.
4503: * tree.c (init_tree): Copy the tables to allocated memory.
4504: * tree.c (tree_code_name): Move here from print-tree.c
4505: and define like tree_code_type.
4506:
4507: * rtl.c (print_rtl): Handle 0 as operand.
4508:
4509: * emit-rtl.c (save_emit_status): Don't call init_emit here.
4510: * function.c (push_function_context): Do it here.
4511:
4512: * emit-rtl.c (reinstate_emit_status): New function.
4513: * function.c (trampoline_address): Use this around
4514: INITIALIZE_TRAMPOLINE.
4515:
4516: * function.c (trampoline_address): Use fp->tail_recursion_reentry
4517: when trampoline is in outer function.
4518:
4519: * Save and restore stack levels in nonlocal gotos.
4520: * function.c: New variable nonlocal_goto_stack_level.
4521: (init_function_start, push_function_context, pop_...): Init, push, pop.
4522: (delete_handlers): Delete insns to set or use this slot.
4523: * stmt.c (declare_nonlocal_label): Create this stack slot.
4524: (expand_goto): Restore stack ptr from it.
4525: (expand_end_bindings, expand_decl): When setting stack ptr,
4526: store new value here.
4527: * expr.c (expand_builtin): Likewise, for alloca.
4528: * calls.c (expand_call): Likewise.
4529:
4530: * varasm.c (make_function_rtl): Rename nested functions for assembler.
4531: * c-decl.c (start_function): Clear TREE_PUBLIC for nested function.
4532:
4533: * tm-i860.h (*TRAMPOLINE*): Define macros.
4534:
4535: * i860.md (movdi): accept F source in 2nd alternative.
4536: Accept G source in 3rd.
4537: (adddi3, subdi3): Typo in opcode of output.
4538:
4539: * i860.md (indirect_jump): Added pattern.
4540:
4541: * c-decl.c (lookup_label): Shadow label if it's wrongly inherited.
4542: Set DECL_CONTEXT here, since nondeclared labels must be local.
4543:
4544: Sun Oct 8 01:38:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4545:
4546: * function.c (expand_function_start): Copy static chain to pseudo
4547: reg if chain is used.
4548:
4549: * tm-mips.h (ASM_SPEC): Pass -nocpp to as.
4550:
4551: * c-decl.c (grokdeclarator): Ignore variant differences
4552: when preserving typedef types from being altered.
4553:
4554: * Allow inner label scopes for ({...}).
4555: * c-decl.c (push_label_level, pop_label_level): New functions.
4556: * c-parse.y (stmt exprs): Call them.
4557:
4558: * c-decl.c (lookup_label): Set DECL-SOURCE-LINE to locus of reference.
4559: (poplevel): Use locus of reference in err msg for undef label.
4560: (define_label): Use DECL_INITIAL as flag that label has been defined.
4561:
4562: * function.c (expand_end_function): Delete nonlocal goto handlers
4563: if no nonlocal gotos are actually received.
4564: (delete_handlers): New function.
4565:
4566: * flow.c (find_basic_blocks): Treat blocks as reachable
4567: if headed by labels with LABEL_PRESERVE_P.
4568: (insn_dead_p): Don't delete insns to set the frame pointer or arg ptr.
4569:
4570: * m68k.md (indirect_jump): New pattern.
4571:
4572: Sat Oct 7 00:46:18 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4573:
4574: * c-decl.c (lookup_label): If label is nonlocal and wasn't declared so,
4575: report error and return 0.
4576: (shadow_label): New function.
4577: * c-parse.y (goto stmt): Handle 0 returned by lookup_label.
4578: (label_decl, label_decls): Parse forward-declarations of labels.
4579: (pushlevel): Allow label declarations at start of compound stmt.
4580:
4581: * rtl.h (LABEL_PRESERVE_P): New flag in CODE_LABEL.
4582: * jump.c (jump_optimize): Increment LABEL_NUSES if that flag is set.
4583:
4584: * stmt.c (any_pending_stack_level): New function.
4585: (expand_end_bindings): If block has stack level or cleanups,
4586: and this function has any nonlocal labels, make a nonlocal goto handler
4587: for the block, and put it in effect during the block.
4588: Set LABEL_PRESERVE_P on the handler's label.
4589: (expand_goto): For a nonlocal label, restore its stack frame
4590: and jump to current handler.
4591:
4592: * function.c: New var nonlocal_labels lists labels ok for nonlocal.
4593: Initted in init_function_start, pushed and popped with fcn context.
4594: * stmt.c (declare_nonlocal_label): Put a LABEL_DECL on this list.
4595:
4596: * output.h: Declare current_function_has_nonlocal_label
4597: and sdb_begin_function_line.
4598: * final.c: Don't declare them.
4599:
4600: * function.c (current_function_has_nonlocal_label): New var.
4601: (init_function_start): Init it.
4602: (push_function_context, pop...): Save and restore it.
4603: * flags.h: Declare current_function_has_nonlocal_label.
4604: * stmt.c (expand_goto): Set it if nonlocal label.
4605: * local-alloc.c (combine_regs): Don't tie call-crossing reg
4606: to a non-call-crossing reg, if receive nonlocal gotos.
4607: (block_alloc): Don't allocate pseudos that cross calls,
4608: if receive nonlocal gotos.
4609: * global-alloc.c (global_alloc): Don't even make an allocno for
4610: a reg that crosses calls, if receive nonlocal gotos.
4611:
4612: * function.c (init_function_start): Init function_call_count.
4613: (push_function_context, pop_...): Save and restore it.
4614: * calls.c (expand_call): Increment function_call_count.
4615: * stmt.c (expand_{start,end}_bindings): Use this var
4616: to determine whether there are any function calls in a block.
4617: No need for a nonlocal goto handler if block has no calls.
4618:
4619: * c-decl.c (define_label): Set DECL_CONTEXT.
4620: Maybe push label on shadowed_labels.
4621: (pop_c_function_context): Clear out labels in named_labels
4622: and reinstall those in shadowed_labels.
4623: Restore shadowed_labels.
4624: (push_c_function_context): Push shadowed_labels.
4625: (start_function): Clear shadowed_labels.
4626:
4627: * function.c: New file, split from stmt.c.
4628:
4629: * xm-mips.h: Use __builtin_alloca.
4630:
4631: Fri Oct 6 00:30:42 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4632:
4633: * jump.c (jump_optimize): Optimization of
4634: `if (...) x = 1; else {...} if (x) ...' got sense wrong sometimes.
4635:
4636: * Makefile.in (stamp-gnulib2): depend on gcc, cc1, cpp via
4637: gnulib2-indirect.
4638:
4639: * tm-vax.h (TRAMPOLINE_SIZE,INITIALIZE_TRAMPOLINE,TRAMPOLINE_TEMPLATE):
4640: Define macros.
4641:
4642: * m68k.md (addsi3): Change ! to ? in lea alternatives.
4643: Put them before the add-to-register alternative.
4644:
4645: * reload.c (find_dummy_reload): Use PREFERRED_RELOAD_CLASS here
4646: as in push_reload, so we make accurate predictions.
4647:
4648: * c-decl.c (pushdecl): Don't set DECL_CONTEXT for function declaration
4649: that isn't a definition.
4650:
4651: * explow.c (fix_lexical_addr): Handle address that's just a base reg.
4652:
4653: * expr.c (expand_expr, case VAR_DECL): No need for static chain
4654: if var is static.
4655:
4656: * reload.c (find_equiv_reg): Do let xregno be a pseudo reg,
4657: but don't call HARD_REGNO_NREGS in that case.
4658:
4659: * local-alloc.c (combine_regs): Set reg_qty[sreg] even if it was <0.
4660:
4661: * c-decl.c (start_function): Clear named_labels.
4662:
4663: Thu Oct 5 00:30:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4664:
4665: * reload.c (find_equiv_reg): Don't let xregno be a non-hard reg.
4666: Don't do OVERLAPPING_REGNO_P on a pseudo reg number.
4667:
4668: * Handle addresses of nested functions.
4669: * New tm macros TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE,
4670: ALLOCATE_TRAMPOLINE, TRAMPOLINE_TEMPLATE.
4671: * expr.c (expand_expr, case ADDR_EXPR): Handle addresses of nested fns.
4672: * stmt.c (trampoline_address): New function.
4673: * varasm.c (assemble_trampoline_template): New function.
4674:
4675: * i386.md (trunchiqi2, etc.): Output %1 with size of destination.
4676: * out-i386.c (PRINT_REG): Support 'b' as CODE.
4677:
4678: * combine.c (try_distrib): Make sure we don't move a reg use
4679: across a store into that reg.
4680:
4681: * reload1.c (order_regs_for_reload): Rate fixed regs at LARGE+2,
4682: and explicitly used regs at LARGE+1.
4683:
4684: * stor-layout.c (layout_record): Support BIGGEST_FIELD_ALIGNMENT.
4685: * tm-vax.h (BIGGEST_FIELD_ALIGNMENT): Define it.
4686: (BIGGEST_ALIGNMENT): Now always 32.
4687:
4688: * stor-layout.c (build_int): When memoizing, make permanent nodes.
4689:
4690: Wed Oct 4 19:40:37 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4691:
4692: * xm-i860.h: Missing file added.
4693:
4694: * integrate.c (function_cannot_inline_p): Don't inline if > 100 bytes
4695: of stack space, unless declared inline.
4696:
4697: Tue Oct 3 00:16:08 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4698:
4699: * stmt.c (assign_outer_stack_local): New function.
4700: (put_var_into_stack): Allocate stack slot in fn the variable is in.
4701:
4702: * stmt.c (put_var_into_stack): If variable-size object is nonlocal,
4703: put the pseudo with its address into the stack.
4704:
4705: * calls.c: New file, split out from expr.c.
4706: (expand_call): Pass static chain if fn wants it.
4707:
4708: * Make put_var_into_stack handle vars of containing function.
4709: * stmt.c (put_var_into_stack): Find the rtl chains for the
4710: function that the variable belongs to.
4711: (fixup_var_refs): New args FIRST_INSN, STACK and RTL_EXPS.
4712:
4713: * Make DECL_CONTEXT the function a var is in, and set it right away.
4714: * c-decl.c (store_parm_decls): Use DECL_RESULT, not DECL_CONTEXT,
4715: as the flag for duplicate names or missing names.
4716: * c-decl.c (start_function): Don't set current_function_decl
4717: till after calling pushdecl.
4718: * c-decl.c (pushdecl): Set DECL_CONTEXT to current_function_decl.
4719: (poplevel): Used to set it here, to the LET_STMT. Don't.
4720: * stmt.c (init_function_start): Test for a FUNCTION_DECL in
4721: DECL_CONTEXT, not for a LET_STMT.
4722:
4723: * c-parse.y (primary <- identifier): Set TREE_NONLOCAL if appro.
4724: Also call mark_addressable.
4725:
4726: * stmt.c (expand_function_start): Store static chain into stack frame.
4727: Fetch static chains of containing functions into pseudos.
4728: (lookup_static_chain): Moved here; and really does something.
4729: * expr.c (expand_expr): Handle nonlocal variable.
4730: * explow.c (fix_lexical_addr): New function.
4731:
4732: * out-i386.c (fp_pop_int): Use %L0 in fistp insn.
4733:
4734: * global-alloc (find_reg): Fix typo marking new hard reg conflicts.
4735:
4736: * stmt.c (pushcase, pushcase_range, expand_end_case):
4737: When warning about insns at start of case, don't mind NOTEs.
4738:
4739: * local-alloc.c (combine_regs):
4740: Transfer all pseudos from SREG's old qty to its new qty.
4741:
4742: * Support nested functions:
4743: * stmt.c (push_function_context, pop_function_context): New functions.
4744: * tree.c (save_tree_status, restore_tree_status): New functions.
4745: * stor-layout.c (save_storage_status, restore_storage_status): Ditto.
4746: * expr.c (save_expr_status, restore_expr_status): Ditto.
4747: * emit-rtl.c (save_emit_status, restore_emit_status): Ditto.
4748: * c-decl.c (push_c_function_context, pop_c_function_context): Ditto.
4749: (start_function, finish_function): New arg NESTED.
4750: * c-parse.y (nested_function, notype_nested_function): New nonterms.
4751: (decl): New alternative to use them.
4752:
4753: * tree.h: Declare lineno.
4754: * c-decl.c (finish_function): Don't expect lineno as arg.
4755: * c-parse.y (fndecl, *nested_function): Don't pass it.
4756:
4757: * expr.c (init_expr, expand_call): Delete may_call_alloca.
4758: * tm-m88k.h, tm-sparc.h, tm-spur.h: Use current_function_calls_alloca.
4759: * tm-mips.h: It wasn't really used; delete its declaration.
4760:
4761: Mon Oct 2 16:26:33 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4762:
4763: * reload1.c (emit_reload_insns): Reject any OLDEQUIV that is
4764: in use in any other reload of this insn.
4765:
4766: * expr.c (expand_call): Don't put on notes for const functions
4767: if there aren't real insns to hold them.
4768:
4769: Sun Oct 1 19:50:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4770:
4771: * integrate.c (expand_inline_function): Handle PARALLEL in CALL_INSNs
4772: when setting follows_call.
4773:
4774: * mips.md (call_value): Change to a straightforward define_insn
4775: with just one action--no PARALLEL.
4776:
4777: * i860.md (pfeq, pfgt and pfle patterns): Add f0 as 3rd arg.
4778:
4779: * integrate.c (save_for_inline): Don't delete NOTE_INSN_FUNCTION_END.
4780:
4781: * c-parse.y (simple_if): Return $$ as value of stmt_count.
4782: (stmt (if statement)): Warn if $$ was not incremented in the body.
4783: (stmt (else statement)): Likewise.
4784: (stmt): All alternatives except null statement increment stmt_count.
4785:
4786: Fri Sep 29 08:56:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4787:
4788: * regclass.c (reg_class_record): If move between CLASS and GENERAL_REGS
4789: is costly, charge that cost to GENERAL_REGS and its subclasses.
4790: * tm-alliant.h, tm-m68k.h (REGISTER_MOVE_COST): New macro.
4791:
4792: * regclass.c (regclass): When a reg is a parm equiv to a stack slot,
4793: decrease its memcost, since the insn to load it would go away.
4794:
4795: * global-alloc.c (find_reg): Rewrite two-pass hard reg preference code.
4796: Uses regs_used_so_far to avoid allocating a reg not used elsewhere
4797: in the first pass. Also updates regs_used_so_far.
4798: (global_alloc): Initialize regs_used_so_far.
4799:
4800: * tm-next.h (LINK_SPEC): Typo for -Z option. Don't pass -M option
4801: to ld, since that is for cpp.
4802:
4803: * Support -MD and -MMD options.
4804: * gcc.c (default_compilers): Pass them to cpp in special way.
4805: Don't inhibit compilation for them, only for -M and -MM.
4806: * cccp.c (main): Handle them like -M and -MM except take arg
4807: which is file name to write deps in.
4808:
4809: * toplev.c: #if 0 around everything for GDB_DEBUG.
4810: * symout.c: File removed from distribution.
4811: * Makefile.in: Don't try to compile or link it.
4812:
4813: * tm-hp9k320.h (ASM_FILE_START): Output a `version' pseudo-op.
4814: [! HPUX_ASM] (ASM_SPEC): Don't use the -V option. Recognize -mc68000.
4815: (CALL_USED_REGISTERS): Redefinition deleted. HPUX 6.5 doesn't need it.
4816: * tm-hp9k310.h, tm-hp9k310g.h: New files.
4817:
4818: Thu Sep 28 12:57:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4819:
4820: * stmt.c (pushcase, pushcase_range): Warn if code was emitted inside
4821: case stmt before 1st label is seen.
4822: (expand_start_case): New arg is string to use in that warning.
4823: (struct nesting): New fields printname and seenlabel.
4824: * c-typeck.c (c_expand_start_case): Pass new arg to expand_start_case.
4825:
4826: * gcc.c: Can now read compilation specs, and asm_spec (etc), from file.
4827: (cpp_spec, asm_spec, etc.): New variables, initted to corresp. macros.
4828: (do_spec_1, validate_all_switches): Use the variables, not the macros.
4829: (link_command_spec): New name for old link_spec.
4830: (compilers, n_compilers): Now a pointer, with size of vector ptd to.
4831: (default_compilers): New name for old `compilers' vector.
4832: (read_specs): Given file name, read specs and add to `compilers'.
4833: Also set cpp_spec, asm_spec, etc.
4834: (skip_whitespace): New subroutine.
4835: (main): Initialize `compilers' from `default_compilers'.
4836: Find a specs file and call read_specs.
4837: Search thru `compilers' from back to front.
4838: * Makefile.in (install): Use gcc -dumpspecs to write a specs file.
4839:
4840: * Support multiple installed compilers; find them by
4841: target machine and version.
4842: (STANDARD_EXEC_PREFIX): Change to `.../gcc/'.
4843: (standard_exec_prefix_1): Change to `.../gcc/'.
4844: (process_command): Options -b and -V set spec_machine, spec_version.
4845: Option -dumpspecs writes specs file to define cpp_spec, asm_spec, etc.
4846: Option -dumpversion writes version number.
4847: (main): Set machine_suffix from spec_machine and spec_version.
4848: * Makefile.in (libsubdir): New variable, made from libdir.
4849: (gcc.o): Define DEFAULT_TARGET_MACHINE macro in compilation.
4850: Change value of STANDARD_EXEC_PREFIX as above.
4851: (cccp.o): Use libsubdir.
4852: (install): Install files under $(libsubdir), after making that dir.
4853:
4854: * reload.c (decompose): Handle case of pseudo with no hard reg.
4855:
4856: Wed Sep 27 01:20:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4857:
4858: * global-alloc.c: #if 0 handling of REG_NO_CONFLICT notes.
4859:
4860: * c-typeck.c (build_c_cast): Implement cast to union type.
4861:
4862: * Edit the makefile automatically when necessary.
4863: * config.gcc: Produce Makefile by editing Makefile.in with sed.
4864: * Makefile.in: New name for file `Makefile'.
4865: Comments on editing the file deleted.
4866: * config/make-*: Various files are inserted by sed into Makefile.
4867:
4868: * Provide a way for languages to control printing of function names.
4869: * toplev.c (error, fatal, announce_function, etc.):
4870: Use value of decl_printable_name to compute what name to print.
4871: * stmt.c (init_function_start): Likewise.
4872: * toplev.c (main): Init that variable.
4873: (decl_name): New function, used by default.
4874:
4875: * explow.c (round_push): Fix typo: return fast if ALIGN is 1.
4876:
4877: * flow.c (dump_flow_info): Delete excess arg to fprintf.
4878: * gcc.c (fatal): Delete excess arg to delete_temp_files.
4879:
4880: * expr.c (convert_move): Handle absence of integer truncate insns
4881: by copying value to a reg (and then using subreg).
4882:
4883: * final.c (final_start_function): Do leaf-function register renumbering
4884: if that is defined for this machine.
4885: (leaf_renumber_regs, only_leaf_regs_used, leaf_function_p): New fns.
4886:
4887: * varasm.c (in_text_section): New function.
4888: * tm-3b1.h (ASM_OUTPUT_SKIP): Use that.
4889:
4890: * stmt.c (case_index_expr_type): New function.
4891:
4892: * c-parse.y (maybe_attribute): Don't fail to return a value.
4893:
4894: Tue Sep 26 02:40:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4895:
4896: * Do auto-increments for hard regs.
4897: * flow.c (mark_used_regs): Do set reg_next_use for hard regs.
4898: When making an auto-increment for a hard reg, don't mess with
4899: reg_n_refs or reg_n_sets.
4900: (try_pre_increment_1): Likewise.
4901:
4902: * gcc.c (compilers): -undef inhibits predefined symbols.
4903:
4904: * combine.c (subst): In case EQ, prefer ZERO_EXTRACT, not SIGN_EXTRACT.
4905: * vax.md (jbs, jbc patterns): Write with ZERO_EXTRACT.
4906: * m88k.md: Likewise.
4907:
4908: * Merge C++ changes in stmt.c:
4909: * Set up an obstack, stmt_obstack.
4910: (ALLOC_NESTING): Allocate a `struct nesting' on that. Callers changed.
4911: (POPSTACK): Use the obstack.
4912: (init_stmt): New fn: init the obstack.
4913: (any_pending_cleanup): New fn.
4914: (expand_start_bindings): Leave outer_cleanups 0 if nothing in it.
4915: (expand_end_bindings): Preserve some global vars around cleanups.
4916: After cleanups, if no stack level to restore, do pending pops.
4917: (fixup_cleanups): Do pending pops after the cleanups.
4918: (expand_start_case): Don't output a NOTE if already have one.
4919: (assign_parms): Speed up sizetree computations in common case.
4920: (init_function_start): Use lang_printable_name for current_function_name.
4921: (expand_function_end): Don't set REG_FUNCTION_VALUE_P
4922: for a pseudo reg used to copy into the real return.
4923: * toplev.c (compile_file): Call init_stmt.
4924:
4925: * c-typeck.c (commontype): If one arg is error_mark_node, return other.
4926:
4927: Mon Sep 25 12:13:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4928:
4929: * optabs.c (expand_binop): Handle boolean ops on >SImode with
4930: several one-word insns. Put out REG_EQUAL and REG_NO_CONFLICT notes.
4931: * global-alloc.c (global_conflicts): For each insn, record
4932: in no_conflict_pairs all the REG_NO_CONFLICT notes of the insn.
4933: (record_one_conflict): Don't mark a conflict between such a pair.
4934: * local-alloc.c (block_alloc): Do combine_regs on the sequences
4935: made by expand_binop for multi-word boolean ops.
4936: (combine_regs): New arg ALREADY_DEAD is 1 if UREG died prior to INSN.
4937: (no_conflict_p): New subroutine.
4938: * combine.c (try_combine): Move REG_NO_CONFLICT notes like REG_INC.
4939: * flow.c (life_analysis): Don't delete no-op moves
4940: if they carry REG_EQUAL notes. These insns are needed later.
4941: * reload.c (find_dummy_reload): Use actual operands (which may be
4942: subregs) for most purposes, including checking for overlap.
4943: (hard_reg_set_here_p): Handle a range of regnos, not just one.
4944:
4945: * loop.c (move_movables): Use special techniques to move regs
4946: used for zero-extension. Don't combine matching regs; instead,
4947: just record them in pairs in regs_may_share.
4948: * global-alloc.c (global_alloc): Digest regs_may_share into a
4949: vector, reg_may_share. Then assign matching regs the same allocno.
4950: (global_alloc): Initialize allocno_n_refs, allocno_live_length,
4951: allocno_calls_crossed.
4952: (allocno_compare): Use those new vectors; don't use allocno_reg.
4953: (find_reg): Use those new vectors.
4954: Assign hard reg to all the pseudos that share the allocno.
4955:
4956: * jump.c (jump_optimize): Two new cases simplify jumping to or
4957: falling into a test-and-branch after setting the register being tested.
4958: * jump.c (get_label_before, get_label_after): New functions.
4959: (do_cross_jump): Use get_label_before.
4960:
4961: Sun Sep 24 00:21:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
4962:
4963: * gnulib2.c (__fixunsdfsi): Defined here, not in gnulib.c.
4964: * Makefile (LIBFUNCS, LIB2FUNCS): Corresponding change.
4965:
4966: * tm-i860.h (SDB_DEBUGGING_INFO): Define this, not SDB_...
4967:
4968: * gcc.c (link_spec): Don't specify -lg.
4969: * tm-alliant.h, tm-convex.h, tm-hp9k3bsd.h, tm-isi68.h, tm-news.h
4970: * tm-pyr.h, tm-seq386.h, tm-sequent.h, tm-sparc.h, tm-spur.h
4971: * tm-sun2.h, tm-sun3.h, tm-sun386i.h, tm-tahoe.h, tm-vax.h:
4972: Make LIB_SPEC link with -lg.
4973: * tm-harris.h, tm-vaxv.h, tm-vms.h: Turn off inherited LIB_SPEC.
4974:
4975: * recog.h (insn_*): Declare these tables `const'.
4976: (const): Define this as nothing, if not __STDC__.
4977: * expr.h (insn_gen_function): Declare `const'.
4978: (const): Define this as nothing, if not __STDC__.
4979: * genoutput.c (main): In insn-output.c, don't define `const' if
4980: already defined.
4981:
4982: * recog.c (offsettable_nonstrict_memref_p): New function.
4983: * stmt.c (fixup_var_refs_1): Use that, not offsettable_memref_p.
4984: * reload.c (find_reloads): Likewise.
4985:
4986: * integrate.c (save_for_inline): Set in_nonparm_insns when arrive
4987: at the first nonparm insn.
4988: (copy_for_inline): Set TREE_READONLY only if in_nonparm_insns.
4989:
4990: * Makefile (float.h): Make hard-params an ordinary dependency.
4991:
4992: * c-decl.c (poplevel): When popping a local extern decl,
4993: save the TREE_USED bit in the identifier.
4994: * toplev.c (compile_file): Check that, printing "not used" warnings.
4995:
4996: * c-parse.y (init_lex): Discard undesired reserved words from table.
4997: (yylex): No need to check for them at lookup time.
4998:
4999: * tree.c (make_node): Always put PARM_DECL in saveable_obstack.
5000:
5001: * toplev.c (floor_log2, exact_log2): Rewritten for speed.
5002:
5003: * tree.c (listify): New function.
5004:
5005: * c-typeck.c (convert_for_assignment): New args for function being
5006: called and argument number. Used in error messages.
5007: (actualparameterlist): Pass those args usefully.
5008: (wrn_for_assignment): New function.
5009:
5010: * loop.c (general_induction_var): Handle give copied from a biv.
5011:
5012: * i386.md (div*i3, udiv*i3): New patterns.
5013: (divmodhi4, udivmodhi4): New patterns.
5014:
5015: * combine.c (subst):
5016: Simplify (sign_extend:M (subreg:N (lshiftrt:M REG CONST) 0))
5017: when REG was assigned from (zero_extend:M (any:N ...)).
5018: Make the similar (zero_extend:M ...) case share code.
5019:
5020: * expr.c (store_field): A frame-pointer-relative address is stable.
5021:
5022: * expr.c (expand_expr): Effectively pass on IGNORE for 2nd op of comma.
5023:
5024: Sun Sep 24 00:21:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5025:
5026: * Version 1.36 released.
5027:
5028: * genextract.c (main): Pass `insn' as arg to `fatal_insn_not_found'.
5029:
5030: * tahoe.md (casel patterns): Use %@ for operand of .align.
5031: * tm-tahoe.h (PRINT_OPERAND): %@ prints `1'.
5032: * tm-harris.h (PRINT_OPERAND): Redefine it; %@ prints `2'.
5033:
5034: * config.gcc (decstation): New entry.
5035:
5036: * tm-harris.h: New file, using tm-tahoe.h.
5037:
5038: * tm-decstatn.h, tm-mips-bsd.h, tm-mips-sysv.h: New files.
5039:
5040: Sat Sep 23 00:28:14 1989 Alain Lichnewsky (lich at glenlivet)
5041:
5042: * added -Zxxx flag in tm-mips.h. (-Z stands for systype)
5043:
5044: used as -ZSYSV or -ZBSD43 on RISC_OS. I suppose
5045: that at somepoint -ZPOSIX might be required for Ultrix.
5046:
5047: * changed command issued to loader to set -systype and to get
5048: crt1 crtn instead of crt0.
5049:
5050: * changed predefines for cpp to agree with RISC-OS
5051:
5052: * tm-mips.h checks for machine type ( defined(ultrix) == DECSTATION)
5053: so that user does not have to go in and change tm-mips.h anymore
5054:
5055: * cpp defines mips host_mips unix and SYSTYPE_SYSV
5056: or SYSTYPE_BSD43.
5057:
5058: Fri Sep 22 00:31:29 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5059:
5060: * pyr.md (andsi3): Flush spurious paren.
5061:
5062: * Makefile (hard-params): Don't use LIBS or LIBDEPS.
5063:
5064: * rtl.c (init_rtl):
5065: Use malloc to allocate the string for format of CONST_DOUBLE.
5066: Don't fail to store in rtx_format.
5067:
5068: Thu Sep 21 00:33:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5069:
5070: * print-tree.c (dump): Move decl of P in REAL_CST case.
5071:
5072: * fold-const.c (fold): For ABS_EXPR, handle REAL_IS_NOT_DOUBLE.
5073:
5074: * c-convert.c (convert_to_real): Use REAL_VALUE_ATOF to make 0.
5075:
5076: * mips.md (movdi): Handle constant with or without WORDS_BIG_ENDIAN.
5077: For alternative 2, output just 2 store insns, not 3.
5078:
5079: * dbxout.c (dbxout_symbol): Optionally go to .data for
5080: a static file-scope variable.
5081: * tm-vax.h: Define DBX_STATIC_STAB_DATA_SECTION to request this.
5082:
5083: * varasm.c (output_constant, force_const_mem):
5084: ASM_OUTPUT_DOUBLE_INT now takes rtx as argument.
5085:
5086: * gvarargs.h [__NeXT__]: Undefine macros defined by stdardg.h.
5087: Define _VARARGS_H.
5088:
5089: * stddef.h (size_t): Don't define it if _SIZE_T macro is defined.
5090: (NULL): Undef any previous defn.
5091:
5092: * cexp.y (NULL): Don't define if already defined.
5093:
5094: * emit-rtl.c (force_next_line_note): New function.
5095: * stmt.c (expand_function_start): Call that just before returning.
5096:
5097: Wed Sep 20 01:22:16 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5098:
5099: * c-parse.y (asm_clobbers):
5100: Allow string concatenation: call combine_strings.
5101:
5102: Mon Sep 18 00:04:06 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5103:
5104: * expr.c (expand_call): If calling const function, don't defer
5105: pops for this call.
5106:
5107: * c-parse.y (yylex): When float constant ends in `f',
5108: actually truncate to a single-float.
5109:
5110: Sun Sep 17 01:36:43 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5111:
5112: * gcc.c (SWITCH_TAKES_ARG): -A takes an arg.
5113: (link_spec): Inhibit start files when -A.
5114:
5115: * convex.md (call, call_value): Supply dummy arg to RETURN_POPS_ARGS.
5116:
5117: * gnulib2.c (__fixunsdfdi): After removing top half, A can be neg.
5118: (__cmpdi2, __ucmpdi2): Was misusing macros HIGH and LOW--
5119: use .s.high and .s.low to extract words from long_long.
5120:
5121: * Makefile (gnulib2): Run `./gcc'.
5122:
5123: * Makefile (float.h): Use `make', not `$(MAKE)'.
5124: (hard-params.o): Use `$(srcdir)' in deps as in commands.
5125:
5126: * out-tahoe.c (output_move_double): Handle constant operand 1.
5127:
5128: Sat Sep 16 01:15:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5129:
5130: * reload1.c (emit_reload_insns): Put death note for input reload reg
5131: even if reload was inherited.
5132:
5133: * out-i860.c (output_block_move): Typo loading size of block.
5134:
5135: * m68k.md (dbra patterns): Do CC_STATUS_INIT.
5136:
5137: * cse.c (fold_rtx): Check GET_MODE_CLASS before floating negate.
5138:
5139: Fri Sep 15 00:39:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5140:
5141: * combine.c (subst): Don't combine (subreg (mem))
5142: if subreg's mode is wider than mem's mode.
5143:
5144: Thu Sep 14 04:33:51 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5145:
5146: * Makefile (clean): Delete temp files used in making gnulib.
5147:
5148: * tm-next.h (LINK_SPEC): Pass -Z and -seglinkedit options.
5149:
5150: Tue Sep 12 01:06:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5151:
5152: * stor-layout.c (layout_type): Ignore MAX_FIXED_MODE_SIZE for ints.
5153:
5154: * mips.md (cmpsi + bleu peephole): Should output unsigned insn.
5155:
5156: * expmed.c (store_bit_field, extract_bit_field): If loading mem
5157: into reg for bit field insn, don't use a larger mode than insn wants.
5158:
5159: * Makefile (stamp-gnulib2): Depend on gcc, cc1, cpp to avoid
5160: wrong order of making when parallel.
5161:
5162: * Makefile (float.h): Do use $(MAKE) to run recursive make.
5163:
5164: Mon Sep 11 00:49:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5165:
5166: * cccp.c (main): Test for missing arg after -o, etc.
5167:
5168: * tm-next.h: Nearly completely new.
5169:
5170: * gcc.c (SWITCH_TAKES_ARG, WORD_SWITCH_TAKES_ARG): Move after config.h.
5171:
5172: * cccp.c: Cast some args to strcpy and strcat.
5173:
5174: * genoutput.c (error): Declare arg S.
5175:
5176: * tm-pyr.h, pyr.md, out-pyr.c, xm-pyr.h: New files.
5177: * config.gcc: New item for pyr.
5178:
5179: * gvarargs.h: If __pyr__, use va-pyr.h.
5180:
5181: Sun Sep 10 00:48:43 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5182:
5183: * reload1.c (inc_for_reload): Really return the first of the insns.
5184:
5185: * stor-layout.c (build_int): Memoize size nodes for sizes <= 32.
5186:
5187: * loop.c (check_dbra_loop): Don't reverse a biv that is used
5188: in between its update and the loop endtest insn.
5189:
5190: Sat Sep 9 02:10:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5191:
5192: * stor-layout.c (genop): Don't use `combine' for nonexplicit constants.
5193: Handle some identity elements, etc., directly.
5194: (layout_basetypes): Function deleted.
5195: (layout_record): Ignore any TYPE_DECLs in the fieldlist.
5196: Don't do PCC_BUTFIELD_TYPE_MATTERS hack on field with ERROR_MARK type.
5197: (layout_union): Delete error check for base types.
5198: Ignore any TYPE_DECLs in the fieldlist.
5199: (layout_type): Copy layout info directly into all variants of type.
5200: Delete unused local `x'.
5201:
5202: * mips.md (movdi): Handle constant source operand.
5203: (movsi): Some output code moved to output_load_immediate.
5204: * out-mips.c (output_load_immediate): New function.
5205:
5206: * config.gcc (iris): Use tm-iris.h and xm-iris.h.
5207:
5208: * integrate.c (copy_for_inline): Copy all nonconstant MEM addresses.
5209:
5210: * tm-3b1.h (ASM_OUTPUT_SPACE): New override defn, to output explicit
5211: bytes of 0 if in text segment.
5212:
5213: Fri Sep 8 19:15:08 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5214:
5215: * combine.c (try_combine): Don't do i3dest stuff if i3 isn't a SET.
5216:
5217: Thu Sep 7 00:16:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5218:
5219: * integrate.c (function_cannot_inline_p): Fn is "not even close"
5220: only if > 3 * max_insns.
5221:
5222: * toplev.c (fatal_insn_not_found): New fn.
5223: * genextract.c (main): Make insn_extract call that fn.
5224:
5225: * integrate.c (expand_inline_function): Don't abort about bad offset
5226: in a parm whose type is error_mark_node.
5227: Make another syntax level to hold parm destructors.
5228:
5229: * tm-mips.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE):
5230: Increment push_loc after, not before, each reg save or restore.
5231: When storing reg 9 or 29, use offset tsize-4.
5232: Make tsize larger by 4 initially.
5233: (STARTING_FRAME_OFFSET): -8, not -4.
5234:
5235: * gcc.c (choose_temp_base): Make use of TMPDIR and P_tmpdir
5236: if they exist.
5237:
5238: * toplev.c, gcc.c, cccp.c, gen*.c (fancy_abort):
5239: New function which can be used to replace `abort'.
5240:
5241: * toplev.c (main): Save argv, argc in save_argv, save_argc.
5242:
5243: * jump.c (delete_insn): Always advance NEXT across deleted insns,
5244: in case not optimizing. Fixes setting current_function_returns_null.
5245:
5246: * symout.c: Include stddef.h with <...>.
5247:
5248: Wed Sep 6 00:39:35 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5249:
5250: * gcc.c (find_exec_file): Was using `argbuf[0]' where wanted `prog'.
5251:
5252: * combine.c (combine_instructions): Dont call record_dead_and_set_regs
5253: if insn has become a NOTE.
5254:
5255: * reload.c (combine_reloads): Update reload_when_needed.
5256:
5257: * jump.c (delete_insn): If delete label on ADDR_VEC, delete table too.
5258: (jump_optimize): If ADDR_DIFF_VEC label has 1 ref, delete it and table.
5259:
5260: * gunlib2.c (__fixunsdfdi, __floatdfdi): Make the long long,
5261: and/or its two halves, unsigned.
5262:
5263: * reload1.c (reload): When setting double_reg_address_ok,
5264: require it to be offsettable.
5265: * out-sparc.c (output_fp_move_double): Now safe to use std
5266: for all reg+reg addresses.
5267:
5268: * vax.md: Add another simplified-casesi pattern for operand 0 constant.
5269:
5270: * cse.c (fold_rtx): Don't truncate VAL at end if WIDTH is 0.
5271: Don't alter WIDTH for that purpose based on the operands.
5272:
5273: * stmt.c (warn_if_unused_value): && or || is ok if 2nd op has effect.
5274:
5275: * c-parse.y (ALIGNOF unary_expr): Find a larger value if possible.
5276:
5277: * reload.c (combine_reloads): Don't combine an output address reload.
5278: (find_reloads): Call combine_reloads after setting reload_when_needed.
5279: (find_reloads_address): Update OPERAND if copy the operand.
5280:
5281: * cccp.c (macroexpand): Missing arg no error in 1-arg macro if -trad.
5282:
5283: Tue Sep 5 14:12:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5284:
5285: * reload.c (find_dummy_reload): Don't use the output reg if it is
5286: a fixed reg which can overlap with other regs.
5287:
5288: * cse.c (exp_equiv_p): Two vectors must have same length.
5289:
5290: * tree.def (WITH_CLEANUP_EXPR): Print-name string was wrong.
5291:
5292: * optabs.c (expand_fix): Undo previous change (unsigned conversion).
5293: It doesn't work.
5294:
5295: * gcc.c: Pass -i option to cpp. It takes an arg.
5296:
5297: * cccp.c (cplusplus_include_defaults) [VMS]: Typo in array indices.
5298:
5299: * Makefile (gnulib): Create it in tmpgnulib, then rename at the end.
5300:
5301: * i860.md (movdi from constant pattern): Fix `st' opcode typos.
5302:
5303: * Makefile (hard-params*): Use CCLIBFLAGS, not CFLAGS.
5304:
5305: Fri Sep 1 03:43:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5306:
5307: * tm-i386gas.h (ASM_OUTPUT_ALIGN): .align arg isn't a log, in gas.
5308: (ASM_OUTPUT_ALIGN_CODE): Align labels, etc. to 4-byte boundary.
5309:
5310: * integrate.c (save_for_inline): Delete NOTE_INSN_DELETED notes.
5311:
5312: * Makefile (clean): Delete dbr and jump2 dumps.
5313:
5314: * Makefile (gnulib, gnulib2): Compile in main dir, not libtemp subdir.
5315: This avoids trouble with -I options, etc.
5316:
5317: Thu Aug 31 15:07:19 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5318:
5319: * reload1.c (emit_reload_insns):
5320: Be specific moving REG_DEAD notes to an output reload.
5321: Sometimes move them to output-operand-address reloads.
5322:
5323: * out-sparc.c (output_fp_move_double): Very cautious about std.
5324: Use it only for something visibly aligned, or for an array element.
5325:
5326: * cccp.c (main) [VMS]: Remove dirs and extension from PROGNAME.
5327: (pfatal_with_name) [VMS]: Return VMS system call error code as status.
5328: (cplusplus_include_defaults) [VMS]: Add GNU_GXX_INCLUDE.
5329:
5330: * xm-vms.h (FATAL_EXIT_CODE): Now (44 | 0x10000000).
5331:
5332: * expr.c (do_store_flag): Allow more values of STORE_FLAG_VALUE.
5333:
5334: * gnulib2.c (__fixunsdfdi): Explicitly cast doubles to `long int'
5335: to avoid infinite recursion.
5336:
5337: Wed Aug 30 13:28:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5338:
5339: * loop.c (skip_consec_insns): Skip NOTEs.
5340:
5341: * loop.c (general_induction_var): If G or V is a nonreplaceable giv,
5342: give up. If G is allocated here, consider it replaceable.
5343:
5344: * stupid.c: Make uid_suid, reg_where_born and reg_where_dead
5345: vectors of ints, not short.
5346:
5347: Tue Aug 29 00:21:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5348:
5349: * tm-iris.h: Fix typo in formfeed char.
5350:
5351: * out-i860.c (singlemove_string): Add missing `.l' to `st', `ld'.
5352:
5353: * loop.c (general_induction_var): Don't set G from 2nd op. of MINUS,
5354: since that would negate the result.
5355:
5356: Mon Aug 28 00:16:36 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
5357:
5358: * dbxout.c (dbxout_symbol): When we need a pointer type, don't
5359: record it in TYPE_POINTER_TO, lest it not live as long as its target.
5360:
5361: * tm-hp9k320.h (CPP_PREDEFINES): Delete __hp9000s300 and _HPUX_SOURCE.
5362:
5363: * Makefile (gnulib): Deleted stamp-gnulib2 in wrong dir.
5364: (hard-params.o): Copy it into current dir before compiling.
5365: (STAGESTUFF): Include the stamp-*.[ch] files.
5366:
5367: Sun Aug 27 13:59:39 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
5368:
5369: * out-i860.c (output_size_for_block_move): Typo in CC_KNOW_HI_R31.
5370:
5371: * integrate.c (expand_inline_function): Ignore insns to set value reg
5372: if we don't want the value.
5373:
5374: * varasm.c (make_function_rtl, make_decl_rtl): Use DECL_ASSEMBLER_NAME.
5375:
5376: * Makefile (stamp-gnulib2): Don't explicitly delete old members,
5377: just replace them.
5378:
5379: * m68k.md, alliant.md (trunchiqi): Use movew if moving from memory
5380: or from a const_int.
5381:
5382: * integrate.c (expand_inline_function): Set first_parm_offset
5383: later on, after computing the args, in case those args
5384: contain inline function calls.
5385:
5386: * alliant.md (movqi): Like recent change in m68k.md.
5387:
5388: Sat Aug 26 00:26:03 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
5389:
5390: * tm-hp9k320.h (CPP_PREDEFINES): Take out m68k and mc68000.
5391: * tm-news.h (CPP_PREDEFINES): Add mc68000.
5392:
5393: Fri Aug 25 15:37:35 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
5394:
5395: * optabs.c (expand_fix): Can convert to unsigned int
5396: by subtracting 2**(N-1), converting to signed, and adding 2**(N-1).
5397:
5398: * reload.c (find_reloads_address): For out-of-range stack slot,
5399: reload the displacement into a reg.
5400: (find_reloads_toplev): For subreg of a reg with a reg_equiv_address,
5401: turn the whole thing into a memref.
5402:
5403: Thu Aug 24 14:07:03 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
5404:
5405: * c-decl.c (grokdeclarator): If function is declared `extern inline',
5406: set current_extern_inline.
5407: (start_function): In that case, set TREE_EXTERN in function decl.
5408: * toplev.c (rest_of_compilation): In that case, don't really compile.
5409: (compile_file): Don't output such functions at the end either.
5410:
5411: * c-typeck.c (build_function_call): Do set NAME if we have one.
5412:
5413: * Prevent any variability in results of qsort.
5414: * stupid.c (stupid_reg_compare): Compare by regno as last resort.
5415: * global-alloc.c (allocno_compare): Same idea.
5416: * local-alloc.c (qty_compare_1): Same idea.
5417: * reload1.c (hard_reg_use_compare, reload_reg_class_lower): Same idea.
5418:
5419: * cccp.c (macroexpand): If read one arg, but it's whitespace,
5420: consider that 0 args for checking number of args.
5421: Improve plurals in error messages.
5422:
5423: * expr.h (inhibit_defer_pop): New name for current_args_size,
5424: now declared here.
5425: (NO_DEFER_POP, OK_DEFER_POP): Moved here.
5426: * expr.c: Names related to current_args_size renamed.
5427: (clear_current_args_size): Deleted.
5428: * stmt.c (expand_function_start): Init inhibit_defer_pop here.
5429:
5430: * stmt.c (expand_start_stmt_expr): Do NO_DEFER_POP.
5431: (expand_end_stmt_expr): Do OK_DEFER_POP, and don't do deferred pops.
5432:
5433: * Makefile (c-parse.tab.c): Pass -o option to Bison.
5434:
5435: Wed Aug 23 23:14:06 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
5436:
5437: * expmed.c (store_bit_field, extract_bit_field):
5438: Use GET_MODE_WIDER_MODE to scan possible modes for bestmode.
5439:
5440: * Makefile (stamp-gnulib2): Discard error messages from `ar d'.
5441:
5442: Tue Aug 22 00:31:51 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
5443:
5444: * final.c (output_source_line): In COFF, don't output `.ln 0'.
5445:
5446: * Makefile (stamp-gnulib2): Depend on gnulib. For parallel make.
5447:
5448: * stmt.c (uninitialized_vars_warning): Don't crash if DECL_RTL is 0.
5449:
5450: * i386.md (truncdfsf2): Pay attention whether stack top is dead.
5451:
5452: Mon Aug 21 22:02:40 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
5453:
5454: * reload1.c (choose_reload_regs): Don't use regno uninitialized,
5455: in the code that does find_equiv_reg.
5456:
5457: Sun Aug 20 00:06:47 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
5458:
5459: * m68k.md (movqi): Was outputting bad code for areg->mem and mem->areg.
5460:
5461: * explow.c (memory_address): Handle a hard reg in wrong reg class.
5462:
5463: * stmt.c (expand_function_end): Set REG_FUNCTION_VALUE_P in return
5464: reg when returning address of structure value block.
5465:
5466: * integrate.c (save_for_inline): Preserve integrated bit on insns.
5467:
5468: Sat Aug 19 14:20:07 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
5469:
5470: * combine.c (subst): Don't change (subreg:M (mem:N ...)) to
5471: (mem:M ...) if address is mode-dependent.
5472:
5473: * config.gcc: Copy and alter Makefile for any srcdir except `.'.
5474: In that case, make a .gdbinit as well.
5475:
5476: * sparc.md (andcbsi3, iorcbsi3, xorcbsi3): These are not commutative.
5477:
5478: * vax.md (cmpv and cmpzv patterns): Use COMPARE, not MINUS.
5479:
5480: Fri Aug 18 12:24:52 1989 Richard Stallman (rms at hobbes.ai.mit.edu)
5481:
5482: * alliant.md (movqi): Change move to mov in assembler code.
5483:
5484: * integrate.c (expand_inline_function):
5485: Handle args passed in regs and copied to slots reached via arg ptr.
5486:
5487: * out-sparc.c (output_delayed_branch):
5488: Do alter_subreg on operands of delay insn.
5489:
5490: * reload1.c (choose_reload_regs): Look for a reg to share
5491: before one that we won't share.
5492:
5493: * expr.h: Define OPTAB_MUST_WIDEN.
5494: * optabs.c (expand_binop): Handle that case.
5495: * expmed.c (expand_shift): Use that when widening lshift to ashift.
5496:
5497: * optabs.c (emit_cmp_insn): Use CONST0_RTX, not individual vars.
5498:
5499: * gnulib2.c (lsh*di3, ash*di3): Return right away if count is zero.
5500: Otherwise tried to shift by 32.
5501: Also replace constant 32 by something symbolic.
5502:
5503: * final.c (output_source_line): Output line number in COFF
5504: even if wrong file.
5505:
5506: Thu Aug 17 15:16:34 1989 Richard Stallman (rms at hobbes.ai.mit.edu)
5507:
5508: * Makefile (version.o): Make this a target; specify source file.
5509: (obstack.o): Likewise.
5510:
5511: * config.gcc (i860): New alternative.
5512:
5513: * i860.md (movstrsi): Record the alignment as operand 3.
5514: Renumber following (internal) operands.
5515: * out-i860.c (output_block_move): Rewrite as in out-sparc.c.
5516: (output_size_for_block_move): Likewise. And don't
5517: subtract alignment from the size.
5518:
5519: Wed Aug 16 13:27:12 1989 Richard Stallman (rms at hobbes.ai.mit.edu)
5520:
5521: * loop.c (combine_movables): Don't combine zero-extend
5522: registers that live outside the loop.
5523:
5524: * integrate.c (expand_inline_function): Use copy_to_mode_reg
5525: to set up this_struct_value_rtx, to handle sums right.
5526:
5527: * Makefile: Use $(srcdir) in bison output files used as deps.
5528: Supply some missing deps.
5529: (*.info, doc): *.info files go in srcdir.
5530:
5531: Tue Aug 15 00:11:12 1989 Richard Stallman (rms at hobbes.ai.mit.edu)
5532:
5533: * i860.md, tm-i860.h, out-i860.c: New files.
5534:
5535: * c-decl.c (duplicate_decls): Fix bug determining whether NEWDECL
5536: is a definition or just a decl.
5537: Combine code to preserve various things from old definition
5538: through a declaration.
5539:
5540: * config.gcc: Scan all args at beginning, setting variables.
5541: Arg of form -srcdir=... sets srcdir explicitly.
5542: srcdir now doesn't contain a slash, and is used with a slash.
5543:
5544: * Makefile (install): Copy header files and gcc.1 from srcdir.
5545: But copy float.h from current dir. (Remove that from USER_H.)
5546: (various): Use new variable INCLUDES to get the -I options.
5547: Add -I. at the beginning of these.
5548: (gnulib, gnulib2): Likewise, use SUBDIR_INCLUDES.
5549: Also, get source file from srcdir.
5550: Also, depend on $(CONFIG_H).
5551: (alloca.o): Get alloca.c from srcdir.
5552:
5553: * reload1.c (emit_reload_insns): Bug in last change:
5554: don't fail to set this_reload_insn.
5555:
5556: * Makefile (Bison rules): Specify $(srcdir) for target and source.
5557: (Explicit C rules): Specify $(srcdir)/ for source in commands.
5558: Use sed to eliminate `./' in normal case.
5559: (insn-*.c): Use $(srcdir) to run move-if-change.
5560:
5561: * config.gcc: Check . and .. for the sources.
5562: If in .., use that when making links.
5563: Also, copy Makefile, alter srcdir in it, and add a VPATH.
5564:
5565: * stmt.c (expand_end_case): When converting CONST_INT index
5566: to an INTEGER_CST, sign-extend if signed type.
5567:
5568: Mon Aug 14 13:51:08 1989 Richard Stallman (rms at hobbes.ai.mit.edu)
5569:
5570: * c-decl.c (duplicate_decls): Warn for qualifier mismatch
5571: only if pedantic; don't consider it a type mismatch.
5572: Merge the qualifiers of the two decls if the types match.
5573:
5574: * expmed.c (store_bit_field): For insv, memref displacement
5575: always counts in bytes, regardless of unit fetched.
5576: When checking predicate of op0, accept any mode.
5577:
5578: * optabs.c (expand_float): One call to can_float_p had args backwards.
5579:
5580: * loop.c (check_dbra_loop): Set the JUMP_LABEL of the new jump insn.
5581: Increment label's use count rather than storing 2.
5582:
5583: * Makefile: Instead of $<, which fails in certain makes,
5584: use $@ and then substitute in the name with sed.
5585:
5586: * out-sparc.c (output_scc_insn): Handle CC_REVERSED for ordered tests.
5587: Use orcc insns to store the result and set cc's for it.
5588:
5589: * sparc.md (scc combination patterns):
5590: Use operands[0] as basis for recorded cc value.
5591:
5592: * gnulib2.c (floatdidf, fixdfdi, fixunsdfdi): New functions.
5593:
5594: * gnulib.c (floatdidf, fixdfdi, fixunsdfdi): Deleted.
5595: (union longlong, union double_di): Deleted.
5596: (HIGH, LOW): Deleted.
5597: These were deleted because most did not handle full range of DI
5598: and they didn't use the right calling convention for DI.
5599:
5600: Sun Aug 13 13:06:45 1989 Richard Stallman (rms at hobbes.ai.mit.edu)
5601:
5602: * c-typeck.c (comptypes): Qualifiers must match.
5603: (Was already true for scalars.)
5604: Also, array elt qualifiers must match.
5605:
5606: * tm-apollo68.h (STRUCT_VALUE): Make it 0.
5607: (This was done before and lost.)
5608: * out-i386.c (function_epilogue): Use ret $4 to pop structure address.
5609: (This was done before and lost.)
5610:
5611: * out-i386.c (call_top_dead_p): Don't fail to check
5612: the rtx code of the insns themselves.
5613: (This was done before and lost.)
5614:
5615: * out-sparc.c (output_block_move): If align is 8, make it 4.
5616:
5617: * typeclass.h: New file.
5618: * expr.c: Include it.
5619: (expand_builtin): Use those codes in __builtin_classify_type.
5620:
5621: * Makefile (all, lang-c): Reinstall gnulib2.
5622:
5623: * Makefile (gnulib2): Don't give up if `ar d' fails.
5624:
5625: * expr.c (emit_library_call): New 2nd arg NO_QUEUE.
5626: All callers changed to pass it.
5627: * optabs.c (expand_binop, expand_unop): Don't call emit_queue.
5628: Instead, pass 1 for NO_QUEUE to emit_library_call.
5629:
5630: Sat Aug 12 12:05:22 1989 Richard Stallman (rms at hobbes.ai.mit.edu)
5631:
5632: * reload1.c (emit_reload_insns): Decision for where to put input
5633: reload insn is now common to ordinary case and auto-increment.
5634: Likewise, updating these positions afterward.
5635:
5636: * stmt.c (assign_parms): Treat last named arg as nameless.
5637: * expr.c (expand_call): Likewise.
5638:
5639: * explow.c (copy_to_mode_reg): Use force_operand for PLUS or MULT.
5640: (copy_addr_to_reg): Use copy_to_mode_reg.
5641:
5642: * expmed.c (store_bit_field): Handle case where insv rejects memrefs.
5643:
5644: * tm-convex.h (ASM_OUTPUT_ALIGN): Magic to handle the fact
5645: that this is not called when LOG is 0.
5646:
5647: Fri Aug 11 16:39:51 1989 Richard Stallman (rms at hobbes.ai.mit.edu)
5648:
5649: * emit-rtl.c (get_lowpart): For multi-word, in error check,
5650: test the unit size of the containing mode.
5651:
5652: * cccp.c (macroexpand, dump_all_macros): Return void.
5653: (macroexpand): Cast sprintf arg to char*.
5654: (error, warning, error_with_line): Declare first arg char*.
5655:
5656: Thu Aug 10 21:42:13 1989 Richard Stallman (rms at hobbes.ai.mit.edu)
5657:
5658: * expr.c (expand_call):
5659: Use force_operand to copy arithmetic to register.
5660:
5661: * dbxout.c (dbxout_symbol): Go back to N_FUN for const variable.
5662:
5663: * integrate.c (expand_inline_function): Use proper machine mode
5664: for a structure value in memory at address passed by caller.
5665:
5666: Wed Aug 9 15:21:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5667:
5668: * config.gcc: Delete unnecessary variable assignments in case stmt.
5669: (isi68-nfp): New alternative.
5670:
5671: * combine.c (try_combine): Don't substitute for a register
5672: which is being explicitly clobbered.
5673:
5674: * This change was requested for C++.
5675: * varasm.c (decode_reg_name, make_decl_rtl): Arg ASMSPEC now char *.
5676: * toplev.c (rest_of_decl_compilation): Likewise.
5677: * c-decl.c (finish_decl): Change call to rest_of_decl_compilation.
5678:
5679: * tree.h (struct tree_decl): Pack machine_mode into 8 bits.
5680:
5681: * explow.c (memory_address, copy_to_reg):
5682: Use force_operand to copy arithmetic to register.
5683:
5684: * tm-isi68-nfp.h: New file.
5685: * tm-isi68.h: Allow overriding TARGET_DEFAULT, and let that
5686: change CPP_SPEC and LINK_SPEC.
5687: (ASM_FILE_START): No `.globl fltused' if soft-float.
5688:
5689: Tue Aug 8 21:50:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5690:
5691: * varasm.c (const_hash): For constructor, mask TREE_TYPE to HASHBITS
5692: bits and take modulo, so we don't get negative numbers.
5693:
5694: * varasm.c (record_constant_1, compare_constant_1):
5695: Record and compare the width of an integer.
5696:
5697: * varasm.c (assemble_function, assemble_variable, get_or_assign_label):
5698: (force_const_mem): Don't call ASM_OUTPUT_ALIGN if boundary is 1.
5699:
5700: * c-decl.c (duplicate_decls): Consider const and volatile as part of
5701: type when checking for match and when installing new type into OLDDECL.
5702:
5703: * expr.c (do_store_flag): Make sure target fits operand predicate.
5704: Also, omit the AND insn when true-value is 1
5705: and the mode we get is wider than the one we want.
5706:
5707: * genrecog.c (main): Make insn-recog.c include real.h.
5708:
5709: Mon Aug 7 16:58:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5710:
5711: * genemit.c (main): Define `operands' as `emit_operands',
5712: not `recog_operands'.
5713:
5714: * reload1.c (emit_reload_insns): Don't copy back a dead output reg.
5715:
5716: Sun Aug 6 13:56:53 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5717:
5718: * sdbout.c (plain_type_1, sdbout_one_type): Use the main variant.
5719: (sdbout_type_fields): No need to check TREE_ASM_WRITTEN here,
5720: since sdbout_one_type does that.
5721:
5722: * expr.c (do_store_flag): Ensure the CLOBBER doesn't clobber an input.
5723:
5724: * fold-const.c (fold_convert): Attempt to avoid overflow
5725: when converting real to integer. Use unsigned conversion for
5726: low part; always convert as positive and then change sign;
5727: subtract high part before converting low part.
5728: Also, check for real values out of range for chosen int type;
5729: warn and do not convert.
5730:
5731: * tm-hp9k320.h (CPP_SPEC) [not HPUX_ASM]: Don't define mc68000 here.
5732: (CPP_PREDEFINES): Remove mc68k, add m68k and mc68000.
5733: [HPUX_ASM]: Define CPP_SPEC here as in the other case,
5734: but add __HPUX_ASM__ to each alternative.
5735:
5736: * tm-m68k.h (FUNCTION_EPILOGUE): Call new hook FUNCTION_EXTRA_EPILOGUE.
5737: * tm-altos3068.h (FUNCTION_EXTRA_EPILOGUE): Define it.
5738:
5739: * Makefile: Use $< wherever appropriate.
5740: Also put definitions of customization vars before the comments
5741: saying how to override them.
5742:
5743: Sat Aug 5 14:15:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5744:
5745: * i386.md (sne): Typo in opcode name.
5746:
5747: * tree.h (struct tree_identifier): Delete redundant/unused error_locus.
5748:
5749: Fri Aug 4 00:04:10 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5750:
5751: * varasm.c (const_hash, compare_constant_1, record_constant_1):
5752: Compare types only for record constructors, not for array constructors.
5753:
5754: * dbxout.c (dbxout_parms): When outputing parm from home in local slot,
5755: with address from the RTL, don't do big-endian correction on it.
5756:
5757: * c-typeck.c (build_unary_op): Do default conversion for unary +.
5758:
5759: * cccp.c (rescan): Accept comments between macro and its args.
5760:
5761: * c-decl.c (lang_decode_option): -traditional implies writable strings.
5762:
5763: * cccp.c (trigraph_pcp): Make warning msg more accurate.
5764:
5765: * c-typeck.c (c_expand_asm_operands): Delete the default promotion
5766: which was inserted mysteriously since 1.35.
5767:
5768: * global-alloc.c (global_conflicts): Allocate regs_set only once.
5769: Make it twice as big since clobbers are stored twice.
5770:
5771: * sparc.md (block move patterns): Record and use alignment operand.
5772: * out-sparc.c (output_block_move): Get alignment from there.
5773: (output_size_for_block_move): Greatly simplified.
5774:
5775: * tm-i386v.h (PCC_BITFIELD_TYPE_MATTERS): Define it.
5776:
5777: * stor-layout.c (layout_record): Anonymous bitfields don't affect
5778: overall structure alignment, in PCC_BITFIELD_TYPE_MATTERS case.
5779:
5780: * loop.c (strength_reduce): Prevent hard reg from becoming biv or giv.
5781:
5782: * combine.c (subst): Simplify (eq (neg ...) (const_int 0)).
5783:
5784: Thu Aug 3 13:08:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5785:
5786: * cse.c (fold_rtx): For (op var const) special cases, also check
5787: for constant as first argument.
5788:
5789: * c-decl.c (pushtag): For global_binding_level, make permanent nodes.
5790:
5791: * expr.c (do_store_flag): Put the CLOBBER before the comparison.
5792:
5793: * expr.c (emit_push_insn): Conditionalize recent changes
5794: on no FIRST_PARM_CALLER_OFFSET, so they don't happen on sparc.
5795:
5796: * out-sparc.c (gen_scc_insn):
5797: Don't be confused by CLOBBER emitted by do_store_flag.
5798: Skip past such insns looking for last_insn.
5799: Don't alter last_insn; instead, patch it to a NOTE and emit new insn.
5800:
5801: * varasm.c (const_hash, compare_constant_1, record_constant_1):
5802: For a CONSTRUCTOR, hash/compare/record type as well as elts.
5803:
5804: * cse.c (cse_insn): July 18 change was wrong.
5805: Now, invalidate at the beginning any regs explicitly clobbered
5806: so they will not be substituted for if they appear as inputs.
5807: * sparc.md (movstrsi): Copy addresses to temp regs, then use them.
5808:
5809: * loop.c (record_giv): When comparing life spans for setting
5810: ->forces, use luids consistently, not uids.
5811:
5812: * sparc.md (ashlsi3, ashrsi3, lshrsi3): Truncate constants mod 32.
5813:
5814: Wed Aug 2 17:50:30 1989 Richard Stallman (rms at sugar-bombs)
5815:
5816: * mips.md (patterns to move a subreg): Deleted.
5817:
5818: Sun Jul 30 19:23:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5819:
5820: * gcc.c (process_command): Skip `-b' like `-B', in 2nd scan.
5821:
5822: * xm-sunos4.h: Deleted.
5823: * tm-sparc.h, tm-sun3.h: Define LINK_SPEC here instead.
5824: * tm-sun4os3.h: Undef it here.
5825: * tm-sun3os3.h, tm-sun3os3nf.h: New files to undef LINK_SPEC.
5826: * config.gcc: Use those new files where needed.
5827:
5828: * config.gcc: Delete sun3-fpa and sun3-os4-fpa.
5829: * tm-sun3-fpa.h: Deleted.
5830:
5831: * cccp.c (do_include): Mention even non-ex files for -M.
5832:
5833: * out-mips.c (addr_compensate): Handle HImode.
5834: * mips.md (Set HI from subreg of SI rule):
5835: Allow operand in memory.
5836:
5837: * mips.md (cmpqi, cmphi): Patterns deleted.
5838: (cmpsi, cmpsf, cmpdf): Change predicates to register_operand.
5839:
5840: * cexp.y (rule for ?:): Result is unsigned if either operand is.
5841:
5842: * expr.c (emit_push_insn): If PARTIAL > 0, load the partial regs
5843: at the end, in case the rest of the push does a function call.
5844:
5845: * reload1.c (alter_frame_pointer_addresses):
5846: After altering a PLUS, re-fetch CODE before scanning subexps.
5847:
5848: * stmt.c (assign_parms): Don't copy the arg pointer value
5849: if it is also the frame pointer. If we do copy it,
5850: inhibit REG_EQUIV notes for parms copied into pseudo regs
5851:
5852: * integrate.c (copy_for_inline, copy_rtx_and_substitute):
5853: Set up filename and lineno fields of copy of ASM_OPERANDS.
5854:
5855: Sat Jul 29 18:58:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
5856:
5857: * integrate.c (expand_inline_function): Handle struct-value-addr
5858: passed in memory just like that passed in reg:
5859: in either case, translate the pseudo-reg made in
5860: expand_function_start.
5861: (function_cannot_inline_p): Permit inlining in that case.
5862: But reject it if using pcc-style return convention.
5863:
5864: * stor-layout.c (layout_type): Consider STRICT_ALIGNMENT
5865: for ARRAY_TYPE just as for RECORD_TYPE.
5866:
5867: Wed Jul 26 12:54:59 1989 Richard M. Stallman (rms at mipos3)
5868:
5869: * cse.c (fold_rtx): If WIDTH is zero for binary operator,
5870: look at the modes of the original operands.
5871:
5872: * cse.c (cse_insn): Set prev_insn_explicit_cc0, for (set (cc0) INT).
5873: (predecide_loop_entry): Likewise.
5874: (fold_rtx): Look at it, for (if_then_else (cc0) ...).
5875:
5876: * expr.c (expand_builtin): Pass back return value from
5877: __builtin_saveregs.
5878:
5879: * stmt.c (assign_parms): Allow arg pointer reg not to be fixed.
5880: If it is not, copy it to a pseudo reg and use that later on.
5881:
5882: Tue Jul 25 15:42:04 1989 Richard M. Stallman (rms at mipos3)
5883:
5884: * expr.c (expand_builtin): New builtin __builtin_classify_type.
5885: * tree.h, c-decl.c: Additional support.
5886:
5887: * flow.c (mark_used_regs): Treat arg pointer like stack pointer.
5888:
5889: * expr.c (emit_library_call):
5890: Pass (tree)0 as TYPE arg to FUNCTION_ARG, etc.
5891:
5892: Mon Jul 24 11:18:10 1989 Richard M. Stallman (rms at mipos3)
5893:
5894: * loop.c (regs_match_p): Fix braino.
5895:
5896: * integrate.c (copy_for_inline, copy_rtx_and_substitute):
5897: Make ASM_OPERANDS constraint vector be shared like operand vector.
5898:
5899: * xm-iris.h: New file.
5900:
5901: * Makefile (stage4): New target.
5902:
5903: * gnulib2.c (badd, bsub, bmul, bdiv): If want long value from
5904: arithmetic, widen the operands first.
5905: (__div_internal aka bdiv): Rename to __bdiv.
5906:
5907: * sparc.md (seq combination patterns): Fully initialize cc_status.
5908:
5909: * expr.c (emit_push_insn): Like July 19 change, for BLKmode.
5910:
5911: * stmt.c (expand_function_end): Stack-restore for alloca
5912: is now done after the return_label.
5913:
5914: * loop.c (scan_loop): Set MAYBE_NEVER for conditional jump to loopbeg.
5915:
5916: * integrate.c (copy_rtx_and_substitute): Allow mapping of hard regs.
5917: (expand_inline_function): Always create parm_map.
5918: Handle structure value that way if nec. even if no parms.
5919: Otherwise, find the pseudo used in the function to hold the
5920: structure address, and map it to a new pseudo.
5921:
5922: * expr.c (expand_call):
5923: Use mark_addressable to make FNDECL addressable.
5924: * c-typeck.c (mark_addressable): No longer static.
5925:
5926: * cse.c (cse_insn): Modify last change: don't canon_reg
5927: for hard regs inside clobbers.
5928:
5929: * expr.c (expand_assignment): ALIGN arg to store_field comes from
5930: the structure, not from the value stored.
5931:
5932: Fri Jul 21 16:23:45 1989 Richard M. Stallman (rms at mipos3)
5933:
5934: * stmt.c (warn_if_unused_value): Don't warn for a cast
5935: around a MODIFY_EXPR.
5936:
5937: * tm-hp9k320.h (PCC_STATIC_STRUCT_RETURN): Undefine it.
5938: (CPP_PREDEFINES): Add some.
5939:
5940: * combine.c (simplify_and_const_int):
5941: Simplify (and (ashiftrt (zero_extend FOO) N) M).
5942:
5943: * optabs.c (expand_binop): When widening,
5944: for some operations we need not actually extend.
5945:
5946: Thu Jul 20 16:16:35 1989 Richard M. Stallman (rms at mipos3)
5947:
5948: * Makefile (insn-emit.o): Depend on insn-codes.h.
5949:
5950: * stmt.c (check_for_full_enumeration_handling):
5951: Handle all cases for TYPE_NAME of enum type.
5952:
5953: Wed Jul 19 17:00:39 1989 Richard M. Stallman (rms at mipos3)
5954:
5955: * fold-const.c (fold_convert): Don't fail to force_fit_type.
5956:
5957: * expr.c (emit_push_insn): When pushing only part of scalar on stack,
5958: adjust stack offset not to count the words not pushed.
5959:
5960: * stmt.c (expand_function_end): Always put return structure address
5961: in return register.
5962:
5963: * c-typeck.c (process_init_constructor): Assume 0 for nameless field.
5964:
5965: * recog.c (general_operand, memory_operand):
5966: Check validity of mem address using the mode of the MEM.
5967:
5968: * fixincludes: When calling egrep, use redirect, not -s.
5969:
5970: Tue Jul 18 11:18:55 1989 Richard M. Stallman (rms at mipos3)
5971:
5972: * Makefile (bootstrap*): Pass value of libdir down.
5973:
5974: * cse.c (cse_insn): Do canon_reg on any CLOBBERs and USEs.
5975:
5976: * cse.c (cse_insn): Don't use no_labels_between_p to check
5977: for jump to following label; find following label and compare.
5978:
5979: * combine.c (try_combine): Don't substitute into subreg(x)=y
5980: if modes of x and y are not tieable.
5981:
5982: * out-i386.c (call_top_dead_p): Don't fail to check
5983: the rtx code of the insns themselves.
5984:
5985: * i386.md (tstsf, tstdf): Don't discard TOS if not dead.
5986:
5987: * stupid.c: Don't use regs with PRESERVE_DEATH_INFO_REGNO_P
5988: for pseudos which live across jumps or labels.
5989: (stupid_life_analysis): Update last_jump_suid, last_label_suid.
5990: (stupid_mark_refs): Use those to set reg_crosses_blocks.
5991: (stupid_find_reg): Check that data, passed from stupid_life_analysis.
5992:
5993: * toplev.c (main): Avoid using caddr_t.
5994:
5995: * mips.md (inverted bgeu peephole): Typo in opcode.
5996:
5997: Mon Jul 17 12:29:45 1989 Richard M. Stallman (rms at mipos3)
5998:
5999: * i386.md (mulb patterns): Turned off due to assembler bug.
6000:
6001: * rtl.c (read_name): Use 0, not NULL, for character.
6002:
6003: * alliant.md (movqi): Typos in mov opcodes.
6004:
6005: * tm-sparc.h, tm-spur.h (CONST_DOUBLE_OK_FOR_LETTER_P):
6006: Use CONST_DOUBLE_LOW, etc.
6007:
6008: * stmt.c (expand_function_end): Check value of EXIT_IGNORE_STACK,
6009: not just whether defined.
6010:
6011: * i386.md (seq, etc.): New patterns.
6012: * expr.c (do_store_flags): If result is wrong mode,
6013: ensure rest of bits are cleared.
6014: Before storing low part of TARGET, emit a CLOBBER for it.
6015:
6016: * i386.md (load address): Use an immediate add if possible.
6017:
6018: * i386.md (ashlsi3): Don't generate leal; shift is faster.
6019:
6020: * Now struct_value_rtx is 0 to treat it as a parm.
6021: * expr.c (expand_call): Implement that.
6022: * integrate.c (expand_inline_function): Don't freak out.
6023: * tm-apollo68.h (STRUCT_VALUE): Make it 0.
6024:
6025: * On 386, called function must pop the structure value address.
6026: * tm-i386.h (STRUCT_VALUE): Don't change this.
6027: Address is now pushed but not counted as a parm.
6028: * out-i386.c (function_epilogue): Use ret $4 to pop that address.
6029: * output.h: Declare the current_function_... variables.
6030: * final.c: Include output.h.
6031:
6032: * varasm.c (make_decl_rtl): Insert missing `else', validating reg decl.
6033:
6034: Fri Jul 14 14:12:17 1989 Richard M. Stallman (rms at mipos3)
6035:
6036: * out-sparc.c, out-spur.c (output_move_double):
6037: Fixed typo, addreg0 => addreg1.
6038:
6039: * c-decl.c (lang_decode_option): Handle -fshort-enums.
6040: (finish_enum): In that case, give enum minimum number of bytes.
6041: * toplev.c (main): Default flag_short_enums.
6042: * toplev.c, flags.h (flag_short_enums, flag_signed_char):
6043: Define those flags here, not in c-decl.c and c-tree.h.
6044:
6045: * i386.md (mulqi3, umulqi3): New patterns.
6046:
6047: * c-convert.c (convert_to_integer): Tighter restrictions on
6048: distributing truncation through max, min, and multiplication.
6049: If operands were extended from unsigned, make the operation
6050: unsigned.
6051:
6052: * cccp.c (main): Fix bug where #include <...>, when -I- was used,
6053: failed to search standard dirs and/or searched some dirs
6054: intended only for #include "...".
6055:
6056: * tm-mips.h (FUNCTION_PROLOGUE,FUNCTION_EPILOGUE):
6057: Increment push_loc after store or load, not before.
6058:
6059: Thu Jul 13 11:24:30 1989 Richard M. Stallman (rms at mipos3)
6060:
6061: * emit-rtl.c (add_insn_after): Don't update last_insn
6062: if insn is in a sequence. Instead, update end of sequence.
6063:
6064: * stmt.c (fixup_var_refs): Update end of stacked sequence.
6065:
6066: * stmt.c (expand_function_start): Set result rtl before assign_parms.
6067:
6068: * optabs.c (emit_unop_insn): Set PREV_INSN after preliminaries.
6069:
6070: * stmt.c (warn_if_unused_value): Do CONVERT_EXPR like NOP_EXPR.
6071:
6072: * stmt.c (expand_function_start): Make sure parm_birth_insn
6073: is a NOTE.
6074:
6075: * Makefile (clean): Delete tmp-insn-*.
6076:
6077: Wed Jul 12 14:24:12 1989 Richard M. Stallman (rms at mipos3)
6078:
6079: * i386.md (mulqi3): Restrict operand 2 to `q' reg.
6080:
6081: * reload1.c (choose_reload_regs): Check HARD_REGNO_MODE_OK
6082: for regs to be inherited.
6083: Also check HARD_REGNO_MODE_OK at end for modes of both
6084: reload_in and reload_out as well as reload_mode.
6085:
6086: * Makefile (maketest): Update for config subdir.
6087:
6088: Tue Jul 11 16:29:57 1989 Richard M. Stallman (rms at mipos3)
6089:
6090: * integrate.c (copy_decl_tree): Copy TREE_USED of each LET_STMT.
6091:
6092: * make-cc1.com: Changes by Angel Li.
6093: Define variables CC, CFLAGS, LDFLAGS, LIBS.
6094: Use LIBR library, not LIB. Specify a /INC in CFLAGS.
6095: Use MCR to run the gen* files. Add some comments.
6096: * make-cccp.com: Similar.
6097: * config-gcc.com: New file.
6098:
6099: * stmt.c (assign_parms): Compute parm alignment from passed type.
6100:
6101: * c-typeck.c (actualparameterlist): Instead of truncating
6102: and then promoting for PROMOTE_PROTOTYPES, go straight to int.
6103:
6104: * c-parse.y (setspecs): Save old current_declspecs on a stack.
6105: (decl, component_decl): Restore from that stack.
6106:
6107: Wed Jul 5 15:01:00 1989 Richard Stallman (tiemann at yahi)
6108:
6109: * tm-aix386.h, xm-aix386.h: New files.
6110:
6111: * loop.c (check_dbra_loop): Handle either test or compare
6112: for insn two before loop end; detect and reject anything else.
6113:
6114: * expr.c (expand_call, expand_builtin): If alloca is done,
6115: set current_function_calls_alloca.
6116: * stmt.c (expand_function_end): If so, generate code to save and
6117: restore the stack pointer, if not EXIT_IGNORE_STACK.
6118:
6119: * ns32k.md (movsi): Fixes for moving from fp or sp.
6120:
6121: * tm-mips.h (ASM_OUTPUT_ASCII): Start new .ascii every 256 chars.
6122:
6123: Tue Jul 4 11:01:00 1989 Richard Stallman (tiemann at yahi)
6124:
6125: * reload1.c (choose_reload_targets): Don't depend on
6126: reload_spill_index when cancelling invalid inheritance.
6127: Also, abort if trying to preserve death info
6128: on a spill reg used in operand addressing.
6129:
6130: * fold-const.c (fold): Don't fold "foo"[n] here.
6131: * expr.c (expand_expr): Do it here.
6132: Handle wide strings correctly.
6133:
6134: * i386.md (movsf,movdf): Disallow mem-mem moves.
6135: Enable mem-to-reg moves.
6136:
6137: * c-decl.c (finish_{struct,enum}): Warn if inside parm decls.
6138: (in_parm_level_p, declare_parm_level): Record when inside.
6139: * c-parse.y (parmlist, parmlist_or_identifiers): Call
6140: declare_parm_level.
6141:
6142: * c-decl.c (parmlist_tags_warning): Revise warning message text.
6143:
6144: * tm-hp9k320.h (ASM_SPEC): Pass -V switch to assembler.
6145:
6146: * tm-sun386.h (ASM_START_FILE): Truncate filename to 14 chars.
6147:
6148: * c-typeck.c (decl_constant_value): Use only literal values.
6149:
6150: Sat Jul 1 17:29:54 1989 Richard Stallman (tiemann at yahi)
6151:
6152: * integrate.c (copy_rtx_and_substitute): Don't make nested SUBREGs.
6153:
6154: * stmt.c (expand_function_start): Set new global
6155: current_function_returns_pointer.
6156:
6157: * stmt.c (get_frame_size): Return the size, not the offset.
6158: * integrate.c (expand_inline_function): When setting FP_DELTA,
6159: compensate for this change.
6160: * tm-alliant.h,tm-mips.h,tm-sparc.h,tm-tahoe.h
6161: (FUNCTION_PROLOGUE,FUNCTION_EPILOGUE): Compensate.
6162:
6163: * out-mips.c (function_arg): Return 0 for BLKmode.
6164:
6165: * tm-mips.h (FUNCTION_INCOMING_ARG): Delete; no register windows.
6166: * out-mips.c (function_inarg): Delete; no longer used.
6167:
6168: * mips.md (addsi3): Use register_operand for operands 0,1.
6169: (load address): New pattern, following movsi.
6170: (fix_trunc*): Use trunc insn, not cvt.
6171: (cmpfs + bgt peephole): Operands were backwards in template.
6172:
6173: * gcc.c (main): Record in explicit_link_files which input files go
6174: straight to linker. If linker is not run, complain about them.
6175: (execute): Increment execution_count, to show we were called.
6176:
6177: * gcc.c (validate_all_switches): Check ASM_SPEC, CC1_SPEC, etc.,
6178: so we find all switches that could be valid.
6179:
6180: * varasm.c (output_constructor): Position fields according to
6181: DECL_OFFSET; don't try to compute alignment here.
6182:
6183: * tm-sparc.h (PCC_BITFIELD_TYPE_MATTERS): Define this.
6184:
6185: * reload1.c (emit_reload_insns): Fix stupid error in last change.
6186:
6187: * c-decl.c (duplicate_decls): If redeclaring builtin, give error is
6188: type mismatched; otherwise warn only if -W.
6189:
6190: * jump.c (jump_back_p): Verify that PREV is not null.
6191:
6192: Mon Jun 26 13:50:28 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6193:
6194: * reload1.c (choose_reload_regs): If number of reloads needing
6195: spill regs exceeds n_spills, don't inherit any reloads.
6196:
6197: * sdbout.c (sdbout_record_type_name): Dumb error in last change.
6198:
6199: * reload1.c (emit_reload_insns): Extend last change: don't use
6200: equiv reg if reg is in use at same stage of insn, either.
6201:
6202: Sun Jun 25 00:00:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6203:
6204: * reload1.c (emit_reload_insns): Don't use an equivalent register
6205: to reload from, if that register was used for reloading
6206: earlier in this insn.
6207:
6208: * sdbout.c (sdbout_record_type_name): Handle a TYPE_DECL as the
6209: type name. Get rid of TYPE_TAG_NAME as separate macro.
6210:
6211: * optabs.c (emit_cmp_insn): Args to memcmp are addresses, not blocks.
6212:
6213: * reload1.c (choose_reload_regs): Typo, clearing reload_override_in.
6214:
6215: * tm-i386.h: Add register classes SIREG and DIREG.
6216: (enum reg_class, REG_CLASS_NAMES): Define class names.
6217: (REGNO_REG_CLASS, REG_CLASS_CONTENTS): Define their contents.
6218: (REG_CLASS_FROM_LETTER): Define letters `S' and `D'.
6219:
6220: Sat Jun 24 00:17:16 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6221:
6222: * c-decl.c (keep_next_level): New function.
6223: (struct binding): New slot `keep' says make a LET_STMT for this level.
6224: (pushlevel, poplevel): Implement that.
6225: * c-parse.y (stmt exprs): Call keep_next_level.
6226:
6227: * sdbout.c (plain_type_1): Handle REFERENCE_TYPE, METHOD_TYPE.
6228: Correct for size less than 0.
6229: (plain_type): Correct for size less than 0.
6230:
6231: * global-alloc.c (mark_reg_set): For CLOBBERs, call mark_reg_clobber.
6232:
6233: * reload1.c (order_regs_for_reload): Among regs explicitly used,
6234: prefer those used less often.
6235:
6236: * reload1.c (choose_reload_regs): If we find alternate place
6237: to reload from, verify it after all reloads assigned.
6238: New variable reload_override_in used for this.
6239:
6240: * combine.c (record_dead_and_set_regs): Look inside SIGN_EXTEND and
6241: STRICT_LOW_PART for place being set.
6242: (subst): When using reg_last_set to find what a register contains,
6243: verify the entire register was set.
6244:
6245: * toplev.c (rest_of_decl_compilation): Report invalid register name.
6246:
6247: Fri Jun 23 13:19:41 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6248:
6249: * tm-hp9k3bsd.h: New file.
6250: * config.gcc: New target hp9k320-bsd.
6251:
6252: * gcc.c (record_temp_file): Don't add a name twice to one queue.
6253:
6254: * stmt.c (expand_expr_stmt): Call warn_if_unused_value.
6255: (warn_if_unused_value): Code extracted from expand_expr_stmt.
6256: Recurse to handle COMPOUND_EXPR. Don't warn about COND_EXPR.
6257:
6258: * tm-encore.h (DBX_REGISTER_NUMBER): Override tm-ns32k.h;
6259: return operand unchanged.
6260:
6261: * reload1.c (emit_reload_insns): Don't use recog_memoized
6262: on an asm.
6263:
6264: * jump.c (delete_insn): Update last_insn.
6265: * emit-rtl.c (set_last_insn): New function.
6266:
6267: * reload1.c (reload): Put a note at end of insn chain.
6268:
6269: * gcc.c: Put cpp output of .S file into a .s file.
6270:
6271: Thu Jun 22 22:14:35 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6272:
6273: * optabs.c (expand_binop, expand_unop): Emit queue before library call.
6274: It is done within emit_library_call, and cse screws up if there is a
6275: queued insn in the middle of a cse-able sequence.
6276:
6277: Wed Jun 21 11:57:22 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6278:
6279: * tm-mips.h (CPP_PREDEFINES): Define -Dunix.
6280:
6281: * reload.c (combine_reloads): Combined reload needed for entire insn.
6282:
6283: * c-parse.y (yylex): Braino checking for out-of-range escape seq.
6284:
6285: * stor-layout.c (layout_union): Handle PCC_BITFIELD_TYPE_MATTERS.
6286: (layout_struct): Don't let a bitfield cross the storage unit
6287: of its type, if PCC_BITFIELD_TYPE_MATTERS.
6288:
6289: Tue Jun 20 00:03:48 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6290:
6291: * varasm.c (get_or_assign_label): Let CONSTANT_ALIGNMENT specify
6292: alignment of the constant.
6293: CONSTANT_ALIGNMENT is a new optional macro.
6294:
6295: * varasm.c (force_const_mem, get_or_assign_label):
6296: Make buffer bigger.
6297:
6298: * toplev.c (print_target_switch_defaults): New fn called for -version.
6299:
6300: * toplev.c (compile_file): Detect error closing output file.
6301:
6302: * stor-layout.c (fixup_unsigned_type): Don't shift by 32.
6303:
6304: * stmt.c (emit_case_nodes): Pass UNSIGNEDP along to emit_cmp_insn.
6305:
6306: * stmt.c (expand_end_case): If index is narrow and cannot be
6307: directly compared, widen it just once.
6308:
6309: * c-parse.y (yylex): Support multi-character constants.
6310: Thorough rewrite of char constant parsing.
6311:
6312: * c-decl.c (pushdecl): Replace local extern function decl with
6313: previous global decl if latter is inline, or builtin, or has
6314: more arg type info.
6315:
6316: * hard-params.c (xmalloc): Define it, for alloca.c.
6317:
6318: * tm-hp9k320.h (STANDARD_STARTFILE_PREFIX): Override -D in Makefile.
6319:
6320: * expmed.c (store_fixed_bit_field): Avoid shift by 32.
6321:
6322: * stmt.c (expand_function_start): Emit a NOTE_INSN_FUNCTION_BEG.
6323: * final.c (final_scan_insn): For SDB output, do the
6324: sdbout_begin_function at that note.
6325:
6326: * reload1.c (choose_reload_regs): If a reload reg inherits
6327: from a previous reload, verify safety after all reloads are assigned.
6328:
6329: * c-decl.c (build_enumerator): Remove no-op casts.
6330:
6331: * reload.c (find_reloads): If an earlyclobber operand matches
6332: an input operand it is constrained to match, that's not a problem.
6333: If an earlyclobber operand loses due to earlyclobber, its matching
6334: input operand also loses.
6335:
6336: * reload1.c (choose_reload_regs): Don't use result of find_equiv_reg
6337: if that reg is used for reloading in an earlier part of the insn.
6338:
6339: * cse.c (fold_rtx): If WIDTH is 0, don't try sign-extending ARG0, ARG1.
6340:
6341: * Makefile (hard-params*): Use $(OLDCC).
6342:
6343: * c-typeck.c (c_alignof): No warning for -pedantic.
6344:
6345: * c-parse.y (readescape): Don't have both error and warning
6346: on one hex escape.
6347:
6348: * c-parse.y (yylex): Treat vertical tab as white space.
6349: (skip_white_space): Likewise.
6350:
6351: * c-parse.y (datadef): If pedantic, warn for stray semicolon.
6352:
6353: * expr.c (expand_increment): Pass accurate unsignedp arg
6354: to expand_binary_op.
6355:
6356: Mon Jun 19 13:36:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6357:
6358: * config.gcc (news, news-gas): Use xm-m68k.h.
6359:
6360: * final.c (output_asm_label, output_addr_const): Make buf bigger.
6361:
6362: * cexp.y (main): Handle EOF on input.
6363: (lookup, warning): Provide as a dummy.
6364: (is_idchar, is_idstart): Declare as unsigned char.
6365:
6366: * cexp.y (parse_escape): Use TARGET_NEWLINE, etc., as values.
6367: Support hex escapes. Warn if octal or hex escape doesn't fit in char.
6368:
6369: * cexp.y (yylex): Sign-extend char constants if appropriate.
6370:
6371: * genemit.c: Make insn-emit.c include insn-flags.h.
6372:
6373: * gcc.c: Move record_temp_file past page which declares vflag.
6374:
6375: * integrate.c (expand_inline_function): If copying an insn with
6376: a REG_EQUIV note, make a similar note.
6377:
6378: * Allow reload regs to be reused for parts of an insn.
6379: * reload.c (find_reloads): Classify each reload for which part
6380: of the insn it is needed in.
6381: (find_reloads_address, etc.): Pass down the overall operand
6382: that this is part of, to record it on address reloads.
6383: (push_reload): Record that for each reload.
6384: * reload1.c (reload): Compute maximum needs of any part of the insn.
6385: (choose_reload_regs): Part of old choose_reload_targets.
6386: Hairier criteria for inheriting reloads and for which ones are
6387: available for the next insn to inherit.
6388: (emit_reload_insns): The rest of old choose_reload_targets.
6389: Emit reload insns in proper order according to where they are needed.
6390: * Record `reload_reg_in_use' separately for each part of the insn.
6391: (mark_reload_reg_in_use): New function.
6392: (reload_reg_free_p, reload_reg_free_before_p): New functions.
6393: (reload_reg_reaches_end_p): New function.
6394:
6395: * expr.c (expand_expr): Emit queue in X+=(Y?Z:A) optimization.
6396:
6397: * rtlanal.c (rtx_equal_p): Check vectors have same length.
6398:
6399: Sun Jun 18 12:16:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6400:
6401: * stmt.c (expand_expr_stmt): Maybe warn if top-level operator
6402: makes an unused result.
6403:
6404: * gcc.c (delete_temp_files, delete_failure_queue):
6405: If -v, report failures in unlink.
6406:
6407: * Makefile (includes): New target to run fixincludes.
6408: (install): Swap arms of if-statement.
6409:
6410: Sat Jun 17 12:41:53 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6411:
6412: * stor-layout.c (layout_union): Arg to error_with_decl was missing.
6413:
6414: * ns32k.md (movsf): Use CONST_DOUBLE_LOW to extract from CONST_DOUBLE.
6415:
6416: * loop.c (consec_sets_giv): Change type of force, force2.
6417:
6418: * combine.c (dump*): Declare arg as FILE*.
6419:
6420: * Makefile (clean): Delete hard-params.
6421:
6422: * flow.c (life_analysis): Use a special obstack for the temporary
6423: regsets.
6424:
6425: * m68k.md (clr pattern): On 68000, use moveq to clear data reg.
6426:
6427: * gvarargs.h: File varargs.h renamed.
6428: The old name conflicted with <varargs.h>, now that -I. is used.
6429: * tree.c, expr.c, emit-rtl.c: Change #include commands.
6430: * Makefile (install): Install gvarargs.h under name varargs.h.
6431: * gcc.c: Include gvarargs.h, not system's varargs.h.
6432:
6433: * Makefile: Use -I$(srcdir) before -I$(srcdir)/config.
6434: * config/tm.h: Deleted; didn't work if config was a symlink.
6435:
6436: * cse.c (cse_insn): Record location of inner_dest
6437: so it can be replaced properly if a new MEM rtx is made.
6438:
6439: Fri Jun 16 14:17:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6440:
6441: * make-cc1.com: Compile and link rtlanal.c.
6442:
6443: * c-typeck.c (build_array_ref): Call fold on the array ref.
6444: * fold-const.c (fold): Simplify array ref of string constant.
6445:
6446: * stmt.c (expand_asm_operands): Fix error message.
6447:
6448: * Makefile (gnulib2): Remove old members before compiling new.
6449: Fix stupid errors.
6450: * gnulib2.c (__cmpdi2, __ucmpdi2): Typos in names of interface unions.
6451:
6452: * genconfig.c (main): Don't write MAX_CLOBBERS_PER_INSN; obsolete.
6453: Add 3 to MAX_RECOG_OPERANDS.
6454:
6455: * cse.c (fold_cc0): Extra arg specifies machine mode.
6456: Callers changed.
6457: (cse_insn): Record original mode of each src for this purpose.
6458:
6459: Thu Jun 15 12:35:18 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6460:
6461: * gnulib2.c (_cmpdi2, _ucmpdi2): Moved here from gnulib.c.
6462: Use long long for argument type.
6463:
6464: * rtlanal.c (may_trap_p): Moved here from loop.c.
6465: Return 1 for division by explicit zero.
6466:
6467: * reload1.c (eliminate_frame_pointer, alter_frame_pointer_addresses):
6468: Rerecognize insns which are changed by this.
6469:
6470: * i386.md (call_value): Don't return prematurely.
6471:
6472: * alliant.md (movqi): Handle moving Aregs to mem and vice versa.
6473: (bftst -> btst): Restrict to bitpos less than 8
6474: so operand may be non-offsettable.
6475: (nop): New pattern.
6476: (return): Was disabled; now deleted.
6477: * tm-alliant.h (PRINT_OPERAND_PUNCT_VALID_P): Define it.
6478: * out-alliant.c (output_btst): Same change as in out-m68k.c
6479:
6480: * alliant.md, out-alliant.c: Offsetable -> offsettable.
6481:
6482: * c-parse.y (rule for stmt_exprs): Make the LET_STMT volatile.
6483:
6484: * c-decl.c (duplicate_decls): Don't save inline function data
6485: from previous definition if a new *definition* is seen.
6486:
6487: * integrate.c (access_parm_map): Handle subregs and constants.
6488:
6489: * stmt.c (expand_return): Don't crash if DECL_RTL (DECL_RESULT()) is 0.
6490:
6491: * tm-tahoe.h (LONGJMP_RESTORE_FROM_STACK): Define it.
6492:
6493: * tm-mips.h (CONSTANT_P): Deleted; duplicates rtl.h.
6494:
6495: Fri Jun 9 01:39:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6496:
6497: * Makefile (float.h): Avoid using $(MAKE).
6498:
6499: * Don't cram two things into STMT_BODY of a LET_STMT.
6500: * tree.h (struct bind_stmt): New field, subblocks.
6501: (STMT_SUBBLOCKS): New macro to access it.
6502: * print-tree.c (walk): Print new field.
6503: * tree.c (build_let_stmt): Store the old BODY arg into subblocks field.
6504: * c-parse.y (stmt expr rule): Put rtl expr alone into body field.
6505: * dbxout.c (dbxout_block): Recurse on subblocks, not body.
6506: * sdbout.c, symout.c: Likewise.
6507: * integrate.c (copy_decl_tree): Likewise.
6508: * stmt.c (setjmp_protect, uninitialized_vars_warning): Likewise.
6509: * expr.c (expand_expr): For LET_STMT, simply use its body.
6510:
6511: * machmode.def: Add sixth arg to each entry.
6512: * tree.h, rtl.h, rtl.c: Add arg to DEF_MACHMODE.
6513: * rtl.h (GET_WIDER_MODE): New macro; table in rtl.c.
6514: * expr.c (expand_expr): Use that for widening multiply.
6515:
6516: * stmt.c (fixup_var_refs_1): When converting MEM to QImode for
6517: bit field, adjust the address if possible to make bitpos
6518: less than 8.
6519: * m68k.md (bftst -> btst): Restrict to bitpos less than 8
6520: so operand may be non-offsettable.
6521:
6522: * cccp.c (do_line): Accept and pass on 3rd arg for enter or leave file.
6523:
6524: * out-m68k.c (output_btst): Handle COUNT bigger than size of unit.
6525:
6526: * cccp.c (CHECK_DEPTH): Macro to detect instack overflow.
6527: (finclude, macroexpand, expand_to_temp_buffer): Use that.
6528:
6529: * cccp.c (rescan): Don't check for disabled macro if traditional.
6530: (macroexpand): Don't disable macro if traditional.
6531:
6532: * sdbout.c (sdbout_one_type): Take out last change; assembler barfs.
6533:
6534: * c-parse.y (maybe_attribute): Eliminate #-syntaxes.
6535: Make ATTRIBUTE the name for __attribute.
6536:
6537: * c-parse.gperf: Add __attribute{,__} and __signed{,__}.
6538: * c-parse.y: Install results of that change.
6539:
6540: * Fix bug in sizeof ({...}).
6541: * c-decl.c (poplevel): Set TREE_USED. Return the LET_STMT.
6542: * c-parse.y (stmt-expr rule): Put the RTL_EXPR in the LET_STMT,
6543: clear its TREE_USED, and use it as the result.
6544: * expr.c (expand_expr): Allow LET_STMT as an expr.
6545: Set its TREE_USED and expand the TREE_VALUE of its body.
6546: * dbxout.c (dbxout_block): Ignore LET_STMT if TREE_USED not set.
6547: * sdbout.c, symout.c: Likewise.
6548:
6549: Thu Jun 8 00:06:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6550:
6551: * c-parse.y (yylex): Extend ERANGE-inhibitor for 0.0
6552: to 0.0e0 as well.
6553:
6554: * flow.c (life_analysis): Prevent allocation of regs live at setjmp
6555: on certain machines. Controlled by LONGJMP_RESTORE_FROM_STACK.
6556: Sets reg_live_length to -1.
6557: * local-alloc.c (block_alloc): Be prepared for that.
6558: * tm-vax.h (LONGJMP_RESTORE_FROM_STACK): Define it.
6559:
6560: * gnulib2.c (all interfaces): Declare args and values as long long,
6561: and split them using unions.
6562:
6563: * loop.c (check_dbra_loop): Don't reverse loop if there are two
6564: refs to varying addresses. Consider foo[i] = foo[i-1].
6565: (count_nonfixed_refs): Subroutine to count them.
6566:
6567: * cexp.y: Distinguish signed and unsigned.
6568: An integer value is now represented by a struct.
6569: All rules for arithmetic changed.
6570: (yylex): Adapt to change in yylval data type.
6571:
6572: * limits.h (LONG_MIN): Make sure it's a signed long.
6573:
6574: * sdbout.c (sdbout_one_type): Output types of fields first,
6575: if they are structs. Don't go through pointers.
6576: (sdbout_field_types): Subroutine for that
6577:
6578: Wed Jun 7 13:00:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6579:
6580: * fixincludes: Switch to /usr/include before doing vuid_event.h.
6581: Use $2 as output directory for sed.
6582:
6583: * tm-i386.h (FUNCTION_PROFILER): Put counter address in %edx.
6584: * tm-i386v.h (LIB_SPEC): Use -L/usr/lib/libp if profiling.
6585:
6586: * expr.c (expand_increment): Typo testing for BImode component.
6587:
6588: * convex changes from csmith:
6589: * tm-convex.h: use EXTRA_SECTIONS to do .bss.
6590: out-convex.c: set_section, align_section are now unused.
6591: * convex.md: add pattern to pick an A-reg destination for sums
6592: whose source involves a dedicated A reg (frame or arg pointer)
6593: * convex.md: immediate and, or, xor instructions store a 32-bit
6594: result. Fix instructions that assumed it was 64.
6595:
6596: * mips.md (probe): New pattern to create stack space.
6597:
6598: * Makefile (float.h): Ignore errors from hard-params.
6599: Specify ./ to run it.
6600:
6601: Tue Jun 6 15:45:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6602:
6603: * out-tahoe.c: Rename `offsetable' to `offsettable'.
6604:
6605: * tahoe.md (nop): New pattern.
6606:
6607: * i386.md (umul...): Constrain operand 1 as `0', not `a'.
6608: `a' sometimes wanted two a-regs for operands 0 and 1.
6609:
6610: * cccp.c: Forward-declare some structs.
6611:
6612: * c-decl.c: Rearrange fcn fwd decls and struct decls.
6613:
6614: * expr.c: Move some fcn fwd decls after structs their args use.
6615: * genpeep.c, genextract.c: Likewise.
6616:
6617: * loop.c: Forward-declare some structs.
6618:
6619: * stmt.c: Move decls of structs before those of static functions.
6620:
6621: * loop.c (strength_reduce): Delete extra arg to check_eliminate_biv.
6622:
6623: * integrate.c (expand_inline_function): Supply missing arg
6624: to convert_to_mode.
6625:
6626: * gcc.c (handle_braces): Supply missing arg to do_spec_1.
6627:
6628: * explow.c (lookup_static_chain): Accept a context arg.
6629:
6630: * expmed.c (store_split_bit_field): Pass ALIGN arg
6631: to extract_fixed_bit_field.
6632:
6633: * expr.c (expand_assignment): Convert TYPE_ALIGN to bytes.
6634: (store_constructor, expand_expr): Likewise.
6635:
6636: * tm-m68k.h: NO_ADDSUB_Q conditionals turn off all addq, subq insns.
6637: (Fully supported only with MOTOROLA and HPUX_ASM flags.)
6638:
6639: * jump.c (do_cross_jump): Don't die if LABEL is 0.
6640:
6641: * tm-mips.h (PRINT_OPERAND_PUNCT_VALID_P): New macro.
6642: * tm-iris.h: New file. Unsplit lines accidentally split.
6643:
6644: Mon Jun 5 15:39:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6645:
6646: * integrate.c (output_inline_function): Call init_function_start,
6647: not expand_function_start.
6648: * emit-rtl.c (restore_reg_data): No need to init reg_rtx_no.
6649:
6650: * stmt.c (init_function_start): Set current_function_returns_struct.
6651:
6652: * rtlanal.c (reg_set_between_p): New fn analogous to reg_used_between_p
6653: * loop.c (strength_reduce): Reject biv initial value which is altered
6654: subsequently before actual loop start.
6655:
6656: * rtlanal.c: New file split out from rtl.c.
6657: Has things not used in the gen files.
6658:
6659: * loop.c (strength_reduce): Reject biv initial value in a hard reg
6660: clobbered by an intervening function call.
6661:
6662: * tree.c (get_identifier): New flag needed to enable id-clash warnings.
6663: (start_identifier_warnings): Set that flag.
6664: * c-decl.c (init_decl_processing): Call that, after making built-ins.
6665:
6666: Sat Jun 3 14:41:34 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6667:
6668: * final.c (final_scan_insn): No basic block profiling at jump tables.
6669:
6670: * stmt.c (expand_decl): Probe the stack to make pages exist.
6671: * expr.c (expand_builtin): Likewise, for alloca.
6672:
6673: * move-if-change: Specify /bin/sh.
6674:
6675: * tm-ns32k.h (INDIRECTABLE_2_ADDRESS_P): Don't accept PLUS
6676: with constant operands but not inside CONST.
6677:
6678: * integrate.c (output_inline_function, save_for_inline):
6679: Save stack_slot_list, and restore it for actual output.
6680: * emit-rtl.c (gen_inline_header_rtx): New arg for this.
6681:
6682: * emit-rtl.c (restore_reg_data): Initialize reg_rtx_no.
6683: (restore_reg_data_1): Handle reg_rtx_no jumping past
6684: reg_pointer_flag_length.
6685:
6686: * reload1.c (alter_reg): Do nothing if regno_reg_rtx has 0.
6687:
6688: * integrate.c (copy_rtx_and_substitute): Typos for stack parm
6689: addresses in PLUS case.
6690:
6691: * genoutput.c (gen_insn, gen_peephole): Make output_n fns static.
6692: (output_prologue): Use new macro DEFAULT_MACHINE_INFO if defined.
6693:
6694: * tree.h (enum machine_mode): Define MAX_MACHINE_MODE as in rtl.h.
6695:
6696: Fri Jun 2 15:40:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6697:
6698: * cccp.c (do_include): A file included via a system header file
6699: counts as a system header file for -M.
6700:
6701: * gnulib2.c: Support boolean ops and shifts.
6702:
6703: * loop.c (emit_iv_inc): Use emit_iv_init_code.
6704:
6705: * rtl.h (CONST0_RTX): Don't try to cast abort.
6706:
6707: * tm-news.h (PRINT_OPERAND_ADDRESS): Fix typo `reg_name'.
6708: Delete two garbage lines.
6709:
6710: * loop.c (eliminate_biv): Use emit_iv_init_code to compute comparison
6711: value. If value is constant, recognize the insn, and if that fails,
6712: put the value in a register.
6713:
6714: Thu Jun 1 16:56:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6715:
6716: * print-tree.c (dump): Don't die if rtx components are null.
6717:
6718: * expmed.c (expand_mult_add): New fn to do A * X + B.
6719: (make_tree): New subroutine.
6720: * loop.c (emit_iv_init_code): Use that. Much simpler now.
6721:
6722: Tue May 30 17:20:40 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6723:
6724: * fold-const.c (fold): Use TREE_SET_CODE to store in tree codes.
6725:
6726: * tree.h (struct tree_common): Make `code' an unsigned int.
6727: (TREE_CODE, TREE_SET_CODE): Put in casts.
6728:
6729: * optabs.c (emit_cmp_insn): Supply all the args in recursive calls.
6730:
6731: * toplev.c (report_error_function): Fix typo; METHOD_TYPE missing.
6732:
6733: * fixincludes: Add code to make internal non-directory links.
6734:
6735: Mon May 29 21:36:28 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6736:
6737: * gcc.c (find_exec_file): Try both with and without machine_suffix.
6738: (find_file): Use machine_suffix here too.
6739:
6740: Sat May 27 00:02:26 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6741:
6742: * reload.c (decompose): OFFSET wasn't initialized.
6743:
6744: * cse.c (cse_main): Assign monotonic cuids.
6745: (make_regs_eqv, CHEAPER): Use cuids, not uids.
6746: (cse_end_of_basic_block): Return a cuid, not a uid.
6747:
6748: * expr.c (expand_builtin): For BUILTIN_SAVEREGS, range of regs
6749: moved included one extra previous insn.
6750:
6751: * emit-rtl.c (emit_line_note): Don't check -g here.
6752: (emit_note): For line number when no -g, increment cur_insn_uid anyway.
6753: * stmt.c (expand_start_case): Always output a NOTE_INSN_DELETED.
6754:
6755: * loop.c (loop_optimize): Don't count line-number NOTEs for luids.
6756: Prevents -g from affecting optimization decisions.
6757:
6758: Fri May 26 17:31:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6759:
6760: * local-alloc.c (block_alloc): Don't count notes in insn_number.
6761: Prevents -g from affecting order of allocation.
6762:
6763: Thu May 25 14:12:19 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6764:
6765: * local-alloc.c (block_alloc): Clear full length of regs_live_at.
6766:
6767: * ns32k.md (cmpsi): Make this the first cmp pattern.
6768:
6769: * jump.c (do_cross_jump): Skip NOTEs while checking for existing label.
6770:
6771: * cse.c (cse_insn): When no-oping a jump, decrement use count of label.
6772: (cse_basic_block): If label use count is 0, go past it.
6773:
6774: * integrate.c (access_parm_map): New fn, broken out of
6775: copy_rtx_and_substitute, handles case of mem ref to stack arg.
6776: (copy_rtx_and_substitute): Call it.
6777: Also use it for address of a stack arg.
6778:
6779: * gen*.c (fatal): Declare 1st arg as string.
6780:
6781: Wed May 24 00:13:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6782:
6783: * optabs.c (init_optabs): Handle movdi and movdf insns.
6784:
6785: * final.c (end_final): Realign locn ctr after outputting string.
6786:
6787: * tm-sparc.h (LINK_SPEC): Link bb_link.o before standard lib.
6788:
6789: * tm-sun386i.h (LINK_SPEC): Accept and ignore -sun386.
6790:
6791: * gcc.c (find_exec_file): Use machine_suffix.
6792: (process_command): Set that for -b option.
6793:
6794: * integrate.c (function_cannot_inline_p): No size limit
6795: for functions declared inline.
6796:
6797: * loop.c (skip_consec_insns): New fn, skip several insns or libcalls.
6798: (force_movables): New fn, part of scan_loop broken out.
6799: (ignore_some_movables): New fn, ignore a movable whose insn
6800: is within another movable's libcall.
6801: (scan_loop): Call those three.
6802: Don't handle m->consec for zero-extend movables, since always 0.
6803:
6804: Tue May 23 12:58:24 1989 Joe Weening (weening at gang-of-four.stanford.edu)
6805:
6806: * config/alliant.md:
6807: Removed operand classes 'x', 'y', 'G', 'H'.
6808: Added "%." to many opcodes to simplify comparison with m68k.md.
6809: Changed TARGET_68881 to TARGET_CE.
6810: Changed floating-point insns to better describe the Alliant CE.
6811: Most args to floating-point insns are now nonimmediate_operand.
6812: Removed special insns for pushing doublewords onto stack.
6813: Added non-CE versions of movsf and movdf to avoid using FP
6814: registers in this case.
6815: (float*i*f2): Don't allow immediate ops.
6816: (sne): Fix typo, fsne => fsneq.
6817: (call, call_value): Changed to always pop args from stack
6818: upon return; this gives better code than before and conforms
6819: to Alliant calling standard.
6820: Incorporated some recent changes to m68k.md.
6821:
6822: * config/out-alliant.c:
6823: (regno_reg_class): Removed FPA reg classes.
6824: (output_move_const_double): Function not needed, removed.
6825:
6826: * config/tm-alliant.h:
6827: Removed FPA registers and reg classes.
6828: Target flags: changed TARGET_68881 to TARGET_CE, removed
6829: TARGET_RTD, TARGET_REGPARM, TARGET_FPA.
6830: Removed TARGET_CE test in several places since we need to
6831: use FP regs even for non-CE programs.
6832: (TARGET_VERSION, CPP_SPEC): Define for Alliant.
6833: (CONDITIONAL_REGISTER_USAGE): Removed, not needed.
6834: (FRAME_POINTER_REQUIRED): Defined.
6835: (RETURN_POPS_ARGS): Defined.
6836: (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P):
6837: Use fp0 to return floating-point values.
6838: (FUNCTION_ARG): Remove TARGET_REGPARM code.
6839: (FUNCTION_ARG_PARTIAL_NREGS): Always 0.
6840: (FUNCTION_PROFILER): Define for Alliant.
6841: (FUNCTION_EPILOGUE): Remove use of rtd instruction.
6842: Renamed CC_IN_68881 to CC_IN_FP.
6843: (NOTICE_UPDATE_CC): Incorporate changes that were made
6844: in tm-m68k.h.
6845:
6846: * config/xm-alliant.h (LINK_SPEC): Pass -X to linker.
6847:
6848: Tue May 23 12:58:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6849:
6850: * sdbout.c: Don't include c-tree.h.
6851:
6852: * tree.c (build_index_type): Use sizetype for min and max values.
6853: Convert maxval rather than clobbering it.
6854:
6855: * tm-hp9k320.h: Finish unterminated comment.
6856:
6857: * sdbout.c (sdbout_parms): Use gen_fake_label for anonymous parm.
6858:
6859: Sun May 21 12:58:06 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6860:
6861: * stmt.c (aggregate_value_p): New fn says whether expression is a type
6862: that functions cannot return as a scalar.
6863: (assign_parms, expand_function_start): Use that.
6864: * expr.c (expand_call): Likewise.
6865:
6866: * gcc.c (delete_failure_queue): New subroutine.
6867: (delete_temp_files): No longer delete the failure queue.
6868: (main): Delete failure queue after each failing compilation.
6869:
6870: Sat May 20 13:16:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6871:
6872: * varasm.c (force_const_mem): New optional macro SELECT_RTX_SECTION.
6873:
6874: * mips.md: Change %u0 to %:.
6875: (movsi): Add constraint alternative accepting address arg.
6876:
6877: * fold-const.c (mul_double): Special case for 2nd arg 2, 4, 8.
6878: (combine): Special case shortcuts for plus, minus, mult, div.
6879:
6880: * stmt.c (expand_function_start): Simplify hairy statement for 3B1.
6881: * expr.c (expand_call): Likewise.
6882:
6883: * math-68881.h: New file.
6884:
6885: * m68k.md (movqi): Handle moving aregs to mem and vice versa.
6886:
6887: * dbxout.c (dbxout_type): Don't test use_gdb_dbx_extensions
6888: in cases that occur in C.
6889:
6890: * stmt.c (expand_function_{start,end}): Make DECL_RESULT's rtl 0
6891: when function returns no value.
6892:
6893: * tree.c (build_decl): Initialize DECL_PRINT_NAME, DECL_ASSEMBLER_NAME.
6894:
6895: * c-decl.c (store_parm_decls): Call init_function_start.
6896:
6897: Thu May 18 00:41:37 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6898:
6899: * stmt.c (expand_null_return_1): New arg USE_GOTO says jump to
6900: return_label even if could otherwise use a return insn.
6901: Make a return_label if we need one and don't have one already.
6902: If have parm cleanups, always jump to cleanup_label.
6903: (expand_null_return): Pass 1 for USE_GOTO if cleanups pending.
6904: (expand_return): Set LAST_INSN if have local cleanups or parm cleanups.
6905: Use that if jumping to tail-recursion label.
6906: Optimization for returning a comparison is safe for local cleanups
6907: but don't do it if there are parm cleanups.
6908: Calling expand_null_return_1, pass 1 for USE_GOTO if local cleanups.
6909: (this_contour_has_cleanups_p): New function.
6910:
6911: * stmt.c (init_function_start): New function, beginning of
6912: expand_function_start broken out.
6913: Use DECL_PRINT_NAME to get function's name.
6914: (expand_function_start): Now two args, function and PARMS_HAVE_CLEANUPS
6915: Compute RETURN_LABEL sooner; make one if parm cleanups.
6916: If parms have cleanups, put scalar return value in pseudo-reg.
6917: Don't mark that pseudo with REG_FUNCTION_VALUE_P.
6918: (expand_function_end): Simplify decisions about output of return_label
6919: and return insn.
6920: If DECL_RESULT is pseudo-reg, copy it to real return reg.
6921:
6922: * stmt.c (expand_function_end): Handle ordinary struct values
6923: like pcc, but only if unoptimized.
6924: (expand_function_start): Make a return_label for ordinary struct value.
6925:
6926: * stor-layout.c (layout_type): Handle METHOD_TYPE like FUNCTION_TYPE.
6927: (layout_decl): Allow TYPE_DECL.
6928:
6929: * stor-layout.c (layout_basetypes): Code for basetypes broken
6930: out of layout_record. Sets the type size tentatively.
6931: (layout_record): Start with that tentative size.
6932: Also, don't do anything with CONST_DECL members.
6933:
6934: * stor-layout.c (layout_union): Simpler error report for static memb.
6935:
6936: * reload1.c (eliminate_frame_pointer): Reduce PUSH_ROUNDING
6937: conditional to apply only to push instructions.
6938:
6939: * expr.c (expand_call): Fix stupid errors handling MAX_PARM_BOUNDARY.
6940: * stmt.c (assign_parms): Likewise.
6941:
6942: * toplev.c (announce_function, report_error_function):
6943: (error_with_decl, warning_with_decl): Use DECL_PRINT_NAME.
6944:
6945: * toplev.c (compile_file): Subtract integration_time from parse_time.
6946:
6947: * toplev.c (compile_file): Don't output read-only static variables
6948: at end of compilation if address was not used.
6949:
6950: * toplev.c (rest_of_compilation): Handle flag_syntax_only.
6951:
6952: * toplev.c (main): Handle -g0 and -G0 options.
6953: For -g and -G, set use_gdb_dbx_extensions.
6954:
6955: * toplev.c (main): Set `progname'.
6956: (pfatal_with_name, fatal_io_error, {error,warning}_with_file_and_line):
6957: (sorry): Print value of `progname', not "cc1".
6958:
6959: * tree.def: Delete FRIEND_DECL. Add PUSH_EXPR and POP_EXPR.
6960:
6961: * tree.c (simple_cst_equal): Handle INDIRECT_REF.
6962:
6963: * tree.c (lvalue_p): Handle METHOD_TYPE. Handle NEW_EXPR.
6964:
6965: * tree.c (copy_list): New function.
6966:
6967: * tree.h (struct tree_decl): New fields print_name and assembler_name.
6968: (DECL_PRINT_NAME, DECL_ASSEMBLER_NAME): New accessors.
6969:
6970: * c-decl.c (LONG_DOUBLE_TYPE_SIZE): New compilation parameter.
6971:
6972: Wed May 17 22:07:17 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
6973:
6974: * dbranch.c (emit_delay_sequence): Reset insn code to -1 when
6975: turning insn into a sequence so that it won't think that it matches
6976: something in the md file.
6977:
6978: * dbranch.c (insn_eligible_p): Call refers_to_regno_p with a
6979: non-zero range.
6980:
6981: * dbranch.c (pnote): Modified to make sure instruction clobbered
6982: register is a set, rather than, say, a clobber.
6983:
6984: Wed May 17 14:01:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6985:
6986: * sdbout.c (sdbout_parms): Handle parm with no name.
6987:
6988: * loop.c (combine_movables): Test for overlap of zero-extend regs
6989: was screwed up.
6990:
6991: * c-typeck.c (c_sizeof{,_nowarn}): Convert from bytes to chars,
6992: since c defines sizeof (char) as 1.
6993: (pointer_int_sum, pointer_diff): Use c_sizeof{,_nowarn}.
6994:
6995: Tue May 16 16:27:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
6996:
6997: * reload1.c (choose_reload_targets): Don't reuse regs
6998: mentioned in reload_reg_rtx.
6999:
7000: * tm-tahoe.h, tahoe.md, out-tahoe.c, xm-tahoe.h: New files.
7001:
7002: Mon May 15 16:25:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7003:
7004: * fixincludes: Exit with explicit status 0 at end.
7005: cd to /usr/include before cd to subtree root in case of relative link.
7006: Create dir $LIB earlier.
7007: When checking for a link, treat .. like an absolute target.
7008:
7009: * symout.c (symout_block_symbols): Give every local decl a typespec.
7010: * cexp.y (parse_number):
7011: * flow.c (life_analysis, dump_flow_info):
7012:
7013: * loop.c (consec_sets_invariant_p): Logic error accepted consec sets
7014: of which only one was invariant.
7015:
7016: * expr.c (expand_expr): Use no subtargets inside loops.
7017: * stmt.c (inside_loop): New function.
7018:
7019: Sun May 14 00:11:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7020:
7021: * tree.h: Declare long long types.
7022:
7023: * c-parse.y (combine_strings): Make string contents saveable.
7024:
7025: * tree.c (savealloc): New function.
7026:
7027: * m68k.md (movdi): % missing in fmove%.d.
7028:
7029: * c-parse.y (yylex): Detect overflow past 64-bits.
7030: Detect specially numbers not fitting in signed long long.
7031:
7032: Sat May 13 13:16:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7033:
7034: * reload1.c (alter_frame_pointer_addresses): Preserve volatility.
7035:
7036: * varasm.c (output_constructor): Die if BITS_PER_UNIT is too big
7037: for this function to work.
7038:
7039: * genpeep.c (match_rtx): For match_operator, match the operands, too.
7040:
7041: * varasm.c (output_constant): Use ASM_OUTPUT_DOUBLE_INT for DImode.
7042:
7043: * stor-layout.c (make_signed_type, make_unsigned_type):
7044: (fixup_unsigned_type): Use HOST_BITS_PER_INT.
7045:
7046: * stor-layout.c (layout_type): Use TFmode if appro.
7047:
7048: * optabs.c (emit_cmp_insn): Use mode sizes to check cmpstrqi, cmpstrhi.
7049:
7050: * c-typeck.c (get_floating_type): Compare MODE against modes of types.
7051: (signed_type, unsigned_type, signed_or_unsigned_type, type_for_size):
7052: Handle long long types.
7053: (digest_init): Don't assume width of `char' is BITS_PER_UNIT.
7054:
7055: * c-parse.y (yylex): For truncating chars, use width of `char' type.
7056: Allow `ll' in int constants and make long long.
7057: Also make long long if constant won't fit in an int.
7058:
7059: * c-decl.c (SHORT_TYPE_SIZE): Round up when dividing.
7060:
7061: Fri May 12 22:36:21 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7062:
7063: * real.h: Allow multiple inclusion.
7064:
7065: * tm-sun386i.h (DBX_REGISTER_NUMBER): Bizarre renumbering.
7066:
7067: Thu May 11 00:36:21 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7068:
7069: * fixincludes: Fix non-ansi declaration of sprintf in X11/Xmu.h
7070:
7071: * c-parse.y (stmt from expr): Do default conversion if useful
7072: for sake of ({...}).
7073:
7074: * sparc.md (andcc recognizer): Operand missing in subreg.
7075:
7076: Wed May 10 17:20:38 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7077:
7078: * rtl.c (read_name): Error if name is missing.
7079: (dump_and_abort): Don't print char args if -1.
7080:
7081: * i386.md (umulqihi3): Operand numbers were missing.
7082:
7083: * reload1.c (choose_reload_targets): Allow spill reg in find_equiv_reg
7084: if it's free and correct class.
7085:
7086: * cse.c (canon_hash): Handle empty strings.
7087:
7088: * cccp.c (macroexpand): Newline newline treated like real white space
7089: when stringifying.
7090:
7091: * Rename *offsetable* to *offsettable*.
7092:
7093: Tue May 9 22:54:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7094:
7095: * c-decl.c (finish_type): Layout any variants of the type.
7096:
7097: Tue May 9 12:30:28 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
7098:
7099: * final.c (final_scan_insn, final): Added an argument to
7100: final_scan_insn to disallow peephole processing (to turn it off
7101: during delayed branch scheduling).
7102:
7103: * final.c (final_scan_insn): Made insn not matching any MD rtl a
7104: criteria for delayed branch case. Moved delayed branch case to just
7105: before real insn recognition to reduce the number of insns on which
7106: recog_memoized is called.
7107:
7108: Mon May 8 15:02:42 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7109:
7110: * fixincludes (LIB): Allow overriding.
7111:
7112: * cccp.c: Don't search /usr/include/CC by default.
7113:
7114: Mon May 8 13:09:21 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
7115:
7116: * print-tree.c (dump): Fixed typo; IDENTIFIER ==> IDENTIFIER_NODE.
7117:
7118: Sun May 7 12:44:53 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7119:
7120: * print-tree.c (dump): TYPE_NAME may be IDENTIFIER or TYPE_DECL.
7121:
7122: Sat May 6 00:13:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7123:
7124: * tree.def: Define EXACT_DIV_EXPR, for when remainder known as 0.
7125: * fold-const.c (combine, fold, div_and_round_double): Handle new code.
7126: * expr.c (expand_expr): Likewise.
7127: * c-typeck.c (pointer_diff): Use EXACT_DIV_EXPR.
7128:
7129: * integrate.c (expand_inline_function): Use size of passed type
7130: for allocating stack slot with that type.
7131:
7132: * c-parse.y (maybe_attribute, attribute*): New syntax for Apollos.
7133: These tokens currently not generated.
7134:
7135: Fri May 5 18:43:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7136:
7137: * toplev.c [USG]: Undefine FLOAT for sake of sys/param.h on hpux.
7138:
7139: * optabs.c (expand_binop): If backtracking, don't delete insns made
7140: for -fforce-mem.
7141:
7142: Thu May 4 01:57:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7143:
7144: * reload.c (find_reloads): Don't compare an earlyclobber operand
7145: with itself.
7146:
7147: * reload.c (immune_p): Constants and stack slots don't overlap.
7148:
7149: * Put no-ops in front of loops and labels,
7150: to prevent confusion in the debugger.
7151: * c-parse.y (loops and labels): Call emit_nop.
7152: * stmt.c (emit_nop): New function--sometimes emit a no-op.
7153: * *.md (nop): New insn.
7154:
7155: * expr.c (expand_call): Typo in arg to FIRST_PARM_CALLER_OFFSET.
7156:
7157: Wed May 3 01:34:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7158:
7159: * loop.c (scan_loop): Scanning around end of loop
7160: should not set maybe_never.
7161:
7162: * Rename SELECT_VARIABLE_SECTION to SELECT_SECTION.
7163: * varasm.c (get_or_assign_label): Use SELECT_SECTION if defined.
7164: * varasm.c: Use EXTRA_SECTION_FUNCTIONS if defined (new macro).
7165:
7166: * mips.md: Change %u to %u0 to avoid error check.
7167:
7168: * tm-mips.h (TARGET_VERSNUM): Inc. to 1 08.
7169: (TARGET_VERSION): Change strings.
7170: (AL_DEBUG): Don't define it.
7171: (HARD_REGNO_MODE_OK): Add some casts to int.
7172: (STACK_ARGS_ADJUST): Name was misspelled.
7173: (PRINT_OPERAND_ADDRESS): Just abort for MEM, POST_INC, etc.
7174: (EXTRA_SECTIONS, SELECT_VARIABLE_SECTION, SELECTORS_EXTRA_SECTIONS,
7175: SELECT_VARIABLE_CONST_SECTION): New macros.
7176: (ASM_FILE_END): Change function name.
7177: * out-mips.c (function_arg_advance): Delete debugging printfs.
7178: (function_inarg, function_arg): Likewise.
7179: (compare_collect, compare_restore): Add some.
7180:
7181: * reload1.c (reload): Fix handling of caller_save_needed.
7182:
7183: * stmt.c (expand_function_start): Clear caller_save_needed.
7184:
7185: * stmt.c (emit_case_nodes): Some compiler has trouble with calling
7186: a function pointer.
7187: * gnulib.c: likewise.
7188:
7189: Tue May 2 15:32:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7190:
7191: * loop.c (combine_movables): For zero extend,
7192: do each from-mode separately.
7193:
7194: Mon May 1 00:18:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7195:
7196: * tm-apollo68.h: New file.
7197:
7198: * c-parse.y (is_reserved_word, hash): Add keywords `__asm__', etc.
7199: * c-parse.gperf: Corresponding changes.
7200:
7201: * c-parse.y (check_newline): Set main_input_filename before
7202: considering optional arguments.
7203:
7204: * final.c (final_scan_function): Return next insn to process.
7205: Usually that's the following insn; occasionally, previous compare.
7206:
7207: * c-decl.c (DOUBLE_TYPE_SIZE): Wrong value.
7208:
7209: * reload.c (decompose): Failed to return value.
7210:
7211: * Support local specified-register variables.
7212: * varasm.c (decode_reg_name): New function, cvt asmspec to regnum.
7213: (make_decl_rtl): Call that.
7214: * toplev.c (rest_of_decl_compilation): Handle local specified-register
7215: declarations.
7216:
7217: * i386.md (tstqi, trunc*qi): Constrain to `q' regs.
7218:
7219: * loop.c (scan_loop, move_movables): ->global for zero-extend register
7220: now means register is used outside range from where it is set
7221: to the following label. Non-global zero-extend regs
7222: may be entirely cleared.
7223:
7224: * loop.c (combine_movables): Loop that combines matching movables
7225: broken out from scan_loop.
7226: Now also combine non-global zero-extend registers with each other
7227: if their lifespans don't overlap.
7228:
7229: * c-typeck.c (build_unary_op, ADDR_EXPR of a COMPONENT_REF):
7230: Always convert to desired result type.
7231:
7232: Sun Apr 30 12:58:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7233:
7234: * c-decl.c (init_decl_processing): New macros parameterize int types.
7235: CHAR_TYPE_SIZE, SHORT_TYPE_SIZE, LONG_TYPE_SIZE, LONG_LONG_TYPE_SIZE,
7236: FLOAT_TYPE_SIZE, DOUBLE_TYPE_SIZE.
7237:
7238: * fixincludes: Use sed instead of ex. No problem with split lines.
7239:
7240: * print-tree.c (dump): Print type's name, if any.
7241:
7242: * c-parse.y: Use __inline, not plain inline.
7243:
7244: * toplev.c: New option -fdelayed-branch.
7245: (compile_file): Open and close dbranch dump file.
7246: Collect and print dbranch time.
7247: (rest_of_compilation): Optionally do dbranch scheduling,
7248: only if HAVE_DELAYED_BRANCH.
7249: (main): Handle -dd.
7250:
7251: * rtl.c (copy_rtx): Handle null pointers as code `e'.
7252:
7253: * final.c (dbr_sequence_length): New function.
7254: (final_scan_insn): Most of `final' broken out.
7255: Add support for SEQUENCE insns.
7256: last_ignored_compare and new_block now top-level static.
7257:
7258: * c-parse.y (MAX_WORD_LENGTH): Long enough for __volatile.
7259:
7260: Sat Apr 29 13:03:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7261:
7262: * c-parse.y (asm statements): Output line numbers.
7263:
7264: * loop.c (emit_iv_init_code, emit_iv_inc, eliminate_biv): Copy
7265: additive term rtx's to prevent sharing between insns.
7266:
7267: * c-parse.y (check_newline): Increment input_file_stack_tick.
7268: * toplev.c (report_error_function): Describe input stack only if
7269: changed.
7270:
7271: * c-decl.c (finish_struct): Reject zero width for named field.
7272:
7273: * tm-sun3.h (CC1_SPEC): Prevent error on `-sun3'.
7274: * tm-sparc.h (CC1_SPEC): Prevent error on `-sun4'.
7275:
7276: * Makefile (cleanconfig): cleanlinks renamed; also delete gnulib.
7277: (gnulib): Delete stamp-gnulib2 since gnulib2 should be redone after.
7278:
7279: Fri Apr 28 00:38:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7280:
7281: * config.gcc (genix): Correct xm file name.
7282:
7283: * tm-genix.h: Undefine ASM_SPEC inherited from tm-encore.h.
7284:
7285: * Makefile: Make float.h using hard-params.
7286: (clean): Delete float.h.
7287:
7288: * hard-params.c: New program.
7289:
7290: * varasm.c (assemble_variable): Use SELECT_VARIABLE_SECTION if defined.
7291: (in_section): Use EXTRA_SECTIONS if defined.
7292:
7293: * toplev.c (compile_file): Call ASM_FILE_END if defined.
7294:
7295: * gcc.c (SWITCH_TAKES_ARG, WORD_SWITCH_TAKES_ARG): Let config override.
7296:
7297: * loop.c (emit_iv_init_code): Force A to a reg if it isn't.
7298:
7299: Thu Apr 27 12:51:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7300:
7301: * tm-mips.h (ASM_START_FILES): Don't call print_options.
7302: Don't call the funny abort-functions.
7303: * out-mips.c: Delete funny debugging functions and aborts.
7304: (print_options): #if 0.
7305: (compare_restore): Test for COMPARE, not MINUS.
7306: (mips_section_get, mips_output_external, mips_asm_final): New fns.
7307:
7308: * input.h: New file with *input_filename, lineno and input_file_stack.
7309: Included in toplev.c and c-parse.y.
7310: * c-decl.c (finish_function): LINENO is now arg.
7311: * c-parse.y: Calls changed.
7312:
7313: * c-parse.y (check_newline): Handle `1' or `2' from cpp
7314: by pushing or popping input_file_stack.
7315: * toplev.c (compile_file): Push main input file on input_file_stack.
7316: (report_error_function): If in include file, print the chain
7317: of include-locations.
7318:
7319: * cccp.c (output_line_command): New arg says whether entering or
7320: leaving a file. Output `1' or `2' on #-line if so. Callers changed.
7321:
7322: * gnulib2.c: Little-endian fixes from [email protected].
7323:
7324: * fixincludes: Wrong quoting in `echo' command.
7325:
7326: * tm-mips.h (REG_P): Duplicate defn deleted.
7327: (PRINT_OPERAND): `\' was missing.
7328:
7329: Wed Apr 26 02:44:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7330:
7331: * cccp.c (handle_directive): Preprocess even #pragma, but copy
7332: to output file afterward.
7333: (do_pragma): Use standard calling convention.
7334: (install_builtins, special_symbol): Define __INCLUDE_LEVEL__.
7335:
7336: * cccp.c (do_include): Don't forget to close file.
7337:
7338: * final.c (output_asm_insn): Use PRINT_OPERAND_PUNCT_VALID_P
7339: to validate punctuation after percent.
7340: * tm-m68k.h, tm-alliant.h, tm-ns32k.h, tm-vax.h, tm-i386.h:
7341: Define PRINT_OPERAND_PUNCT_VALID_P.
7342:
7343: * Version 1.35 released.
7344:
7345: * c-decl.c (grokdeclarator): Use INT_CST_LT only on int constants.
7346:
7347: Tue Apr 25 15:47:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7348:
7349: * reload.c (find_reloads_address_1): Always return a value.
7350:
7351: * flow.c (mark_set_1): Look inside zero_extract, sign_extract.
7352:
7353: * expr.c (emit_library_call) [STACK_ARGS_ADJUST]:
7354: Fix typo for `struct args_size'.
7355:
7356: Mon Apr 24 00:12:18 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7357:
7358: * flow.c (mark_set_1): Look inside strict_low_part.
7359:
7360: * c-typeck.c (decl_constant_value): Don't use var's init if volatile.
7361:
7362: * print-tree.c (dump): Don't call walk on rtx's.
7363:
7364: * integrate.c (expand_inline_function): Convert expanded arg from
7365: passed mode to nominal mode.
7366:
7367: Sun Apr 23 13:14:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7368:
7369: * fixincludes: fix _IO macros if split across two lines.
7370: Fix typo: EOF was indented.
7371:
7372: * gnulib2.c: New file with DImode library routines.
7373: * Makefile (gnulib2): Put them into gnulib.
7374: Must be explicitly requested.
7375:
7376: Fri Apr 21 13:45:45 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7377:
7378: * cccp.c (main): Don't turn on trigraphs for -Wtrigraphs or -Wall;
7379: use -trigraphs for that.
7380:
7381: * cccp.c (main): Use -trigraphs to enable trigraphs.
7382: * gcc.c: Pass -trigraphs to cpp; don't pass -T.
7383:
7384: * Makefile: Variable srcdir relates location of sources
7385: to current directory. Default is `.'.
7386:
7387: * integrate.c (expand_inline_function): When copying expanded arg,
7388: use mode it's passed in, not arg's nominal mode.
7389:
7390: * dbxout.c (dbxout_block): Print generated name with assemble_name.
7391:
7392: Thu Apr 20 12:36:09 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7393:
7394: * stdarg.h: check __sparc__ instead of sparc.
7395:
7396: Tue Apr 18 18:58:03 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7397:
7398: * tm-next.h (STARTFILE_SPEC): Define it.
7399:
7400: Mon Apr 17 19:56:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7401:
7402: * dbxout.c (dbxout_block): Use ASM_GENERATE_INTERNAL_LABEL to format
7403: the labels LBB... and LBE...
7404:
7405: Sun Apr 16 23:57:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7406:
7407: * mips.md: Change MINUS to COMPARE where appropriate.
7408:
7409: Sat Apr 15 16:11:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7410:
7411: * c-decl.c (finish_struct, redeclaration_error_message):
7412: Rename variables named OLD and NEW.
7413:
7414: * sparc.md (cse'd mult pattern): Handle memory operands.
7415: Optimize small integer operands.
7416:
7417: * stmt.c (expand_decl): On sparc, ensure dynamic arrays of doubles
7418: are properly aligned, despite unaligned STACK_POINTER_OFFSET.
7419:
7420: Fri Apr 14 10:59:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7421:
7422: * expr.c (expand_call): Bugs treating struct value address as param:
7423: do so only if it's supposed to be pushed;
7424: decode value of FUNCTION_ARG properly.
7425:
7426: * tm-altos3068.h (CPP_SPEC): Some braces were dropped.
7427:
7428: * gcc.c (pexecute): Print message when exec fails.
7429: (perror_exec): New fn.
7430: (perror_with_name,pfatal_with_name): Change message syntax.
7431:
7432: * tm-hp9k320.h (ASM_IDENTIFY_GCC): Define as no-op.
7433:
7434: Wed Apr 12 00:20:31 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7435:
7436: * cse.c (cse_insn): Can record constant value being stored in
7437: a bit field, if we can tell that truncation won't change it.
7438:
7439: * m68k.md (bfset, bfclr, bfchg insns): Do CC_STATUS_INIT
7440: since the cc's are set from the old contents.
7441:
7442: * gcc.c (compilers): Running `as', put -o option before input file.
7443:
7444: * gcc.c: Delete output file only if that file's compilation fails.
7445: * gcc.c (record_temp_file): Changed args: always_delete, fail_delete.
7446: (store_arg): Likewise. Callers changed.
7447: (clear_failure_queue): Called after each compilation.
7448:
7449: Tue Apr 11 01:18:53 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7450:
7451: * combine.c (subst): (SET (ZERO_EXTRACT) (OR (ZERO_EXTRACT) const))
7452: optimization was sometimes invalid.
7453:
7454: * tm-m68k.h (NOTICE_UPDATE_CC): A doubleword move that requires 2 insns
7455: does not set the cc's usefully.
7456:
7457: * Makefile (cleanlinks): Just do `clean', not `realclean'.
7458: (realclean): Delete config links also.
7459:
7460: * expr.c (expand_call): Handle case where return value is in memory
7461: but TARGET is a register.
7462:
7463: * c-typeck.c (build_binary_op_nodefault): New arg ERROR_CODE
7464: is passed to binary_op_error instead of CODE.
7465: All callers changed.
7466: (binary_op_error): CODE = NOP_EXPR is new special case.
7467: (truthvalue_conversion): Call build_binary_op_nodefault directly
7468: and specify NOP_EXPR for the error code.
7469:
7470: * c-decl.c (xref_tag): If pedantic, warn on fwd ref to enum.
7471:
7472: Mon Apr 10 19:44:48 1989 Chris Smith (csmith at mozart)
7473:
7474: * tm-convex.h (PCC_BITFIELD_TYPE_MATTERS): It doesn't,
7475: but set it anyway. It makes for better code on this
7476: word machine.
7477:
7478: * convex.md (one_compl*): add not:QI and not:HI, which
7479: do get used after all.
7480:
7481: * tm-convex.h (A_REG_P, S_REG_P): define new macros
7482: convex.md: use them
7483:
7484: * convex.md (addsi3): tidy up constraints.
7485:
7486: * tm-convex.h (REG_OK_FOR_INDEX_P): stack pointer is not ok.
7487:
7488: * convex.md: add a pattern to push REG+CONST so we can
7489: prefer an A reg.
7490:
7491: * tm-convex.h (tstqi): should sign extend, not zero extend.
7492:
7493: * expr.c (convert_move): Extending narrow to DI via SI,
7494: operand of extendsidi2 was wrong.
7495:
7496: * emit-rtl.c (gen_lowpart): Handle CONST_DOUBLE.
7497:
7498: Mon Apr 10 05:19:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7499:
7500: * recog.c (nonmemory_operand): Test constant operands
7501: as general_operand does.
7502:
7503: * tm-m68k.h (PRINT_OPERAND): Limit effect of code `d'
7504: to constant addresses.
7505:
7506: * loop.c (can_eliminate_biv_p, eliminate_biv): Don't rely on givs with
7507: nonconstant coefficients, since the coeffs could be zero.
7508:
7509: * loop.c (can_eliminate_biv_p): Check each giv for ! ignore
7510: before assuming it can be used.
7511: (check_eliminate_biv): New fn, a piece of strength_reduce broken out.
7512:
7513: * cccp.c (error_from_errno): New fn, like error and perror_with_name.
7514: (do_include): Call that if open fails.
7515: (finclude): Print I/O error msg before closing desc.
7516:
7517: * c-decl.c (shadow_tag): If more than one tag or structure,
7518: or anything other than a tag, warning.
7519:
7520: * c-parse.y (components): Just warn if memb decl has no member,
7521: and only if pedantic.
7522:
7523: * loop.c (strength_reduce): Print uids, not luids, for dump.
7524: (record_giv): giv_count field counts only DEST_REG givs.
7525: (check_dbra_loop): src_two_before_end was set wrong.
7526:
7527: * loop.c (record_giv): New arg LOOP_END; all callers changed.
7528: Don't mark giv replaceable if used past LOOP_END.
7529: (find_mem_givs): New arg LOOP_END; all callers changed.
7530:
7531: * out-i386.c (FP_CALL): Make this a `return' stmt.
7532:
7533: Fri Apr 7 11:56:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7534:
7535: * expr.c (expand_expr, case ..._DECL): Preserve mode thru
7536: calling change_address.
7537:
7538: * expr.c (emit_library_call): Typo: ARGNUM => COUNT.
7539:
7540: * expr.c (preexpand_calls, expand_call): Take note of RETURN_IN_MEMORY.
7541: * stmt.c (assign_parms): Likewise.
7542: * integrate.c (function_cannot_inline_p): Likewise.
7543:
7544: * STACK_ARGS_ADJUST: Arg is now a `struct arg_data' and it should
7545: be updated in place.
7546: * tm-mips.h: Define it.
7547: * expr.c (expand_call): Adapt to this. Assume padding comes after args
7548: so turn off the feature of changing the args' offsets.
7549: (emit_library_call): Adapt to this.
7550:
7551: * tm-mips.h (PRINT_OPERAND): Use CONST_DOUBLE_{LOW,HIGH}.
7552: Truncate SFmode constants to single precision.
7553:
7554: * c-typeck.c (mark_addressable): Fix test for local vs global reg var.
7555:
7556: * config.gcc: Change `:-' to `-' in var refs.
7557: Shell on convex doesn't handle `:-'.
7558:
7559: Thu Apr 6 00:09:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7560:
7561: * integrate.c (expand_inline_function): Compare actual's mode
7562: against formal's DECL_ARG_TYPE's mode, not TREE_TYPE's mode.
7563:
7564: * c-decl.c (implicitly_declare): Make the decl permanent if
7565: in global binding level. (Can happen for certain invalid input.)
7566:
7567: * c-typeck.c (build_modify_expr): Block path that made a MODIFY_EXPR
7568: containing an ERROR_MARK.
7569:
7570: * config/tm.h: New file.
7571:
7572: * loop.c (only_reg_use_p): Fix bugs in recursion, add some fast
7573: special cases. Comment on return value was backwards.
7574: (strength_reduce): Negate the value of only_reg_use_p.
7575:
7576: * genoutput.c (output_prologue): Output `#include hard-reg-set.h'.
7577: * Makefile: insn-output.o depends on that.
7578:
7579: * toplev.c (main): Typo recognizing -Wswitch.
7580:
7581: * config.gcc (mips): New alternative.
7582: * tm-mips.h, out-mips.c, mips.md, va-mips.h: New files.
7583: * varargs.h: Include va-mips.h if on mips.
7584:
7585: Wed Apr 5 16:58:04 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7586:
7587: * c-decl.c (duplicate_decls): Rename OLD, NEW to OLDDECL, NEWDECL.
7588:
7589: * stmt.c (expand_function_start): Ref subr instead of
7590: current_function_decl; should make no difference.
7591:
7592: * stmt.c (assign_parms): Do extra padding for some parms,
7593: controlled by MAX_PARM_BOUNDARY.
7594: * expr.c (expand_call): Same thing for caller side.
7595: Note this is implemented only for machines that lack push insns.
7596: Also, in both cases, it doesn't handle variable-size args.
7597:
7598: Tue Apr 4 12:22:06 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7599:
7600: * gcc.c (find_file): Try STANDARD_EXEC_PREFIX for startfiles too.
7601:
7602: * varasm.c (make_decl_rtl): Delete never-executed clause.
7603:
7604: * spur.md (movqi, loadhi, extend*, zero_extendhisi):
7605: Make subregs with C code, not RTL patterns, so we can
7606: avoid generating subreg of subreg.
7607:
7608: * optabs.c (emit_cmp_insn): Not all clauses always succeed,
7609: so stop using `else' structure.
7610:
7611: * stmt.c (expand_return): Avoid moving void to void, in cleanups case.
7612:
7613: Mon Apr 3 18:04:33 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7614:
7615: * m68k.md (cmphi): Don't allow a-reg vs a-reg, since that sign-extends.
7616: If there is one a-reg, make sure it is not last.
7617:
7618: Sun Apr 2 13:02:26 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7619:
7620: * stor-layout.c (agg_mode): Use highest mode that has desired size.
7621: Allow all integer modes, but reject sizes > MAX_FIXED_MODE_SIZE.
7622: (That defaults to the size of DImode.)
7623:
7624: * machmode.def: Add PSI, PDI and XF, CXF modes.
7625:
7626: Sat Apr 1 00:50:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7627:
7628: * ns32k.md (ashd, lshd): Delete patterns that logand the count with 31.
7629: The shift count is not truncated on this machine.
7630:
7631: * combine.c (subst): Simplify nested or's, nested xor's.
7632: (try_distrib): XOR doesn't distribute through anything.
7633:
7634: * rtl.c (rtx_equal_p): Don't die on null pointers.
7635:
7636: * loop.c (eliminate_biv): Use COMPARE, not MINUS, in generated compare.
7637:
7638: * loop.c (invariant_p): Mem refs in constant pool are invariant.
7639:
7640: * c-decl.c (redeclaration_error_message): If -traditional, allow
7641: redeclarations of typedef provided they agree.
7642:
7643: * c-decl.c (start_decl): Do expand_decl on the decl that pushdecl
7644: returns. If there was a prev. decl with a different type,
7645: we have changed its type and cleared its old rtl, so it need new rtl.
7646:
7647: Sat Apr 1 00:50:11 1989 Matthew Self (rms at sugar-bombs.ai.mit.edu)
7648:
7649: * expr.c (convert_move): Modified to use mode classes
7650: instead of refering to specific machine modes.
7651:
7652: * expr.c (do_jump): Converted to use CONST0_RTX macro.
7653: do_jmp no longer refers to any machine modes directly except
7654: for VOIDmode!
7655:
7656: * expr.c (compare, compare1): Modified to use CONST0_RTX
7657: macro. No longer refers to any machine modes directly
7658: except VOIDmode and BLKmode!
7659:
7660: * machmode.def: Documented assumptions made about the order
7661: of machine modes during mode widening.
7662:
7663: * optabs.c (expand_binop, expand_twoval_binop, expand_unop,
7664: emit_cmp_insn): Added mode widening which is independent of
7665: specific machine modes. It assumes that we may widen to any
7666: higher numbered mode of the same mode class.
7667: NOTE: the checks for VOIDmode ops which were present in
7668: QI and HI to SI widening are now present in all widening.
7669: I assume this is correct. Also, widening is now possible
7670: from QI to HI. This may or may not be a good thing....
7671:
7672: * rtl.h (CONST0_RTX): Added definition of new macro
7673: CONST0_RTX (mode).
7674:
7675: * rtl.h (GET_NOTE_INSN_NAME, GET_REG_NOTE_NAME): New macros.
7676: * rtl.c (note_insn_name, reg_note_name): New tables.
7677: * rtl.def (NOTE): Change last field from `i' to `n'.
7678: * rtl.c (print_rtx): Print mode of INSN_LIST or EXPR_LIST as reg-note.
7679: Print operand code `n' as name of kind of note.
7680: (read_rtx): treat `n' like `i'.
7681:
7682: * loop.c (struct induction): Add `mode' field.
7683: (strength_reduce, record_giv): Set the `mode' field in V.
7684: (can_eliminate_biv_p, eliminate_biv): Use that field.
7685:
7686: * loop.c (struct iv_class): `init_insn' records what inits the biv.
7687: Replaces `init_val_set' flag.
7688: (strength_reduce): Update and test `init_insn' instead.
7689: Use of a biv between its init and the start of the loop
7690: does not preclude its elimination from the loop.
7691: Setting a giv is ok for eliminating a biv, even if giv is "ignore",
7692: since that just means giv will be combined with another.
7693: Handle some DEST_ADDR givs for that purpose.
7694: Test for giv-setting before check can_eliminate_biv_p.
7695: New error check for replaceable giv whose value needed after loop.
7696: (only_reg_use_p): New fn.
7697:
7698: * expr.c (expand_expr): PLUS, MINUS with EXPAND_SUM:
7699: Associate even harder.
7700:
7701: * loop.c (strength_reduce): Treat all constant biv init vals like ints.
7702:
7703: * loop.c (strength_reduce): Clear all_reduced when v->ignore is set;
7704: the code to check this later didn't always do the job.
7705:
7706: * loop.c (verify_loop): Set loop_continue.
7707: (scan_loop): mention its value.
7708: * rtl.h: Define NOTE_INSN_LOOP_CONT.
7709: * stmt.c (expand_loop_continue_here): Output one.
7710:
7711: Fri Mar 31 10:08:29 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7712:
7713: * c-typeck.c (pointer_int_sum, pointer_diff): Treat const void * like
7714: void *.
7715:
7716: * rtl.c (rtx_addr_varies_p): Don't die on null exp.
7717: * cse.c (refers_to_mem_p, refers_to_p): Likewise.
7718:
7719: * gcc.c (validate_switches, validate_all_switches): New fns.
7720: Mark a switch as valid if any compiler spec or the linker spec
7721: matches it, even for languages not being used.
7722:
7723: Thu Mar 30 00:22:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7724:
7725: * loop.c (loop_optimize, move_movables): when moving a `clr' insn used
7726: in zero-extension, sometimes change it to an `and' so that the
7727: significant low bits are not clobbered.
7728:
7729: * cccp.c: Implement __BASE_FILE__ and #once.
7730: (savestring): New fn.
7731: (struct file_name_list): new name for struct directory_stack.
7732: (enum node_type): Add T_ONCE, T_BASE_FILE.
7733: (directive_table): Add #pragma once.
7734: (initialize_builtins): Add __BASE_FILE__.
7735: (special_symbol): Handle __BASE_FILE__, together with __FILE__.
7736: (do_include): Ignore the file if it's on the #pragma once list.
7737: (do_once): New fn; add current file to #pragma once list.
7738:
7739: * cccp.c (do_include): Don't add non-ex files to list of deps.
7740:
7741: * config.gcc: Use {...:-...}, not {...=...}.
7742:
7743: * c-parse.y: Add precedence for IF/ELSE, and for parens;
7744: avoids some conflicts.
7745:
7746: * tm-newsgas.h: Include tm-news.h and define USE_GAS.
7747:
7748: * tm-news.h: New name for tm-news800.h.
7749: If not USE_GAS, define SONY_ASM.
7750: Don't define USE_GAS by default.
7751: (CPP_PREDEFINES): Various alternatives depending on processor type.
7752: (ASM_FORMAT_PRIVATE_NAME): Override this.
7753: (ASM_IDENTIFY_GCC): Override; output nothing.
7754: (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Round fsize up to % 4.
7755: Max for halfword link insn is 32k, not 64k.
7756: (FUNCTION_EPILOGUE): Don't output move.l if no regs to restore.
7757: (PRINT_OPERAND_ADDRESS): Change handling of tableref pc-rel addresses.
7758: * m68k.md (movhi): Add SONY_ASM conditional.
7759:
7760: * cse.c (cse_insn): If replacing a dest address, preserve MEM_IN_STRUCT
7761:
7762: * gcc.c (error, fatal): alternate varargs defns if HAVE_VPRINTF.
7763:
7764: Wed Mar 29 09:54:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7765:
7766: * gcc.c (process_command): Check WORD_SWITCH_TAKES_ARG, so that
7767: -Tdata can be handled right.
7768:
7769: * stmt.c (check_for_full_enumeration_handling): new fn, for warn_switch
7770: (expand_end_case): Call it, if orig index was enum.
7771: * toplev.c (main): Handle -Wswitch.
7772: * c-parse.y (SWITCH stmt): Pass orig switch expr to expand_end_case.
7773:
7774: * tm-*.h, out-*.c: Uniformly use reg_names, not reg_name, and don't
7775: define any duplicates.
7776: * final.c: Delete reg_name.
7777:
7778: * c-parse.y (is_reserved_word): Add keywords __asm and __inline;
7779: also __const and __volatile.
7780: (yylex): Keywords that start with `__' are recognized regardless of
7781: -traditional or -ansi.
7782:
7783: * c-parse.y (check_newline): Always recognize #ident.
7784: Macro IDENT_DIRECTIVE is no more.
7785: If ASM_OUTPUT_IDENT is undefined, don't output anything for #ident.
7786: * tm-3b1.h: Don't define IDENT_DIRECTIVE or ASM_OUTPUT_IDENT.
7787: * tm-encore.h, tm-i386gas.h, tm-i368v.h, tm-sun386i.h, tm-vaxv.h:
7788: Don't define IDENT_DIRECTIVE; define ASM_OUTPUT_IDENT to output in
7789: default way.
7790:
7791: * expr.h (RETURN_IN_MEMORY): New macro, default defn here.
7792: * expr.c (expand_call): Use it to control where to return value.
7793: * stmt.c (expand_function_start): Likewise.
7794:
7795: * out-sparc.c (find_addr_reg): Abort if none found.
7796: Eliminate confusion; do only one change between tests for PLUSness.
7797: (output_move_double): Arg to find_addr_reg is address, not mem ref.
7798: * out-m68k.c, out-spur.c, out-i386.c, out-alliant.c: Likewise.
7799:
7800: * jump.c (find_cross_jump): Don't let either E1 or E2 be included
7801: in the range of matching insns preceding the other (E2 or E1).
7802:
7803: * c-parse.y (check_newline): No error for `#pragma\n'.
7804:
7805: * Makefile (gcc.o): Control STANDARD_STARTFILE_PREFIX here.
7806:
7807: * stmt.c (walk_fixup_memory_subreg): handle null.
7808:
7809: * tm-sparc.h (FUNCTION_BLOCK_PROFILER): Change LPBnn to LPYnn,
7810: to avoid conflict with final.c.
7811:
7812: Tue Mar 28 15:23:17 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
7813:
7814: * cccp.c (do_include): If fail, print system error message.
7815: (perror_with_name): Use more standard error format. Inc. `errors'.
7816:
7817: * dbxout.c (dbxout_function): Output any temporary types
7818: that were made by dbxout itself.
7819:
7820: * stmt.c: always use an epilogue if pcc-struct-return.
7821: (expand_function_start): Compute return_label after testing that.
7822: (expand_function_end): Output a return insn after pcc-struct-return
7823: processing, if there is a return insn.
7824: (expand_null_return): Don't output a return insn, in that case.
7825: Simplify the conditions--depends entirely on HAVE_return.
7826:
7827: * tm-m68k.h (FUNCTION_BLOCK_PROFILER): Use jsr, not call.
7828:
7829: * reload.c (find_reloads): Certain mem addresses will be offsetable
7830: after reloading; in particular, those where reg_equiv_address applies.
7831:
7832: * loop.c (check_dbra_loop): Change MINUS to COMPARE.
7833:
7834: * c-typeck.c (convert_for_assignment): Return THE standard error_mark.
7835:
7836: Thu Mar 23 09:39:02 1989 Richard M. Stallman (rms at watson)
7837:
7838: * c-parse.y (components): Error if empty.
7839:
7840: * dbxout.c (dbxout_symbol): Output const variables as N_STSYM.
7841:
7842: * varasm.c (force_const_mem): Use ASM_OUTPUT_DOUBLE_INT if defnd.
7843:
7844: * c-decl.c (grokdeclarator): Warn about `long long long'.
7845:
7846: * reload1.c (reload): When changing REG to MEM, clear REG_USERVAR_P.
7847: * final.c (alter_subreg): Preserve volatile bit of MEM.
7848:
7849: * m68k.md (cmpsi, cmphi): Permit cmpm.
7850:
7851: * gcc.c (find_file): Use standard_startfile_prefix_2.
7852: Now search /usr/local/lib/, /lib/ and /usr/lib/.
7853:
7854: * tm-m68k.h (PRINT_OPERAND): Support code `d'.
7855: * m68k.md (cmpsi, cmphi, cmpqi): Use it for all mem addresses.
7856:
7857: * final.c (output_asm_insn): Don't allow %LETTER without an
7858: operand number.
7859: * tm-m68k.h, m68k.md, tm-hp9k320.h, tm-news*.h: Use %@ instead of %s.
7860: * tm-alliant.h, alliant.md: Likewise.
7861: * i386.md, out-i386.h: Put `0' after each %L, %W, %B, %S, %Q, %R.
7862:
7863: * stmt.c (expand_end_stmt_expr): Pop pending stack args.
7864:
7865: * varasm.c (assemble_variable): For 0-size common variable,
7866: allocate at least 1 byte.
7867:
7868: * tm-encore.h (ASM_OUTPUT_DOUBLE, PRINT_OPERAND): Use 0f, not 0l,
7869: for doubles.
7870:
7871: Mon Mar 13 10:24:56 1989 Richard M. Stallman (rms at ccvi)
7872:
7873: * out-i386.h (function_prologue, function_epilogue):
7874: Use call_used_regs, not a copy, so -f options work.
7875: Save regs in the opposite order.
7876: Save regs even starting from 0 if they happen to be call-saved.
7877:
7878: * Bug fixes from Rob McMahon.
7879:
7880: * loop.c (strength_reduce): When inserting insn to set
7881: nonreplaceable giv, put it after all the consecutive insns
7882: that compute it.
7883:
7884: * reload.c (find_reloads): When forcing const to mem,
7885: use the insn's operand mode, not the const's mode.
7886:
7887: * reload1.c (choose_reload_targets): Use wider of inmode and outmode
7888: when determining have_groups.
7889:
7890: * reload1.c (choose_reload_targets): typo checked wrong insn with
7891: constraint_accepts_reg_p.
7892:
7893: * reload1.c (choose_reload_targets): Enable #if-0'd code for
7894: forgetting old reloads in case of output reload from a non-spill-reg.
7895:
7896: Sun Mar 12 00:04:49 1989 Richard M. Stallman (rms at ccvi)
7897:
7898: * c-parse.y (yyerror): Add forward-decl here.
7899: * c-tree.h: Delete decl here.
7900:
7901: * New macro USE_C_ALLOCA.
7902: * cse.c (cse_main): Do alloca (0) to clear out C alloca.
7903: * flow.c (life_analysis):
7904: * local-alloc.c (local_alloc):
7905: * reload1.c (reload_as_needed): likewise.
7906:
7907: * loop.c (emit_iv_init_code, eliminate_biv):
7908: Always put constant in a PLUS last.
7909:
7910: * gcc.c (make_switch): Unused function deleted.
7911:
7912: *gcc.c (switches): Each switch has a `used' field.
7913: (process_command): Init it to 0 when making `switches'.
7914: (do_spec_1, handle_braces, give_switch): Set to 1 when switch is used.
7915: (main): If it remains 0 at the end, print error message.
7916:
7917: * expr.c (convert_move, convert_to_mode): Don't truncate a MEM in
7918: place if it is volatile.
7919:
7920: * loop.c (strength_reduce): When reducing a giv, if the biv is
7921: incremented between the giv's creation and its use, increment
7922: the reduced giv var *after* its use.
7923:
7924: * c-decl.c (duplicate_decls): Warn about proto vs nonproto
7925: only if no other errors apply.
7926:
7927: * jump.c (invert_exp): Don't crash if arg is null.
7928:
7929: * alliant.md (float*i*f2): Don't allow immediate ops.
7930: (sne): Fix typo, fsne => fsneq.
7931:
7932: * expr.c (store_one_arg, expand_call): When size doesn't matter,
7933: pass const0_rtx, not (rtx) 0.
7934:
7935: * expr.c (do_jump): Args to invert_exp were missing.
7936:
7937: * gcc.c (store_arg): Now 2 separate args for delete-on-success
7938: and delete-on-failure. All calls changed.
7939: (do_spec_1): DELETE_THIS_FILE is meaningful for output files.
7940:
7941: * config/xm-alliant.h (LINK_SPEC): Pass -X to linker.
7942:
7943: Sat Mar 11 10:30:41 1989 Richard M. Stallman (rms at ccvi)
7944:
7945: * tm-*.h, xm-*.h, *.md: Moved to subdir `config'.
7946: * output-*.c: Moved to `config/out-*.c'.
7947: * Makefile (.c.o): Define rule to use -Iconfig when compiling.
7948: (various): Delete the commands from some compilation rules.
7949: Put -Iconfig in other compilation commands.
7950: Also some reordering of variable defs and comments for cleanliness.
7951: (realclean): Change a shell comment to a Make comment.
7952:
7953: * fold-const.c (fold): Simplify and extend TRUTH_... operators
7954: knowing that args must be ints and values will be 0 or 1.
7955:
7956: * gcc.hlp: New file (for VMS).
7957:
7958: * reload1.c (reload): Don't let two 2-groups overlap.
7959:
7960: * reload.c (push_reloads): When a plain reg matches a reload
7961: for an increment, don't change the reload_in to a plain reg.
7962: Leave the increment there.
7963:
7964: * integrate.c (expand_inline_function): Don't try to inline
7965: unless the parm machine modes really match what's expected.
7966:
7967: * stmt.c (emit_case_nodes): default_label is an rtx, not tree.
7968:
7969: * tm-next.h (DOLLARS_IN_IDENTIFIERS): Define it as 1.
7970:
7971: * output-sparc.c (output_move_double): Don't trust random structs
7972: to be double-word aligned.
7973:
7974: * gcc.c: Pass -Wcomments to cpp.
7975:
7976: * rtl.def (ASM_OPERANDS): New operands, source file and line.
7977: * rtl.h (ASM_OPERANDS_*): New macros for components of ASM_OPERANDS.
7978: * stmt.c (expand_asm_operands): Use new fields, not REG_ASM_* notes.
7979: * toplev.c (error_for_asm): likewise.
7980: * rtl.h (enum reg_note): Delete REG_ASM_FILE, REG_ASM_LINE.
7981:
7982: * combine.c (try_combine): Check explicitly for volatility in I2, I1.
7983:
7984: Fri Mar 10 19:30:10 1989 Richard M. Stallman (rms at ccvi)
7985:
7986: * c-parse.y (GOTO stmt): Set TREE_USED for the label.
7987: * c-decl.c (poplevel): Warn about unused label.
7988:
7989: * c-decl.c (warn_pointer_arith, warn_strict_prototypes): New vars.
7990: (lang_decode_options): Options to set them.
7991: * c-typeck.c (pointer_int_sum, c_sizeof): Maybe warn if bad target.
7992: * c-decl.c (grokparms): Maybe warn if nonprototype fn decl.
7993:
7994: * flags.h, toplev.c (warn_shadow): New flag.
7995: * toplev.c (main): Decode it.
7996: * c-decl.c (pushdecl): Maybe warn about any shadowing.
7997: Existing parm-shadowing warning now disabled if shadowing decl
7998: is also a parm.
7999:
8000: * flags.h, toplev.c (warn_id_clash, id_clash_len): New flags.
8001: * toplev.c (main): Decode -Wid-clash-LEN.
8002: * tree.c (get_identifier): Implement warning if two idents match.
8003:
8004: * toplev.c (compile_file): Warn about statics defined and unused.
8005:
8006: * rtl.h (CONST0_RTX): New macro.
8007:
8008: * recog.c (offsetable_address_p): New 1st arg says whether to demand
8009: a strictly valid address.
8010: (offsetable_memref_p): Pass nonzero.
8011: * stmt.c (optimize_bit_field): Pass zero.
8012:
8013: * cccp.c (main): Allow -Wcomment like -Wcomments.
8014: * c-decl.c (lang_decode_options): Likewise.
8015:
8016: Sun Mar 5 15:02:59 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu)
8017:
8018: * m68k.md [tstdf, cmp[sd]f, truncdfsf2, floatsi[sd]f2, add[sd]f3,
8019: sub[sd]f3, mul[sd]f3, div[sd]f3, neg[sd]f2, abs[sd]f2]: Made sure
8020: that the test function's in the match_operands of the define_expand
8021: and define_insn's matched, and made that test function
8022: "register_operand" when both define_insn's really needed registers
8023: in that spot.
8024:
8025: Sat Mar 4 00:25:37 1989 Richard M. Stallman (rms at c2v)
8026:
8027: * expr.c (emit_push_insn): Don't ever bypass the big-endian
8028: padding at the end.
8029:
8030: * cccp.c (deps_output): Break line if would otherwise exceed 75 chars.
8031: Make a name for that value 75.
8032:
8033: * combine.c (subst): Handle general case of (subreg (sign_extend X)).
8034:
8035: * tm-sun386i.h (CPP_PREDEFINES): Define `sun'.
8036:
8037: * fixincludes: change `find' calls to find dirs thru symlinks.
8038:
8039: * flow.c (mark_set_1): (set (subreg (reg N))...)
8040: does make reg N significant for this basic block.
8041:
8042: Fri Mar 3 13:55:25 1989 Richard M. Stallman (rms at c2v)
8043:
8044: * c-decl.c (parmlist_tags_warning): Print an explanation
8045: for the first such warning.
8046:
8047: * i386.md (extendsfdf): Let op 1 match op0 if that is an fp reg.
8048:
8049: * expr.c (expand_call): Fix stupid errors copying pcc struct value.
8050:
8051: * varasm.c (output_constructor): Discard NOP_EXPRs from build_c_cast.
8052:
8053: Thu Feb 23 05:55:57 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8054:
8055: * Version 1.34 released.
8056:
8057: * c-typeck.c (build_c_cast): If EXPR is an error mark, return that.
8058:
8059: * fold-const.c (div_and_round_double): Abort if divisor is 0.
8060: (combine): Likewise, for real constants.
8061: (real_zerop): New subroutine.
8062: (fold): Don't try to fold division if divisor is 0.
8063: Don't try to fold reals if can't do arithmetic on them.
8064: Don't try to compare reals for TRUTH_..._EXPR if can't do arith.
8065: Use real_zerop to test reals for zeroness.
8066: For TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR, can simplify based on
8067: first operand alone.
8068:
8069: * c-typeck.c (store_init_value): Fix error msg text.
8070:
8071: * tm-sparc.h (FUNCTION_PROFILER): Use `mcount'.
8072: * tm-sun4os3.h (FUNCTION_PROFILER): Override it; use `.mcount'.
8073:
8074: Wed Feb 22 04:33:22 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8075:
8076: * tm-hp9k320.h (CPP_SPEC, CPP_PREDEFINES): Make handling of
8077: -Dmc68000 depend on TARGET_DEFAULT.
8078:
8079: * tm-sparc.h (FUNCTION_PROFILER): Missing newline in fprintf.
8080:
8081: * integrate.c (expand_inline_function): Don't map struct-value-address
8082: in memory if fn does not use it.
8083:
8084: * c-parse.y (check_newline): At skipline, detect eof.
8085:
8086: * stmt.c (uninitialized_vars_warning): Change text of warning.
8087:
8088: Tue Feb 21 03:58:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8089:
8090: * output-sparc.c (output_mul_insn): Handle case of both args
8091: in reg 8, or both in reg 9.
8092:
8093: * tm-sparc.h (ASM_SPEC): Define, to handle -pipe.
8094:
8095: * tm-sparc.h (FUNCTION_PROFILER): Add omitted fprintf args.
8096: (BLOCK_PROFILER): Likewise. Use tempvar.
8097:
8098: * m68k.md (QImode btst): Allow nonoffsetable mem refs.
8099:
8100: Mon Feb 20 00:32:42 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8101:
8102: * flow.c (mark_used_regs): Don't record about global reg vars.
8103:
8104: * config.gcc (convex-*): tm file names are tm-convex1.h, tm-convex2.h.
8105:
8106: * tm-vax.h, tm-ns32k.h, tm-alliant.h: Define PCC_STATIC_STRUCT_RETURN.
8107:
8108: * gcc.c (compilers): Pass `-a' to cc1.
8109: * tm-sun3.h, tm-sparc.h (LIB_SPEC): Define, to handle `-a'.
8110:
8111: * expr.c (emit_push_insn): Copy stack addresses to be passed to bcopy;
8112: old method of preadjustment is broken by changes in emit_library_call.
8113:
8114: * c-decl.c (finish_decl): New temp `temporary'; don't get confused
8115: about whether allocation was temporary.
8116:
8117: Sun Feb 19 17:03:35 1989 Chris Smith (csmith at mozart)
8118:
8119: * tm-convex.h: define PCC_STATIC_STRUCT_RETURN
8120:
8121: * convex.md:
8122: remove pshea patterns, movsi does it better.
8123: add ashift:DI abs:DF abs:SF
8124: (tstdi): use a clobbered register instead of a bogus DImode zero.
8125: (trunchiqi2): delete noninstruction cvth.b
8126: (udivsi3, udivhi3, udivqi3): deleted, expand_divmod does it now.
8127: (call, call_value): delete stupid call/ret -> jump optimization.
8128: (call, call_value): flush call_ap_check, use reg_mentioned_p instead.
8129:
8130: * convex.md: (movxx): swap constraint alternatives so that the
8131: leftmost alternative is (set =g r). This makes (set mem const)
8132: get combinable input reloads of const instead of uncombinable
8133: output reloads to mem. They still do not combine, but wtf,
8134: I'll inch up on it.
8135:
8136: * output-convex.c: (const_double_{high,low}_int): new routines
8137: to pick apart const_doubles for assembler.
8138:
8139: Sun Feb 19 01:40:17 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8140:
8141: * sparc.md (shift memory right 24 bits): Another `a1' typo.
8142:
8143: * config.gcc (convex-*): Delete troublesome whitespace.
8144:
8145: * c-decl.c (grokparms): Delete redundant `parm != 0' tests.
8146:
8147: * stmt.c (fixup_memory_subreg): Slight simplification.
8148:
8149: * tm-sparc.h (FUNCTION_PROFILER): Fill delay slot.
8150: (FUNCTION_BLOCK_PROFILER): Use sethi.
8151: (BLOCK_PROFILER): Use %g2, not %g0. Use sethi.
8152:
8153: Sat Feb 18 02:11:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8154:
8155: * expr.c (expand_expr): Ignore const array's initial value
8156: if it's an error_mark.
8157: * c-decl.c (finish_decl): Set DECL_INITIAL to an error_mark
8158: if the decl is a permanent node.
8159:
8160: * cccp.c (rescan): If traditional, if macro ends inside string,
8161: keep scanning for the end of the string.
8162: (handle_directive): A line of just `#' becomes blank.
8163: (collect_expansion): \ in strings traditionally doesn't hide macro arg.
8164:
8165: * m68k.md, alliant.md (addsi3): New alternative a=r+a, in addition
8166: to old a=a+r, needed since reload-insns are not commuted.
8167:
8168: Fri Feb 17 03:15:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8169:
8170: * tm-m68k.h (PCC_STATIC_STRUCT_RETURN): Define it.
8171: * toplev.c, flags.h: New var flag_pcc_struct_return.
8172: * stmt.c (expand_function_start): Obey new flag and new variable.
8173: * expr.c (expand_call): Obey new flag and new variable.
8174: * varasm.c (assemble_static_space): New function.
8175:
8176: * stmt.c (expand_return): If we need cleanups, compute retval first
8177: into pseudo reg, then do the cleanups, then copy it to return reg.
8178:
8179: Thu Feb 16 02:59:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8180:
8181: * regclass.c (init_reg_sets_1): Win if STATIC_CHAIN_REGNUM undefined.
8182:
8183: * expr.c (expand_call): Handle conflict between two precomputed
8184: args that are both function calls returning structures.
8185:
8186: * loop.c (move_movables): Bkwds test of m->partial, for a matching reg.
8187:
8188: * expr.c (emit_library_call, expand_call): Handle STACK_ARGS_ADJUST.
8189:
8190: Wed Feb 15 01:59:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8191:
8192: * toplev.c (flag_caller_saves): New var, for -fcaller-saves.
8193: DEFAULT_CALLER_SAVES controls initial value.
8194: * global-alloc.c (find_reg): Do caller saves only if flag set.
8195: * local-alloc.c (find_free_reg): Do caller saves only if flag set.
8196: * tm-alliant.h, tm-convex.h: Define DEFAULT_CALLER_SAVES.
8197:
8198: Wed Feb 15 01:59:15 1989 Chris Smith (rms at sugar-bombs.ai.mit.edu)
8199:
8200: * caller-save.c: New file.
8201: * regs.h (CALLER_SAVE_PROFITABLE): New macro.
8202: (reg_n_calls_crossed): new int-vector replaces reg_crosses_calls.
8203: * flow.c (allocate_for_life_analysis, propagate_block, dump_flow_info):
8204: Use reg_n_calls_crossed.
8205: * stupid.c (stupid_mark_refs, stupid_life_analysis): Likewise.
8206: * global-alloc.c (find_reg): Sometimes allocate call-clobbered regs
8207: for call-crossing pseudos.
8208: New arg ACCEPT_CALL_CLOBBERED; callers changed.
8209: * local-alloc.c (find_free_reg): Similar changes.
8210: (qty_n_calls_crossed): New int-vector replaces qty_crosses_calls.
8211: (alloc_qty, local_alloc, combine_regs, find_free_reg): change that var.
8212: * regclass.c (call_fixed_regs, call_fixed_reg_set): new vars.
8213: (init_reg_sets_1): Initialize them.
8214: * reload1.c (reload): Call caller-saves processing if needed.
8215:
8216: Wed Feb 15 01:59:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8217:
8218: * expr.c (expand_expr): INTEGER_CST for DImode: don't handle
8219: endianness here. So CONST_DOUBLE_LOW is always the low word.
8220: * varasm.c (force_const_mem): Handle it here.
8221:
8222: * expr.c (convert_move): widening followed by extendsidi2 had braino.
8223:
8224: * integrate.c: Don't include ctype.h; not needed and kills Sun cpp.
8225:
8226: * m68k.md (cmpsf, cmpdf and their recognizers):
8227: Replace MINUS with COMPARE.
8228: Also, use VOIDmode for COMPAREs, not SF or DF.
8229:
8230: * optabs.c (sign_expand_binop): Handle ops such as division where
8231: an unsigned char could be widened and handled with signed int insns.
8232: * expmed.c (expand_divmod): Use that.
8233:
8234: * c-typeck.c (digest_init): Allow for type variants in validating
8235: initialization from a string constant.
8236:
8237: * c-typeck.c (decl_constant_value): Disable opt. if pedantic or
8238: outside functions, so that validity of program is never affected.
8239:
8240: * fold-const.c (fold): Signedness-test for ABS_EXPR was backwards.
8241:
8242: Tue Feb 14 01:30:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8243:
8244: * cccp.c (main): Don't omit normal output, if we want deps on
8245: a separate stream.
8246:
8247: * c-decl.c (grokdeclarator): Don't record any arg types for functions
8248: if -traditional.
8249:
8250: * print-tree.c (prtypeinfo): Mention permanent attribute.
8251:
8252: * tm-next.h: New file.
8253:
8254: * c-typeck.c (decl_constant_value): The DECL_INITIAL may be ERROR_MARK.
8255:
8256: * c-decl.c (duplicate_decls): For fns, new static decl overrides
8257: old non-static one.
8258:
8259: * emit-rtl.c (gen_lowpar, gen_highpart): Use change_address, so we
8260: preserve volatility, etc.
8261:
8262: * stmt.c (expand_expr_stmt): Use emit_filename, emit_lineno
8263: as file and line for any warning.
8264: * emit-rtl.c (emit_line_note): Set those vars.
8265:
8266: * c-decl.c (store_parm_decls): If -Wimplicit, warn of arg with no decl.
8267:
8268: * recog.c (offsetable_address_p): Use strict_memory_address_p,
8269: since called from reload.c.
8270:
8271: Mon Feb 13 03:11:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8272:
8273: * sparc.md (compare-to-reg patterns): Some still had MINUS.
8274:
8275: * toplev.c (main): Warn if `-a' on system that can't handle it.
8276:
8277: * stmt.c (expand_asm_operands): Delete unused local `val'.
8278: (pushcase_range): Likewise for `value'.
8279: (fixup_var_refs): Likewise for `insn'.
8280: * emit-rtl.c (start_sequence): Likewise for `save'.
8281: * loop.c (scan_loop): Likewise for `before_start'.
8282: * expr.c (expand_expr): Delete label `binop1'.
8283:
8284: * reload1.c (constraint_accepts_reg_p): Handle SUBREGs of REGs.
8285:
8286: Sun Feb 12 05:37:46 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8287:
8288: * gnulib.c (__bb_init_func): New function
8289:
8290: * tm-m68k.h (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): Defined.
8291:
8292: Sat Feb 11 00:05:55 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8293:
8294: * tm-sparc.h (FUNCTION_PROFILER): Make it really work.
8295: (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): New macros.
8296:
8297: * final.c (final): Use BLOCK_PROFILER at start of each basic block.
8298: (final_start_function): Use FUNCTION_BLOCK_PROFILER if -a.
8299: (end_final): New fn to output the block-profiling tables.
8300: * toplev.c (profile_block_flag): Set if -a.
8301: (compile_file): Call end_final.
8302:
8303: * combine.c (try_combine): Avoid combining in most cases if I3
8304: has an inc or dec and I1 or I2 uses the same register.
8305:
8306: * tree.c (size_in_bytes, int_size_in_bytes): Use type's main variant.
8307:
8308: * c-typeck.c (actualparameterlist): Error if parm type is incomplete.
8309:
8310: * expr.c (expand_call): Ignore args that have incomplete type.
8311:
8312: Fri Feb 10 02:26:02 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8313:
8314: * c-parse.y (case stmts): strip dummy NOP_EXPRs.
8315:
8316: * reload1.c (reload_as_needed): Clear reg_{has,is}_output_reload here,
8317: (choose_reload_targets): not here.
8318:
8319: Thu Feb 9 01:35:55 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8320:
8321: * output-sparc.c (output_mul_by_constant): Forget cc status.
8322:
8323: * stmt.c (assign_parms): Don't put volatile parms in regs.
8324:
8325: * vax.md (jlbs/jlbc recognizers): Move them before jbc/jbs recognizers.
8326:
8327: * cse.c (fold_rtx): Handle (EQ (COMPARE ...) (CONST_INT 0)).
8328:
8329: * c-typeck.c (default_conversion, digest_init): For static const
8330: nonvolatile scalar variable, use its initial value if known.
8331:
8332: * expr.c (expand_expr: case COMPONENT_REF): If containing structure
8333: comes out volatile, leave the component MEM volatile too.
8334:
8335: * hard-reg-set.h: Fix multi-word case macros to swallow semicolon.
8336:
8337: * c-typeck.c (default_conversion): In array=>ptr, volatility
8338: of target type comes from TREE_THIS_VOLATILE, not TREE_VOLATILE.
8339:
8340: * reload1.c (forget_old_reload_1, choose_reload_targets):
8341: New array reg_is_output_reload is converse of reg_has_output_reload.
8342: forget_old_reload_1 needs both.
8343:
8344: Wed Feb 8 01:26:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8345:
8346: * reload1.c (forget_old_reloads_1): New fn, guts of forget_old_reloads.
8347: Do process a spill reg if it isn't used for reloading in this insn.
8348: (forget_old_reloads): Deleted, replaced with note_stores.
8349: (reload_as_needed): Undo Feb 1 change.
8350: Call forget_old_reloads_1 on pseudos autoincremented and not reloaded.
8351:
8352: * c-typeck.c (convert_for_assignment): Handle variant types.
8353:
8354: * c-decl.c (lang_decode_option): -Wall implies -Wunused.
8355:
8356: Tue Feb 7 01:32:28 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8357:
8358: * combine.c (try_combine): Don't try adding outputs to an asm_operands.
8359:
8360: * cse.c (CHEAPER): Don't ever let a hard reg get ahead of a pseudo.
8361:
8362: * stmt.c (fixup_gotos): Don't crash on undef label if THISBLOCK is 0.
8363:
8364: * c-decl.c (parmlist_tags_warning): New fn.
8365: * c-parse.y (parmlist, parmlist_or_identifiers): Call it,
8366: to warn about any tags defined inside the parmlist.
8367: * c-decl.c (grokparms): Don't warn about ptr to incomplete type.
8368: The new warning is better.
8369:
8370: Mon Feb 6 01:11:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8371:
8372: * expr.c (store_constructor): Incorrect ALIGN arg in store_field calls.
8373:
8374: * c-parse.y (%union): Delete unused alternative.
8375:
8376: * c-decl.c (grokparms): Use main variant to test for ptr to incomplete.
8377:
8378: * c-decl.c (finish_enum): Delete superfluous init for `pair'.
8379:
8380: * cse.c (fold_rtx): Optimize X+0, X-0 in floating point.
8381: Fix typo in PLUS case; omitted value to compare GET_MODE_CLASS against.
8382: (equiv_constant): Allow CONST_DOUBLE.
8383:
8384: * cse.c: Optimize past if-statements that are known to fail.
8385: (cse_insn): If condjump becomes uncond to end of this block,
8386: set cse_skip_to_next_block.
8387: (cse_basic_block): If that happens, ignore rest of block, and maybe
8388: treat next block as part of this one (if tables have room).
8389: Resume insn that starts next basic block to be scanned.
8390: (cse_main): Make room for at least 500 qtys.
8391: (cse_end_of_basic_block): Subroutine broken out of cse_main.
8392:
8393: * c-parse.y (hash, is_reserved_word): Rewrite: new hash technique.
8394:
8395: * c-decl.c (duplicate_decls): Be smart about proto vs nonproto mismatch
8396: involving a function definition.
8397:
8398: Sun Feb 5 17:31:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8399:
8400: * alliant.md (movdi): Typo in `fmoved'.
8401: (ftruncsf2): Handle moving into fp reg.
8402:
8403: * jump.c (jump_optimize): Typo in testing PRESERVE_DEATH_INFO_REGNO_P.
8404:
8405: * reload1.c (choose_reload_targets): Move all death notes to the
8406: output reload insn.
8407:
8408: * m68k.md (fix_truncsfsi2,fix_truncdfsi2): Use accurate rtl pattern.
8409:
8410: * loop.c (delete_insn_forces): Use presence of REG_RETVAL to check
8411: for value-of-library-call insn.
8412:
8413: Sat Feb 4 18:17:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8414:
8415: * integrate.c (expand_inline_function): Make addresses of stack
8416: slots valid somehow.
8417:
8418: * tm-3b1.h (DIVSI3_LIBCALL, etc.): Define these macros; avoid gnulib.
8419:
8420: * expmed.c (store_bit_field): Avoid (subreg (mem)) when converting
8421: VALUE1 to SImode.
8422:
8423: * jump.c (jump_optimize): Do delete USE and CLOBBER insns.
8424: This is needed for proper jump optimization.
8425:
8426: * rtl.def (COMPARE): New code.
8427: * *.md (compare and related patterns): Use COMPARE, not MINUS:VOID.
8428: * loop.c (eliminate_biv, can_eliminate_biv_p): Likewise.
8429: * cse.c (fold_rtx, fold_cc0, cse_insn):
8430: * output-m88k.c (output_{f,}compare, output_store):
8431: * output-sparc.c (strict_single_insn_op_p, single_insn_src_p, safe_insn_src_p):
8432: * combine.c (subst):
8433: * jump.c (jump_back_p):
8434:
8435: Fri Feb 3 18:34:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8436:
8437: * output-i386.c (notice_update_cc): If arith insn sets the cc's,
8438: discard all remnants of previous cc value and flags.
8439:
8440: * sparc.md (ashiftrt mem by 24): Fix typo `a1'.
8441:
8442: Thu Feb 2 14:55:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8443:
8444: * output-sparc.c (output_mul_insn): Clear the CC status.
8445:
8446: Wed Feb 1 20:01:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8447:
8448: * Version 1.33 released.
8449:
8450: * reload1.c (reload_as_needed): On entering new basic block,
8451: if it didn't need reload regs, forget all inherited contents of those.
8452:
8453: * tm-alliant.h (NOTICE_UPDATE_CC): Floating moves don't set the cc's.
8454: Also delete the clauses and tests for FPA regs.
8455:
8456: Tue Jan 31 21:51:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8457:
8458: * config.gcc: Handle convex-c1, convex-c2.
8459: * tm-convex1.h, tm-convex2.h: New files that include tm-convex.h.
8460: * tm-convex.h: Define switches -mnoc1, -mnoc2.
8461:
8462: * config.gcc: rename `nofp' to `nfp', to match the file names.
8463:
8464: Mon Jan 30 22:12:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8465:
8466: * output-sparc.c (output_delay_insn): Extract the operands,
8467: call alter_subreg, constrain_operands and NOTICE_UPDATE_CC.
8468: So callers other than output_eager_then_insn don't lose.
8469: (output_eager_then_insn): No need to do that stuff.
8470:
8471: * symout.c (symout_block_symbols): Handle (MEM (REG)) for
8472: variable-sized arrays.
8473:
8474: * tm-encore.h (ASM_SPEC): Always pass -j; avoid jump-range lossage.
8475:
8476: Sun Jan 29 17:06:26 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8477:
8478: * alliant.md: Fix refs to CONST_DOUBLEs to use CONST_DOUBLE_{HIGH,LOW}.
8479:
8480: * combine.c (subst): (minus (zero_extend ...) (const_int ...)) opt.
8481: now limited to within the context of (set (cc0) ...).
8482:
8483: Sat Jan 28 14:26:08 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8484:
8485: * cse.c (fold_cc0): Missing `&' extracting CONST_DOUBLEs.
8486: (fold_rtx): Don't put CONST_DOUBLEs together into a (CONST (PLUS...)).
8487:
8488: * output-convex.c (gen_cmp): Recognize CONST_DOUBLE as a constant.
8489:
8490: * tree.c (build_real_from_int_cst): Typo in REAL_ARITHMETIC case.
8491:
8492: * Makefile (bootstrap2): Don't use bootstrap3 as subroutine.
8493:
8494: * varasm.c (force_const_mem): Put the CONST_DOUBLE on the chain
8495: if its MEM is stored in it; so it can be cleared at end of function.
8496:
8497: * stmt.c (emit_case_nodes): Put a compare before each cond-jump.
8498: Two cond-jumps after one cond is invalid and makes cse produce garbage.
8499:
8500: Fri Jan 27 01:05:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8501:
8502: * tm-sun2.h (CPP_SPEC): Define __HAVE_68881__ only if -m68881.
8503:
8504: * c-decl.c (start_decl): Don't expand_decl if DECL already has rtl.
8505: (grokparms): If just declaring fcn, incomplete parm type is just
8506: a warning, and don't discard the specified type.
8507:
8508: * expmed.c (expand_divmod): Be smarter about not clobbering args
8509: with intermediate results; one mem can clobber another, and a reg
8510: can clobber a mem.
8511:
8512: * tm-i386.h (FUNCTION_PROFILER): Use LPREFIX. May actually work now.
8513: * tm-i386gas.h: Include tm-bsd386.h, not tm-att386.h.
8514: This means changing asm syntax.
8515: #undef DBX_NO_XREFS and DBX_CONTIN_LENGTH.
8516:
8517: * sparc.md (eager branch peepholes): Don't forget 2nd arg to
8518: safe_insn_src_p.
8519: Don't print warnings.
8520: * output-sparc.c: (strict_single_insn_op_p): Return 0 for floating
8521: REG or MEM, since copying that may take 2 insns.
8522: (operands_satisfy_eager_branch_peephole): require delay insn to
8523: be strict_single_insn_op_p as well as safe_insn_src_p.
8524: (operand_clobbered_before_used_after): Don't print warnings.
8525:
8526: * varasm.c (decode_rtx_const): Clear entire structure incl. gaps.
8527: Avoids spurious hash mismatches.
8528: (force_const_mem): If CONST_DOUBLE, store its CONST_DOUBLE_MEM field.
8529: Also look in that field rather than hashing, to save time.
8530:
8531: * c-typeck.c (build_c_cast): If value is literal, mark NOP_EXPR as so.
8532: (store_init_value): Change error msg.
8533:
8534: * c-decl.c (duplicate_decls): Classify prototype vs nonprototype
8535: mismatches better.
8536:
8537: * tm-3b1.h: Fix comment.
8538:
8539: Wed Jan 25 12:46:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8540:
8541: * Makefile (cleanlinks): Use -f.
8542:
8543: Tue Jan 24 17:54:16 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8544:
8545: * cse.c (canon_hash): Fix paren error in last change.
8546:
8547: * varasm.c (immed_real_const_1): Missing arg to bcmp.
8548:
8549: Mon Jan 23 02:43:45 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8550:
8551: * stor-layout.c (layout_type): BLKmode elts force array to be BLKmode.
8552:
8553: * genpeep.c, genoutput.c, genemit.c: Put `#include "real.h"' in output.
8554:
8555: * stmt.c (expand_expr_stmt): No "no effect" warning for error-mark.
8556:
8557: * varargs.h: Rename implicit arg name to __builtin_va_alist
8558: which triggers code in assign_parms. Does this really matter?
8559:
8560: * sparc.md (sne): New define_expand.
8561: (seq recognizers): Handle sne as well.
8562: * output-sparc.c ({strict_,}single_insn_src_p):
8563: Some NEG and MINUS insns are actually 2 asm insns.
8564: (safe_insn_src_p): No floating arith is safe; they can trap.
8565: (eq_or_neq): New fn, for seq/sne recognizers.
8566:
8567: * c-decl.c (grokdeclarator, size of array type):
8568: Strip from SIZE any NOP_EXPRs that don't change anything.
8569:
8570: * reload.c, recog.c: Include real.h so constraint macros can examine
8571: CONST_DOUBLEs.
8572:
8573: Sun Jan 22 04:12:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8574:
8575: * c-decl.c (init_decl_processing): Define __builtin_saveregs.
8576: * tree.h: likewise.
8577: * expr.c (expand_builtin): Handle it.
8578:
8579: * tm-sparc.h: Define TARGET_EAGER and -meager.
8580: * sparc.md (eager branch peepholes): Reenable, but test TARGET_EAGER.
8581: Change fb insns to use %F. Delete `,a' from some of them.
8582: * jump.c (jump_optimize): Don't delete USE and CLOBBER insns.
8583:
8584: * xm-vms.h (const): Define it as empty.
8585:
8586: * make-cccp.com: Move the rename of cexp_tab.c.
8587: Compile cccp.c with no macro definitions.
8588:
8589: * cccp.c (main): VMS conditional for setting max_include_len.
8590:
8591: Sat Jan 21 12:53:00 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8592:
8593: * varargs.h (va_start): On sparc, call __builtin_saveregs.
8594: Delete the old conditional that used va-sparc.h.
8595: Rename macros and locals to start with two underscores.
8596: * va-sparc.h: File deleted.
8597:
8598: * c-decl.c (store_parm_decls): Initialize OTHERS.
8599:
8600: * stmt.c (assign_parms): Obey layout_decl.
8601:
8602: Fri Jan 20 02:19:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8603:
8604: * cse.c (fold_rtx): For SYMBOL_REF and LABEL_REF, mask address
8605: to 16 bits.
8606:
8607: * tree.h (NUM_TREE_CODES): NUM_TREE_CODE renamed.
8608:
8609: Thu Jan 19 13:53:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8610:
8611: * c-typeck.c (mark_addressable): For global reg var, report error.
8612: Now returns an int; value of 0 means caller should fail.
8613: All calls (in this file) changed.
8614:
8615: * stor-layout.c (layout_decl): Don't let an more than 1 word
8616: of any aggregate go in any 1 register. (Needed for machines whose
8617: integer regs are 64 bits).
8618:
8619: * tm-convex.h, xm-convex.h, convex.md, output-convex.c: new files.
8620:
8621: * expr.c (convert_move): Use extendqidi2, etc. for converting
8622: small ints to double ints. Use zero_extendsidi2 rather than
8623: clearing the high half.
8624:
8625: Wed Jan 18 01:20:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8626:
8627: * varasm.c (make_decl_rtl): If global `register' decl is invalid,
8628: make ordinary non-register rtl.
8629:
8630: * output-sparc.c (operand_clobbered_before_used_after): new fn.
8631: (reg_clobbered_p, safe_insn_src_p): New fns.
8632: (single_insn_src_p): Treat constants all as ok, even though not
8633: always literally so. Also accept some SIGN_EXTENDs and ZERO_EXTENDs.
8634: (strict_single_insn_src_p): New fn, like above but is strict
8635: about constants and constant memory addresses.
8636: (relop): New fn.
8637: (output_move_double): Don't make a MEM, and don't use %m.
8638: (output_delayed_branch): New name for output_delay_insn.
8639: Now handle non-small constant operands.
8640: Avoid duplicate loads of g1 for constant addresses.
8641: Use recog_operand directly for output of the delay insn.
8642: (output_delay_insn): Now a completely new fn.
8643: (output_eager_then_insn, next_real_insn_no_labels): New fns.
8644: (operands_satisfy_eager_branch_peephole): New fn.
8645:
8646: * sparc.md: New peepholes for testing a recently used operand.
8647: New peepholes for delayed branches, incl. conditional ones.
8648: ** Some of them commented out because they seem not to work.
8649: (andcc recognizer): Fix typo, missing %.
8650: (bgt): Change bgt to bg in output.
8651: (reversed jumps): Replace with one pattern using match_operand.
8652: It uses %F to output the condition.
8653: (movsi): For round-valued immed const, use just a sethi.
8654: For other immed, use explicit sethi and or.
8655: (movhi, movqi): use `move' for reg source or small int source.
8656: For other immed, use explicit sethi and or.
8657: (movsi, etc.): Handle all constant addresses like SYMBOL_REFs.
8658: (movsf): Delete never-used duplicate code for constant addresses.
8659: (addsi3, subsi3, cse'd multiply): Use sethi and or, rather than set.
8660: (andsi3, iorsi3, xorsi3): Likewise.
8661: (jump): Make an annulled branch.
8662:
8663: * tm-sparc.h (PROMOTE_PROTOTYPES): Define this.
8664: (GO_IF_LEGITIMATE_ADDRESS): Now accept all constant addresses;
8665: also cleaned up.
8666: (NOTICE_UPDATE_CC): Don't change the G1 status when storing in memory.
8667: Assume all PARALLEL insns are peepholes.
8668: (PRINT_OPERAND): New codes C and N for outputting conditions,
8669: either forward or reversed. Also F for reversed floating.
8670:
8671: * jump.c (delete_for_peephole): New function to delete range of insns.
8672: * genpeep.c (gen_peephole): Output code to use this.
8673:
8674: * Makefile (install): Fix typo, had $${name} for $${file}.
8675:
8676: Tue Jan 17 00:00:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8677:
8678: * i386.md (ashlsi3): Use addl or leal for special cases.
8679:
8680: * c-decl.c (grokdeclarator): Make a non-global VAR_DECL public
8681: if it is external.
8682:
8683: * masm386.c: Clean up formatting.
8684:
8685: * cse.c (fold_rtx): Typo simplifying x|0 or x^0
8686: when the 0 comes second.
8687:
8688: * expmed.c (store_fixed_bit_field): For halfwords, verify that
8689: the field fits in an *aligned* halfword.
8690: (extract_fixed_bit_field): likewise.
8691:
8692: * expmed.c (store_split_bit_field): New arg align, passed in from
8693: store_fixed_bit_field and passed back to it.
8694: (extract_split_bit_field): likewise.
8695:
8696: * expr.c: Reinsert changes from Jan 2, mysteriously deleted Jan 3.
8697: Also changes from Dec 23, Dec 28 and Dec 29.
8698:
8699: * tm-i386.h: Likewise for changes from Dec 30.
8700:
8701: * c-typeck.c (build_component_ref): If field's type is error-mark,
8702: return an error-mark.
8703:
8704: Mon Jan 16 14:16:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8705:
8706: * genpeep.c (main): Output code to exit early if insn is followed
8707: by a barrier.
8708: (gen_peephole): Reject barriers just like labels.
8709:
8710: * stmt.c (do_jump_if_equal): New arg UNSIGNEDP, for emit_cmp_insn.
8711: Caller changed. Now static.
8712:
8713: * final.c (final): Set INSN_DELETED_P in insns when output.
8714:
8715: * final.c (final): Re-set BODY if peephole does anything.
8716:
8717: * c-decl.c (grokparms): Ignore anything but PARM_DECLs in the list.
8718: (store_parm_decls): If we had a prototype, separate out anything other
8719: than a PARM_DECL declared in it, and pushdecl those at the end,
8720: after DECL_ARGUMENTS is set.
8721:
8722: * stmt.c (expand_end_case): Do stack adjusts after computing index.
8723:
8724: * expr.c (store_one_arg): Handle padding for case of BLKmode
8725: for which space was preallocated.
8726:
8727: * integrate.c (copy_rtx_and_substitute): When copying asm insn,
8728: preserve sharing of the input-operand vectors.
8729: (expand_inline_function): Clear {orig,copy}_asm_operands_vector
8730: to make that mechanism work.
8731: (save_for_inline, copy_for_inline): Likewise.
8732:
8733: * stmt.c (expand_asm_operands): Reject `+' in constraints.
8734: Every output constraint requires `='; inputs reject it.
8735:
8736: * stmt.c (expand_function_end): Arg to fixup_gotos was missing.
8737:
8738: Sun Jan 15 00:28:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8739:
8740: * cccp.c, gcc.c (main): Handle SIGPIPE.
8741: (pipe_closed): New fn; report suitable fatal error.
8742:
8743: * loop.c (loop_optimize): Initialize moved_once.
8744:
8745: * gcc.c (do_spec): Don't call `execute' if value != 0.
8746: Delete redundant second call to do_spec_1.
8747:
8748: * toplev.c (compile_file): Make declared-but-not-defined warnings
8749: only if -Wunused.
8750:
8751: * stmt.c (emit_case_nodes): Fix typo setting gen_ble_pat.
8752:
8753: * tm-sparc.h ({U,}MODSI3_LIBCALL): Name was wrong.
8754:
8755: * gcc.c (env_exec_prefix refs): Don't try to open via it if it's null.
8756:
8757: * output-sparc.c (output_store, output_load_{fixed,floating}):
8758: Fixed confusions between the mem ref and its address.
8759:
8760: * cse.c (canon_hash): global_regs has entries only for hard regs.
8761: * flow.c (insn_dead_p, mark_set_p, mark_used_regs): Likewise.
8762:
8763: * cse.c (fold_rtx): More simplifications for MULT, IOR, AND, XOR
8764: DIV and shifts with one arg 0 or 1.
8765:
8766: Sat Jan 14 11:41:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8767:
8768: * c-typeck.c (build_array_ref): If pedantic, check for regdecl arrays.
8769:
8770: * fixincludes: Make all subdirs in advance, so no need for `dirname'.
8771:
8772: * genpeep.c (gen_peephole): Delete code to increment LABEL_NUSES;
8773: instead, clear JUMP_LABEL for any jumps being deleted.
8774: No need to test INSN1 for being a label, since not called then.
8775: [If any of the matched insns is a JUMP_INSN, set want_jump,
8776: and in that case make the matched peephole a JUMP_INSN itself.]
8777: That's in an #if 0 now; it's good in jump, but not in final.
8778:
8779: * jump.c (jump_optimize): Don't do peepholes here.
8780: * final.c (final): Do them here.
8781:
8782: * jump.c (jump_optimize): In optimizing `if (foo) bar; else break;',
8783: don't try to invert anything but a standard-looking conditional jump.
8784:
8785: * jump.c (jump_optimize): Do peepholes on ALL BUT the first pass.
8786:
8787: * gcc.c (env_exec_prefix): New var used like user_exec_prefix
8788: but set from envvar GCC_EXEC_PREFIX.
8789:
8790: Fri Jan 13 13:21:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8791:
8792: * genpeep.c (gen_peephole): Test INSN1 for a label at the very start,
8793: then test following insns at the end of the loop.
8794:
8795: * sparc.md (call recognizers): do CC_STATUS_INIT, for %g1.
8796:
8797: Thu Jan 12 02:13:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8798:
8799: * varasm.c (make_decl_rtl): Recognize more error cases for reg vars:
8800: BLKmode, or initializer given.
8801: Distinguisn missing asm from invalid name.
8802:
8803: * expr.c (expand_call): Never return 0; return const0_rtx instead.
8804: This makes expand_expr more uniform.
8805:
8806: * c-decl.c (grokparms): For ptr to incomplete type, just warn;
8807: don't change the parm's type.
8808:
8809: * stmt.c (expand_return): Set RETVAL_RHS so as to recognize
8810: tail-recursive fcn returning void.
8811: Unconditionally test value of expand_expr for being a REG.
8812:
8813: * reload.c (find_reloads): Don't process insns that have
8814: no constraint alternatives. No more need for have_constraints.
8815:
8816: * recog.c (constrain_operands): New local var nalternatives.
8817: Don't bother checking the insn if nalternatives is 0.
8818:
8819: Wed Jan 11 01:27:48 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8820:
8821: * Implement global register decls.
8822:
8823: * varasm.c (make_decl_rtl): Handle global register vars.
8824: (make_function_rtl): Set function_defined: after 1st function dfn.
8825: (assemble_variable): Ignore global register vars.
8826:
8827: * c-decl.c (grokdeclarator): Don't reject global register decls.
8828: (builtin_function): Use make_decl_rtl, not make_function_rtl,
8829: to avoid setting function_defined.
8830:
8831: * regclass.c (init_reg_class{,_1}): Init and process global_regs.
8832: They are fixed, and call-clobbered.
8833:
8834: * flow.c (insn_dead_p): Storing one of global_regs is never dead.
8835: (mark_used_regs, mark_set_1): A global reg is never dead.
8836:
8837: * cse.c (canon_hash): Consider global regs volatile.
8838:
8839:
8840: * expr.c (do_jump): Know how to invert jumps which are sequences.
8841:
8842: * dbxout.c, symout.c, final.c: On USG, use our own stab.h.
8843:
8844: * tm-i386gas.h: New file for GAS on sysV (with DBX debugging info).
8845:
8846: * m68k.md (bfchg and bfins patterns): Make # alternatives uniform.
8847: * alliant.md: Likewise; also in movdf patterns.
8848:
8849: * genoutput.c (output_epilogue): Spurious `break' disabled
8850: error check for mismatched # of alternatives.
8851: (output_epilogue, scan_operands): Errors in input are not fatal.
8852:
8853: * flow.c (regno_uninitialized): Avoid crash if no basic blocks.
8854:
8855: * sparc.md (move insns): Delete special patterns that handled
8856: symbolic constant addresses. The main move patterns now do this.
8857: * output-sparc.c (output_store, output_load_{fixed,floating}):
8858: Subroutines to do the work for this; has the code from those
8859: special patterns. Also fixed bugs in testing against cc_status.mdep.
8860:
8861: * output-sparc.c (output_delay_insn): Clear the CC status.
8862: This is necessary for %g1 in the case of a call insn.
8863:
8864: * tm-i386.h (REG_CLASS_CONTENTS): INDEX_REGS is now all but ESP.
8865: (REGNO_REG_CLASS): Corresponding change.
8866: (REG_CLASS_FROM_LETTER): Eliminate `x' letter since not used.
8867:
8868: * optabs.c (emit_cmp_insn): New arg ALIGN, used for BLKmode.
8869: All callers changed.
8870: Pass alignment (as rtx) as 4th arg to cmpstr gen functions.
8871: Use cmpstrhi if available.
8872: * expr.c (compare): Only this call passes a nonzero ALIGN.
8873:
8874: * expr.c (emit_push_insn, emit_block_move): Pass alignment (as rtx)
8875: as 4th arg to movstr gen functions.
8876:
8877: Tue Jan 10 23:43:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8878:
8879: * stor-layout.c (layout_type): Use BLKmode, if a struct isn't
8880: aligned well enough for a scalar mode.
8881:
8882: * expr.c (expand_expr): For static CONSTRUCTOR, ensure memory
8883: address is made valid.
8884:
8885: * genpeep.c (match_rtx): For MATCH_OPERATOR, set max_opno, n_operands.
8886:
8887: Mon Jan 9 17:07:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8888:
8889: * varasm.c (output_constant): Split strings every 2000 chars.
8890:
8891: * stmt.c (expand_end_case): Test bkwds, handling constant switch arg.
8892:
8893: Fri Jan 6 09:11:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8894:
8895: * output-sparc.c (output_delay_insn): Add parens to first if test.
8896: (output_move_double): Turn addr for `sethi' into MEM for %m.
8897:
8898: * c-typeck.c (convert_for_assignment): move test for ERROR_MARK.
8899:
8900: * c-parse.y (unary_expr): Allow cast_expr as arg of unary op.
8901:
8902: * stmt.c (expand_decl): Don't abort if FUNCTION_DECL lacks rtl;
8903: assemble_variable is called after this.
8904:
8905: * c-parse.y (primary -> identifier): Separate case for undeclared
8906: identifier outside of functions; avoids confusing error msgs.
8907:
8908: Thu Jan 5 01:24:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8909:
8910: * Makefile (install): Ignore errors in all `if' commands.
8911: Create $(libdir) if nec.
8912:
8913: * Makefile (insn-*.[ch]): Put in empty commands. May help Ultrix Make.
8914:
8915: * stmt.c (emit_case_nodes): New arg UNSIGNEDP says do unsigned jumps.
8916: Arg INDEX is an rtx, not a tree.
8917: (expand_end_case): Pass that arg.
8918: (node_has_{low,high}_bound): check for overflow, avoid confusion.
8919:
8920: Wed Jan 4 02:24:21 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8921:
8922: * sparc.md (movdi, movdf): Use `&' constraint when loading reg from;
8923: otherwise can lose on (set (reg X) (mem (plus (reg X) (reg X+1)))).
8924:
8925: * expr.c (emit_push_insn): For memory scalar partially going in regs,
8926: copy each word to reg before pushing. Avoids memory-to-memory move.
8927: Make the displaced address valid.
8928: Also delete unfinished STACK_OFFSET variable.
8929:
8930: * c-parse.y (check_newline): Read just one #-directive and return.
8931: This prevents lossage when toplev.c calls it to get the main input file
8932: name, and it gets a following #ident as well.
8933:
8934: * c-decl.c (lang_decode_option): Set warn_cast_qual for -Wcast-qual.
8935: * c-typeck.c (build_c_cast): Issue some warnings if set.
8936:
8937: * tm-3b1.h (ASM_OUTPUT_CASE_LABEL): Missing `;'.
8938:
8939: Tue Jan 3 18:07:31 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8940:
8941: * expr.c (emit_library_call): Do force_operand on each operand
8942: if it isn't a REG, MEM or constant.
8943: Do this, or mode conversions, earlier, before loading any hard regs.
8944:
8945: * m68k.md (addsi3) [SGS]: Put a zero displacement in the `lea'.
8946:
8947: * c-typeck.c (default_conversion): Don't lose `const' or `volatile'
8948: when converting array type to pointer.
8949:
8950: Mon Jan 2 01:18:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8951:
8952: * expmed.c (store_bit_field, store_fixed_bit_field): New arg,
8953: alignment in bytes the structure is known to have.
8954: (store_fixed_bit_field): Handle working in halfwords,
8955: in case the pointer isn't known to have fullword alignment.
8956: * expmed.c (extract_bit_field, extract_fixed_bit_field): likewise.
8957: (extract_bit_field): fix unsignedp arg to extract_fixed_bit_field.
8958: * expr.c (store_field): New arg, passed to {store,extract}_bit_field
8959: (expand_assignment, store_constructor): Pass that arg.
8960: (expand_expr): Pass new arg to extract_bit_field.
8961:
8962: * m68k.md (casesi_2 recognizer): Offset always 6 for 3b1.
8963:
8964: * c-typeck.c (convert_for_assignment): Strip from rhs no-op NOP_EXPRs
8965: put on by build_c_cast (to make the result not an lvalue).
8966: (build_modify_expr, build_compound_expr): likewise.
8967: (build_conditional_expr): likewise.
8968: (actualparameterlist, build_function_call): likewise.
8969: (default_conversion, truthvalue_conversion): likewise.
8970:
8971: * loop.c (move_movables): If reg has moved out of one loop,
8972: divide `savings' by 2.
8973:
8974: Sun Jan 1 03:00:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
8975:
8976: * c-typeck.c (truthvalue_conversion): Distribute the conversion
8977: into the arms of a COND_EXPR.
8978:
8979: * cse.c (fold_rtx): Don't fold a MINUS with VOIDmode
8980: into a symbolic constant--it's incorrect.
8981:
8982: * cse.c (cse_insn): If SRC is a subreg with known value, simplify it.
8983:
8984: * integrate.c (copy_rtx_and_substitute): Allow a ref to a part of
8985: MEM parm whose actual parm is a reg, provided it refs
8986: the low part of the MEM.
8987: (function_cannot_inline_p): Don't inline functions which have
8988: aggregate parameters and take their addresses. This could produce
8989: refs to non-low-parts, which copy_rtx_and_substitute can't handle.
8990:
8991: * c-typeck.c (build_modify_expr): If lhs is COND_EXPR,
8992: make a COMPOUND_EXPR to ensure the rhs is computed before the branch.
8993:
8994: * Implement -pipe.
8995: * gcc.c (do_spec_1): `|' is now a special delimiter
8996: which goes in the argbuf.
8997: When a newline is preceded by a `|', delete it if no -pipe.
8998: Otherwise, don't execute yet, and keep scanning.
8999: (do_spec): At end, if we have stuff with no newline, execute it.
9000: (handle_braces): Implement %{|foo:...}.
9001: (execute): If argbuf contains some `|'s, run several processes
9002: and pipe them together.
9003: (pexecute): new subroutine to make one of the processes.
9004: (find_exec_file): new fn to search for program to execute.
9005: (record_temp_file): new arg FAIL_ONLY.
9006: (store_arg): 2nd arg == 3 means delete file on failure.
9007: This is used for output files.
9008: (delete_temp_files): delete certain files only if fail.
9009:
9010: * cccp.c (include_defaults): /usr/include before /usr/local/include.
9011:
9012: * recog.c (asm_noperands): 1-off in loop checking CLOBBERS
9013: when no output operands and PARALLEL.
9014:
9015: * expmed.c (negate_rtx): Sign-extend the high bits rather than clear.
9016:
9017: * cse.c (fold_rtx): fold negation of real values.
9018: (fold_cc0): fold comparisons on real values.
9019:
9020: * Makefile (install): Use $(INSTALL) for gcc.1 and files in USER_H.
9021:
9022: * Handle floating-point problems for cross-compilation.
9023:
9024: * real.h (CONST_DOUBLE_LOW, etc.): new macros to access CONST_DOUBLE.
9025: * varasm.c (immed_double_const, decode_rtx_const): Use these.
9026: ({force,clear}_const_double_mem): Likewise.
9027: * output-*.c (output_move_double): Use these.
9028: * output-m68k.c (standard_{68881,sun_fpa}_constant_p): Likewise.
9029: * tm-*.h (PRINT_OPERAND): Use these.
9030: * output-i386.c (print_operand): Use these.
9031: * final.c (output_addr_const): Likewise.
9032: * emit-rtl.c (gen_rtx): Delete special code for CONST_DOUBLE.
9033:
9034: * real.h (union real_extract): Portable type for storing real as ints.
9035: * varasm.c (immed_double_const, decode_rtx_const): Use these.
9036:
9037: * varasm.c (immed_real_const_1, decode_rtx_const):
9038: Don't assume REAL_VALUE_TYPE is 2 ints long.
9039: * emit-rtl.c (init_emit_once): Likewise.
9040:
9041: * real.h (REAL_VALUE_TYPE): Define as `double' if not defined.
9042: (REAL_IS_NOT_DOUBLE): Define this if default REAL_VALUE_TYPE not used.
9043: (REAL_VALUES_EQUAL, REAL_VALUES_LESS): Define, if not already defined.
9044: (REAL_VALUE_LDEXP, REAL_VALUE_ATOF): Likewise.
9045: * tree.h (struct tree_real_cst): Use REAL_VALUE_TYPE for the value.
9046:
9047: * rtl.c (init_rtl): Increase length of CONST_DOUBLE if REAL_VALUE_TYPE
9048: needs more space. Change the rtx_format element to match.
9049: * varasm.c (immed_real_const_1): 1st arg now has REAL_VALUE_TYPE.
9050: (force_const_mem): Assume a CONST_DOUBLE contains REAL_VALUE_TYPE.
9051: * emit-rtl.c (init_emit_once): Likewise.
9052: And use REAL_VALUE_ATOF to get a floating zero.
9053: * optabs.c (expand_float): Use REAL_VALUE_TYPE, REAL_VALUE_LDEXP.
9054: * c-parse.y (yylex): Likewise, and use REAL_VALUE_ATOF.
9055: * fold-const.c (split_tree): Don't accept REAL_CSTs.
9056: (combine, fold_convert, fold): Use REAL_ARITHMETIC if defined;
9057: else don't fold reals if they are not doubles.
9058: * tree.c (build_real_from_int_cst): Likewise.
9059: * print-tree.c (dump) [REAL_IS_NOT_DOUBLE]: output float value
9060: in hex, since we don't know how to do it right.
9061:
9062: Sat Dec 31 14:15:13 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
9063:
9064: * optabs.c (init_optabs): Handle new macros {U,}MULSI3_LIBCALL,
9065: DIVSI3_LIBCALL, MODSI3_LIBCALL.
9066: * tm-sparc.h: Define {,U}{MUL,DIV,MOD}SI3 to call Sun's library direct.
9067:
9068: * tm-sun3-nfp.h, tm-sun3-fpa.h: New files.
9069:
9070: Fri Dec 30 00:14:36 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
9071:
9072: * cccp.c (main): Certain envvars specify a file to write deps info to.
9073:
9074: * toplev.c (compile_file): Warn about undefined fns declared static.
9075:
9076: * m68k.md (casesi_2 recognizer) [SGS] RTX_INTEGRATED_P test backwards.
9077: * tm-3b1.h (ASM_OUTPUT_CASE_LABEL): Likewise. Also missing `\'.
9078:
9079: * reload1.c (count_occurrences): New function.
9080: (choose_reload_targets): Don't delete a reload if the same reg
9081: is used elsewhere in the current insn.
9082: (delete_output_reload): code split out from choose_reload_targets.
9083:
9084: * c-typeck.c (build_c_cast): Always put on some operator,
9085: so the cast is never an lvalue for strict ANSI.
9086:
9087: * c-typeck.c (initializer_constant_valid_p): Don't depend on
9088: distinction between NOP_EXPR and CONVERT_EXPR.
9089:
9090: * c-convert.c: Fns reordered; new comments.
9091:
9092: * fold-const.c (fold): If simplifying a NOP_EXPR within a BIT_AND_EXPR,
9093: return a NOP_EXPR.
9094: New var TYPE holds type of expr.
9095:
9096: * c-parse.y (expr_no_commas): Split off cast_expr and unary_expr,
9097: to reject `sizeof (int) foo'.
9098:
9099: * toplev.c (main): Treat plain `-' as input filename.
9100:
9101: * final.c (final): If an insn's output routine returns 0,
9102: it means to output the deleted compare insn immediately preceding.
9103:
9104: * m68k.md (branch insns): Use 0 as 3rd arg for OUTPUT_JUMP
9105: rather than explicitly clearing the overflow flag.
9106:
9107: * tm-i386.h (OUTPUT_JUMP): Really use NO_OV; don't abort.
9108: * i386.md (branch insns): Put real data (sometimes 0) in 3rd arg
9109: of OUTPUT_JUMP. 0 means preceding test may not be deleted.
9110: (lea pattern): Clear the cc's.
9111: * output-i386.c (notice_update_cc): various arith insns set the cc's.
9112:
9113: Thu Dec 29 13:22:01 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
9114:
9115: * stmt.c (expand_decl_init): Do nothing for static decls.
9116:
9117: * reload.c (find_reloads_address{,_1}): Return 1 iff entire arg
9118: was reloaded as a whole, else 0.
9119: (find_reload): If find_reloads_address returns 1, don't let that MEM
9120: satisfy a `>' or `<' constraint.
9121:
9122: * m68k.md (cmpmb): Delete special pattern, make cmpqi handle it.
9123: The special pattern couldn't handle reloading the incremented register.
9124:
9125: * integrate.c (copy_rtx_and_substitute): Test BYTES_BIG_ENDIAN,
9126: not BITS...
9127:
9128: * combine.c (subst): Consider big-endian correction
9129: when simplifying (subreg (mem ...) ...).
9130:
9131: * reload.c (find_reloads): Don't crash if matching operands in `asm'
9132: are both read or both write.
9133:
9134: * expr.c (emit_push_insn): Address for movstr must be XINNER, not X.
9135:
9136: * toplev.c (main): Typo parsing `-fno...'.
9137:
9138: Wed Dec 28 13:07:21 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
9139:
9140: * toplev.c (rest_of_compilation): `volatile' fns need jump_optimize
9141: for warnings, as if -Wreturn-type.
9142: * c-typeck.c (c_expand_return): Warn about `return' in a `volatile' fn.
9143: * c-decl.c (finish_function): Warn if `volatile' fn can drop thru end.
9144:
9145: * cse.c (canon_reg): Handle nulls as subexpressions.
9146: (fold_rtx, canon_hash, mention_regs, exp_equiv_p): Likewise.
9147: * loop.c (invariant_p, replace_regs, replace_call_address, may_trap_p,
9148: {basic,general}_induction_var): Likewise.
9149:
9150: * expr.c (expand_call): Handle `const' functions:
9151: Local IS_CONST is 1 if function is const.
9152: Attach REG_RETVAL and REG_LIBCALL notes around the call.
9153: Copy fn address to register outside of those notes.
9154: Likewise precompute all parms outside them.
9155:
9156: * expr.c (expand_call): If fn is volatile, emit barrier after the call.
9157:
9158: * c-decl.c (grokdeclarator): Allow function declared const or volatile.
9159:
9160: Sat Dec 24 18:40:12 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
9161:
9162: * integrate.c (function_cannot_inline_p): If STRUCT_VALUE_INCOMING
9163: or STRUCT_VALUE is defined, can't inline functions returning BLKmode.
9164:
9165: Fri Dec 23 13:26:26 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
9166:
9167: * expr.c (store_constructor): Compute array's size
9168: with int_size_in_bytes.
9169:
9170: * varasm.c (assemble_variable): If shared data, go to data section
9171: before outputting an uninitialized symbol.
9172:
9173: * tm-sequent.h (ASM_OUTPUT_ALIGN_CODE): Missing backslash.
9174: (SHARED_SECTION_ASM_OP): Macro defined.
9175: * tm-seq386.h (SHARED_SECTION_ASM_OP): Macro defined.
9176:
9177: * c-typeck.c (c_expand_asm_operands): Warn if output op is `const'.
9178:
9179: * Fix problem where a stmt expr in an initialization
9180: refers to the variable it is initializing.
9181: * stmt.c (expand_decl_init): New fn split out from `expand_decl'.
9182: * c-decl.c (finish_decl): Call that.
9183: Don't call expand_decl if already done.
9184: (start_decl): Call expand_decl if type is complete already.
9185:
9186: * Makefile (install): Typo in ranlib command.
9187:
9188: Thu Dec 22 15:57:12 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
9189:
9190: * tree.h (tree_identifier): New field.
9191: (IDENTIFIER_ERROR_LOCUS): Accessor for it.
9192: * c-parse.y (primary => IDENTIFIER):
9193: Undeclared variable gets one err msg per function it appears in.
9194:
9195: * ns32k.md (andsi3): Delete extra brace.
9196:
9197: * alliant.md, xm-alliant.h, tm-alliant.h, output-alliant.c: New files.
9198:
9199: * combine.c (SUBST, SUBST_INT): Store new field `is_int'.
9200: (copy_substitutions): Don't copy an int as an rtx.
9201:
9202: * Makefile (INSTALL): Install gcc.1 properly.
9203:
9204: * tm-ns32k.h (FUNCTION_PROLOGUE, ASM_OUTPUT_ALIGN_CODE):
9205: Add missing backslashes.
9206:
9207: See file OChangeLog.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.