aboutsummaryrefslogtreecommitdiff
path: root/gcc/ChangeLog
blob: 98ebfe9381b28aa1dd30af8368ca14e3866cb660 (plain)
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
Tue Aug 19 17:10:56 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* cplus-dem.c: Add 'extern' to prepends_underscore.

Tue Aug 19 09:34:57 1997  Jeffrey A Law  (law@cygnus.com)

	* haifa-sched.c (ISSUE_RATE): Renamed from MACHINE_issue_rate.
	(get_issue_rate): Delete.
	* pa.h (ISSUE_RATE): Define.

	* configure.in: Turn on haifa by default for the PA.
	* configure: Rebuilt.
	* pa.c (override_options): Accept -mschedule=7200 option.
	(pa_adjust_cost): No longer need to scale costs for newer
	processors.
	* pa.h (enum processor_type): Add PROCESSOR_7200.
	* pa.md: Revamp scheduling parameters to work better with
	haifa.  Add scheduling parameters for the 7200.

	* haifa-sched.c (move_insn): Reemit notes for SCHED_GROUP_P
	insns too.
	(schedule_block): When adjusting basic_block_{head,end}, account
	for movement of SCHED_GROUP_P insns too.

	* haifa-sched.c (debug_dependencies): Fix thinko.

	* Makefile.in (EXPECT, RUNTEST, RUNTESTFLAGS): Define.
	(site.exp, check, check-g++, check-gcc): New targets.

	* haifa-sched.c: Make lots of variables static.

Tue Aug 19 07:18:34 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)

	* expr.h, real.h: Finish prototyping.

Mon Aug 18 21:49:02 1997  Jim Wilson  <wilson@cygnus.com>

	* reload.c (find_reloads): Add code to convert RELOAD_FOR_OPADDR_ADDR
	reloads to RELOAD_FOR_OPERAND_ADDRESS reloads.
	* reload1.c: Undo bugfix from Aug 11.

Mon Aug 18 17:39:02 1997  Mike Meissner  <meissner@cygnus.com>

	* configure.in ({powerpc,rs6000}*-*-*, --with-cpu): Remove single
	quotes around the name.
	* configure: Regenerate.

Mon Aug 18 13:46:47 1997  Jim Wilson  <wilson@cygnus.com>

	* Makefile.in (stmp-multilib-sub): Fix typo in last change.

Thu Aug  7 10:33:13 1997  Manfred Hollstein  <manfred@s-direktnet.de>

	* Makefile.in (sub-makes): Pass the current value of LANGUAGES down
	to sub-makes to avoid building more passes than the user might have
	requested on the command line.

