-
Notifications
You must be signed in to change notification settings - Fork 4
/
ChangeLog.1
9207 lines (6350 loc) · 345 KB
/
ChangeLog.1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Thu May 10 22:48:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
* rtl.def (DEFINE_DELAY): Change description to describe annulling.
* genattr.c (main): Write out definitions for annulling, if present.
* genattrab.c (expand_delays): Build internal attributes for
which insns can be annulled in a delay slot.
(gen_delay): Validate number of elements in DEFINE_DELAY list.
(write_eligible_delay): Write out routines for validating annulled
insns as well as those in normal delay slot.
(main): Call write_eligible_delays to output annulling information,
if it exists for this machine.
* out-m68k.c (not_sp_operand): New function.
* m68k.md (andsi3): Don't allow sp as ourput to avoid reload
inefficiency.
* calls.c (struct arg_data): Delete field STORED; add fields
PASS_ON_STACK and SAVE_AREA.
(prepare_call_address): Static chain value can't have QUEUED.
(expand_call): Rework to support additional calling sequence options.
Major changes include:
Call FUNCTION_ARG_PASS_BY_REFERENCE to determine whether an
object should be passed by invisible reference.
Handle arguments passed both on stack and in a register; this can be
used to allow arguments that are hard to compute directly into
registers to be passed.
Support option (ACCUMULATE_OUTGOING_ARGS) where the largest amount
of stack for outgoing arguments is computer and pushed during the
function prologue. Stack space usage is tracked and any location
that would need to be reused will be saved and restored.
If preallocating arg block, compute address where each arg will be
placed and pass it as target to expand_expr.
Other changes:
Use virtual regs to see if structure value address isn't stable.
If inlined, return TARGET if TARGET and TEMP are equivalent.
UNNAMED_ARGS_IN_REGISTERS is redundant with the NAMED parameter to
FUNCTION_ARG and has been deleted.
Use virtual_outgoing_stack_rtx instead of FIRST_PARM_CALLER_OFFSET.
Use locate_and_pad_parm to compute any needed padding for argument.
If REG_PARM_STACK_SPACE is defined, allocate backing stack locations
for args passed in registers; these are not included in the length
of stack space required unless OUTGOING_REG_PARM_STACK_SPACE is also
defined.
When precomputing register parameters, can stop computation when we
obtain any rtx, not necessarily a register.
No longer need code to protect data written below bottom of stack;
this is taken care of by preexpanding calls in argument.
target_for_arg no longer needed; its function is performed by
store_one_arg.
Always copy function return result to our target since they cannot
possibly be the same.
(target_for_arg): No longer used.
(store_one_arg): Save and restore in-use argument list location.
Support args passed both in register and on stack.
No need for explicit code for preallocated area; now pass location
as target to expand_expr; only copy if result in different place.
Put sequence point after expanding one value.
* cse.c (struct write_data): Add bit to indicate stack pointer changed.
(canon_hash): Allow recording of stack pointer.
(cse_insn): Indicate stack pointer invalidated by subroutine calls.
Pass stack push and pop operations to note_mem_written.
Process stack pointer assignment as normal operation.
Finish change of April 7th that excludes ap and fp from being marked
as clobbered by calls. Also exclude sp; if it is clobbered by a
call, an explicit CLOBBER will be written.
(note_mem_written): Look for adjustment of stack pointer.
(invalidate_from_clobbers): Invalidate stack pointer, if required.
* emit-rtl.c (gen_inline_header_rtx): Add field for outgoing args size.
(copy_rtx_if_shared): Check for any virtual register instead of frame
or argument pointer.
(init_emit): Start normal pseudos after virtual pseudos.
Copy the unique virtual regs into regno_reg_rtx.
(init_emit_once): Incoming and outgoing static chain can be the same;
inlining of nested functions won't need the distinction.
Create unique copies of virtual registers.
* explow.c (memory_address): Don't worry about refs to fp or ap;
force_reg knows how to handle them correctly.
(fix_lexical_addr): Moved to function.c
(adjust_stack, anti_adjust_stack): Do nothing for adjustment of zero.
(allocate_dynamic_stack_space): New function copied from
expand_builtin. Handle STACK_POINTER_OFFSET via
virtual_stack_dynamic_rtx. When STACK_POINTER_OFFSET is defined,
perform alignment by always reserving a multiple of STACK_BOUNDARY
stack bits. This avoids concern about whether sp itself or the top of
stack needs to be aligned; if we start with an aligned stack, we keep
it aligned.
(round_push): Use ADD and AND rather than DIV and MULT.
* expr.c (init_expr): Initialize some more vars.
(push_block): Use virtual_outgoing_args_rtx so don't need
STACK_POINTER_OFFSET here.
Merge extra and size more efficiently; no need to call force_operand
since memory_address is called.
(emit_push_insn): Pass type for FUNCTION_ARG_PADDING.
Use REG_PARM_STACK_SPACE instead of FIRST_PARM_CALLER_OFFSET.
To see if must copy address, check if it is a virtual register that
will be mapped to sp; only need check if not accumulating space
space for outgoing parms.
Ignore EXTRA if argument block has already been allocated.
(emit_library_call): Major rework to support calling sequences similar
to expand_call in calls.c, but only support a very small subset of
the conventions; abort if something outside our subset occurs.
Abort if incorrect mode is passed; we can't convert here since we don't
know the signedness.
(store_field): Check for virtual registers instead of hard registers
when seeing if stable.
(safe_from_p): Location in outgoing stack area is known to be safe.
(expand_builtin, BUILT_IN_ALLOCA): Use allocate_dynamic_stack_space.
* expr.h: Define current_function_outgoing_args_size and
locate_and_pad_parm; delete definition of get_structure_value_addr.
(ARGS_SIZE_RTX): Always return a valid operand.
(ARGS_SIZE_TREE): New macro.
(FUNCTION_ARG_PADDING): Accept MODE and TYPE like other
FUNCTION_ARG_... macros.
(FUNCTION_ARG_BOUNDARY): Provide default for new macro.
(MUST_PASS_IN_STACK): New macro.
(allocate_dynamic_stack_space): New function.
* tm-3b1.h, tm-3b1g.h, tm-apollo68.h, tm-crds.h, tm-mot3300.h:
Change definition of FUNCTION_ARG_PADDING to use TYPE instead of SIZE.
* function.c (current_function_outgoing_args_size): New var.
(arg_pointer_save_area, virtuals_instantiated): Likewise.
(invalid_stack_slot): No longer used.
(push_function_context, pop_function_context): Save and restore
outgoing args size and arg pointer save area.
No longer save or restore invalid_stack_slot.
(pop_function_context): Set up variables whose value is constant
throughout rtl generation.
(get_frame_size): No longer adjust by STARTING_FRAME_OFFSET.
(assign_stack_local): Use virtual_stack_vars_rtx instead of fp
until virtuals have been instantiated, then use fp.
Remove reference to obsolete invalid_stack_slot.
Can no longer be called with size == 0.
(assign_outer_stack_loc): Use virtual_stack_vars_rtx instead of fp.
Remove references to obsolete invalid_stack_slot.
Push to obstack of containing function when allocating rtx.
(put_var_into_stack): Only switch obstacks around making of
queue entry.
Replace call to parm_stack_loc with reference to info in proper
function.
(fixup_stack_1): Handle any virtual register instead of handling
just fp.
(instantiate_virtual_regs, instantiate_virtual_regs_1): New functions.
(use_variable, use_variable_after): Check for virtual register
instead of checking against ap and fp.
(parm_stack_loc): Function deleted.
(assign_parms): No longer need internal_arg_pointer.
Accept SECOND_TIME argument that suppresses rtl generation and
assignments to DECL_RTL. Used by integrate.c to recompute vars.
Don't use FIRST_PARM_OFFSET here; use virtual_incoming_args_rtx.
Replace test for nonstable incoming arg pointer.
If structure value address is treated as the first argument, add
it into the list of arguments; this means we can have a RESULT_DECL
in with the PARM_DECL's.
DECL_OFFSET is no longer needed by integrate.c.
Handle args passed by invisible reference.
Support new macro, SETUP_INCOMING_VARARGS, to save all registers used
for args including and beyond those for the current arg. Used for
non-ANSI varargs.
Pass locate_and_pad_parm data it needs to handle reg->stack boundary
if register parameters have assigned stack space.
If we received the function's incoming structure pointer as a
normal argument, update DECL_RTL of DECL_RESULT.
Round total argument size if required; similarly, always use at
least REG_PARM_STACK_SPACE bytes if defined.
(locate_and_pad_parm): Do not need PARM.
Major rework to do much of the job of aligning and padding stack
location. Now a void function wich is passed pointers to struct
args_size vars that are set to the argument position, size, and
initial offset.
Accept flag denoting if a parm was passed in a register and also
the current function declaration.
If register parameters are assigned stack locations and there is a
minimum required size for the area assigned to register parameters,
pad the stack position when a parameter not assigned to a register
is encountered.
Remove redundant code in MAX_PARM_BOUNDARY case.
(lookup_static_chain): Use virtual_stack_vars_rtx instead of fp.
(fix_lexical_addr): Move from explow.c.
If referencing variable that lives in the incoming argument area
of its parent and a separate ap is required, allocate a save area in
the parent for it and use it here. If no separate ap is require,
compute offset between ap and fp.
(trampoline_address): No need to push obstacks here.
(init_function_start): Initialize new vars; delete obsolete vars.
(expand_function_start): Don't need to handle case where incoming
structure return address is passed as hidden parameter here; now done
completely in assign_parms.
(expand_function_end): Save ap if a save area was made for it.
Set REG_FUNCTION_VALUE_P when copying address of returned
structure.
Be consistent in use of FUNCTION_... macros vs. hard_function_value.
* function.h (outgoing_args_size, arg_pointer_save_area): New fields.
(invalid_stack_slot): Obsolete, deleted.
* integrate.c: Major rework and simplification.
Split up vars into two classes. Those used for expand_inline_function
and children are now part of struct inline_remap. Most of the others
are for save_for_inline and its children.
(function_cannot_inline_p): The only type of arguments that will
cause us to reject inlining are variable-sized arguments; also
reject functions that return variable-sized objects.
For now, don't inline a nested function. We'll support this shortly.
Use current_function_returns_pcc_struct instead of duplicating test.
(save_for_inline): No need to set TREE_VOLATILE for parms.
Save outgoing args size in header.
Use unique copy of virtual reg rtx's.
Handle any required fixups for INSN_LIST forward-references.
Don't bother resetting dead static vars when we are done.
Need not save current_function_pretend_args_size.
(copy_for_inline): First copy all insns, then all REG_NOTES to avoid
problems with forward references.
(struct inline_remap): Move all previously-static vars used by
expand_inline_function and children into this structure. This avoids
potential problems due to recursive calls to expand_inline_function.
(expand_inline_function and children): Allocate a struct inline_remap
and pass to all children.
(expand_inline_function): Rework parameter handling by looking at
DECL_RTL and using it to determine what types of mappings need to be
done. Support objects passed by invisible reference. Put any
constant memory addresses into const_equiv_map. parm_map is no longer
used.
Likewise for the return value: consult DECL_RTL (DECL_RESULT)).
Don't allocate space for called function's frame until referenced.
No longer need special handling for insn following CALL.
Ignore USE whose argument has REG_FUNCTION_VALUE_P true.
Ignore setting function register if we don't have a mapping for it
(e.g., we are ignoring the result of the call).
Look at new SET_SRC for constant equivalences. Some new ones may
have resulted from constant folding.
Pass both new and old rtx to try_constants.
Discard NOTE_INSN_DELETED notes.
Copy insns first, then REG_NOTES, to avoid problems with forward refs.
(copy_parm_decls): Compute new address of parameter using the
constant equivalence map, which will contain the remapping of
the frame and argument pointer.
(copy_decl_tree): Likewise.
(copy_rtx_and_substitute): Handle references to frame and argument
pointers by allocating a space equal to the size of the frame and
incoming arguments, respectively, and setting a pseudo to point to
the start of each area. Set up an equivalence in CONST_EQUIV_MAP
between fp or ap and the actual address. Return the pseudo.
Don't need to deal with possibility of (SUBREG (CONST_INT)) since
we are only replacing register with other registers here.
No longer need to special-case PLUS and MEM; subst_constants will do
this work.
Update detection of sets of ap and fp.
(try_constants, subst_constants): Accept old and new rtx. They will
be isomorphic, with only register numbers changed. Use old rtx to
look up register in CONST_EQUIV_MAP and new rtx for substitution.
Correctly handle SUBREG of CONST_INT and CONST_DOUBLE.
Fix typos in handling of PLUS.
(access_parm_map, copy_address): Delete functions.
(try_fold_cc0): Handle both compare and test.
(fold_out_cnst_cc0): Rework to simplify and remove dubious cases.
(output_inline_function): Call assign_parms to perform any needed
setups.
Need not restore pretend arg size (will be computed by assign_parms).
Restore outgoing argument size.
* output.h (current_function_outgoing_args_size): New var.
* rtl.h (OUTGOING_ARGS_SIZE): New field in INLINE_HEADER.
(PRETEND_ARGS_SIZE): No longer needed.
(virtual_..., VIRTUAL_...): Define virtual register numbers and rtx.
* rtlanal.c (rtx_equal_p): Update comment on use of
REG_FUNCTION_VALUE_P.
* stmt.c (expand_goto): Just restore fp; non-local goto handler
will restore ap if needed.
(expand_return): Don't use STARTING_FRAME_OFFSET here.
(expand_end_bindings): Adjust fp in nonlocal-goto handler. If needed,
reload ap from its save area in the frame; allocate save area if none.
(expand_decl): Use new function allocate_dynamic_stack_space.
* toplev.c (rest_of_compilation): Instantiate virtual registers.
Clear rtx_equal_function_value_matters immediately after possibly
saving current routine for inlining.
* stupid.c (stupid_life_analysis): Don't try to allocate virtual
registers (which don't exist any more).
Thu May 10 13:59:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* reload1.c (modes_equiv_for_class_p): Don't compare HARD_REGNO_NREGS.
* combine.c (subst): Simplify
(sign_extend:M (subreg:N (ashiftrt:M (sign_extend:M (any:N ...))))).
* fixincludes: Verify that a link leads back to /usr/include
by checking name of dir it arrives in. If so, use rest of dirname
as target for new link.
* Makefile.in (tmpgnulib): Put dummy entry in loop with LIBFUNCS_EXTRA
so loop is never null. Then ignore that entry when it comes up.
* gcc.c (default_compilers): Add explicit suffix to arg of -dumpbase.
Tue May 8 13:54:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-ultrix.h: New file.
Mon May 7 18:47:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* i386.md (test... recognizers): Output symbolic constant first.
Sun May 6 22:51:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* function.c (fixup_memory_subreg): Make a sequence if -fforce-addr.
* fixincludes: When going to directory of link name, don't lose
if name has no directory.
Move the code to fix netinet/ip.h; was in the middle of something.
* Makefile.in (tmpgnulib): Test LIBFUNCS_EXTRA for nonempty.
Sun May 6 08:29:27 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
* Makefile.in (LIBFUNCS): Remove extraneous "\".
* Makefile.in (stamp-gnulib2): Move "-" to proper line.
* gnulib2.c (clear_cache): Ignore routine unless INSN_CACHE_SIZE
is defined (avoids cpp-detected divide-by-zero).
* expr.c (safe_from_p): Don't blow up when passed a null tree.
* varasm.c (get_pool_size): New function to return constant pool size.
Fri May 4 16:11:54 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
* expr.c (safe_from_p): If EXP has some rtx, just check it.
Handle TREE_LIST, RTL_EXPR, and WITH_CLEANUP_EXPR.
Note that CALL clobbers memory and hard registers.
Look at enclosed object for SUBREG, but SUBREG of a hard reg is unsafe.
* expr.c (store_constructor): Now that safe_from_p has been applied
to the target, need not avoid hard register targets.
Abort if called with neither ARRAY_TYPE or RECORD_TYPE.
* reload.c (find_equiv_reg): Handle goal of (plus (sp) (const)).
* Makefile.in (STAGESTUFF): Include hard-params.
Fri May 4 15:33:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* gcc.c (add_prefix): New arg WARN. Record in prefix_list.
(main): Calls changed. Pass nonzero for -B prefixes.
Later, call unused_prefix_warning.
(unused_prefix_warning): Warn about prefixes never used.
Thu May 3 16:56:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* print-tree.c (print_node): Align the `align' line with the others.
* expmed.c (store_bit_field): Maximum size for loading mem struct
into reg comes from the mode of the value to be stored.
Alignment is no restriction if it matches BIGGEST_ALIGNMENT.
Always do the real work in SImode if couldn't use MEM.
(extract_bit_field): Likewise.
* combine.c (subst): Handle (sign_extend:M (subreg (sign_extract:M)))
on big-endian machine like corresponding zero_extend case.
* combine.c (try_combine): Use rtl_equal_p instead of == when
testing for sources and destinations that match.
* pyr.md (bitw recognizer): Set CC_NO_OVERFLOW.
Thu May 3 13:03:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
* expr.c (expand_expr, case COND_EXPR): Can always use original
target if specified.
In "X ? A + B : A" case, use safe_from_p to see if target conflicts
with B.
* cse.c (cse_insn): Don't rewrite (set REG0 REG1) if REG1 is a hard
register even if is REG0 cheaper.
Thu May 3 12:04:19 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* reload1.c (reload): Handle multiple size groups for one class.
* stdarg.h: Typo in conditional.
Wed May 2 16:34:25 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-sun3.h (CC1_SPEC): Ignore -target.
(WORD_SWITCH_TAKES_ARG): Define it.
* tm-sparc.h (CC1_SPEC): Ignore -target and -dalign.
(WORD_SWITCH_TAKES_ARG): Define it.
Wed May 2 09:38:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
* cse.c (cse_insn): Always replace registers with oldest equivalent,
including the case when the destination is present in the source.
Tue May 1 15:55:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* gnulib2.c (__adddi3, __subdi3): New, simpler algorithm.
Tue May 1 14:48:03 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
* Makefile.in: Insert "else true;" in *_ALLOCA macros.
* stor-layout.c (mode_for_size): No longer static.
Accept LIMIT parameter to limit mode to MAX_FIXED_MODE_SIZE.
(layout_decl, layout_type): Pass appropriate limit parameter to
mode_for_size.
Tue May 1 13:09:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* stmt.c (assign_parms): Don't make entry_parm and stack_parm valid.
Leave them explicit stack slots.
* explow.c (validize_mem): Copy it, don't alter it.
* out-m68k.c (standard_68881_constant_p): Handle HOST_WORDS_BIG_ENDIAN.
* integrate.c (save_for_inline): Copy reg notes after all insns.
* combine.c (subst): When checking reg_last_set, verify nonzero.
* gcc.c (default_compilers): Use %b, not %i, after -dumpbase.
* stor-layout.c (make_unsigned_type): Change like make_signed_type.
Tue May 1 07:36:21 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
* tm-m68k.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Allocate space
for local variables even if no frame pointer; adjust size to account
for place where old frame pointer would have been placed.
(INITAL_FRAME_POINTER_OFFSET): Add frame size instead of subtracting
it and perform adjustment described above.
* expr.c (validate_subtarget): Deleted.
(expand_expr): Replace calls to validate_subtarget with safe_from_p.
Mon Apr 30 01:39:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* Makefile.in (install-headers): Simplify loop by cd'ing to srcdir.
* stor-layout.c (layout_type): Get alignment of all scalar types
from the mode.
(make_signed_type): Get rid of ptr_size_node, function_size_node.
* tm-*.h (POINTER_BOUNDARY): Deleted.
* c-typeck.c (build_unary_op): For ADDR_EXPR of COMPONENT_REF,
mark the PLUS_EXPR constant if appropriate.
(parser_build_binary_op): Record C_SET_EXP_ORIGINAL_CODE here.
(build_binary_op): Not here.
* fold-const.c (size_int): Make arg unsigned.
* varasm.c (output_addressed_constants): Fixed typo.
* cccp.c (macarg1): `\' not special outside strings.
* c-typeck.c (build_unary_op): In increment ops,
typo checking for ptr to void/function.
Check original type for this and for amount of increment.
Sat Apr 28 16:43:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-typeck.c (build_indirect_ref): Error if target is incomplete type.
Fri Apr 27 13:56:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* reload1.c (order_regs_for_reload): Count multi-word pseudos right.
Thu Apr 26 17:52:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* cccp.c (handle_directive): Don't pass directive through if no_output.
* c-parse.y (yylex): Large hex constants are signed if -traditional.
Tue Apr 24 13:57:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* i860.md, m88k.md: Add missing = in some output constraints.
* tm-ns32k.h (POINTER_BOUNDARY): Now 32.
* out-*.c (output_move_double): Use split_double.
* final.c (split_double): New function, handles byte-order differences.
* stmt.c (expand_decl): Check size for integer, not "constant".
* stor-layout.c (layout_decl, layout_type): Likewise.
* c-decl.c (finish_decl): Likewise.
* c-typeck.c (digest_init): Likewise.
* varasm.c (assemble_variable, output_constructor): Likewise.
(decode_addr_const): Distinguish getting rtl by code alone.
(output_addressed_constants): No need to abort.
In ADDR_EXPR case, check TREE_CODE_CLASS.
* c-tree.h (C_DECLARED_LABEL_FLAG): New flag.
* c-parse.y (label declarations): Set it.
* c-decl.c (pop_label_level, lookup_label): Use it.
* expr.c (string_constant): Accept variable offsets.
(expand_expr): Check for explicit integers, not constants, in sizes.
(safe_from_p): No need to check TREE_CONSTANT.
* Makefile.in (prefix): Now replaces /usr/local instead of adding on.
Mon Apr 23 02:01:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* cplus-tree.h (DECL_FRIENDLIST): Use DECL_INITIAL.
* expr.c (expand_assignment): Use expr_size to compute size.
Sun Apr 22 21:53:55 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* expr.c (expand_assignment, expand_expr): Check for COMPONENT_REF
before testing DECL_BIT_FIELD.
* stor-layout.c (convert_units): Deleted. All calls eliminated.
* TREE_CONSTANT renamed from TREE_LITERAL.
* TYPE_READONLY split off from TREE_READONLY.
* TREE_SIDE_EFFECTS renamed from TREE_VOLATILE.
* TYPE_VOLATILE split off from TREE_VOLATILE/TREE_THIS_VOLATILE.
Sun Apr 22 15:26:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
* loop.c (strength_reduce): Avoid problems in biv elimination by not
being forced to use giv's that have complex new_reg values while the
underlying giv is marked maybe_dead; clear maybe_dead in this case.
* loop.c: Make verification of loops take linear, not quadratic, time.
(verify_loop, can_jump_in_range_p): Deleted.
(prescan_loop): New function, contents are from old verify_loop.
(scan_loop): Call prescan_loop.
(find_and_verify_loops, mark_loop_jump): New functions.
(loop_optimize): Allocate new tables and call find_and_verify_loops
once instead of calling verify_loop for each loop.
Use data from find_and_verify_loops instead of scanning all insns.
* expr.c (safe_from_p): New function.
(validate_subtarget): Use safe_from_p.
(expand_expr, case CONSTRUCTOR): Likewise.
* expr.c (store_expr): Handle cases where EXP is a compound
or conditional expression specially to avoid unnecessary temporaries.
Sun Apr 22 00:15:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tree.h (struct tree_type): Delete size_unit.
(struct tree_decl): Delete size_unit and voffset_unit.
Reduce lang_flags to save 1 word.
* function.c (init_function_start): Don't use DECL_RESULT_TYPE.
* integrate.c (expand_inline_function): Likewise.
* c-decl.c (start_function, duplicate_decls): Likewise.
* tree.h (struct tree_decl): Delete voffset.
(DECL_RESULT_TYPE): Deleted.
* objc-actions.c (encode_field_decl, objc_copy_list):
Switch to DECL_FRAME_SIZE.
* cplus-class.c (finish_struct): Likewise.
* cplus-decl2.c (grokbitfield): Switch to DECL_BIT_FIELD.
* c-parse.y, cplus-parse.y, objc-parse.y: Likewise.
* tree.h (TYPE_NO_FORCE_BLK): New flag in types.
* stor-layout.c (layout_type): Use it.
* tree.h (DECL_TOO_LATE): New flag.
* stmt.c (expand_end_bindings, expand_goto_internal): Use it.
* tree.h (TREE_PACKED): Deleted.
* cplus-typeck.c (unary_complex_lvalue): Confusing use of
DECL_SIZE_UNIT; not clear what to do.
* cplus-tree.c (layout_vbasetypes): Likewise.
* cplus-class.c (modify_vtable_entry): Likewise.
* cplus-parse.y (YYDEBUG): Force it on.
(print_parse_statistics, init_parse): No-op if not YYDEBUG.
* fold-const.c (fold): REAL_INFINITY affects reals, not ints.
* protoize.c (edit_fn_declaration): Make arg volatile to stop warning.
Sat Apr 21 03:04:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* expmed.c (store_bit_fields): Adjust for elimination of BImode.
* c-parse.y (simple_if, stmt): Store stmt_count in proper place,
which is slot 1 of the if.
(simple_if, lineno_stmt, stmt): Output the note at beginning of
stmt, not in lineno_stmt. Use emit_line_note.
(simple_if): Set if_stmt_*, then use lineno_stmt directly.
(lineno_stmt): Before most uses, call skip_white_space.
(finput): Move to top of file.
* cplus-class.c (build_instantiated_decl): Fix typo.
* cplus-tree.h (C_TYPE_FIELDS_READONLY): Use lang_flag_1.
(TYPE_HAS_CONSTRUCTOR, TYPE_HAS_DESTRUCTOR, TYPE_NEEDS_CONSTRUCTOR):
(TYPE_NEEDS_DESTRUCTOR): Advance each to next lang_flag.
* tree.h (TREE_LANG_FLAG_5, TREE_LANG_FLAG_6): Define them.
* config.gcc: Delete ./Makefile.in iff not in the source dir.
* Makefile.in (for-bootstrap): New target.
* dbxout.c (dbxout_finish_symbol, dbxout_type, dbxout_prepare_symbol):
Add temporary conditionals on WINNING_GDB.
* print-tree.c (print_node): Print the TYPE_SYMTAB_ADDRESS.
* Makefile.in (protoize.o, unprotoize.o, SYSCALLS.c.X):
Include from or look in dir $(srcdir).
Fri Apr 20 16:30:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* varasm.c (output_constructor): Backward test for bit-field.
* Makefile.in (stamp-*): Delete .c or .h from these names.
Fri Apr 20 15:56:21 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
* cplus-typeck.c (compparms, comp_target_parms, build_modify_expr_1):
(build_modify_expr): Clean parens in complicated if.
* cplus-decl.c (finish_decl, grokdeclarator): Likewise.
Fri Apr 20 14:42:36 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-3b1.h (ASM_SPEC, PRINT_OPERAND_ADDRESS): Support 68020, 68881.
Useful even though this isn't one.
(ASM_OUTPUT_OPCODE): Convert fbne to fbneq. Don't change ftst.
(REGISTER_NAMES): Define it. Fpreg names not same as hp.
* stor-layout.c (mode_for_size): Don't check MAX_FIXED_MODE_SIZE.
(layout_type): Check it here when appropriate.
* loop.c (strength_reduce): Clean parens in complicated if.
* fold-const.c (mul_double, const_binop): Add parens around shifts.
Thu Apr 19 03:03:39 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* machmode.def: Delete unused modes.
* stor-layout.c (mode_for_size): Accepts mode class as arg.
Calls changed.
(layout_type): Can now use mode_for_size for floating types.
* stor-layout.c (layout_type): Get mode of function type from size.
* c-decl.c, cplus-decl.c (grokdeclarator): Don't worry about
mode of a function type.
* calls.c (prepare_call_address): No values contain static chains.
* tree.h (struct tree_decl, struct tree_common): Rename the flag bits.
* cplus-tree.h: References here changed.
* tree.h (DECL_BIT_FIELD): New macro, with new flag.
* print-tree.c: Print it.
* stor-layout.c (layout_decl): Use on input instead of TREE_PACKED.
Clear it if field happens to be aligned.
* expr.c, tree.c, varasm.c, symout.c, objc-actions.c, c-typeck.c:
Use this to distinguish bit-fields.
* c-decl.c, cplus-class.c (finish_struct): Set this for bit-fields.
* c-typeck.c (build_binary_op): Make NON_LVALUE_EXPR, not NOP_EXPR.
* out-sparc.c (find_addr_reg): Avoid using frame pointer.
* config.gcc: Delete all formfeeds from Makefile.
* stor-layout.c (layout_decl): Delete `bitsize'.
(layout_record): Test size for CONST_INT, not TREE_LITERAL.
(layout_type): Simplify array case.
* fold-const.c (size_binop): Division not special case.
Wed Apr 18 16:05:23 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-typeck.c (datatype): Function deleted.
(build_binary_op_nodefault, pointer_int_sum, pointer_diff):
Don't use it.
* cplus-typeck.c (build_binary_op_nodefault, pointer_int_sum):
(pointer_diff): Likewise.
(convert_for_assignment): Likewise. Took some work.
(datatype): Function deleted.
* c-typeck.c (common_type): Renamed from commontype.
(function_types_compatible_p): New function.
(compparms): Deleted.
(self_promoting_args_p): Renamed from compparms1.
* cplus-typeck.c (common_type, self_promoting_args_p): Likewise.
* c-typeck.c (build_function_call): Eliminate local value_type.
* c-typeck.c (parser_build_binary_op): Detect +/- within boolean.
* c-typeck.c (convert_arguments): Renamed from actualparameterlist.
Push results on front, and reverse at end.
* cplus-typeck.c: Likewise. All calls changed.
* tree.h (STMT_BIND_SIZE): Deleted.
(struct tree_bind_stmt): Deleted that slot.
* tree.c (build_let_stmt): Don't set it.
* print-tree.c (print_node): Call print_lang_identifier.
* c-decl.c, cplus-ptree.c (print_lang_identifier): New function.
* gnulib2.c (__clear_cache): New function.
Tue Apr 17 16:57:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* cplus-tree.c (build_member_type): Use TYPE_HASH, not TREE_UID.
(TYPE_HASH): Use the address. Delete the duplicate definition.
* c-typeck.c (build_unary_op): Bug in pedantic warning about ++.
* tree.h (TYPE_SEP, TYPE_SEP_UNIT): Deleted.
* stor-layout.c (layout_type): Don't set them.
(mode_for_size): New name for agg_mode; code cleaned up.
* c-tree.h (C_TYPE_FIELDS_READONLY): Use TREE_LANG_FLAG_1.
* fold-const.c (size_int, size_binop): New names for build_int
and genop, moved here. All callers changed.
(const_binop): New name for combine, and now static.
* stmt.c (expand_end_case, group_case_nodes, node_has_low_bound):
(node_has_high_bound): Don't call `combine' directly.
* tree.h (DECL_VOFFSET, DECL_VOFFSET_UNIT): Deleted.
* tree.c (staticp): Don't use DECL_VOFFSET.
* stor-layout.c (layout_*): Don't use it or set it.
(layout_record): Simplify: Keep all sizes in units of 1.
* tree.c (debug_tree, print_node, print_node_brief, indent_to):
New functions to print a tree.
* c-decl.c (print_lang_decl, print_lang_type): Define as no-op.
* cplus-ptree.c (print_lang_type): Complete rewrite.
Most other functions deleted.
* tree.c (print_node): Call print_lang_* unconditionally.
* tree.c (TYPE_HASH): Now use the address.
Mon Apr 16 16:27:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* final.c: Check LEAF_REGISTERS, not LEAF_REGS.
* real.h (*_FLOAT_FORMAT): Change enums to macros.
(REAL_INFINITY): Define it if IEEE format.
* c-decl.c (c_decode_options): Handle -Wconversion here.
* toplev.c (main): Not here.
* tm-*.h (INITIAL_FRAME_POINTER_OFFSET): Count get_frame_size.
Mon Apr 16 15:05:49 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
* loop.c (eliminate_biv): Build COMPARE with VOIDmode, not mode
of operands.
Mon Apr 16 14:55:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* jump.c: Include real.h.
Sun Apr 15 20:30:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
* c-typeck.c (pedantic_lvalue_warning): New function.
(build_component_ref): Handle COMPOUND_VALUE and COND_EXPR by moving
reference inside it and calling pedantic_lvalue_warning.
(build_unary_op): Incrementing a cast-expression is warning, not
error; call new pedantic_lvalue_warning.
(unary_complex_lvalue): Use of compound or conditional expression as
lvalue is warning, not error.
(build_modify_expr): Likewise.
* cplus-typeck.c: Likewise.
Sun Apr 15 12:27:11 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* cse.c (fold_rtx, fold_cc0): Check TARGET_FLOAT_FORMAT,
not FLOAT_NOT_IEEE.
* jump.c (jump_back_p): Likewise. FLOAT_NOT_IEEE is now gone.
* cccp.c (collect_expansion): Handle warn_stringify.
(main): Set it for -Wtraditional.
* function.c (init_function_start):
Set current_function_returns_pointer here.
(expand_function_start): Not here.
* expr.c (emit_library_call): Precompute reg and partial of all parms,
to do it in proper order.
* final.c (final_scan_insn): Typo in deleting obvious no-ops.
* expr.c (emit_push_insn): Change #if to ordinary if.
Sat Apr 14 13:20:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* expr.c (do_jump): In COMPONENT_REF, check TYPE is nonzero.
* tm-i386.h (ASM_OUTPUT_ADDR_DIFF_ELT): Delete spurious `abort ()'.
* emit-rtl.c (reverse_comparison): New function.
(get_last_insn_anywhere): New function.
* i386.md (ble, blt): New define_expands.
* Makefile.in (LANGUAGES): New parameter chooses languages to build.
(native): Use that.
(c, c++, objc): Targets for use in LANGUAGES.
* Makefile.in (install): Split up.
(install-cross, install-headers, install-gnulib, install-proto):
(install-man, $(libsubdir)): New targets.
* Makefile.in (native): New target, split from start.encap.
(tmpgnulib): Split out from gnulib.portable.
(gnulib.convert): Makes tmpgnulib, then converts.
(LIBCONVERT): New parameter.
(GCC_FOR_TARGET): New parameter.
(hard-params.o, hard-params, stamp-gnulib2): Use that.
* cse.c (fold_cc0): Compare equivalence classes of non-constants.
Waiting for papers from Steven McCanne.
Fri Apr 13 14:12:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* stor-layout.c (layout_type): If record is BLKmode because not
aligned, set TREE_PACKED. Don't force BLKmode due to field
with TREE_PACKED.
* cse.c (fold_rtx): Use dconst1, not atof.
* varasm.c (output_constant): Likewise.
* c-parse.y (yylex): Handle SIGFPE in atof.
* tm-tti68k.h: New file.
* toplev.c, flags.h (flag_pretend_float): New flag.
* regclass.c (reg_class_record): Handle `E' constraint, for float
constants but only if can examine their bits.
* reload.c (find_reloads): Likewise.
* recog.c (constrain_operands): Likewise.
* out-m68k.c (output_move_double): Abort on float constant
if can't examine the bits.
(standard_68881_constant_p): Fail if can't examine the bits.
(standard_sun_fpa_constant_p): Likewise.
* m68k.md (DFmode move recognizers): Use `E', not `F'.
* tm-m68k.h (PREFERRED_RELOAD_CLASS): Handle float constants.
* tm-next.h (ASM_OUTPUT_FLOAT, ASM_OUTPUT_FLOAT_OPERAND):
(ASM_OUTPUT_DOUBLE, ASM_OUTPUT_DOUBLE_OPERAND): Use REAL_VALUE_ISINF.
* tm-sun3.h, tm-sparc.h: Likewise.
* xm-vax.h (HOST_FLOAT_FORMAT): Define it.
* tm-vax.h (TARGET_FLOAT_FORMAT): Define it.
* real.h (enum float_format): Define codes for formats.
(HOST_FLOAT_FORMAT, TARGET_FLOAT_FORMAT): New macros, defaulted here.
(REAL_IS_NOT_DOUBLE, REAL_VALUE_TYPE): Override if formats differ.
(REAL_VALUE_ISINF): New macro.
* xm-vax.h (isinf): Define as macro.
* Makefile.in (LIBFUNCS_EXTRA): New variable.
(gnulib.portable): Compile those files.
* Makefile.in (AUX_OUTPUT2): New variable.
(OBJS): Use it.
(aux-output2.o): New target.
* Makefile.in (RANLIB, RANLIB_TEST): New variables.
* Makefile.in (AR_FLAGS, OLDAR_FLAGS): New variables.
(gnulib.portable, stamp-gnulib2): Use them.
* i386.md: Add patterns for `bt' insns.
Fri Apr 13 12:54:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
* c-decl.c (builtin_function): Now returns decl that was made.
* config.gcc: Support both -host= and +host=.
Thu Apr 12 22:39:10 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* Changes from Data General.
* syms.h: New file.
* sdbout.c: Include that if not USG.
* tree.h (enum built_in_function): Added BUILT_IN_STRCPY and
BUILT_IN_STRCMP.
* c-decl.c (init_decl_processing): Create additional pointer and
function types. Declare strcpy, strcmp, memcpy, memcmp built-in.
* expr.c (expand_builtin): Support strcpy, strcmp, memcpy, memcmp.
If special handler breaks out of switch, do library call.
By default, print error message and do library call.
(get_pointer_alignment, string_constant): New functions.
* dbranch.c: Put entire contents in conditional on HAVE_DELAYED_BRANCH.
(init_flags, enote): Clear and set memr.
(enote): Don't move a store across a fetch.
(insn_eligible_p): Check enote before volatility and dependencies.
Check for volatility if memw or memr.
(loads_from_mem_p): New function.
* Makefile.in (dbranch.o): New target.
(OBJS): Add dbranch.o.
Thu Apr 12 22:39:10 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* calls.c (expand_call): Count args in order written, with argpos.
Thu Apr 12 22:01:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
* expmed.c (synth_mult): Ensure OPS is always valid in returned alg.
* local-alloc.c (block_alloc): If we have an operand that is an
address, look inside it for registers to combine with.
* reload.c (combine_reloads): If the output reload is for an
earlyclobber operand, can't combine it.
Try to use a register that dies in an insn for a single output reload
if the insn has only one output.
Thu Apr 12 21:27:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* c-decl.c (duplicate_decls): Preserve DECL_INITIAL from old
function def to new one.
Thu Apr 12 07:55:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
* expr.c (expand_assignment): Order of source and destination to
bcopy/memcpy was reversed.
Wed Apr 11 17:29:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-i386.h (ABC_REGS): New register class.
(REG_CLASS_CONTENTS, REG_CLASS_NAMES, enum reg_class): Changed.
* i386.md (divsi3, etc.): Exclude register d from constraints.
* c-parse.y (save_filename, save_lineno): New nonterminals
to record text location at start of statement.
(lineno_stmt): New nonterminal, outputs line note before statement.
(lineno_decl): Likewise for decl, to avoid conflicts.
(stmt): Don't emit line notes at start of statement.
(simple_if): Collect file and line using save_filename, save_lineno.
* Changes from Data General.
* cccp.c (main, do_include): Implement -H to print header names.
* c-parse.y (component_decl_list): Parse even if final `;' missing.
Wed Apr 11 16:49:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
* gcc.c: Fix miscellaneous typos.
Wed Apr 11 12:59:57 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* config.gcc: Typos in setting pass1done, testing it,
and calling sed for usage msg.
* cccp.c (macroexpand): Count Newline Space as part of whitespace
sequence when stringifying.
* expmed.c (expand_mult): Handle synth_mult returning no operations.
Tue Apr 10 21:08:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* cccp.c (do_line): No error if string follows number without space.
Tue Apr 10 20:52:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
* recog.c (apply_change_group): Return a zero if rejected changes.
* loop.c (update_giv_derive): If a giv is only set conditionally, it
may only derive other givs in its own basic block.
Tue Apr 10 13:09:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
* tm-ctix.h: New file. Waiting for papers from Ronald Cole.
csusac!unify!dbrus.rjc@ucdavis.ucdavis.edu.
* cse.c (rtx_cost): Use new macro RTX_COSTS.
(COSTS_N_INSNS): New macro for use in RTX_COSTS.
* config.gcc: Fix typos in conditionals and case. Also usage message.
Missing backslashes in `echo | tee'.
Unset various vars after pass 1.
* c-typeck.c (build_c_cast): Complain if function type specified.
* expmed.c (synth_mult): Accept max_cost as arg and cut off there.
Pass it along recursively, making it smaller.
Eliminate quadratic loop, thus postponing powers of 2.