1 Fri Aug 15 13:43:39 1997 Michael Meissner <meissner@cygnus.com>
3 * haifa-sched.c (debug_dependencies): Use GET_NOTE_INSN_NAME to
4 print out the names of the notes. Print out the name of the insn
5 that is not a note, and not an {,CALL_,JUMP_}INSN.
7 Wed Aug 13 01:03:37 1997 Doug Evans <dje@canuck.cygnus.com>
9 * configure.in (haifa configury): Fix typo.
10 * configure: Regenerate.
12 Tue Aug 12 10:20:36 1997 Jeffrey A Law (law@cygnus.com)
14 * version.c: Bump version to "gcc-3.0.0 970802 experimental".
18 * COPYING.g77, README.g77: New files.
19 * real.c (ereal_unto_float, ereal_unto_double): New functions.
20 * real.h (ereal_unto_float, ereal_unto_double): Declare them.
21 (REAL_VALUE_UNTO_TARGET_DOUBLE, REAL_VALUE_UNTO_TARGET_SINGLE): Define.
23 Mon Aug 11 14:50:55 1997 Jeffrey A Law (law@cygnus.com)
25 * Integrate Haifa instruction scheduler.
26 * Makefile.in (ALL_CFLAGS): Add SCHED_CFLAGS. Prefix all references
27 to sched with $(SCHED_CFLAGS.
28 * configure.in: Handle --enable-haifa.
30 * flags.h: Add new flags for haifa instruction scheduler.
31 * genattrtab.c (expand_units): For haifa, don't subtract one
32 when computing blockage.
33 * toplev.h (flag_schedule_interblock): Haifa scheduler flag.
34 (flag_schedule_speculative): Ditto.
35 (flag_schedule_speculative_load): Ditto.
36 (flag_schedule_speculative_load_dangerous): Ditto.
37 (flag_schedule_reverse_before_reload): Ditto.
38 (flag_schedule_reverse_after_reload): Ditto.
39 (flag_branch_on_count_reg): Ditto.
40 (f_options): Add Haifa switches.
41 (main): Turn off some Haifa options if appropriate macro is
42 defined. Process Haifa switches.
43 * unroll.c (iteration_info): No longer static, since Haifa
45 (unroll_loop): Inform HAIFA scheduler about loop unrolling factor.
46 * unroll.c (unroll_loop): Set loop_unroll_iter, loop_start_value.
47 * loop.h (loop_unroll_factor, loop_number): Add HAIFA decls.
48 * loop.h (loop_initial_value,loop_unroll_iter): New globals.
49 * loop.c (loop_optimize): If HAIFA is defined, allocate additional
50 storage for the Haifa scheduler.
51 (mark_loop_jump): If HAIFA defined, set LABEL_OUTSIDE_LOOP_P and
53 (strength_reduce): If HAIFA and HAVE_decrement_and_branch_on_count
54 are defined, call analyze_loop_iterations and insert_bct to use
56 (record_giv): Refine test for jumps out of loops if HAIFA is
58 (analyze_loop_iterations): New function to identify if we can use
60 (insert_bct): Insert countdown loop.
61 (instrument_loop_bct): Low level code to insert countdown loop.
62 (loop_number): Calculate UID of loop.
63 (indirect_jump_in_function_p): Return true if an indirect jump is
65 (is_power_of_2): Return true if value is a power of 2.
66 (is_conditional_branch): Return true if insn is a conditional
68 (fix_bct_param): Process -fbct-{min,max}-N switches.
69 (check_bct_param): Return true if loop should be instrumented.
70 * loop.c (loop_initial_value,loop_unroll_iter): New globals.
71 (loop_optimize): Initialize.
72 (get_condition_for_loop): Ditto.
73 * loop.c (strength_reduce): Inside of code that uses #ifdef
74 HAVE_decrement_and_branch_on_count code, test it to make sure the
76 (instrument_loop_bct): Ditto.
77 * haifa-sched.c: New file.
80 * Integrate regmove pass.
81 * Makefile.in (OBJS): Add regmove.o
82 (regmove.o): Add dependencies.
83 * flow.c (find_use_as_address): No longer static.
84 * rtl.h (find_use_as_address): Declare.
85 * toplev.c (regmove_dump, flag_regmove): Define.
86 (f_options): Add -fregmove.
87 (regmove_dump_file, regmove_time): Define.
88 (fatal_insn): Close the regmove dump file.
89 (compile_file): Initialize regmove_time; open/close the regmove dump
90 file as needed. Print regmove time as needed.
91 (rest_of_compilation): Run regmove pass if requested, dump
92 RTL after regmove if requested.
93 (main): If -O2 or more, turn on regmove. Handle dump switches.
94 * regmove.c: New file.
96 Mon Aug 11 14:15:02 1997 Jeffrey A Law (law@cygnus.com)
98 * Integrate tlink patch from jason@cygnus.com
99 * gcc.c (SWITCH_TAKES_ARG): Add 'V', 'B' and 'b'.
100 (process_command): Increment n_switches for them. Don't discard
101 their args. Validate them.
102 (main): Escape " marks when creating COLLECT_GCC_OPTIONS.
104 (process_command): Set include_prefixes from COMPILER_PATH.
105 (main): Set COLLECT_GCC_OPTIONS sooner.
106 * confiugre.in: Link ../ld/ld.new to collect-ld rather than real-ld.
107 * tlink.c, hash.c, hash.h: New files.
108 * Makefile.in (USE_COLLECT2): Always use collect2.
109 (collect2): Depend on and link in hash.o and tlink.o.
110 (tlink.o, hash.o): Add dependencies.
112 Mon Aug 11 10:04:49 1997 Jeffrey A Law (law@cygnus.com)
114 * Integrate alias analysis changes from jfc@mit.edu
115 * Makefile.in (OBJS): Add alias.o
116 (alias.o): Add dependencies.
118 * sched.c: Remove alias analysis code. It lives in alias.c now.
119 (sched_analyze_2): Add new arguments to true_dependence.
120 (schedule_insns): Always call init_alias_analysis.
121 * calls.c (expand_call): Note calls to malloc, calloc, and realloc;
122 mark return value from such functions as a pointer and keep track of
123 them for alias analysis. If a return value from a function is a
124 pointer, mark it as such.
125 * combine.c (distribute_notes): Handle REG_NOALIAS.
126 * cse.c (struct write_data): Delete. No longer needed.
127 (invalidate): Don't call set_nonvarying_address_components anymore.
128 Use true_dependence to decide if an entry should be removed from
130 (invalidate_memory): Remove WRITES argument, simplify appropriately.
132 (note_mem_written): Similarly for WRITE_PTR argument.
133 (invalidate_from_clobbers): Similarly for W argument.
134 (invalidate_for_call): Remove memory elements from the hash table.
135 (refers_to_mem_p, cse_rtx_addr_varies_p): Deleted.
136 (cse_rtx_varies_p): New function. Derived from old
137 cse_rtx_addr_varies_p.
138 (cse_insn): Remove WRITES_MEMORY and INIT variables and all references.
139 Don't call note_mem_written anymore. Stack pushes invalidate the stack
140 pointer if PUSH_ROUNDING is defined. No longer need to call
141 cse_rtx_addr_varies_p to decide if a MEM should be invalidated.
142 (skipped_writes_memory): Remove variable.
143 (invalidate_skipped_set): Simplify and wewrite to use invalidate_memory.
144 (invalidate_skipped_block): Simplify for new alias analysis code.
145 (cse_set_around_loop): Likewise.
146 (cse_main): Call init_alias_analysis.
147 * flags.h (flag_alias_check, flag_argument_noalias): Declare.
148 * toplev.c (flag_alias_check, flag_argument_noalias): Define.
149 (f_options): Add new alias checking arguments.
150 (main): Set flag_alias_check when optimizing.
151 * local_alloc (validate_equiv_mem_from_store): Add new arguments
153 (memref_referenced_p): Likewise.
154 * loop.c (NUM_STORES): Increase to 30.
155 (prescan_loop): Only non-constant calls set unknown_address_altered.
156 (invariant_p): Add new arguments to true_dependence.
157 (record_giv): Initialize unrolled and shared fields.
158 (emit_iv_add_mult): Call record_base_value as needed.
159 * loop.h (struct induction): Add unrolled and shared fields.
160 * unroll.c (unroll_loop): Call record_base_value as needed.
161 (copy_loop_body): Likewise.
162 (final_biv_value): Likewise.
163 (final_giv_value): Likewise.
164 (find_splittable_regs): Likewise. Only create one new pseudo
165 if we have multiple address GIVs that were combined with the same
166 dst_reg GIV. Note when a new register is created due to unrolling.
167 * rtl.c (reg_note_name): Add REG_NOALIAS.
168 * rtl.h (enum reg_note): Similarly.
169 (rtx_varies_p, may_trap_p, side_effects_p): Declare.
170 (volatile_refs_p, volatile_insn_p, remove_note): Likewise.
171 (note_stores, refers_to_regno_p, reg_overlap_mentioned_p): Likewise.
172 (true_dependence, read_dependence, anti_dependence): Likewise.
173 (output_dependence, init_alias_analysis, end_alias_analysis): Likewise.
174 (mark_user_reg, mark_reg_pointer): Likewise.
177 * Integrate reload bugfix from Wilon which enables the PA port
179 * reload1.c (reload): Sum needs for both OPADDR_ADDR and and
180 OPERAND_ADDRESS when computing how many registers an insn needs.
181 (reload_reg_free_p): OPADDR_ADDR and OPERAND_ADDRESS reloads do
183 (reload_reg_free_before_p): Treat OPERAND_ADDRESS reloads just like
185 (reload_reg_reaches_end_p): For RELOAD_FOR_OPADDR_ADDR insns, registers
186 in reload_reg_use_in_op_addr do not reach the end.
187 do not reach the end.
188 (reloads_conflict): RELOAD_FOR_OPADDR_ADDR conflicts with
189 RELOAD_FOR_OPERAND_ADDRESS.
191 Sun Aug 10 12:00:20 1997 Jeffrey A Law (law@cygnus.com)
193 * gcc3 project officially starts.