Sun Aug 17 15:42:17 1997  Dave Love  (d.love@dl.ac.uk)

	* configure.in: Expurgate `broken_install' (install is
 	autoconfed).

	* configure.lang: Substitute autoconfed ${INSTALL} (not currently
	relevant).

Sat Aug 16 01:08:12 1997  Jeffrey A Law  (law@cygnus.com)

	* loop.c (is_power_of_2, is_conditional_branch): Delete unused
	functions and declarations.
	(analyze_loop_iterations): Use condjump_p.
	(insert_bct): Likewise.  Use exact_log2.
	
Fri Aug 15 23:48:32 1997  Jeffrey A Law  (law@cygnus.com)

	* haifa-sched.c (find_post_sched_live): Call FREE_REG_SET as needed.
	(schedule_region): Likewise.
	(schedule_insns): Likewise.

	* PROJECTS: Update with Haifa stuff.

Fri Aug 15 12:49:56 1997  Jeffrey A Law  (law@cygnus.com)

	* version.c: Change the version string to look like:
	egcs-2.90.00 970814 (gcc2-970802 experimental).

	* loop.c (is_conditional_branch): Make definition match declaration.

	* gcc.c: Take out experimental snapshot warning message.

Fri Aug 15 13:43:39 1997  Michael Meissner  <meissner@cygnus.com>

	* haifa-sched.c (debug_dependencies): Use GET_NOTE_INSN_NAME to
	print out the names of the notes.  Print out the name of the insn
	that is not a note, and not an {,CALL_,JUMP_}INSN.

Wed Aug 13 01:03:37 1997  Doug Evans  <dje@canuck.cygnus.com>

	* configure.in (haifa configury): Fix typo.
	* configure: Regenerate.

Tue Aug 12 10:20:36 1997  Jeffrey A Law  (law@cygnus.com)

	* version.c: Bump version to "gcc-3.0.0 970802 experimental".

	* gcc.info*: Rebuilt.

	* COPYING.g77, README.g77: New files.
	* real.c (ereal_unto_float, ereal_unto_double): New functions.
	* real.h (ereal_unto_float, ereal_unto_double): Declare them.
	(REAL_VALUE_UNTO_TARGET_DOUBLE, REAL_VALUE_UNTO_TARGET_SINGLE): Define.

Mon Aug 11 14:50:55 1997  Jeffrey A Law  (law@cygnus.com)

	* Integrate Haifa instruction scheduler.
	* Makefile.in (ALL_CFLAGS): Add SCHED_CFLAGS.  Prefix all references
	to sched with $(SCHED_CFLAGS.
	* configure.in: Handle --enable-haifa.
	* configure: Rebuilt.
	* flags.h: Add new flags for haifa instruction scheduler.
	* genattrtab.c (expand_units): For haifa, don't subtract one
	when computing blockage.
	* toplev.h (flag_schedule_interblock): Haifa scheduler flag.
	(flag_schedule_speculative): Ditto.
	(flag_schedule_speculative_load): Ditto.
	(flag_schedule_speculative_load_dangerous): Ditto.
	(flag_schedule_reverse_before_reload): Ditto.
	(flag_schedule_reverse_after_reload): Ditto.
	(flag_branch_on_count_reg): Ditto.
	(f_options): Add Haifa switches.
	(main): Turn off some Haifa options if appropriate macro is
	defined.  Process Haifa switches.
	* unroll.c (iteration_info): No longer static, since Haifa
	scheduler uses it.
	(unroll_loop): Inform HAIFA scheduler about loop unrolling factor.
	* unroll.c (unroll_loop): Set loop_unroll_iter, loop_start_value.
	* loop.h (loop_unroll_factor, loop_number): Add HAIFA decls.
	* loop.h (loop_initial_value,loop_unroll_iter): New globals.
	* loop.c (loop_optimize): If HAIFA is defined, allocate additional
	storage for the Haifa scheduler.
	(mark_loop_jump): If HAIFA defined, set LABEL_OUTSIDE_LOOP_P and
	LABEL_NEXTREF.
	(strength_reduce): If HAIFA and HAVE_decrement_and_branch_on_count
	are defined, call analyze_loop_iterations and insert_bct to use
	countdown loops.
	(record_giv): Refine test for jumps out of loops if HAIFA is
	defined.
	(analyze_loop_iterations): New function to identify if we can use
	a countdown loop.
	(insert_bct): Insert countdown loop.
	(instrument_loop_bct): Low level code to insert countdown loop.
	(loop_number): Calculate UID of loop.
	(indirect_jump_in_function_p): Return true if an indirect jump is
	in the function.
	(is_power_of_2): Return true if value is a power of 2.
	(is_conditional_branch): Return true if insn is a conditional
	jump.
	(fix_bct_param): Process -fbct-{min,max}-N switches.
	(check_bct_param): Return true if loop should be instrumented.
	* loop.c (loop_initial_value,loop_unroll_iter): New globals.
	(loop_optimize): Initialize.
	(get_condition_for_loop): Ditto.
	* loop.c (strength_reduce): Inside of code that uses #ifdef
	HAVE_decrement_and_branch_on_count code, test it to make sure the
	condition is true.
	(instrument_loop_bct): Ditto.
	* haifa-sched.c: New file.
	

	* Integrate regmove pass.
	* Makefile.in (OBJS): Add regmove.o
	(regmove.o): Add dependencies.
	* flow.c (find_use_as_address): No longer static.
	* rtl.h (find_use_as_address): Declare.
	* toplev.c (regmove_dump, flag_regmove): Define.
	(f_options): Add -fregmove.
	(regmove_dump_file, regmove_time): Define.
	(fatal_insn): Close the regmove dump file.
	(compile_file): Initialize regmove_time; open/close the regmove dump
	file as needed.  Print regmove time as needed.
	(rest_of_compilation): Run regmove pass if requested, dump
	RTL after regmove if requested.
	(main): If -O2 or more, turn on regmove.  Handle dump switches.
	* regmove.c: New file.
	
Mon Aug 11 14:15:02 1997  Jeffrey A Law  (law@cygnus.com)

	* Integrate tlink patch from jason@cygnus.com
	* gcc.c (SWITCH_TAKES_ARG): Add 'V', 'B' and 'b'.
  	(process_command): Increment n_switches for them.  Don't discard
 	their args.  Validate them.
	(main): Escape " marks when creating COLLECT_GCC_OPTIONS.
	From Rohan Lenard.
	(process_command): Set include_prefixes from COMPILER_PATH.
	(main): Set COLLECT_GCC_OPTIONS sooner.
	* confiugre.in: Link ../ld/ld.new to collect-ld rather than real-ld.
	* tlink.c, hash.c, hash.h: New files.
	* Makefile.in (USE_COLLECT2): Always use collect2.
	(collect2): Depend on and link in hash.o and tlink.o.
	(tlink.o, hash.o): Add dependencies.

Mon Aug 11 10:04:49 1997  Jeffrey A Law  (law@cygnus.com)

	* Integrate alias analysis changes from jfc@mit.edu
	* Makefile.in (OBJS): Add alias.o
	(alias.o): Add dependencies.
	* alias.c: New file.
	* sched.c: Remove alias analysis code.  It lives in alias.c now.
	(sched_analyze_2): Add new arguments to true_dependence.
	(schedule_insns): Always call init_alias_analysis.
	* calls.c (expand_call): Note calls to malloc, calloc, and realloc;
	mark return value from such functions as a pointer and keep track of
	them for alias analysis.  If a return value from a function is a
	pointer, mark it as such.
	* combine.c (distribute_notes): Handle REG_NOALIAS.
	* cse.c (struct write_data): Delete.  No longer needed.
	(invalidate): Don't call set_nonvarying_address_components anymore.
	Use true_dependence to decide if an entry should be removed from
	the hash table.
	(invalidate_memory): Remove WRITES argument, simplify appropriately.
	Fix all callers.
	(note_mem_written): Similarly for WRITE_PTR argument.
	(invalidate_from_clobbers): Similarly for W argument.
	(invalidate_for_call): Remove memory elements from the hash table.
	(refers_to_mem_p, cse_rtx_addr_varies_p): Deleted.
	(cse_rtx_varies_p): New function.  Derived from old
	cse_rtx_addr_varies_p.
	(cse_insn): Remove WRITES_MEMORY and INIT variables and all references.
	Don't call note_mem_written anymore.  Stack pushes invalidate the stack
	pointer if PUSH_ROUNDING is defined.  No longer need to call
	cse_rtx_addr_varies_p to decide if a MEM should be invalidated.
	(skipped_writes_memory): Remove variable.
	(invalidate_skipped_set): Simplify and wewrite to use invalidate_memory.
	(invalidate_skipped_block): Simplify for new alias analysis code.
	(cse_set_around_loop): Likewise.
	(cse_main): Call init_alias_analysis.
	* flags.h (flag_alias_check, flag_argument_noalias): Declare.
	* toplev.c (flag_alias_check, flag_argument_noalias): Define.
	(f_options): Add new alias checking arguments.
	(main): Set flag_alias_check when optimizing.
	* local_alloc (validate_equiv_mem_from_store): Add new arguments
	to true_dependence.
	(memref_referenced_p): Likewise.
	* loop.c (NUM_STORES): Increase to 30.
	(prescan_loop): Only non-constant calls set unknown_address_altered.
	(invariant_p): Add new arguments to true_dependence.
	(record_giv): Initialize unrolled and shared fields.
	(emit_iv_add_mult): Call record_base_value as needed.
	* loop.h (struct induction): Add unrolled and shared fields.
	* unroll.c  (unroll_loop): Call record_base_value as needed.
	(copy_loop_body): Likewise.
	(final_biv_value): Likewise.
	(final_giv_value): Likewise.
	(find_splittable_regs): Likewise.  Only create one new pseudo
	if we have multiple address GIVs that were combined with the same
	dst_reg GIV.  Note when a new register is created due to unrolling.
	* rtl.c (reg_note_name): Add REG_NOALIAS.
	* rtl.h (enum reg_note): Similarly.
	(rtx_varies_p, may_trap_p, side_effects_p): Declare.
	(volatile_refs_p, volatile_insn_p, remove_note): Likewise.
	(note_stores, refers_to_regno_p, reg_overlap_mentioned_p): Likewise.
	(true_dependence, read_dependence, anti_dependence): Likewise.
	(output_dependence, init_alias_analysis, end_alias_analysis): Likewise.
	(mark_user_reg, mark_reg_pointer): Likewise.


	* Integrate reload bugfix from Wilon which enables the PA port
	to bootstrap again.
	* reload1.c (reload): Sum needs for both OPADDR_ADDR and and
	OPERAND_ADDRESS when computing how many registers an insn needs.
	(reload_reg_free_p): OPADDR_ADDR and OPERAND_ADDRESS reloads do
	conflict.
	(reload_reg_free_before_p): Treat OPERAND_ADDRESS reloads just like
	OPADDR_ADDR reload.
	(reload_reg_reaches_end_p): For RELOAD_FOR_OPADDR_ADDR insns, registers
	in reload_reg_use_in_op_addr do not reach the end.
	do not reach the end.
	(reloads_conflict): RELOAD_FOR_OPADDR_ADDR conflicts with
	RELOAD_FOR_OPERAND_ADDRESS.

Sun Aug 10 12:00:20 1997  Jeffrey A Law  (law@cygnus.com)

	* gcc3 project officially starts.