1 2007-12-18 Sebastian Pop <sebastian.pop@amd.com>
3 PR tree-optimization/34123
4 * lambda-code.c (can_duplicate_iv): New.
5 (cannot_convert_modify_to_perfect_nest): New.
6 (cannot_convert_bb_to_perfect_nest): New.
7 (can_convert_to_perfect_nest): Split up.
9 2007-12-18 David Daney <ddaney@avtrex.com>
11 * config/mips/mips.md (clear_hazard): Use PRINT_OPERAND punctuation
12 instead of .set push and .set pop.
14 2007-12-18 Rask Ingemann Lambertsen <rask@sygehus.dk>
17 * config/bfin/bfin.c (bfin_adjust_cost): Dig into PARALLELs to find
20 2007-12-18 Razya Ladelsky <razya@il.ibm.com>
22 * tree-parloops.c (reduiction_info): Change documentation of
23 reduction_initial field.
24 (initialize_reductions): Remove creation of reduction_initial
26 (create_loads_for_reductions): don't join reduction_initial to
29 2007-12-18 Kaz Kylheku <kaz@zeugmasystems.com>
31 PR rtl-optimization/34456
32 * resource.c (mark_set_resources): Use regs_invalidated_by_call
33 rather than call_used_regs and global_regs.
35 2007-12-18 Jakub Jelinek <jakub@redhat.com>
37 PR rtl-optimization/34490
38 * simplify-rtx.c (simplify_const_relational_operation): If !sign,
39 don't reduce mmin/mmax using num_sign_bit_copies.
41 2007-12-17 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
43 * doc/install.texi: Change recommended MPFR from 2.2.1 > 2.3.0.
45 2007-12-17 Andreas Schwab <schwab@suse.de>
47 * doc/invoke.texi (Warning Options): Use @itemx.
49 2007-12-17 Dorit Nuzman <dorit@il.ibm.com>
51 * tree-vectorizer.h (verbosity_levels): Add new verbosity level
53 * tree-vect-transform.c (vect_estimate_min_profitable_iters): Change
54 verbosity level to REPORT_COST.
55 (vect_model_reduction_cost): Likewise.
56 (vect_model_induction_cost): Likewise.
57 (vect_model_simple_cost): likewise.
58 (vect_model_store_cost): likewise.
59 (vect_model_load_cost): likewise.
60 (conservative_cost_threshold): Likewise. Remove print.
62 2007-12-17 Rask Ingemann Lambertsen <rask@sygehus.dk>
64 * doc/tm.texi (TARGET_SECONDARY_RELOAD): Fix typos.
66 2007-12-17 Jakub Jelinek <jakub@redhat.com>
69 * c-parser.c (c_parser_omp_all_clauses): Accept optional comma
72 2007-12-17 Dorit Nuzman <dorit@il.ibm.com>
74 PR tree-optimization/34445
75 * tree-vect-trasnform.c (vect_estimate_min_profitable_iters): Skip
76 stmts (including live stmts) that are not relevant.
78 2007-12-17 Jack Howarth <howarth@bromo.med.uc.edu>
81 * config/i386/t-crtpc: Add $(MULTILIB_CFLAGS).
82 * config/i386/t-crtfm: Likewise.
84 2007-12-17 Uros Bizjak <ubizjak@gmail.com>
86 * config/i386/i386.h (WIDEST_HARDWARE_FP_SIZE): Define.
88 2007-12-16 Uros Bizjak <ubizjak@gmail.com>
90 * tree-vect-transform.c (conservative_cost_threshold): Add missing
91 space to "not vectorized" message.
93 2007-12-16 Richard Sandiford <rsandifo@nildram.co.uk>
95 PR rtl-optimization/34415
96 * df.h (DF_LR_IN, DF_LR_OUT): Update comments.
97 * resource.c (mark_target_live_regs): Use DF_LR_IN rather than
98 df_get_live_in. Don't handle pseudos.
100 2007-12-16 Jakub Jelinek <jakub@redhat.com>
103 * c-decl.c (merge_decls): Copy RTL from olddecl to newdecl.
104 * config/pa/pa.c (pa_encode_section_info): If !first, preserve
105 SYMBOL_FLAG_REFERENCED flag.
107 2007-12-15 Alexandre Oliva <aoliva@redhat.com>
109 * tree.c (type_hash_add): Fix whitespace.
111 2007-12-15 Hans-Peter Nilsson <hp@axis.com>
113 Add CRIS v32 support. Fix -mcc-init.
114 * config.gcc: Make crisv32-* have cpu_type cris. Handle
115 crisv32-*-elf and crisv32-*-none like cris-*-elf and cris-*-none
116 but without multilibs and with target_cpu_default=32.
117 (crisv32-*-linux*): Handle as cris-*-linux*. Set
118 target_cpu_default to 32 and 10 accordingly.
119 * config/cris/cris.c (ASSERT_PLT_UNSPEC): Remove unused macro.
120 (cris_movem_load_rest_p, cris_store_multiple_op_p): Remove FIXME.
121 Change regno_dir and regno only if !TARGET_V32.
122 (cris_conditional_register_usage): If TARGET_V32, set
123 reg_alloc_order as per REG_ALLOC_ORDER_V32 and make
124 CRIS_ACR_REGNUM non-fixed.
125 (cris_print_base): Add gcc_assert for post_inc on CRIS_ACR_REGNUM.
126 (cris_print_operand) <case 'Z', case 'u'>: New cases.
127 <case REG of case 'H'>: Allow for CRIS_SRP_REGNUM.
128 (cris_reload_address_legitimized): Always return false for TARGET_V32.
129 (cris_register_move_cost): New function, guts from
130 REGISTER_MOVE_COST adjusted for CRIS v32.
131 (cris_normal_notice_update_cc): New function split out from...
132 (cris_notice_update_cc): Set cc_status.flags CC_REVERSED for
133 TARGET_CCINIT. Call cris_normal_notice_update_cc for CC_REV,
134 CC_NOOV32 and CC_NORMAL, but set cc_status.flags CC_NO_OVERFLOW
135 for CC_NOOV32 and TARGET_V32.
136 (cris_simple_epilogue): Always return false for TARGET_V32 if
137 cris_return_address_on_stack yields true.
138 (cris_cc0_user_requires_cmp): New function.
139 (cris_valid_pic_const): Add argument ANY_OPERAND. All callers
140 changed. Handle CRIS_UNSPEC_PLT_PCREL and CRIS_UNSPEC_PCREL.
141 (cris_asm_output_case_end): New function, guts from
142 ASM_OUTPUT_CASE_END adjusted for CRIS v32.
143 (cris_override_options): Adjust for CRIS v32. Mask out
144 TARGET_SIDE_EFFECT_PREFIXES and TARGET_MUL_BUG if v32.
145 (cris_asm_output_mi_thunk, cris_expand_epilogue)
146 (cris_gen_movem_load, cris_emit_movem_store)
147 (cris_expand_pic_call_address, cris_asm_output_symbol_ref)
148 (cris_asm_output_label_ref, cris_output_addr_const_extra): Adjust
150 (cris_split_movdx): Copy re-used MEM.
151 * config/cris/t-elfmulti: Add multilib v32 for -march=v32.
152 * config/cris/predicates.md
153 ("cris_general_operand_or_pic_source"): New predicate.
154 ("cris_general_operand_or_plt_symbol"): Replace by...
155 ("cris_nonmemory_operand_or_callable_symbol"): New predicate.
156 * config/cris/linux.h: Sanity-check TARGET_CPU_DEFAULT for
157 presence and contents.
158 (CRIS_SUBTARGET_DEFAULT_ARCH): New macro, MASK_AVOID_GOTPLT for
160 (CRIS_CPP_SUBTARGET_SPEC, CRIS_CC1_SUBTARGET_SPEC,
161 CRIS_ASM_SUBTARGET_SPEC): Adjust for different TARGET_CPU_DEFAULT.
162 (CRIS_SUBTARGET_DEFAULT): Add CRIS_SUBTARGET_DEFAULT_ARCH.
163 * config/cris/cris.h: Sanity-check TARGET_CPU_DEFAULT for contents.
164 (CRIS_DEFAULT_TUNE, CRIS_ARCH_CPP_DEFAULT)
165 (CRIS_DEFAULT_ASM_ARCH_OPTION): New macros.
166 (CRIS_CC1_SUBTARGET_SPEC): Change default tuning to use
168 (CRIS_CPP_SUBTARGET_SPEC): Ditto. Add CRIS_ARCH_CPP_DEFAULT.
169 (ASM_SPEC): Add sanity-check erroring out when both -march= and
170 -mcpu= are specified. Pass on either as --march=v32.
171 (CRIS_ASM_SUBTARGET_SPEC): When neither -march= or -mcpu= are
172 specified, pass on CRIS_DEFAULT_ASM_ARCH_OPTION.
173 (CRIS_CPU_V32): New macro.
174 [!TARGET_CPU_DEFAULT]: Default-define as CRIS_CPU_BASE.
175 [!TARGET_DEFAULT, TARGET_CPU_DEFAULT == 32]: Move default
176 TARGET_DEFAULT definition after new TARGET_CPU_DEFAULT definition.
177 Define v32-adjusted TARGET_DEFAULT.
178 (CRIS_DEFAULT_CPU_VERSION): Change to TARGET_CPU_DEFAULT from
180 (TARGET_V32): New macro.
181 (REG_ALLOC_ORDER_V32): New macro.
182 (HARD_REGNO_MODE_OK): Do not allow larger-than-register-size modes
183 into CRIS_ACR_REGNUM.
184 (enum reg_class): New classes ACR_REGS, SPEC_ACR_REGS, GENNONACR_REGS
185 and SPEC_GENNONACR_REGS.
186 (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Adjust for new classes.
187 (REGNO_REG_CLASS): Give ACR_REGS for CRIS_ACR_REGNUM.
188 (MODE_CODE_BASE_REG_CLASS): Define, give for OCODE POST_INC
189 GENNONACR_REGS, BASE_REG_CLASS otherwise.
190 (REG_CLASS_FROM_LETTER): 'a' is for ACR_REGS.
191 (REGNO_MODE_CODE_OK_FOR_BASE_P): Define, refusing OCODE POST_INC
193 (PREFERRED_RELOAD_CLASS): Keep ACR_REGS as preferred.
194 (HARD_REGNO_RENAME_OK): Refuse CRIS_ACR_REGNUM as TO.
195 (EXTRA_CONSTRAINT): New constraint 'U'.
196 (TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE)
197 (ASM_OUTPUT_ADDR_DIFF_ELT): Adjust for CRIS v32.
198 (BASE_OR_AUTOINCR_P): Refuse POST_INC for CRIS_ACR_REGNUM.
199 (SIMPLE_ADDRESS_P): Remove.
200 (GO_IF_LEGITIMATE_ADDRESS): Use BASE_OR_AUTOINCR_P, not redundant
201 SIMPLE_ADDRESS_P. Make one chained if-else, finishing as
202 non-match after BASE_OR_AUTOINCR_P for TARGET_V32.
203 (REGISTER_MOVE_COST): Just call the new function
204 cris_register_move_cost.
205 (enum cris_pic_symbol_type): Rename cris_gotrel_symbol to
206 cris_rel_symbol. All users changed.
207 (REGISTER_NAMES): Replace "pc" with "acr".
208 (ADDITIONAL_REGISTER_NAMES): Add "pc" for 15.
209 (ASM_OUTPUT_REG_PUSH): Change to v32-compatible sequence.
210 (ASM_OUTPUT_REG_POP): Change to v32-compatible syntax.
211 (ASM_OUTPUT_CASE_END): Just call the new function
212 cris_asm_output_case_end.
213 * gcc/config/cris/cris.md: Group related constants together, with
215 (CRIS_UNSPEC_PLT_GOTREL, CRIS_UNSPEC_PLT_PCREL, CRIS_UNSPEC_PCREL)
216 (CRIS_UNSPEC_CASESI): New constants.
217 (CRIS_UNSPEC_PLT): Remove constant.
218 (CRIS_ACR_REGNUM): New constant.
219 ("slottable"): New attr alternatives "has_return_slot" and
221 ("cc"): New attr alternatives "noov32" and "rev".
222 ((eq_attr "slottable" "has_call_slot"))
223 ((eq_attr "slottable" "has_return_slot")): New define_delays.
224 ("movdi", "movsi"): Adjust operands for CRIS v32.
225 ("tstdi", "cmpdi", "adddi3", "subdi3", "uminsi3")
226 ("indirect_jump"): Ditto. Make define_expand.
227 ("*tstdi_non_v32", "*tstdi_v32", "*tst<mode>_cmp")
228 ("*tst<mode>_non_cmp", "*cmpdi_non_v32", "*cmpdi_v32")
229 ("*movdi_v32", "*adddi3_non_v32", "*adddi3_v32")
230 ("*addsi3_non_v32", "*addsi3_v32", "*addhi3_non_v32")
231 ("*addhi3_v32", "*addqi3_non_v32", "*addqi3_v32")
232 ("*subdi3_non_v32", "*subdi3_v32", "*subsi3_non_v32")
233 ("*subsi3_v32", "*sub<mode>3_nonv32", "*sub<mode>3_v32")
234 ("*andqi3_non_v32", "*andqi3_v32", "*iorsi3_non_v32")
235 ("*iorsi3_v32", "*iorhi3_non_v32", "*iorhi3_v32")
236 ("*iorqi3_non_v32", "*iorqi3_v32", "*uminsi3_non_v32")
237 ("*uminsi3_v32", "*indirect_jump_non_v32", "*indirect_jump_v32")
238 ("*expanded_call_v32", "*expanded_call_value_v32"): New patterns,
239 for the corresponding standard name.
240 ("tst<mode>"): Limit to BW and make define_expand.
241 ("tstsi"): Make separate insn, adjusting for CRIS v32.
242 ("*cmp_swapext<mode>"): Adjust for v32. Specify "rev" for attr "cc".
243 ("cmpsi", "cmp<mode>"): Remove special cases for zero. Specify
245 ("*btst"): Don't match for TARGET_CCINIT. Replace test of
246 register with compatible "cmpq 0". Specify attr "cc".
247 ("*movdi_insn_non_v32"): New pattern, replacing "*movdi_insn" and
249 (define_split for DI move): Match CRIS v32 only.
250 ("*movsi_got_load", "*movsi_internal", "*addi"): Adjust for CRIS v32.
251 ("load_multiple", "store_multiple", "*addsbw_v32", "*addubw_v32")
252 ("*adds<mode>_v32", "*addu<mode>_v32", "*bound<mode>_v32")
253 ("*casesi_jump_v32", "*expanded_andsi_v32", "*expanded_andhi_v32")
254 ("*extop<mode>si_v32", "*extopqihi_v32", "*andhi_lowpart_v32")
255 ("*andqi_lowpart_v32", "cris_casesi_v32"): New patterns.
256 ("add<mode>3"): Make addsi3, addhi3 and addqi3 define_expand.
257 ("sub<mode>3"): Ditto subsi3, subhi3 and subqi3.
258 ("ior<mode>3"): Ditto iorsi3, iorhi3 and iorqi3.
259 ("*extopqihi_non_v32"): Replace "*extopqihi".
260 ("*extop<mode>si_non_v32"): Replace "*extop<mode>si".
261 ("*addxqihi_swap_non_v32"): Rename from "*extopqihi_swap", make
263 ("*extop<mode>si_swap_non_v32"): Ditto "*extop<mode>si_swap".
264 ("*expanded_andsi_non_v32"): Ditto "*expanded_andsi".
265 ("*expanded_andhi_non_v32"): Ditto "*expanded_andhi".
266 ("*andhi_lowpart_non_v32"): Ditto "*andhi_lowpart".
267 ("*andqi_lowpart_non_v32"): Ditto "*andqi_lowpart".
268 ("*expanded_call_non_v32"): Ditto "*expanded_call". Change from
269 "cris_general_operand_or_plt_symbol" to "general_operand".
270 ("*expanded_call_value_non_v32") Ditto "*expanded_call_value".
271 ("*casesi_adds_w", "mstep_shift", "mstep_mul")
272 ("*expanded_call_side", "*expanded_call_value_side")
273 (op-extend-split, op-extend-split-rx=rz, op-extend-split-swapped)
274 (op-extend-split-swapped-rx=rz, op-extend, op-split-rx=rz)
275 (op-split-swapped, op-split-swapped-rx=rz): Make non-v32 only.
276 ("dstep_mul", "xorsi3", "one_cmplsi2", "<shlr>si3")
277 ("*expanded_<shlr><mode>", "*<shlr><mode>_lowpart", "ashl<mode>3")
278 ("*ashl<mode>_lowpart", "abssi2", "clzsi2", "bswapsi2")
279 ("cris_swap_bits"): Specify "noov32" for attr "cc".
280 ("<su>mulsi3_highpart"): Ditto. Correct operand 0 to register_operand.
281 ("andqi3"): Make define_expand.
282 ("*return_expanded"): For attr "slottable", change from "has_slot"
283 to "has_return_slot".
284 ("cris_casesi_non_v32"): New pattern, old contents of "casesi".
285 ("casesi"): Divert into "cris_casesi_v32" and "cris_casesi_non_v32".
286 (moversideqi, movemsideqi, mover2side): Require
287 TARGET_SIDE_EFFECT_PREFIXES.
288 (gotplt-to-plt, gotplt-to-plt-side): Change from CRIS_UNSPEC_PLT
289 to CRIS_UNSPEC_PLT_GOTREL.
290 * config/cris/cris-protos.h (cris_register_move_cost)
291 (cris_cc0_user_requires_cmp, cris_asm_output_case_end): Declare.
293 2007-12-15 Alexandre Oliva <aoliva@redhat.com>
296 * dwarf2out.c (dwarf_tag_name): Synchronize with dwarf2.h.
297 (is_type_die): Cover interface types.
298 (class_or_namespace_scope_p): Cover interface and class types.
299 (record_type_tag): New.
300 (gen_inlined_structure_type_die): Use it.
301 (gen_struct_or_union_type_die): Likewise.
302 (prune_unused_types_walk): Cover interface types.
303 * langhooks.h (classify_record): New enum.
304 (classify_record): New member in struct langhooks_for_types.
305 * langhooks-def.h (LANG_HOOKS_CLASSIFY_RECORD): New.
306 (LANGHOOKS_FOR_TYPES_INITIALIZER): Adjust.
308 2007-12-15 Alexandre Oliva <aoliva@redhat.com>
310 * dwarf2out.c (reference_to_unused): Don't emit strings in
311 initializers just because of debug information.
312 * tree.h (TREE_ASM_WRITTEN): Document use for STRING_CSTs.
314 2007-12-15 Sebastian Pop <sebastian.pop@amd.com>
316 * tree-scalar-evolution.c (number_of_iterations_for_all_loops): Replace
317 print_loop_ir with print_loops.
318 * tree-flow.h (dot_cfg, debug_loops, debug_loop, debug_loop_num,
319 print_loops, print_loops_bb): Declare.
320 * tree-cfg.c (print_loops_bb): New.
321 (print_loop): Print header, latch, bounds, estimation of iterations.
322 (print_loop_and_siblings): New.
323 (print_loop_ir): Renamed print_loops.
324 (debug_loop_ir): Renamed debug_loops.
325 (debug_loop, debug_loop_num): New.
327 2007-12-15 Bernhard Fischer <aldot@gcc.gnu.org>
329 * tree-flow-inline.h.c (next_readonly_imm_use): Fix typo in comment.
331 2007-12-15 Bernhard Fischer <aldot@gcc.gnu.org>
333 * toplev.c (process_options): Fix typo in warning.
335 2007-12-14 Jakub Jelinek <jakub@redhat.com>
338 * config/i386/i386.c (ix86_expand_branch): Optimize LE/LEU/GT/GTU
339 DImode comparisons against constant with all 1's in the lower word.
341 2007-12-14 Uros Bizjak <ubizjak@gmail.com>
343 * config/i386/sse.md (sse4_2_pcmpestr): Use reg_not_xmm0_operand
344 constraint for operand 2. Use nonimm_not_xmm0_operand constraint
345 for operand 4. Update arguments in the call to
346 gen_sse4_2_pcmpestr_cconly.
347 (sse_4_2_pcmpestr_cconly): Renumber insn operands and update insn
348 template accordingly.
349 (sse4_2_pcmpistr): Use reg_not_xmm0_operand constraint for operand2.
350 Use nonimm_not_xmm0_operand constraint for operand 3. Update
351 arguments in the call to gen_sse4_2_pcmpistr_cconly.
352 (sse_4_2_pcmpistr_cconly): Renumber insn operands and update insn
353 template accordingly.
355 2007-12-14 Richard Guenther <rguenther@suse.de>
358 * tree-ssa-operands.h (create_ssa_artificial_load_stmt): Add
359 parameter to say whether to unlink immediate uses.
360 * tree-ssa-operands.c (create_ssa_artificial_load_stmt): Do not
361 mark the artificial stmt as modified. Unlink immediate uses
363 * tree-ssa-dom.c (record_equivalences_from_stmt): Update caller.
364 * tree-ssa-pre.c (insert_fake_stores): Likewise.
366 2007-12-13 Eric Botcazou <ebotcazou@libertysurf.fr>
369 * gimplify.c (gimplify_modify_expr_complex_part): Add note to comment.
370 * tree-complex.c (init_dont_simulate_again): Return true if there are
371 uninitialized loads generated by gimplify_modify_expr_complex_part.
372 * tree-gimple.c (is_gimple_reg_type): Return false for complex types
374 * tree-ssa.c (ssa_undefined_value_p): New predicate extracted from...
375 (warn_uninit): ...here. Use ssa_undefined_value_p.
376 * tree-ssa-pre.c (is_undefined_value): Delete.
377 (phi_translate_1): Use ssa_undefined_value_p.
378 (add_to_exp_gen): Likewise.
379 (make_values_for_stmt): Likewise.
380 * tree-flow.h (ssa_undefined_value_p): Declare.
382 2007-12-13 Andrew Pinski <pinskia@gmail.com>
383 David Daney <ddaney@avtrex.com>
386 * system.h: Make -Wuninitialized non-fatal if ASSERT_CHECKING
389 2007-12-13 Jakub Jelinek <jakub@redhat.com>
391 PR rtl-optimization/32636
392 * df-scan.c (df_get_entry_block_def_set): Set struct_value_rtx
393 regno in entry_block_defs even if HAVE_prologue && epilogue_completed.
395 2007-12-13 Uros Bizjak <ubizjak@gmail.com>
396 Richard Guenther <rguenther@suse.de>
399 * config/i386/emmintrin.h (_mm_shuffle_pd, _mm_extract_epi16,
400 _mm_insert_epi16, _mm_shufflehi_epi16, _mm_shufflelo_epi16,
401 _mm_shuffle_epi32): Cast non-constant input values to either __m64,
402 __m128, __m128i or __m128d in a macro version of the intrinsic.
403 Cast constant input values to int.
404 * config/i386/ammintrin.h (_mm_extracti_si64, _mm_inserti_si64): Ditto.
405 * config/i386/bmmintrin.h (_mm_roti_epi8, _mm_roti_epi16,
406 _mm_roti_epi32, _mm_roti_epi64): Ditto.
407 * config/i386/smmintrin.h (_mm_blend_epi16, _mm_blend_ps, _mm_blend_pd,
408 _mm_dp_ps, _mm_dp_pd, _mm_insert_ps, _mm_extract_ps, _mm_insert_epi8,
409 _mm_insert_epi32, _mm_insert_epi64, _mm_extract_epi8, mm_extract_epi32,
410 _mm_extract_epi64, _mm_mpsadbw_epu8, _mm_cmpistrm, _mm_cmpistri,
411 _mm_cmpestrm, _mm_cmpestri, _mm_cmpistra, _mm_cmpistrc, _mm_cmpistro,
412 _mm_cmpistrs, _mm_cmpistrz, _mm_cmpestra, _mm_cmpestrc, _mm_cmpestro,
413 _mm_cmpestrs, _mm_cmpestrz): Ditto.
414 * config/i386/tmmintrin.h (_mm_alignr_epi8, _mm_alignr_pi8): Ditto.
415 * config/i386/xmmintrin.h (_mm_shuffle_ps, _mm_extract_pi16, _m_pextrw,
416 _mm_insert_pi16, _m_pinsrw, _mm_shuffle_pi16, _m_pshufw): Ditto.
417 * config/i386/mmintrin-common.h (_mm_round_pd, _mm_round_sd,
418 _mm_round_ps, _mm_round_ss): Ditto.
420 2007-12-13 Richard Guenther <rguenther@suse.de>
422 PR tree-optimization/34450
423 * params.def (PARAM_SCCVN_MAX_SCC_SIZE): New param.
424 * invoke.texi (sccvn-max-scc-size): Document.
425 * Makefile.in (tree-ssa-sccvn.o): Add $(PARAMS_H) dependency.
426 * tree-ssa-sccvn.h (run_scc_vn): Return true on success, false
428 * tree-ssa-sccvn.c (params.h): Include.
429 (DFS): Return true if all went well, return false as soon as
430 a SCC exceeds the size of PARAM_SCCVN_MAX_SCC_SIZE.
431 (run_scc_vn): Return true if all went well, return false if
432 we aborted during DFS.
433 * tree-ssa-pre.c (execute_pre): Check if SCCVN finished
434 successfully, otherwise bail out.
436 2007-12-13 Olga Golovanevsky <olga@il.ibm.com>
438 * ipa-struct-reorg.c (is_candidate): Print information to dump
439 file when the type is initialized.
440 (get_stmt_accesses): Likewise when a structure has bitfields
441 or field access is too complicate.
442 (safe_cond_expr_check): Likewise for unsafe condition expressions.
443 (exclude_cold_structs): Likewise for cold structures.
444 (collect_structures): Suppress redundant print when there are
445 no structures to transform.
446 (do_reorg): Print to dump file a number of structures that
448 (dump_new_types): Print a number of new types to replace
449 an original structure type.
451 2007-12-13 Olga Golovanevsky <olga@il.ibm.com>
453 * doc/invoke.texi (Optimiza Options): Document new -fipa-struct-reorg
454 option and struct-reorg-cold-struct-ratio parameter.
456 2007-12-13 Torbjorn Granlund <tege@swox.com>
458 * config/i386/i386.c (ix86_rtx_costs) [MULT]: Check op0 for
459 ZERO_EXTEND when computing costs for widening multiplication.
461 2007-12-13 Richard Earnshaw <rearnsha@arm.com>
464 * config/arm/ieee754-df.S (floatundidf): Fix for wrong sp value on
465 exit when using hard FPA.
466 * config/arm/ieee754-df.S (floatdidf): Likewise.
468 2007-12-12 Jakub Jelinek <jakub@redhat.com>
471 * doc/install.texi: Document that for MinGW only runtime 3.12 and
474 2007-12-12 David Edelsohn <edelsohn@gnu.org>
476 * config/rs6000/rs6000.c (is_mem_ref): Ignore STACK_TIE.
478 2007-12-12 Aldy Hernandez <aldyh@redhat.com>
480 PR tree-optimization/32901
481 * gimplify.c (gimplify_modify_expr_rhs): Handle the case when we
482 are assigning from a constant constructor.
483 Fix wrapping in function comment.
485 2007-12-12 Andreas Krebbel <krebbel1@de.ibm.com>
487 * config/s390/s390.c (s390_O_constraint_str): Limit the range
488 for 'On' to -4G+1..-1.
489 * config/s390/constraints.md: Adjust comment accordingly.
491 2007-12-11 Nathan Sidwell <nathan@codesourcery.com>
493 * config/rs6000/rs6000.c (rs6000_emit_prologue): Use frame_reg_rtx
496 2007-12-11 Kai Tietz <kai.tietz@onevision.com>
498 * config/i386/cygming.h (DWARF2_UNWIND_INFO): Handle 64-bit
499 target same as 32-bit.
501 2007-12-10 Jakub Jelinek <jakub@redhat.com>
503 PR tree-optimization/34371
504 * tree-vectorizer.h (struct _loop_vec_info): Add num_iters_unchanged
506 (LOOP_VINFO_NITERS_UNCHANGED): Define to num_iters_unchanged field.
507 * tree-vectorizer.c (set_prologue_iterations,
508 slpeel_tree_peel_loop_to_edge): Call unshare_expr on
509 LOOP_VINFO_NITERS_UNCHANGED before using it.
511 2007-12-10 Eric Botcazou <ebotcazou@libertysurf.fr>
514 * config/i386/i386.c (ix86_expand_movmem): Punt if the count is large.
515 (ix86_expand_setmem): Likewise.
517 2007-12-10 Kenneth Zadeck <zadeck@naturalbridge.com>
519 PR rtl-optimization/34302
520 * auto-inc-dec.c (attempt_change): Change place where move is
523 2007-12-10 Jakub Jelinek <jakub@redhat.com>
525 * dwarf2out.c (gen_array_type_die, gen_descr_array_type_die): For
526 Fortran multi-dimensional arrays use DW_AT_ordering
529 2007-12-10 Paolo Bonzini <bonzini@gnu.org>
532 * config/i386/i386.c (override_options): Enable -fvect-cost-model.
534 2007-12-10 Uros Bizjak <ubizjak@gmail.com>
536 * config/i386/i386.c (ix86_function_regparm): Do not check global_regs
537 array, registers that are members of global_regs are also members of
538 fixed_regs array. Use REGPARM_MAX to check that no regparm hard
539 register is taken by a fixed register variable. Check up to and
540 including DI_REG when adjusting regparm value due to fixed regs usage.
541 (rep_prefix_usable): Check fixed_regs array, not global_regs array for
542 available hard registers.
543 (ix86_expand_strlen): Ditto.
544 * config/i386/i386.md (strmov): Ditto.
547 2007-12-10 Kaz Kojima <kkojima@gcc.gnu.org>
549 * genopinit.c: Include tm_p.h in generated file.
551 * config/arm/neon.md (vec_set<mode>_internal): Use INTVAL
552 to extract the integer from operands[2].
553 (vec_setv2di_internal): Likewise.
555 * config/arm/arm.c (arm_size_return_regs): Make return type unsigned.
556 (arm_init_neon_builtins): Move code after declarations.
558 2007-12-10 Hans-Peter Nilsson <hp@axis.com>
560 * reload.c (find_reloads_address_1): To properly mark as an
561 autoincdec, pass X for non-NULL OUT in call to push_reload for
562 autoincdec which can't be trivially used as an address.
564 2007-12-10 Pranav Bhandarkar <pranav.bhandarkar@celunite.com>
565 Hans-Peter Nilsson <hp@axis.com>
567 * caller-save.c (insert_one_insn): If inserting before a call_insn
568 then the registers containing the arguments of the call are
569 live_throughout in the new insn.
571 2007-12-09 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
575 * pa.md: Consolidate HImode and QImode move patterns into one pattern
576 each, eliminating floating-point alternatives.
577 * pa-protos.h (pa_cannot_change_mode_class, pa_modes_tieable_p):
579 * pa-64.h (SECONDARY_MEMORY_NEEDED): Define here.
580 * pa.c (pa_secondary_reload): Use an intermediate general register
581 for copies to/from floating-point register classes. Simplify code
582 SHIFT_REGS class. Provide additional comments.
583 (pa_cannot_change_mode_class, pa_modes_tieable_p): New functions.
584 * pa.h (MODES_TIEABLE_P): Use pa_modes_tieable_p.
585 (SECONDARY_MEMORY_NEEDED): Delete define.
586 (INT14_OK_STRICT): Define.
587 (MODE_OK_FOR_SCALED_INDEXING_P): Allow SFmode and DFmode when using
589 (MODE_OK_FOR_UNSCALED_INDEXING_P): Likewise.
590 (GO_IF_LEGITIMATE_ADDRESS): Use INT14_OK_STRICT in REG+D case for
592 (LEGITIMIZE_RELOAD_ADDRESS): Use INT14_OK_STRICT in mask selection.
593 Align DImode offsets when generating 64-bit code.
594 * pa32-regs.h (VALID_FP_MODE_P): Remove QImode and HImode.
595 (CANNOT_CHANGE_MODE_CLASS): Define.
596 * pa64-regs.h (VALID_FP_MODE_P): Remove QImode and HImode.
597 (CANNOT_CHANGE_MODE_CLASS): Define using pa_cannot_change_mode_class.
599 2007-12-09 Jakub Jelinek <jakub@redhat.com>
602 * langhooks-def.h (LANG_HOOKS_GET_ARRAY_DESCR_INFO): Define.
603 (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
604 * langhooks.h (struct array_descr_info): Forward declaration.
605 (struct lang_hooks_for_types): Add get_array_descr_info field.
606 * dwarf2.h (DW_AT_bit_stride, DW_AT_byte_stride): New.
607 (DW_AT_stride_size, DW_AT_stride): Keep around for Dwarf2
609 * dwarf2out.h (struct array_descr_info): New type.
610 * dwarf2out.c (dwarf_attr_name): Rename DW_AT_stride to
611 DW_AT_byte_stride and DW_AT_stride_size to DW_AT_bit_size.
612 (descr_info_loc, add_descr_info_field, gen_descr_array_type_die):
614 (gen_type_die_with_usage): Call lang_hooks.types.get_array_descr_info
615 and gen_descr_array_type_die.
617 2007-12-08 Richard Guenther <rguenther@suse.de>
619 PR tree-optimization/34391
620 * tree-vect-transform.c (vect_setup_realignment): Mark new
621 symbols for renaming.
623 2007-12-07 Bob Wilson <bob.wilson@acm.org>
625 * config/xtensa/xtensa.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
626 (ASM_OUTPUT_DWARF_PCREL): Define.
628 2007-12-07 Richard Guenther <rguenther@suse.de>
631 * opts.c (common_handle_option): Handle OPT_fforce_addr.
633 2007-12-07 Aldy Hernandez <aldyh@redhat.com>
635 * m32c.h (LEGITIMIZE_ADDRESS): Use WIN instead of win.
636 (LEGITIMIZE_RELOAD_ADDRESS): Same.
638 2007-12-07 Samuel Tardieu <sam@rfc1149.net>
641 * doc/install.texi: Explain how to check for a clean environment when
644 2007-12-07 Richard Guenther <rguenther@suse.de>
646 * tree-profile.c (gcov_type_tmp_var): New global variable.
647 (tree_gen_edge_profiler): Use a single shared variable decl per
648 function for edge counter incrementing.
649 (tree_profiling): Re-set the shared variable.
651 2007-12-06 Bob Wilson <bob.wilson@acm.org>
653 * config/xtensa/xtensa.c (xtensa_va_start): Add prototype.
655 2007-12-06 Tom Tromey <tromey@redhat.com>
658 * c-opts.c (c_common_parse_file): Call cpp_clear_file_cache.
660 2007-12-06 Richard Sandiford <rsandifo@nildram.co.uk>
662 * config/mips/mips.c (mips_function_ok_for_sibcall): Check
663 targetm.binds_local_p as well as DECL_EXTERNAL.
665 2007-12-06 Harsha Jagasia <harsha.jagasia@amd.com>
667 * tree-vectorizer.c (slpeel_add_loop_guard): Gimplify the condition.
668 (set_prologue_iterations): New. Set the prologue iterations to total
669 number of scalar iterations if the cost model check indicates that
670 scalar code should be generated.
671 (slpeel_tree_peel_loop_to_edge): Add a new parameter and code for
672 generating the cost condition for epilog. Call
673 set_prologue_iterations to generate cost condition for prolog.
674 (new_loop_vec_info): Initialize LOOP_VINFO_NITERS_UNCHANGED.
675 * tree-vectorizer.h (LOOP_VINFO_NITERS_UNCHANGED): New.
676 (slpeel_tree_peel_loop_to_edge): Update declaration.
677 (set_prologue_iterations): New declaration.
678 * tree-vect-analyze.c (vect_analyze_loop_form): Update
679 LOOP_VINFO_NITERS_UNCHANGED.
680 * tree-vect-transform.c
681 (vect_estimate_min_profitable_iters): Add new parameter and
682 code to check if run time cost model test is needed.
683 Remove code that adds builtin vectorization cost to scalar
684 outside cost for the run time cost model test. If run time
685 cost model test is needed add the appropriate guard cost to
686 the scalar outside cost. The guard cost depends on whether
687 the guard is generated at versioning or at prolog generation
688 or at epilog generation. Change cost model equation to include
690 (conservative_cost_threshold): New. Return the less conservative
691 profitability threshold between the cost model threshold and the
692 user defined vectorization threshold.
693 (vect_do_peeling_for_loop_bound): Call conservative_cost_threshold.
694 (vect_do_peeling_for_alignment): Same.
695 (vect_loop_versioning): Same.
696 (vect_create_cond_for_align_checks): ANDs the cost model condition
697 with the alignment condition.
698 (vect_transform_loop): Call loop versioning only when there is a
699 misalignment or an aliasing problem.
701 2007-12-06 Jakub Jelinek <jakub@redhat.com>
704 * tree-ssa-ccp.c (optimize_stdarg_builtin): New function.
705 (execute_fold_all_builtins): Call it for BUILT_IN_VA_START,
706 BUILT_IN_VA_COPY and BUILT_IN_VA_END.
708 * target.h (struct ggc_target): Add expand_builtin_va_start hook.
709 * target-def.h (TARGET_EXPAND_BUILTIN_VA_START): Define.
710 (TARGET_INITIALIZER): Add it.
711 * builtins.c (expand_builtin_va_start): Use
712 targetm.expand_builtin_va_start hook instead of
713 EXPAND_BUILTIN_VA_START macro.
714 * alpha/alpha.c (alpha_va_start): Made static.
715 (override_options): Clear targetm.expand_builtin_va_start if
717 (TARGET_EXPAND_BUILTIN_VA_START): Define.
718 * alpha/unicosmk.h (EXPAND_BUILTIN_VA_START): Remove.
719 * alpha/alpha.h (EXPAND_BUILTIN_VA_START): Remove.
720 * alpha/alpha-protos.h (alpha_va_start): Remove prototype.
721 * xtensa/xtensa.h (EXPAND_BUILTIN_VA_START): Remove.
722 * xtensa/xtensa.c (TARGET_EXPAND_BUILTIN_VA_START): Define.
723 (xtensa_va_start): Made static.
724 * xtensa/xtensa-protos.h (xtensa_va_start): Remove prototype.
725 * pa/pa-protos.h (hppa_va_start): Remove prototype.
726 * pa/pa.h (EXPAND_BUILTIN_VA_START): Remove.
727 * pa/pa.c (hppa_va_start): Made static, add prototype.
728 (TARGET_EXPAND_BUILTIN_VA_START): Define.
729 * frv/frv.c (frv_expand_builtin_va_start): Made static, add prototype.
730 (TARGET_EXPAND_BUILTIN_VA_START): Define.
731 * frv/frv-protos.h (frv_expand_builtin_va_start): Remove prototype.
732 * frv/frv.h (EXPAND_BUILTIN_VA_START): Remove.
733 * i386/i386.c (override_options): Clear
734 targetm.expand_builtin_va_start if -m32 or 64-bit MS ABI.
735 (ix86_va_start): Made static.
736 (TARGET_EXPAND_BUILTIN_VA_START): Define.
737 * i386/i386.h (EXPAND_BUILTIN_VA_START): Remove.
738 * i386/i386-protos.h (ix86_va_start, ix86_va_arg): Remove prototypes.
739 * iq2000/iq2000-protos.h (iq2000_va_start): Remove prototype.
740 * iq2000/iq2000.h (EXPAND_BUILTIN_VA_START): Remove.
741 * iq2000/iq2000.c (iq2000_va_start): Made static, add prototype.
742 (TARGET_EXPAND_BUILTIN_VA_START): Define.
743 * rs6000/rs6000-protos.h (rs6000_va_start): Remove prototype.
744 * rs6000/rs6000.c (rs6000_va_start): Made static, add prototype.
745 (TARGET_EXPAND_BUILTIN_VA_START): Define.
746 (rs6000_override_options): Clear targetm.expand_builtin_va_start if
747 DEFAULT_ABI != ABI_V4.
748 * rs6000/rs6000.h (EXPAND_BUILTIN_VA_START): Remove.
749 * spu/spu.c (spu_va_start): Made static, add prototype.
750 (TARGET_EXPAND_BUILTIN_VA_START): Define.
751 * spu/spu.h (EXPAND_BUILTIN_VA_START): Remove.
752 * spu/spu-protos.h spu_va_start): Remove prototype.
753 * stormy16/stormy16.h (EXPAND_BUILTIN_VA_START): Remove.
754 * stormy16/stormy16-protos.h (xstormy16_expand_builtin_va_start):
756 * stormy16/stormy16.c (xstormy16_expand_builtin_va_start): Made static.
757 (TARGET_EXPAND_BUILTIN_VA_START): Define.
758 * s390/s390-protos.h (s390_va_start): Remove prototype.
759 * s390/s390.c (s390_va_start): Made static.
760 (TARGET_EXPAND_BUILTIN_VA_START): Define.
761 * s390/s390.h (EXPAND_BUILTIN_VA_START): Remove.
762 * mn10300/mn10300.h (EXPAND_BUILTIN_VA_START): Remove.
763 * mn10300/mn10300-protos.h (mn10300_va_start): Remove prototype.
764 * mn10300/mn10300.c (mn10300_va_start): Made static, add prototype.
765 (TARGET_EXPAND_BUILTIN_VA_START): Define.
766 * arc/arc.c (arc_va_start): Made static, add prototype.
767 (TARGET_EXPAND_BUILTIN_VA_START): Define.
768 * arc/arc.h (EXPAND_BUILTIN_VA_START): Remove.
769 * arc/arc-protos.h (arc_va_start): Remove prototype.
770 * mt/mt-protos.h (mt_va_start): Remove prototype.
771 * sparc/sparc.c (sparc_va_start): Made static, add prototype.
772 (TARGET_EXPAND_BUILTIN_VA_START): Define.
773 * sparc/sparc-protos.h (sparc_va_start): Remove prototype.
774 * sparc/sparc.h (EXPAND_BUILTIN_VA_START): Remove.
775 * sh/sh.c (sh_va_start): Made static, add prototype.
776 (TARGET_EXPAND_BUILTIN_VA_START): Define.
777 * sh/sh-protos.h (sh_va_start): Remove prototype.
778 * sh/sh.h (EXPAND_BUILTIN_VA_START): Remove.
779 * mips/mips-protos.h (mips_va_start): Remove prototype.
780 * mips/mips.h (EXPAND_BUILTIN_VA_START): Remove.
781 * mips/mips.c (mips_va_start): Made static.
782 (TARGET_EXPAND_BUILTIN_VA_START): Define.
784 2007-12-06 Uros Bizjak <ubizjak@gmail.com>
786 * tree-ssa-loop.c (gate_tree_parallelize_loops): Return true when
787 "flag_tree_parallelize_loops > 1".
789 2007-12-06 Zdenek Dvorak <ook@ucw.cz>
790 Dorit Nuzman <dorit@il.ibm.com>
791 Jakub Jelinek <jakub@redhat.com>
793 PR tree-optimization/34005
794 * tree-gimple.c (is_gimple_formal_tmp_rhs): Add a case for COND_EXPR.
795 * gimplify.c (gimplify_ctx): Add a new member allow_rhs_cond_expr.
796 (gimplify_pure_cond_expr): New function.
797 (generic_expr_could_trap_p): New function.
798 (gimplify_cond_expr): Call gimplify_pure_cond_expr.
799 (force_gimple_operand): Initialize new field allow_rhs_cond_expr.
801 2007-12-06 Andreas Krebbel <krebbel1@de.ibm.com>
803 * config/s390/s390.c (s390_emit_stack_tie): New function.
804 (s390_emit_prologue): Emit a stack tie when writing to the
806 * config/s390/s390.md ("stack_tie"): New insn definition.
808 2007-12-06 Ben Elliston <bje@au.ibm.com>
811 * doc/sourcebuild.texi (Miscellaneous Docs): Remove SERVICE item.
813 2007-12-05 Jakub Jelinek <jakub@redhat.com>
816 * fold-const.c (fold_binary) <case BIT_IOR_EXPR>: Don't minimize
817 number of bits set in C1 if a mode mask for some mode can be used
820 2007-12-05 Bernhard Fischer <aldot@gcc.gnu.org>
822 * varasm.c (merge_weak, weak_finish, assemble_alias): Commentary typo
825 2007-12-05 Richard Guenther <rguenther@suse.de>
827 PR tree-optimization/34138
828 * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
829 Do not forward propagate addresses if that changes volatileness of
832 2007-12-05 Uros Bizjak <ubizjak@gmail.com>
835 * config/i386/i386.c (ix86_function_regparm): Also check for fixed
836 registers when checking that regparm registers are available.
837 Lower regparm value due to fixed registers usage in addition to
840 2007-12-05 Bernhard Fischer <aldot@gcc.gnu.org>
842 * sparseset.c: Include config.h and system.h before sparseset.h.
843 * sparseset.h: Remove inclusion of system.h.
845 2007-12-05 Jakub Jelinek <jakub@redhat.com>
846 Richard Sandiford <rsandifo@nildram.co.uk>
848 * optabs.c (init_insn_codes): New function.
850 (init_optab, init_optabv): Don't call new_optab.
851 (init_convert_optab): Don't clear the insn codes.
852 (init_optabs): Call init_insn_codes.
854 2007-12-04 Jakub Jelinek <jakub@redhat.com>
856 * omp-low.c (optimize_omp_library_calls): New function.
857 (expand_omp_parallel): Call it if optimizing.
860 * stmt.c (expand_stack_restore): Call expand_normal on var to get
861 rtx for it instead of assuming it will be a VAR_DECL.
863 2007-12-04 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
865 * c-parser (c_parser_statement_after_labels): Move error from here...
866 (c_parser_label): ... to here. Check that the declaration is not
867 actually just another label.
869 2007-12-04 Richard Guenther <rguenther@suse.de>
873 * tree-ssa-operands.c (get_addr_dereference_operands): If we
874 fall back to using the SMTs aliases, make sure to add virtual
875 operands for the SMT itself.
876 (create_ssa_artificial_load_stmt): Fix typo. Make sure to also
877 clear the loaded and stored symbols bitmaps.
879 2007-12-04 Ben Elliston <bje@au.ibm.com>
881 * config/spu/spu.h (ASM_FORMAT_PRIVATE_NAME): Remove; use default.
883 2007-12-04 Ben Elliston <bje@au.ibm.com>
885 * doc/tm.texi (Exception Handling): Mention unwind-dw2-xtensa.c.
887 2007-12-03 Steven Bosscher <stevenb.gcc@gmail.com>
890 * doc/invoke.texi: Remove -fforce-addr documentation.
891 * expr.c (emit_move_insn): Remove use of flag_force_addr.
892 (expand_expr_real_1): Same.
893 (do_tablejump): Same.
894 Call memory_address instead of memory_address_noforce.
895 * expr.h (memory_address_noforce): Remove prototype.
896 * explow.c (memory_address): Remove support for flag_force_addr.
897 (validize_mem): Same.
898 (memory_address_noforce): Remove.
899 * common.opt: Add dummy documentation for -fforce-addr.
900 * combine.c (can_combine_p): Remove -fforce-addr comment.
901 * config/cris/cris.h (OPTIMIZATION_OPTIONS): Remove set of
903 * config/m68k/m68k.h (PIC_CASE_VECTOR_ADDRESS): Remove comment
904 relating to memory_address_noforce.
905 * testsuite/gcc.c-torture/compile/20050802-1.c: Remove.
906 * testsuite/gcc.c-torture/compile/20011113-1.c: Remove.
908 2007-12-03 Jakub Jelinek <jakub@redhat.com>
910 * omp-low.c (lookup_decl_in_outer_ctx): Allow calling this
911 with !ctx->is_nested.
912 (maybe_lookup_decl_in_outer_ctx): Look up in outer contexts
913 even if !ctx->is_nested.
914 (lower_copyprivate_clauses, lower_send_clauses,
915 lower_send_shared_vars): Call lookup_decl_in_outer_ctx
919 * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Optimize
920 (X << C1) & C2 into (X << C1) & (C2 | ((1 << C1) - 1))
921 and (X >> C1) & C2 into (X >> C1) & (C2 | ~((type) -1 >> C1)).
922 (fold_binary) <case LSHIFT_EXPR, case RSHIFT_EXPR>: Optimize
923 (X & C2) << C1 into (X << C1) & (C2 << C1) and
924 (X & C2) >> C1 into (X >> C1) & (C2 >> C1) if that allows further
927 PR tree-optimization/33453
928 * tree-data-ref.c (split_constant_offset): Use POINTER_PLUS_EXPR
929 for pointer addition.
930 * tree-parloops.c (canonicalize_loop_ivs): Likewise.
931 (separate_decls_in_loop_name): Copy DECL_GIMPLE_REG_P from var to
934 2007-12-03 Bernd Schmidt <bernd.schmidt@analog.com>
936 * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __FDPIC__ as
939 2007-12-03 Razya Ladelsky <razya@il.ibm.com>
941 * doc/invoke.texi (fipa-cp, fipa-matrix-reorg): Add documentation.
943 2007-12-03 Jakub Jelinek <jakub@redhat.com>
946 * opts.c (common_handle_option): Handle OPT_ftree_store_copy_prop.
947 * common.opt (ftree-store-copy-prop): Use the same help text as for
950 2007-12-02 Ayal Zaks <zaks@il.ibm.com>
951 Revital Eres <eres@il.ibm.com>
953 * modulo-sched.c (calculate_must_precede_follow,
954 try_scheduling_node_in_cycle): New functions.
955 (sms_schedule_by_order): Call the new functions.
956 (ps_insn_find_column): Use must_follow and must_precede only if
958 (ps_insn_advance_column): Likewise.
960 2007-12-02 Ayal Zaks <zaks@il.ibm.com>
961 Revital Eres <eres@il.ibm.com>
963 * modulo-sched.c (get_sched_window): Fix the direction of the
964 scheduling window and add dump info.
966 2007-12-02 Samuel Tardieu <sam@rfc1149.net>
968 * config/sh/sh.md (cmpgeusi_t): Fix condition.
970 2007-11-30 Jan Hubicka <jh@suse.cz>
972 * ggc-common.c (dump_ggc_loc_statistics): Reset ggc_force_collect flag.
974 2007-11-30 Seongbae Park <seongbae.park@gmail.com>
976 PR rtl-optimization/34171
977 * cfgrtl.c (update_bb_for_insn_chain): New function,
978 refactored from update_bb_for_insn.
979 (update_bb_for_insn): Call update_bb_for_insn.
980 (rtl_merge_blocks, try_redirect_by_replacing_jump):
981 Replace a loop with update_bb_for_insn_chain call.
982 (cfg_layout_merge_blocks): Add a call to
983 update_bb_for_insn_chain. Replace the for loop
984 with a call to update_bb_for_insn_chain.
986 2007-11-30 Ben Elliston <bje@au.ibm.com>
988 * config/vax/vax.h (ASM_FORMAT_PRIVATE_NAME): Remove. Use default.
990 2007-11-29 Zdenek Dvorak <ook@ucw.cz>
992 PR tree-optimization/34244
993 * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
994 (record_numbers_of_iterations): New function.
995 (execute_vrp): Cache the numbers of iterations of loops.
996 * tree-scalar-evolution.c (scev_reset_except_niters): New function.
997 (scev_reset): Use scev_reset_except_niters.
998 * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
1000 2007-11-29 Jan Hubicka <jh@suse.cz>
1001 Jakub Jelinek <jakub@redhat.com>
1003 PR tree-optimization/33434
1004 * tree-inline.c (setup_one_parameter): If the value passed to
1005 a parameter is never used, don't set it up.
1007 2007-11-29 Jakub Jelinek <jakub@redhat.com>
1010 * config/rs6000/eabi-cn.asm (__DTOR_END__): Make it weak.
1011 * config/rs6000/sol-cn.asm (__DTOR_END__): Likewise.
1013 2007-11-29 Andris Pavenis <andris.pavenis@iki.fi>
1015 * Makefile.in: Use separate vpath lines for each path.
1017 2007-11-29 Ben Elliston <bje@au.ibm.com>
1019 * SERVICE: Update URL.
1021 2007-11-28 Jakub Jelinek <jakub@redhat.com>
1023 PR tree-optimization/34140
1024 * tree-if-conv.c (if_convertible_phi_p): Fail if BB other than
1025 loop->header has virtual phi nodes.
1027 2007-11-28 Richard Sandiford <rsandifo@nildram.co.uk>
1030 * builtins.c (expand_builtin_nonlocal_goto): Also emit a use
1031 of GP register, if valid and fixed.
1034 2007-06-21 David Daney <ddaney@avtrex.com>
1037 * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
1038 to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
1039 (exception_receiver): Renamed to ...
1040 (nonlocal_goto_receiver): ... this.
1042 2007-11-27 H.J. Lu <hongjiu.lu@intel.com>
1043 Joey Ye <joey.ye@intel.com>
1046 * config/i386/i386.c (function_arg_32): Don't pass aggregate
1047 arguments in ECX/EDX for fastcall.
1049 2007-11-28 Rask Ingemann Lambertsen <rask@sygehus.dk>
1051 * config/i386/linux.h (CRT_GET_RFIB_DATA): Add Intel syntax inline
1053 * config/i386/sco5.h (CRT_GET_RFIB_DATA): Likewise.
1054 * config/i386/sysv4.h (CRT_GET_RFIB_DATA): Likewise.
1056 2007-11-28 Ben Elliston <bje@au.ibm.com>
1058 * config/rs6000/aix64.opt (maix64): Add Negative(maix32).
1059 (maix32): Add Negative(maix64).
1061 2007-11-27 Jakub Jelinek <jakub@redhat.com>
1063 PR tree-optimization/34016
1064 * tree-ssa-loop.c (pass_linear_transform): Add
1065 TODO_update_ssa_only_virtuals to todo_flags_finish.
1067 2007-11-27 Eric B. Weddington <eric.weddington@atmel.com>
1069 * config/avr/avr.c (avr_mcu_types): Add atmega32hvb.
1070 * config/avr/avr.h (LINK_SPEC): Likewise.
1071 (CRT_BINUTILS_SPECS): Likewsie.
1072 * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
1074 2007-11-27 Jakub Jelinek <jakub@redhat.com>
1077 * config/rs6000/rs6000.c (adjacent_mem_locations): Don't assume
1078 MEM_SIZE is set on all MEMs.
1080 2007-11-27 Andreas Krebbel <krebbel1@de.ibm.com>
1082 * config/s390/s390.opt (mhard-float): Add the option to be
1083 overridden. That was missing in my last patch.
1085 2007-11-27 Richard Guenther <rguenther@suse.de>
1087 PR tree-optimization/34241
1088 * tree-ssa-forwprop.c (forward_propagate_addr_expr): Make sure
1089 to only delete real conversion chains.
1091 2007-11-27 Andreas Krebbel <krebbel1@de.ibm.com>
1093 * config/s390/s390.opt (m31, m64, mesa, mzarch, msoft-float,
1094 mhard-float, mlong-double-64, mlong-double-128): Add the
1095 option to be overridden.
1097 2007-11-27 Richard Guenther <rguenther@suse.de>
1099 * builtins.c (fold_builtin_1): Verify the argument types
1100 of BUILT_IN_ISNORMAL.
1101 (fold_builtin_n): Verify the number of arguments to variadic
1104 2007-11-27 Bernd Schmidt <bernd.schmidt@analog.com>
1106 * config/bfin/elf.h (SUBTARGET_DRIVER_SELF_SPECS): New macro.
1107 * doc/invoke.texi (Blackfin Options): Document the effects.
1109 2007-11-27 Ben Elliston <bje@au.ibm.com>
1111 * config/rs6000/sysv4.opt (m32): Add Negative(m64).
1112 (m64): Add Negative(m32).
1113 * config/rs6000/darwin.opt (m32): Add Negative(m64).
1114 (m64): Add Negative(m32).
1116 2007-11-26 Eric Botcazou <ebotcazou@adacore.com>
1118 * tree-ssa-propagate.c (set_rhs) <GIMPLE_MODIFY_STMT>: Fix typo.
1120 2007-11-26 Michael Meissner <michael.meissner@amd.com>
1123 * config/i386/i386.c (ix86_expand_movmem): If the copy size is a
1124 constant, avoid calling emit_cmp_and_jump_insns. Use counter_mode
1125 to get the mode for loading a pseudo register with a count rather
1126 than duplicating code.
1128 2007-11-25 Eric B. Weddington <eric.weddington@atmel.com>
1130 * config/avr/avr.c (avr_mcu_types): Add atmega1284p.
1131 * config/avr/avr.h (LINK_SPEC): Likewise.
1132 (CRT_BINUTILS_SPECS): Likewsie.
1133 * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
1135 2007-11-26 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1137 * c-common.c (conversion_warning): Use get_unwidened instead of
1140 2007-11-26 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1143 * c-parser.c (struct c_parser): New bit in_if_block.
1144 (c_parser_compound_statement_nostart): Handle unexpected 'else'
1146 (c_parser_statement_after_labels): Set in_if_block to false while
1148 (c_parser_if_body): Don't call c_parser_statement_after_labels if
1149 a semicolon is found, just consume it. Don't call
1150 c_parser_statement_after_labels if an open brace is found, call
1151 c_parser_compound_statement instead.
1152 (c_parser_else_body): New.
1153 (c_parser_if_statement): Set in_if_block to true when parsing the
1154 body of the 'if' statement. Use c_parser_else_body.
1156 2007-11-26 Andreas Krebbel <krebbel1@de.ibm.com>
1159 * c-decl.c (store_parm_decls): Pass 'false' for the new
1160 allocate_struct_function parameter.
1161 * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
1162 * tree-parloops.c (create_loop_fn): Likewise.
1163 * function.c (push_function_context_to, push_struct_function,
1164 init_function_start): Likewise.
1165 (allocate_struct_function): Add boolean parameter.
1166 * tree.h (allocate_struct_function): Add boolean parameter.
1167 * function.h (struct function): Move returns_struct and
1168 returns_pcc_struct to the end of the structure definiton.
1170 2007-11-26 Uros Bizjak <ubizjak@gmail.com>
1173 * config/i386/i386.md (truncdfsf2): Select SLOT_TEMP stack slot if
1174 virtual registers are already instantiated.
1175 (truncxf<mode>2): Ditto.
1176 (floatsi<mode>2): Ditto.
1177 (floatdisf2): Ditto.
1178 (floatdidf2): Ditto.
1180 2007-11-26 Rask Ingemann Lambertsen <rask@sygehus.dk>
1183 * config/fr30/fr30.c (fr30_move_double): Sanitize mem->reg case. Copy
1184 the address before it is clobbered.
1186 2007-11-26 Nick Clifton <nickc@redhat.com>
1188 * config/mn10300/mn10300.md: (call_internal): Remove mode on
1189 operand 0 in order to match UNPSEC'ed calls generated in PIC mode.
1190 (call_value_internal): Remove mode on operands 0 and 1 in order to
1191 match UNPSEC'ed calls generated in PIC mode.
1192 (GOTaddr2picreg): Use copy_rtx to prevent sharing an rtx between
1195 2007-11-26 Richard Guenther <rguenther@suse.de>
1198 * builtins.c (expand_builtin_pow): Use expand_expr to expand
1199 the result of build_call_expr.
1201 2007-11-26 Steven Bosscher <stevenb.gcc@gmail.com>
1202 Revital Eres <eres@il.ibm.com>
1205 * bb-reorder.c (insert_section_boundary_note): Clear
1206 BLOCK_FOR_INSN in NOTE_INSN_SWITCH_TEXT_SECTIONS.
1208 2007-11-26 Richard Sandiford <rsandifo@nildram.co.uk>
1210 * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Add missing comma.
1212 2007-11-26 Alexandre Oliva <aoliva@redhat.com>
1214 * dwarf2asm.c (splay_tree_compare_strings): New function.
1215 (dw2_force_const_mem): Use it.
1217 2007-11-26 Alexandre Oliva <aoliva@redhat.com>
1219 * tree.c (type_hash_add): Don't violate strict aliasing rules.
1221 2007-11-26 Alexandre Oliva <aoliva@redhat.com>
1224 * c-typeck.c (tagged_types_tu_compatible_p): Enable exact
1225 matches between anonymous union fields.
1227 2007-11-26 Alexandre Oliva <aoliva@redhat.com>, Jan Hubicka <jh@suse.cz>
1229 * tree-ssa-live.c (remove_unused_scope_block_p): Drop
1230 declarations and blocks only after inlining. Check that
1231 non-empty blocks are not dropped.
1232 * tree-inline.c (expand_call_inline): Check that functions are
1233 not inlined too late.
1235 2007-11-26 Ben Elliston <bje@au.ibm.com>
1237 * unwind-dw2-fde.c: Fix comment typo.
1238 * unwind-generic.h: Likewise, fix comment typos.
1240 2007-11-25 Richard Sandiford <rsandifo@nildram.co.uk>
1242 * tree-sra.c (scalarize_use): Adjust the vpos argument to
1243 sra_explode_bitfield_assignment in cases where the type is
1244 wider than the bitfield.
1246 2007-11-25 Richard Guenther <rguenther@suse.de>
1248 * tree.h (struct tree_block): Move locus member next to flags.
1249 * c-decl.c (SCOPE_LIST_APPEND): Use BLOCK_CHAIN.
1250 (SCOPE_LIST_CONCAT): Likewise.
1251 (pop_scope): Likewise.
1252 * function.c (instantiate_decls_1): Likewise.
1253 (setjmp_vars_warning): Likewise.
1254 * emit-rtl.c (set_used_decls): Likewise.
1255 * tree-inline.c (add_lexical_block): Likewise.
1257 2007-11-24 Hans-Peter Nilsson <hp@axis.com>
1259 * rtlanal.c (label_is_jump_target_p): Return true for a matching
1261 * reorg.c (fill_slots_from_thread): Correct last change to use
1262 NULL_RTX, not NULL. Outside of REG_NOTES loop, increase and
1263 decrease LABEL_NUSES for JUMP_LABEL (trial), not XEXP (note, 0).
1264 * jump.c (mark_jump_label_1): Add comment for last change
1265 regarding JUMP_LABEL setting.
1266 * gcse.c (add_label_notes): Remove conditional that the label is
1267 mentioned in insn before adding regnote.
1268 * sched-rgn.c (is_cfg_nonregular): Don't return 1 for a
1269 single_set insn only feeding a label to a jump through a
1270 register that dies there.
1272 2007-11-23 Dirk Mueller <dmueller@suse.de>
1273 Richard Guenther <rguenther@suse.de>
1276 * tree-vrp.c (check_array_ref): Move check for valid location..
1277 (check_array_bounds) here. Use EXPR_HAS_LOCATION().
1279 2007-11-23 Hans-Peter Nilsson <hp@axis.com>
1281 * reload.c (find_reloads_address_1) <autoincdec cases>:
1282 Call REG_OK_FOR_CONTEXT with the autoincdec code, not outer_code.
1284 2007-11-23 Richard Guenther <rguenther@suse.de>
1285 Michael Matz <matz@suse.de>
1287 PR tree-optimization/34176
1288 * alloc-pool.h (empty_alloc_pool): Declare.
1289 * alloc-pool.c (empty_alloc_pool): New function.
1290 * tree-ssa-sccvn.c (vn_reference_lookup): Also lookup from the
1291 valid table if a lookup from the optimistic table failed.
1292 (vn_unary_op_lookup): Likewise.
1293 (vn_binary_op_lookup): Likewise.
1294 (vn_phi_lookup): Likewise.
1295 (process_scc): Clear optimistic tables before every iteration.
1297 2007-11-23 Richard Guenther <rguenther@suse.de>
1299 * tree-ssa-copy.c (may_propagate_copy): Remove redundant checks.
1300 (merge_alias_info): Do verification only if checking is
1301 enabled. Merge flow-sensitive alias information in simple cases.
1302 * tree-ssa-operands.c (get_addr_dereference_operands): Also
1303 complain about missing NMTs.
1305 2007-11-23 Jakub Jelinek <jakub@redhat.com>
1308 * c-common.c (conversion_warning): For INTEGER_TYPE to
1309 INTEGER_TYPE conversions call get_narrower on expr to avoid
1310 spurious warnings from binop shortening or when the implicit
1311 conversion can't change the value.
1313 2007-11-22 Joseph Myers <joseph@codesourcery.com>
1316 * c-decl.c (set_array_declarator_inner): Don't give error for
1317 static or type qualifiers in abstract declarator. Remove
1318 abstract_p parameter.
1319 * c-tree.h (set_array_declarator_inner): Update prototype.
1320 * c-parser.c (c_parser_direct_declarator_inner): Update call to
1321 set_array_declarator_inner.
1322 * doc/standards.texi: Update for C99 TC3.
1324 2007-11-22 Hans-Peter Nilsson <hp@bitrange.com>
1326 * config/mmix/mmix.c (mmix_encode_section_info): Remove duplicate
1327 line in my edit of the last change.
1329 2007-11-22 Jakub Jelinek <jakub@redhat.com>
1332 * config/arm/arm.c (arm_init_tls_builtins): Set TREE_NOTHROW
1333 and TREE_READONLY on the fn decl rather than passing a chain
1336 2007-11-22 Kaz Kojima <kkojima@gcc.gnu.org>
1338 * config/sh/sh.md (divsi_inv_m3): Handle zero dividend specially.
1340 2007-11-22 Uros Bizjak <ubizjak@gmail.com>
1342 * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Change checking
1343 of ix86_arch and ix86_tune into a switch statement.
1344 (enum processor_type): Default PROCESSOR_I386 to 0.
1345 * config/i386/i386.c (ix86_decompose_address): Use TARGET_K6 instead
1346 of "ix86_tune == PROCESSOR_K6".
1347 (ia32_multipass_dfa_lookahead): Change checking of ix86_tune into
1350 2007-11-22 Tom Tromey <tromey@redhat.com>
1352 * config/mmix/mmix.c (mmix_encode_section_info): Use alloca to
1353 avoid writing into string allocated by ggc_alloc_string.
1355 2007-11-21 Kaz Kojima <kkojima@gcc.gnu.org>
1358 * config/sh/sh.md (binary_sf_op): Remove.
1359 (binary_sf_op0, binary_sf_op1): New define_insn_and_split.
1360 * config/sh/sh.c (sh_expand_binop_v2sf): Use gen_binary_sf_op0
1361 and gen_binary_sf_op1.
1363 2007-11-21 Hans-Peter Nilsson <hp@axis.com>
1365 * regclass.c (init_reg_autoinc): Fix typo preventing test of
1366 secondary output reload when setting forbidden_inc_dec_class.
1368 2007-11-21 Richard Guenther <rguenther@suse.de>
1370 PR tree-optimization/34148
1371 * tree-ssa-structalias.c (create_variable_info_for): Do not use
1372 field-sensitive PTA for single-element structures.
1373 * tree-ssa-alias.c (create_overlap_variables_for): Do not create
1374 SFTs for single-element structures.
1376 2007-11-20 Richard Guenther <rguenther@suse.de>
1379 * gimplify.c (gimplify_switch_expr): Use tree_int_cst_lt instead
1380 of the signed INT_CST_LT.
1381 * stmt.c (expand_case): Likewise.
1382 (estimate_case_costs): Likewise.
1384 2007-11-20 Rask Ingemann Lambertsen <rask@sygehus.dk>
1386 * read-rtl.c (fatal_expected_char): Print EOF as text rather that
1387 its binary representation.
1389 2007-11-20 Richard Guenther <rguenther@suse.de>
1391 * tree-ssa-operands.c (add_virtual_operand): Consistently prune
1394 2007-11-20 Thiemo Seufer <ths@mips.com>
1396 * config/mips/mips.c (mips_file_start): Add support for
1397 flagging 32-bit code with -mfp64 floating-point.
1399 2007-11-20 Jakub Jelinek <jakub@redhat.com>
1402 * c-gimplify.c (optimize_compound_literals_in_ctor): New function.
1403 (c_gimplify_expr): Use it.
1405 2007-11-20 Ben Elliston <bje@au.ibm.com>
1407 * config/spu/spu_mfcio.h: Fix typo.
1409 2007-11-20 Ben Elliston <bje@au.ibm.com>
1411 * unwind.inc: Comment that unwind-sjlj.c includes this file.
1413 2007-11-20 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
1414 Ben Elliston <bje@au.ibm.com>
1416 * config/spu/mfc_tag_release.c: New file.
1417 * config/spu/mfc_multi_tag_release.c: Likewise.
1418 * config/spu/mfc_multi_tag_reserve.c: Likewise.
1419 * config/spu/mfc_tag_release.c: Likewise.
1420 * config/spu/mfc_tag_reserve.c: Likewise.
1421 * config/spu/mfc_tag_table.c: Likewise.
1422 * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Compile them.
1423 (TARGET_LIBGCC2_CFLAGS): Define __IN_LIBGCC2.
1424 * config/spu/spu_mfcio.h: Avoid <stdint.h>.
1425 (uint64_t): Typedef if __IN_LIBGCC2 is defined.
1426 (MFC_TAG_INVALID, MFC_TAG_VALID): New macros.
1427 (mfc_tag_reserve, mfc_tag_release, mfc_multi_tag_reserve,
1428 mfc_multi_tag_release): Likewise.
1429 (__mfc_tag_reserve, __mfc_tag_release, __mfc_multi_tag_reserve,
1430 __mfc_multi_tag_release): Declare.
1432 2007-11-19 Jason Merrill <jason@redhat.com>
1434 PR debug/28834, debug/29436, c/32326
1435 * tree.c (build_type_attribute_qual_variant): Refuse to make
1436 a distinct copy of a struct/enum type. Use build_distinct_type_copy.
1437 * doc/extend.texi (Type Attributes): Don't encourage people to add
1438 attributes to struct/enum types in a typedef. Fix
1439 transparent_union example.
1441 * tree-inline.c (remap_type_1): Remove code that's redundant with
1443 (build_duplicate_type): Set id.copy_decl.
1444 * c-common.c (handle_transparent_union_attribute): Simplify logic.
1446 2007-11-19 Peter Bergner <bergner@vnet.ibm.com>
1448 * config/rs6000/rs6000.c (invalid_e500_subreg,
1449 rs6000_legitimate_offset_address_p, legitimate_lo_sum_address_p,
1450 rs6000_legitimize_address, rs6000_legitimize_reload_address,
1451 rs6000_legitimate_address, function_arg_advance,
1452 spe_build_register_parallel, rs6000_spe_function_arg,
1453 rs6000_split_multireg_move, spe_func_has_64bit_regs_p,
1454 emit_frame_save, gen_frame_mem_offset, rs6000_function_value,
1455 rs6000_libcall_value, rs6000_dwarf_register_span): Handle DDmode and
1456 TDmode similarly to DFmode and TFmode.
1457 * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
1458 DATA_ALIGNMENT, CLASS_MAX_NREGS, CANNOT_CHANGE_MODE_CLASS): Likewise.
1460 2007-11-19 Eric Botcazou <ebotcazou@adacore.com>
1462 * stor-layout.c (lang_adjust_rli): Delete.
1463 (set_lang_adjust_rli): Likewise.
1464 (layout_type): Do not call lang_adjust_rli hook.
1465 * tree.h (set_lang_adjust_rli): Delete.
1467 2007-11-19 Bernd Schmidt <bernd.schmidt@analog.com>
1469 * config/bfin/bfin.c (must_save_p): New function, mostly broken out of
1470 n_dregs_to_save and n_pregs_to_save.
1471 (n_pregs_to_save, n_dregs_to_save): Use it. New argument CONSECUTIVE;
1472 all callers changed.
1473 (expand_prologue_reg_save, expand_epilogue_reg_restore): Enhance to be
1474 able to save single D/P registers that aren't saved by the push/pop
1477 2007-11-19 Richard Guenther <rguenther@suse.de>
1479 PR tree-optimization/34099
1480 * tree-ssa-ccp.c (likely_value): Exclude all but PLUS_EXPR,
1481 MINUS_EXPR and POINTER_PLUS_EXPR from handling as UNDEFINED
1482 if only one operand is undefined.
1484 2007-11-19 Eric Botcazou <ebotcazou@libertysurf.fr>
1486 PR tree-optimization/34036
1487 * opts.c (set_fast_math_flags): Do not set flags in common
1488 with set_unsafe_math_optimizations_flags, invoke it directly.
1489 (set_unsafe_math_optimizations_flags): Unset flag_trapping_math
1490 and flag_signed_zeros.
1491 * toplev.c (process_options): Force flag_associative_math to 0 and
1492 warn, if it is set and either flag_trapping_math or flag_signed_zeros
1494 * doc/invoke.texi (Optimize Options): Document the new behavior
1495 of -funsafe-math-optimizations, that -fassociative-math requires
1496 both -fno-signed-zeros and -fno-trapping-math and make it clear
1497 that -fno-trapping-math requires -fno-signaling-nans. Refactor
1498 documentation of -ffast-math.
1500 2007-11-18 Jakub Jelinek <jakub@redhat.com>
1502 PR rtl-optimization/34132
1503 * gcse.c (try_replace_reg): Avoid rtx sharing between REG_EQUAL note
1507 * optabs.h (optab_table): Change type to struct optab from optab.
1508 (convert_optab_table): Similarly.
1509 Adjust all _optab macros to expand to addresses of optab_table
1510 resp. convert_optab_table elements rather than the values of the
1512 * optabs.c (optab_table): Change typype to struct optab from optab.
1513 If compiled by recent GCC, initialize all the insn_code fields in
1514 the array using designated range initializers.
1515 (convert_optab_table): Similarly.
1516 (convert_optab_libfunc, optab_libfunc, set_optab_libfunc,
1517 set_conv_libfunc): Into libfunc_entry's optab field store index within
1518 optab_table resp. convert_optab_table array instead of difference
1519 between two separately malloced addresses.
1520 (new_optab): Add op argument, don't return anything. Initialize
1521 just the insn_code field in handlers array and only when needed.
1522 (init_optab, init_optabv): Add op argument, don't return anything.
1523 Adjust new_optab caller.
1524 (new_convert_optab): Removed.
1525 (init_convert_optab): Add op argument, don't return anything, don't
1526 call new_convert_optab. If needed, initialize insn_code field in
1528 (init_optabs): Adjust init_optab, init_optabv and init_convert_optab
1530 (debug_optab_libfuncs): Adjust uses of optab_table and
1531 convert_optab_table arrays.
1533 2007-11-18 Richard Guenther <rguenther@suse.de>
1535 PR tree-optimization/34127
1536 * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
1537 Make code match up the comments, require compatibility of the
1540 2007-11-17 Richard Guenther <rguenther@suse.de>
1543 * fold-const.c (extract_muldiv_1): Do not move negative
1544 constants inside ABS_EXPR.
1546 2007-11-16 Ian Lance Taylor <iant@google.com>
1548 * collect2.c (dump_file): If a demangled symbol is followed by a
1549 space, make sure we output at least one space.
1551 2007-11-16 Richard Guenther <rguenther@suse.de>
1554 * fold-const.c (fold_binary): Use correct types for folding
1555 1 << X & Y to Y >> X & 1.
1557 2007-11-16 Richard Guenther <rguenther@suse.de>
1559 PR tree-optimization/33870
1560 * tree.h (struct tree_memory_tag): Add base_for_components flag.
1561 (struct tree_struct_field_tag): Remove nesting_level field.
1562 (SFT_NESTING_LEVEL): Remove.
1563 (SFT_BASE_FOR_COMPONENTS_P): Add.
1564 * tree-flow.h (struct fieldoff): Remove nesting_level field. Add
1565 base_for_components flag.
1566 (push_fields_onto_fieldstack): Remove nesting_level parameter.
1567 * tree-ssa-alias.c (create_sft): Likewise. Add base_for_components
1569 (create_overlap_variables_for): Deal with it.
1570 * tree-dfa.c (dump_subvars_for): Likewise.
1571 (dump_variable): Likewise.
1572 * tree-ssa-structalias.c (push_fields_onto_fieldstack): Likewise.
1573 Set base_for_components for first elements of sub-structures.
1574 (create_variable_info_for): Handle base_for_components.
1575 (set_uids_in_ptset): Always set SFT_UNPARTITIONABLE_P for
1576 pointed-to SFTs if SFT_BASE_FOR_COMPONENTS_P is set.
1577 * tree-ssa-operands.c (ref_nesting_level): Remove.
1578 (add_vars_for_offset): Remove full_ref parameter, always add
1579 the offset of the pointed-to SFT.
1580 (add_virtual_operand): Adjust for changed signature of
1581 add_vars_for_offset.
1583 2007-11-16 Sa Liu <saliu@de.ibm.com>
1585 * config/spu/spu.md (floatunssidf2, floatunsdidf2): Inlined
1586 floatunssidf2 and floatunsdidf2.
1588 2007-11-16 Richard Guenther <rguenther@suse.de>
1590 PR tree-optimization/34113
1591 * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
1592 Use correct conversion direction for checking type compatibility.
1594 2007-11-16 Richard Guenther <rguenther@suse.de>
1596 PR tree-optimization/34099
1597 * tree-ssa-ccp.c (likely_value): Use a whitelist for operators
1598 that produce UNDEFINED result if at least one of its operands
1599 is UNDEFINED. By default the result is only UNDEFINED if all
1600 operands are UNDEFINED.
1602 2007-11-16 Jakub Jelinek <jakub@redhat.com>
1605 * gcc.c (init_spec): Don't initialize asm_debug here...
1606 (main): ... but here.
1608 2007-11-07 Tom Tromey <tromey@redhat.com>
1610 * tree-ssa-structalias.c (ipa_pta_execute): Rename 'cfun' to 'func'.
1611 * tree-parloops.c (create_loop_fn): Use set_cfun.
1612 * gengtype.c (open_base_files): Emit #undef cfun.
1613 * ipa-struct-reorg.c (do_reorg_1): Use set_cfun.
1614 * function.h (cfun): New define.
1615 * function.c: Undefine cfun.
1617 2007-11-07 Eric B. Weddington <eweddington@cso.atmel.com>
1619 * config/avr/avr.c (avr_mcu_types): Add attiny88.
1620 * config/avr/avr.h (LINK_SPEC): Likewise.
1621 (CRT_BINUTILS_SPECS): Likewsie.
1622 * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
1624 2007-11-15 Jakub Jelinek <jakub@redhat.com>
1627 * tree-ssa-ccp.c (optimize_stack_restore): New function.
1628 (execute_fold_all_builtins): Call optimize_stack_restore for
1629 BUILT_IN_STACK_RESTORE.
1631 2007-11-15 Paolo Bonzini <bonzini@gnu.org>
1633 * fwprop.c (try_fwprop_subst): Skip profitability check for forward
1634 propagation into an address; that's done in should_replace_address.
1636 2007-11-15 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
1638 * config/spu/spu-protos.h (legitimate_const): Remove prototype.
1639 * config/spu/spu.c (legitimate_const): Remove.
1640 (classify_immediate): Inline call to legitimate_const.
1641 (spu_legitimate_address): Likewise. Allow SYMBOL_REF + CONST_INT
1642 for any constant, not just -512 .. 511.
1644 2007-11-15 Sa Liu <saliu@de.ibm.com>
1646 * config/spu/spu.c (spu_emit_branch_or_set): Remove PROCESSOR_CELL
1647 condition from HONOR_NANS test.
1648 * config/spu/spu.md (ceq_df): Always generate comparison code
1649 inline, including checks for NaNs and infinities.
1651 (cgt_v2df): Likewise.
1652 (cmpdf): Make this expander unconditional.
1654 2007-11-15 Richard Guenther <rguenther@suse.de>
1656 * tree-ssa-alias.c (create_overlap_variables_for): Make sure
1657 to only create SFTs if we also create variable infos for PTA.
1658 * tree-ssa-structalias.c (set_uids_in_ptset): Add all overlapping SFTs.
1660 2007-11-15 Richard Guenther <rguenther@suse.de>
1662 * tree-ssa-structalias.c (set_uids_in_ptset): Use the pointed-to
1663 type for TBAA pruning.
1664 (find_what_p_points_to): Call set_uids_in_ptset with the original
1665 pointer, not the decl of the solution we collapsed to.
1667 2007-11-14 David Daney <ddaney@avtrex.com>
1669 * config/mips/linux-unwind.h (mips_fallback_frame_state): Use CFA
1672 2007-11-14 Eric Botcazou <ebotcazou@libertysurf.fr>
1675 * config/ia64/ia64.h (CANNOT_CHANGE_MODE_CLASS): Forbid mode changes
1676 for registers in BR_REGS class.
1678 2007-11-14 Jakub Jelinek <jakub@redhat.com>
1681 * tree-ssa.c (delete_tree_ssa): Don't call fini_ssa_operands if
1682 init_ssa_operands has not been called for cfun.
1684 2007-11-14 Eric Botcazou <ebotcazou@libertysurf.fr>
1686 PR tree-optimization/34046
1687 * cfg.c (update_bb_profile_for_threading): Avoid the division for the
1688 scaling if the old probability is greater than the new base.
1690 2007-11-14 Sebastian Pop <sebastian.pop@amd.com>
1692 * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Remove
1693 unused edges after loop duplication.
1695 2007-11-14 Uros Bizjak <ubizjak@gmail.com>
1697 * config/i386/i386.h (TARGET_CPU_DEFAULT_*): Substitute with ...
1698 (enum target_cpu_default): ... this enum.
1699 (TARGET_CPU_DEFAULT_NAMES): Remove macro. Move initializer to ...
1700 * config/i386/i386.c (override_options): ... here.
1701 * config/i386/i386-interix.h (TARGET_CPU_DEFAULT): Use
1702 TARGET_CPU_DEFAULT_i486.
1704 2007-11-14 Rask Ingemann Lambertsen <rask@sygehus.dk>
1706 * global.c (rest_of_handle_global_alloc): Fix comment typos.
1707 * config/sh/sh.c (sh_rtx_costs): Likewise.
1708 * ChangeLog: Likewise.
1710 2007-11-13 Sebastian Pop <sebastian.pop@amd.com>
1712 * tree-chrec.h (build_polynomial_chrec): RHS of a chrec
1713 should not be of pointer type.
1715 2007-11-13 Michael Meissner <michael.meissner@amd.com>
1717 * config/i386/i386.c (ix86_sse5_valid_op_p): Put type on separate line.
1719 2007-11-13 Sterling Augustine <sterling@tensilica.com>
1720 Bob Wilson <bob.wilson@acm.org>
1722 * config/xtensa/unwind-dw2-xtensa.c: New.
1723 * config/xtensa/unwind-dw2-xtensa.h: New.
1724 * config/xtensa/xtensa.h (MUST_USE_SJLJ_EXCEPTIONS): Remove.
1725 (DWARF2_UNWIND_INFO): Remove.
1726 (DWARF_FRAME_REGISTERS): Define.
1727 (EH_RETURN_DATA_REGNO): Define.
1728 * config/xtensa/xtensa.md (UNSPECV_EH_RETURN): Define.
1730 * config/xtensa/t-xtensa (LIB2ADDEH): Define.
1732 2007-11-13 Jakub Jelinek <jakub@redhat.com>
1734 * doc/invoke.texi: Fix description of -fsched-stalled-insns=0,
1735 -fsched-stalled-insns.
1737 PR tree-optimization/34063
1738 * tree-chrec.c (chrec_evaluate): Put CHREC_LEFT based argument
1739 as first chrec_fold_plus operand rather than second.
1741 2007-11-13 Diego Novillo <dnovillo@google.com>
1743 PR tree-optimization/33870
1744 * tree.h (strcut tree_memory_tag): Add field unpartitionable.
1745 Remove field in_nested_struct.
1746 (struct tree_struct_field_tag): Add field nesting_level.
1747 (sft_in_nested_struct): Remove.
1748 (sft_nesting_level): Define.
1749 (sft_unpartitionable_p): Define.
1750 * tree-ssa-alias.c (mem_sym_score): If mp->var is not
1751 partitionable, return long_max.
1752 (compute_memory_partitions): Do not partition sfts marked
1754 (create_sft): Add argument nesting_level. Set
1755 sft_nesting_level with it. Update all users.
1756 (create_overlap_variables_for): Show nesting level.
1757 * tree-dfa.c (dump_subvars_for): Likewise.
1758 (dump_variable): Likewise. Show whether the sft is
1759 partitionable or not.
1760 * tree-flow.h (struct fieldoff): Remove field in_nested_struct.
1761 Add field nesting_level.
1762 * tree-ssa-structalias.c (struct variable_info): Remove
1763 field in_nested_struct.
1764 (push_fields_onto_fieldstack): Add argument nesting_level.
1765 Update all users. Update documentation. Update pair->nesting_level
1766 with nesting_level. Make recursive calls with nesting_level + 1.
1767 (set_uids_in_ptset): If an sft is added to the points-to set,
1768 mark it as unpartitionable.
1769 * tree-ssa-operands.c (ref_nesting_level): New.
1770 (add_vars_for_offset): Call it. Add argument full_ref. Update
1771 callers. If var is inside a nested structure and the nesting level
1772 of full_ref is lower than the nesting level of var,
1773 adjust offset by the offset of var.
1775 2007-11-13 Victor Kaplansky <victork@il.ibm.com>
1777 PR tree-optimization/32582
1778 * Makefile.in (CRTSTUFF_CFLAGS): Add -fno-tree-vectorize
1780 2007-11-12 Danny Smith <dannysmith@users.sourceforge.net>
1782 * doc/extend.texi (dllimport): Document that pointers to dllimport'd
1783 functions can be used as constant.
1785 2007-11-12 Eric Botcazou <ebotcazou@libertysurf.fr>
1787 PR rtl-optimization/34035
1788 * cse.c (cse_cfg_altered): New global variable.
1789 (cse_jumps_altered): Make boolean.
1790 (recorded_label_ref): Likewise.
1791 (cse_insn): Adjust for above changes.
1792 (cse_extended_basic_block): Likewise. Set cse_cfg_altered
1793 if dead edges have been purged.
1794 (cse_main): Change return value specification and adjust code.
1795 (rest_of_handle_cse): Adjust for above change.
1796 (rest_of_handle_cse2): Likewise.
1797 * gcse.c (rest_of_handle_gcse): Likewise.
1799 2007-11-12 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
1800 Michael Meissner <michael.meissner@amd.com>
1802 * config/i386/i386.md (sse5_setcc<mode>): Use <ssemodefsuffix> to
1803 get the appropriate suffix for the coms* instruction.
1804 (sse5_pcmov_<mode>): Restrict operands of pcmov
1805 for scalar case to be only xmm registers and not memory.
1807 * config/i386/sse.md (sse5_pcmov_<mode>): Correct the operand
1808 constraints to follow the mnemonics for the pcmov instruction
1810 2007-11-12 Richard Sandiford <rsandifo@nildram.co.uk>
1813 * config/mips/mips.c (mips_return_fpr_single): New function.
1814 (mips_function_value): Use it when returning single-field
1816 (mips_expand_call): Handle the PARALLELs created by
1817 mips_return_fpr_single.
1819 2007-11-12 Richard Guenther <rguenther@suse.de>
1822 * fold-const.c (fold_binary): If testing for non-negative
1823 operands with tree_expr_nonnegative_warnv_p make sure to
1824 use op0 which has all (sign) conversions retained.
1826 2007-11-12 Richard Guenther <rguenther@suse.de>
1829 * fold-const.c (fold_binary): Fold n - (n / m) * m to n % m.
1830 (fold_binary): Fold unsinged FLOOR_DIV_EXPR to TRUNC_DIV_EXPR.
1832 2007-11-12 Ira Rosen <irar@il.ibm.com>
1834 PR tree-optimization/33953
1835 * tree-vect-transform.c (vectorizable_operation): In case of SLP,
1836 allocate vec_oprnds1 according to the number of created vector
1837 statements. In case of shift with scalar argument, store scalar
1838 operand for every vector statement to be created for the SLP node.
1841 2007-11-10 Steven Bosscher <stevenb.gcc@gmail.com>
1843 * gcse.c (CUID_INSN): Remove.
1845 (alloc_gcse_mem): Don't allocate cuid_insn.
1846 (free_gcse_mem): Don't free cuid_insn.
1848 2007-11-10 Jakub Jelinek <jakub@redhat.com>
1851 * gimplify.c (goa_lhs_expr_p): Inside INDIRECT_REF handle unshared
1855 * tree-inline.h (copy_body_data): Add regimplify field.
1856 * tree-inline.c (copy_body_r): Set id->regimplify to true
1857 if an TREE_INVARIANT ADDR_EXPR is no longer invariant after
1859 (copy_bb): Clear id->regimplify before walk_tree, if it is
1860 set afterwards, regimplify the whole statement.
1862 PR tree-optimization/33680
1863 * tree-data-ref.c (split_constant_offset) <case ADDR_EXPR>: Punt
1864 if the added cast involves variable length types.
1866 2007-11-09 Alexander Monakov <amonakov@ispras.ru>
1867 Maxim Kuvyrkov <maxim@codesourcery.com>
1869 * sched-deps.c (sched_analyze_insn): Use MOVE_BARRIER
1870 instead of TRUE_BARRIER for jumps. Add register dependencies
1871 even when reg_pending_barrier is set.
1873 2007-11-09 Alexander Monakov <amonakov@ispras.ru>
1875 * haifa-sched.c (haifa_classify_insn): Rename to ...
1876 (haifa_classify_rtx): ... this. Improve handling of COND_EXECs,
1877 handle PARALLELs by recursing. Use it ...
1878 (haifa_classify_insn): ... here. Reimplement.
1880 2007-11-09 Richard Guenther <rguenther@suse.de>
1882 * bitmap.h (bitmap_single_bit_set_p): Declare.
1883 * bitmap.c (bitmap_single_bit_set_p): New function.
1884 * tree-ssa-alias.c (add_may_alias_for_new_tag): Use it.
1885 (maybe_create_global_var): Use bitmap_empty_p.
1887 2007-11-09 Paolo Bonzini <bonzini@gnu.org>
1888 Jakub Jelinek <jakub@redhat.com>
1890 PR rtl-optimization/34012
1891 * fwprop.c (try_fwprop_subst): Do not replace if the new
1892 SET_SRC has a higher cost than the old one.
1894 2007-11-09 Eric Botcazou <ebotcazou@libertysurf.fr>
1896 PR rtl-optimization/33732
1897 * reload.c (push_reload): Check that the REG_DEAD note was referring
1898 to a hardreg or to a pseudo that has been assigned exactly one hardreg
1899 before considering it in order to select the reload register.
1900 (combine_reloads): Likewise.
1901 (find_dummy_reload): Likewise.
1903 2007-11-09 Richard Guenther <rguenther@suse.de>
1905 * tree-flow.h (struct ptr_info_def): Make escape_mask a ENUM_BITFIELD.
1906 (struct ptr_info_def): Likewise.
1907 (enum escape_type): Also use bit zero.
1909 2007-11-09 Richard Guenther <rguenther@suse.de>
1911 PR tree-optimization/33604
1912 * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
1913 Disregard changes in CV qualifiers of pointed to types for
1914 forward propagating ADDR_EXPRs.
1915 * tree-ssa-ccp.c (fold_stmt_r): Preserve volatileness of the original
1918 2007-11-09 Richard Sandiford <rsandifo@nildram.co.uk>
1920 * dse.c (find_shift_sequence): Always choose an integer mode for
1922 (replace_read): Require both the read and store mode to be
1923 integer ones. Remove a then-redundant FLOAT_P check.
1925 2007-11-08 Richard Guenther <rguenther@suse.de>
1927 * tree-dfa.c (remove_referenced_var): If removing a
1928 variable which has subvars, also remove those from
1929 the referenced vars. Do not create a variable annotation.
1931 2007-11-08 Bob Wilson <bob.wilson@acm.org>
1933 * config/xtensa/xtensa.c (xtensa_expand_prologue): Remove first
1934 argument for gen_entry calls.
1935 * config/xtensa/xtensa.md: Add new "entry" value to "type" attribute.
1936 (entry): Use the new attribute value. Remove unused first operand.
1938 2007-11-08 Tom Tromey <tromey@redhat.com>
1940 * c-parser.c (c_parser_translation_unit): Use location in error.
1941 (c_parser_external_declaration): Likewise.
1942 (c_parser_declaration_or_fndef): Likewise.
1943 (c_parser_enum_specifier): Likewise.
1944 (c_parser_struct_or_union_specifier): Likewise.
1945 (c_parser_struct_declaration): Likewise.
1946 (c_parser_typeof_specifier): Likewise.
1947 (c_parser_parms_list_declarator): Likewise.
1948 (c_parser_asm_string_literal): Likewise.
1949 (c_parser_braced_init): Likewise.
1950 (c_parser_initelt): Likewise.
1951 (c_parser_compound_statement_nostart): Likewise.
1952 (c_parser_statement_after_labels): Likewise.
1953 (c_parser_do_statement): Likewise.
1954 (c_parser_asm_statement): Likewise.
1955 (c_parser_conditional_expression): Likewise.
1956 (c_parser_unary_expression): Likewise.
1957 (c_parser_sizeof_expression): Likewise.
1958 (c_parser_postfix_expression): Likewise.
1959 (c_parser_postfix_expression_after_paren_type): Likewise.
1960 (c_parser_objc_class_instance_variables): Likewise.
1961 (c_parser_objc_method_definition): Likewise.
1962 (c_parser_objc_methodprotolist): Likewise.
1963 (c_parser_pragma): Likewise.
1964 (c_parser_omp_clause_num_threads): Likewise.
1965 (c_parser_omp_clause_schedule): Likewise.
1966 (c_parser_omp_all_clauses): Likewise.
1967 (c_parser_omp_sections_scope): Likewise.
1968 (c_parser_label): Use location of label, not colon.
1970 2007-11-08 Danny Smith <dannysmith@users.sourceforge.net>
1973 * config/i386/cygming.h (BIGGEST_FIELD_ALIGNMENT): Define only if
1976 2007-11-07 Kenneth Zadeck <zadeck@naturalbridge.com>
1979 * ipa-pure-const.c (static_execute): Added code to keep recursive
1980 functions from being marked as pure or const.
1981 * ipa-utils.c (searchc): Fixed comment.
1983 2007-11-08 Tom Tromey <tromey@redhat.com>
1985 * common.opt (fshow-column): Default to 0.
1986 * configure: Rebuilt.
1987 * configure.ac (--enable-mapped-location): Default to 'yes'.
1989 2007-11-07 Kenneth Zadeck <zadeck@naturalbridge.com>
1991 * common.opt: Add pointer to doc/options.texi.
1992 * doc/invoke.texi (-fdse, -fdce, -fauto-inc-dec, -fipa-pure-const,
1993 -fipa-reference): Add or correct doc. Sorted options list for -Os
1996 2007-11-07 Bernhard Fischer <aldot@gcc.gnu.org>
1999 * config.gcc: For arm*b-* define TARGET_BIG_ENDIAN_DEFAULT.
2000 * config/arm/linux-elf.h (TARGET_ENDIAN_DEFAULT): Define based on
2001 TARGET_BIG_ENDIAN_DEFAULT. Use for MULTILIB_DEFAULTS.
2002 (TARGET_DEFAULT): Set according to TARGET_ENDIAN_DEFAULT.
2003 (LINUX_TARGET_LINK_SPEC): Pass -mlittle-endian on to the assembler.
2004 * config/arm/linux-eabi.h (TARGET_LINKER_EMULATION): Set according
2005 to TARGET_BIG_ENDIAN_DEFAULT.
2006 (SUBTARGET_EXTRA_LINK_SPEC): Likewise.
2007 * config/arm/bpabi.h (TARGET_DEFAULT_MASK): Set according
2008 to TARGET_BIG_ENDIAN_DEFAULT.
2010 2007-11-07 Diego Novillo <dnovillo@google.com>
2012 * tree.h (struct tree_struct_field_tag): Move field
2013 in_nested_struct ...
2014 (struct tree_memory_tag): ... here.
2016 2007-11-07 Diego Novillo <dnovillo@google.com>
2019 * tree.h (struct tree_struct_field_tag): Add field in_nested_struct.
2020 (SFT_IN_NESTED_STRUCT): Define.
2021 * tree-dfa.c (dump_subvars_for): Show offset of each sub-var.
2022 * tree-flow.h (struct fieldoff): Add field in_nested_struct.
2023 * tree-ssa-structalias.c (struct variable_info): Likewise.
2024 (push_fields_onto_fieldstack): If OFFSET is positive,
2025 set in_nested_struct.
2026 (create_variable_info_for): Copy setting of
2027 in_nested_struct from the field offset object.
2028 (set_uids_in_ptset): Set SFT_IN_NESTED_STRUCT from the
2029 variable info object.
2030 * tree-ssa-operands.c (add_vars_for_offset): If VAR
2031 belongs to a nested structure, adjust OFFSET by SFT_OFFSET(VAR).
2033 2007-11-07 Eric Botcazou <ebotcazou@libertysurf.fr>
2035 PR rtl-optimization/33737
2036 * cfgcleanup.c (try_crossjump_to_edge): Add count and frequency of
2037 target block after computing the probabilities of outgoing edges.
2038 Cap the frequency to BB_FREQ_MAX.
2039 * tree-ssa-threadupdate.c (redirect_edges): Also adjust count and
2040 frequency of the basic block if it has been reused.
2042 2007-11-07 Eric Botcazou <ebotcazou@libertysurf.fr>
2044 PR rtl-optimization/33822
2045 * rtl.h (REG_OFFSET): Fix comment.
2046 * var-tracking.c (INT_MEM_OFFSET): New macro.
2047 (var_mem_set): Use it.
2048 (var_mem_delete_and_set): Likewise.
2049 (var_mem_delete): Likewise.
2050 (same_variable_part_p): Likewise.
2051 (vt_get_decl_and_offset): Likewise.
2052 (offset_valid_for_tracked_p): New predicate.
2053 (count_uses): Do not track locations with invalid offsets.
2054 (add_uses): Likewise.
2055 (add_stores): Likewise.
2057 2007-11-07 Tom Tromey <tromey@redhat.com>
2059 * Makefile.in (tree-ssa-structalias.o): Depend on $(FUNCTION_H)
2060 (BASIC_BLOCK_H): Add vec.h, $(FUNCTION_H).
2062 2007-11-07 Dmitry Zhurikhin <zhur@ispras.ru>
2063 Andrey Belevantsev <abel@ispras.ru>
2065 * modulo-sched.c (sms_order_nodes, permute_partial_schedule,
2066 generate_prolog_epilog, duplicate_insns_of_cycles): Fix prototypes.
2067 (calculate_order_params, sms_order_nodes): New parameter pmax_asap.
2068 Save calculated max_asap in it.
2069 (sms_schedule): Calculate maxii using max_asap.
2071 2007-11-07 Andreas Krebbel <krebbel1@de.ibm.com>
2073 * doc/invoke.texi: Replace rs6000 dfp switches -mdfp/-mno-dfp
2074 with -mhard-dfp/-mno-hard-dfp.
2076 2007-11-07 Maxim Kuvyrkov <maxim@codesourcery.com>
2077 Jakub Jelinek <jakub@redhat.com>
2080 * haifa-sched.c (check_sched_flags): Remove.
2081 (sched_init): Don't call it.
2083 2007-11-06 Diego Novillo <dnovillo@google.com>
2085 * tree-flow.h (struct fieldoff): Reformat comment. Document fields.
2086 * tree-ssa-operands.c: Tidy top-level comments.
2087 (add_vop): Likewise.
2088 (add_vars_for_offset): Tidy parameter formatting..
2089 (get_addr_dereference_operands): Likewise.
2090 (get_indirect_ref_operands): Likewise.
2091 (get_expr_operands) <OMP_ATOMIC_LOAD>: Reformat.
2092 <OMP_ATOMIC_STORE>: Likewise.
2094 2007-11-06 Rask Ingemann Lambertsen <rask@sygehus.dk>
2097 * config/i386/driver-i386.c: Test for __GNUC__ instead of
2098 GCC_VERSION which is always defined.
2100 2007-11-06 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
2103 * reload1.c (find_reloads): Also check in_reg when handling a
2104 simple move with an input reload and a destination of a hard register.
2106 2007-11-06 Maxim Kuvyrkov <maxim@codesourcery.com>
2108 * config/m68k/m68k.c (sched-int.h, insn-codes.h): New includes.
2109 (TARGET_SCHED_ADJUST_COST, TARGET_SCHED_VARIABLE_ISSUE,
2110 TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_FINISH_GLOBAL,
2111 TARGET_SCHED_INIT, TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
2112 TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Redefine.
2113 (m68k_sched_attr_type2): New function.
2114 (sched_adjust_cost_state): New static variable.
2115 (m68k_sched_adjust_cost): New static function implementing
2117 (sched_ib_size, sched_ib_filled, sched_ib_insn, sched_mem_unit_code):
2118 New static variables.
2119 (m68k_sched_variable_issue): New static function implementing
2121 (sched_dump_class_def, sched_dump_class_func_t): New typedefs.
2122 (sched_dump_split_class): New static function.
2123 (sched_dump_dfa_guess_unit_code, sched_dump_dfa_state): New static
2125 (sched_dump_dfa_class, m68k_sched_dump): New static function.
2126 (m68k_sched_md_init_global, m68k_sched_md_finish_global,
2127 m68k_sched_md_init, m68k_sched_dfa_pre_advance_cycle,
2128 m68k_sched_dfa_post_advance_cycle): New static functions implementing
2131 * config/m68k/m68k.h (m68k_sched_attr_type2): Declare.
2132 (CPU_UNITS_QUERY): Define.
2134 * config/m68k/cf.md: New file.
2135 * config/m68k/m68.md (cf.md): New include.
2137 2007-11-06 Tom Tromey <tromey@redhat.com>
2139 PR c++/32256, PR c++/32368:
2140 * function.c (saved_in_system_header): New global.
2141 (push_cfun): Save in_system_header.
2142 (pop_cfun): Restore in_system_header.
2143 (push_struct_function): Save in_system_header.
2145 2007-11-06 Douglas Gregor <doug.gregor@gmail.com>
2149 * c-common.c (c_build_qualified_type): Moved to c-typeck.c.
2150 (complete_array_type): Set canonical type appropriately.
2151 * c-typeck.c (c_build_qualified_type): Moved from c-common.c. The
2152 C and C++ front ends now have different versions of this function,
2153 because the C++ version needs to maintain canonical types here.
2155 2007-11-04 Razya Ladelsky <razya@il.ibm.com>
2157 * tree-parloops.c (reduction_info): Remove reduction_init field.
2158 (initialize_reductions): Remove creation of the reduction_init variable.
2159 (struct data_arg): Remove.
2160 (add_field_for_reduction, create_stores_for_reduction): New functions.
2161 (add_field_for_name): Remove reduction handling.
2162 (separate_decls_in_loop): Call add_field_for_reduction,
2163 create_stores_for_reduction.
2165 2007-11-06 Jakub Jelinek <jakub@redhat.com>
2167 PR tree-optimization/33458
2168 * tree-inline.c (copy_phis_for_bb): If PHI arg substitution creates
2169 !is_gimple_val PHI argument, gimplify it and insert it on edge.
2171 PR tree-optimization/33993
2172 * tree-vect-transform.c (vect_get_constant_vectors): Use build_vector
2173 rather than build_constructor_from_list if all list values are
2175 (get_initial_def_for_induction): Use build_vector instead of
2176 build_constructor_from_list.
2178 2007-11-05 Mark Mitchell <mark@codesourcery.com>
2181 * tree.h (DECL_INIT_PRIORITY): Do not require DECL_HAS_INIT_PRIORITY_P.
2182 (DECL_FINI_PRIORITY): Likewise.
2183 * tree.c (decl_init_priority_lookup): Remove assert.
2184 (decl_fini_priority_insert): Likewise.
2185 * cgraphunit.c (static_ctors): Make it a VEC.
2186 (static_dtors): Likewise.
2187 (record_cdtor_fn): Adjust accordingly.
2188 (build_cdtor): Generate multiple functions for each initialization
2190 (compare_ctor): New function.
2191 (compare_dtor): Likewise.
2192 (cgraph_build_cdtor_fns): Sort the functions by priority before
2193 calling build_cdtor.
2194 (cgraph_build_static_cdtor): Put the priority in the function's name.
2196 2007-11-05 H.J. Lu <hongjiu.lu@intel.com>
2199 * common.opt: Add shared and pie.
2201 2007-11-05 Bob Wilson <bob.wilson@acm.org>
2203 * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Do not
2204 replace references to virtual_stack_vars_rtx in goto_handler.
2206 2007-11-05 Paul Brook <paul@codesourcery.com>
2208 * config.gcc (arm*-*-*): Set c_target_objs and cxx_target_objs.
2209 * config/arm/arm.c (arm_lang_output_object_attributes_hook): New.
2210 (arm_file_start): Don't set Tag_ABI_PCS_wchar_t. Call
2211 arm_lang_output_object_attributes_hook.
2212 * config/arm/arm.h (arm_lang_output_object_attributes_hook): Declare.
2213 (REGISTER_TARGET_PRAGMAS): Call arm_lang_object_attributes_init.
2214 * config/arm/arm-protos.h (arm_lang_object_attributes_init): Add
2216 * config/arm/t-arm.c (arm.o): New rule.
2217 * config/arm/arm-c.c: New file.
2219 2007-11-05 Nick Clifton <nickc@redhat.com>
2220 Sebastian Pop <sebastian.pop@amd.com>
2222 PR tree-optimization/32540
2223 PR tree-optimization/33922
2224 * doc/invoke.texi: Document PARAM_MAX_PARTIAL_ANTIC_LENGTH.
2225 * tree-ssa-pre.c: Include params.h.
2226 (compute_partial_antic_aux): Use PARAM_MAX_PARTIAL_ANTIC_LENGTH
2227 to limit the maximum length of the PA set for a given block.
2228 * Makefile.in: Add a dependency upon params.h for tree-ssa-pre.c
2229 * params.def (PARAM_MAX_PARTIAL_ANTIC_LENGTH): New parameter.
2231 2007-11-05 Nathan Sidwell <nathan@codesourcery.com>
2233 * libgcc2.c (__fixunstfDI, __fixunsxfDI, __fixunsdfDI,
2234 __fixunssfDI): Make return type unsigned.
2235 * libgcc2.h (__fixunstfDI, __fixunsxfDI, __fixunsdfDI,
2236 __fixunssfDI): Make return type unsigned.
2238 2007-11-05 Jakub Jelinek <jakub@redhat.com>
2240 PR tree-optimization/33856
2241 * tree-data-ref.c (get_references_in_stmt): Don't add
2242 REFERENCE_CLASS_P trees to references vector if get_base_address
2243 returns NULL on them.
2245 2007-11-05 Alexandre Oliva <aoliva@redhat.com>
2247 * cfg.c (dump_cfg_bb_info): Update bb_bitnames to match enum.
2249 2007-11-04 Andrew Pinski <pinskia@gmail.com>
2252 * fold-const.c (fold_binary <case EQ_EXPR>): Convert the inner type
2253 for TRUTH_NOT_EXPR to type.
2255 2007-11-04 Gerald Pfeifer <gerald@pfeifer.com>
2257 * doc/contrib.texi (Contributors): Add Manuel Lopez-Ibanez.
2259 2007-11-04 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
2262 * dwarf2out.c (add_calling_convention_attribute): Change
2263 second argument. Set calling convention to DW_CC_program for
2264 Fortran main program.
2265 (gen_subprogram_die): Adjust to new prototype for
2266 add_calling_convention_attribute.
2268 2007-11-03 Dorit Nuzman <dorit@il.ibm.com>
2270 PR tree-optimization/33987
2271 * tree-vect-transform.c (get_initial_def_for_reduction): Fix assert.
2273 (vectorizable_reduction): Add type check.
2275 2007-11-03 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2278 * c-parser.c (c_parser_statement_after_labels): Error if a
2279 declaration is parsed after a label.
2281 2007-11-03 Daniel Jacobowitz <dan@codesourcery.com>
2284 * reorg.c (emit_delay_sequence): Do not clear the locator on
2285 the jump instruction.
2287 2007-11-03 Jakub Jelinek <jakub@redhat.com>
2290 * haifa-sched.c (ok_for_early_queue_removal): Don't walk out of the
2291 current sched region.
2293 2007-11-02 Jakub Jelinek <jakub@redhat.com>
2295 * config/ia64/ia64.c (struct reg_write_state): Change into
2296 unsigned short bitfields rather than unsigned int, decrease
2297 first_pred to just 10 bits.
2298 (rws_insn): Change into a bitmap or if not ENABLE_CHECKING
2299 into two char array.
2300 (rws_insn_set, rws_insn_test): New functions.
2301 (in_safe_group_barrier): New variable.
2302 (rws_update): Remove first argument, always set rws_sum array.
2303 (rws_access_regno): Use rws_insn_set macro. Only call rws_update
2304 or update rws_sum if !in_safe_group_barrier, adjust rws_update args.
2305 (rtx_needs_barrier): Use rws_insn_test macro.
2306 (safe_group_barrier_needed): Don't save/restore rws_sum array,
2307 instead set/clear in_safe_group_barrier flag.
2309 2007-11-02 Bob Wilson <bob.wilson@acm.org>
2311 * config/xtensa/xtensa.c (xtensa_expand_prologue): Put a
2312 REG_FRAME_RELATED_EXPR note on the last insn that sets up the stack
2313 pointer or frame pointer.
2314 * config/xtensa/xtensa.h (DWARF_UNWIND_INFO): Delete.
2315 (MUST_USE_SJLJ_EXCEPTIONS): Define.
2316 (DWARF2_UNWIND_INFO): Define.
2317 (INCOMING_RETURN_ADDR_RTX): Define.
2318 (DWARF_FRAME_RETURN_COLUMN): Define.
2320 2007-11-02 Tom Tromey <tromey@redhat.com>
2322 * varpool.c (dump_varpool): Use 'next', not 'next_needed' when
2325 2007-11-02 Diego Novillo <dnovillo@google.com>
2327 * langhooks.h (struct lang_hooks_for_callgraph): Remove third
2328 argument from function pointer ANALYZE_EXPR. Update all users.
2329 * cgraph.c (debug_cgraph_node): New.
2330 (debug_cgraph): New.
2332 2007-11-02 Jakub Jelinek <jakub@redhat.com>
2334 PR rtl-optimization/33648
2335 * cfgrtl.c (cfg_layout_split_edge): Initialize BB_PARTITION of
2336 the newly created basic block.
2338 2007-11-01 Richard Guenther <rguenther@suse.de>
2340 * ggc-page.c (extra_order_size_tab): Add bitmap_head size.
2342 2007-11-01 Steven Bosscher <stevenb.gcc@gmail.com>
2344 PR rtl-optimization/33828
2345 * gcse.c (compute_code_hoist_vbeinout): Fix order of computation
2346 of VBEIN and VBEOUT.
2348 2007-11-01 Eric Botcazou <ebotcazou@libertysurf.fr>
2350 * optabs.c (prepare_cmp_insn): Merge a couple of conditional blocks.
2351 * sched-rgn.c (compute_trg_info): Zero 'el' local variable.
2352 * tree-if-conv.c (process_phi_nodes): Zero 'cond' local variable.
2354 2007-11-01 Nathan Sidwell <nathan@codesourcery.com>
2356 * gcc.c (getenv_spec_function): Escape the environment variable's
2359 2007-11-01 Janis Johnson <janis187@us.ibm.com>
2361 * doc/invoke.texi (Optimize Options): Under -fcse-follow-jumps,
2362 show that CSE means common subexpression elimination. Change wording
2363 for -fsee and define LCM. Remove capitalization of optimizations
2364 for -ftree-reassoc, -ftree-pre, and -ftree-fre.
2366 2007-11-01 Janis Johnson <janis187@us.ibm.com>
2369 * doc/sourcebuild.texi (Test Directives): Document that xfail
2370 has no effect for dg-do except when dg-do-what is "run".
2372 2007-11-01 Tom Tromey <tromey@redhat.com>
2374 * c-decl.c (grokdeclarator): Set decl source locations.
2375 * c-parser.c (c_parser_enum_specifier): Set location.
2376 (c_parser_struct_or_union_specifier): Likewise.
2378 2007-11-01 Tom Tromey <tromey@redhat.com>
2380 * print-tree.c (print_node): Print column number.
2382 2007-11-01 Jakub Jelinek <jakub@redhat.com>
2385 * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
2386 gen_decl_die): Use TREE_TYPE (TREE_TYPE (decl)) as type
2387 rather than TREE_TYPE (decl) if DECL_BY_REFERENCE (decl).
2389 PR rtl-optimization/33673
2390 * gcse.c (cprop_jump): If a conditional jump has been optimized
2391 into unconditional jump, make the remaining normal edge fallthru
2392 and delete the jump insn.
2394 2007-11-01 Ben Elliston <bje@au.ibm.com>
2396 * emit-rtl.c (set_reg_attrs_from_mem): Clarify function comment.
2397 (set_mem_attrs_from_reg): Likewise.
2399 2007-11-01 Michael Matz <matz@suse.de>
2401 PR tree-optimization/33961
2402 * tree-ssa-phiopt.c (struct name_to_bb.store): New member.
2403 (name_to_bb_hash, name_to_bb_eq): Consider and check it.
2404 (add_or_mark_expr): New argument 'store', using it to search
2406 (nt_init_block): Adjust calls to add_or_mark_expr.
2408 2007-10-31 Jakub Jelinek <jakub@redhat.com>
2411 * config/i386/i386.md (pushsf_rex64): Use X instead of < constraints
2412 for the first push_operand.
2414 2007-10-31 Revital Eres <eres@il.ibm.com>
2416 * config/rs6000/paired.md (sminv2sf3, smaxv2sf3, reduc_smax_v2sf,
2417 reduc_smin_v2sf vec_interleave_highv2sf, vec_interleave_lowv2sf,
2418 vec_extract_evenv2sf, vec_extract_oddv2sf, reduc_splus_v2sf,
2419 movmisalignv2sf, vcondv2sf): New.
2420 (UNSPEC_INTERHI_V2SF, UNSPEC_INTERLO_V2SF, UNSPEC_EXTEVEN_V2SF,
2421 UNSPEC_EXTODD_V2SF): Define new constants.
2422 * config/rs6000/rs6000-protos.h (paired_expand_vector_move,
2423 paired_emit_vector_cond_expr): New.
2424 * config/rs6000/rs6000-c.c (__PAIRED__): Add new builtin_define.
2425 * config/rs6000/rs6000.c (paired_expand_vector_move,
2426 paired_emit_vector_cond_expr, paired_emit_vector_compare):
2428 * config/rs6000/750cl.h (ASM_CPU_SPEC): Pass down -m750cl option.
2430 2007-10-31 Sebastian Pop <sebastian.pop@amd.com>
2432 PR tree-optimization/32377
2433 * tree-data-ref.c (compute_overlap_steps_for_affine_univar): Make it
2434 work also for unknown number of iterations.
2435 (analyze_subscript_affine_affine): Clean up. Don't fail when the
2436 number of iterations is not known.
2438 2007-10-31 Richard Guenther <rguenther@suse.de>
2441 * fold-const.c (extract_muldiv_1): Make sure to not introduce
2442 new undefined integer overflow.
2443 (fold_binary): Avoid useless conversion.
2445 2007-10-31 Richard Sandiford <rsandifo@nildram.co.uk>
2448 * config/mips/mips.c (mips_fpr_return_fields): Fix SCALAR_TYPE_P check.
2450 2007-10-31 Andreas Krebbel <krebbel1@de.ibm.com>
2452 * config/rs6000/rs6000.opt: Rename -mdfp option to -mhard-dfp.
2454 * config/s390/s390.c: (override_options): Replace
2455 -mhard-dfp/-msoft-dfp with -mhard-dfp/-mno-hard-dfp.
2456 * config/s390/s390.opt: Likewise.
2457 * config/s390/s390.h: Add MASK_HARD_DFP to the TARGET_DEFAULT
2460 2007-10-30 Janis Johnson <janis187@us.ibm.com>
2462 * tree-ssa.c (execute_update_addresses_taken): Initialize update_vops.
2464 2007-10-30 Janis Johnson <janis187@us.ibm.com>
2466 * doc/invoke.texi (Option Summary): Add -fdce and -fdse to list of
2467 optimization options.
2468 (Optimize Options): Add -fdce and -fdse to the list of optimizations
2469 enabled by -O. Document -fdce and -fdse.
2471 2007-10-30 Jakub Jelinek <jakub@redhat.com>
2474 * fold-const.c (fold_binary): If one argument is COMPOUND_EXPR,
2475 convert second operand of COMPOUND_EXPR to the original type of
2478 2007-10-30 Richard Guenther <rguenther@suse.de>
2480 * tree-ssa-operands.c (add_vars_for_offset): Fix exit test
2481 of loop adding SFTs as virtual operands.
2483 2007-10-30 Richard Guenther <rguenther@suse.de>
2485 * Makefile.in (dse.o): Add $(OPTABS_H) and $(RECOG_H) dependencies.
2487 2007-10-29 Dorit Nuzman <dorit@il.ibm.com>
2489 PR tree-optimization/32893
2490 * tree-vectorize.c (vect_can_force_dr_alignment_p): Check
2491 STACK_BOUNDARY instead of PREFERRED_STACK_BOUNDARY.
2493 2007-10-29 Rask Ingemann Lambertsen <rask@sygehus.dk>
2495 * longlong.h (add_ssaaaa): Support Intel asm syntax in i386 and
2497 (sub_ddmmss): Likewise.
2498 (umul_ppmm): Likewise.
2499 (udiv_qrnnd): Likewise.
2501 2007-10-29 Janis Johnson <janis187@us.ibm.com>
2504 * doc/sourcebuild.texi (Test Directives): Document that dg-require
2505 directives must come before dg-additional-sources.
2507 2007-10-29 Jakub Jelinek <jakub@redhat.com>
2509 PR tree-optimization/33723
2510 * c-gimplify.c (c_gimplify_expr): Optimize INIT_EXPR or
2511 MODIFY_EXPR with non-addressable COMPOUND_LITERAL_EXPR as source.
2513 2007-10-29 Richard Sandiford <rsandifo@nildram.co.uk>
2515 PR tree-optimization/33614
2516 * gimplify.c (gimplify_init_constructor): Gimplify vector constructors
2517 if they can't be reduced to VECTOR_CSTs and aren't legitimate
2518 initializer constants.
2520 2007-10-29 Richard Guenther <rguenther@suse.de>
2522 PR tree-optimization/33870
2523 * tree-ssa-operands.c (add_vars_for_offset): Remove mpt_vars parameter.
2524 (add_virtual_operand): Do not recurse into MPTs looking for pointed-to
2527 2007-10-29 Richard Guenther <rguenther@suse.de>
2529 * passes.c (init_optimization_passes): Exchange store_copy_prop
2531 * tree-pass.h (pass_store_copy_prop): Remove.
2532 * tree-ssa-copy.c (do_store_copy_prop): Remove.
2533 (stmt_may_generate-copy): Do not handle store_copy_prop.
2534 (get_copy_of_val): Likewise.
2535 (set_copy_of_val): Likewise.
2536 (copy_prop_visit_assignment): Likewise.
2537 (copy_prop_visit_stmt): Likewise.
2538 (copy_prop_visit_phi_node): Likewise.
2539 (init_copy_prop): Likewise.
2540 (execute_copy_prop): Likewise.
2541 (do_copy_prop): Remove.
2542 (gate_store_copy_prop): Likewise.
2543 (store_copy_prop): Likewise.
2544 (pass_store_copy_prop): Likewise.
2545 (pass_copy_prop): Call execute_copy_prop.
2546 * opts.c (decode_options): Do not set flag_tree_store_copy_prop.
2547 * common.opt (ftree-store-copy-prop): Mark obsolete.
2548 * doc/invoke.texi (ftree-store-copy-prop): Remove documentation.
2550 2007-10-29 Ian Lance Taylor <iant@google.com>
2552 * ifcvt.c (noce_can_store_speculate_p): New static function.
2553 (noce_process_if_block): Call it.
2554 (if_convert): Remove recompute_dominance parameter. Change all
2557 2007-10-29 Richard Guenther <rguenther@suse.de>
2559 * tree-flow-inline.h (get_subvar_at): Use binary search.
2560 (get_first_overlapping_subvar): New function to binary search
2561 for the first overlapping subvar.
2562 * tree-ssa-operands.c (add_vars_for_offset): Strip down to
2563 just handle adding subvars for a pointed-to subvar. Optimize
2564 and use get_first_overlapping_subvar.
2565 (add_vars_for_bitmap): Fold into single caller.
2566 (add_virtual_operand): Streamline, inherit add_vars_for_bitmap
2567 and non pointed-to bits of add_vars_for_offset.
2569 2007-10-29 Revital Eres <eres@il.ibm.com>
2571 * modulo-sched.c (sms_schedule): Add DF_UD_CHAIN problem.
2573 2007-10-29 Razya Ladelsky <razya@il.ibm.com>
2574 Zdenek Dvorak <ook@ucw.cz>
2577 reduction support for automatic parallelization.
2579 * expr.c (expand_expr_real_1): Add cases for OMP_ATOMIC_LOAD,
2581 * Makefile.in: Add dependencies to expr.o, tree-parloops.o, omp-low.o
2582 * tree-pretty-print.c (dump_generic_node): Add OMP_ATOMIC_LOAD
2583 and OMP_ATOMIC_STORE.
2584 * tree.h (OMP_DIRECTIVE_P): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
2585 * gimple-low.c (lower_stmt): Same.
2586 * gimplify.c (gimplify_expr): Same.
2587 (gimplify_omp_atomic_fetch_op, gimplify_omp_atomic_pipeline,
2588 gimplify_omp_atomic_mutex): Remove.
2589 (gimplify_omp_atomic): Change it to simply gimplify the
2590 statement instead of expanding it.
2591 * omp-low.c: Add includes to optabs.h, cfgloop.h.
2592 (expand_omp_atomic, expand_omp_atomic_pipeline,
2593 goa_stabilize_expr, expand_omp_atomic_mutex,
2594 expand_omp_atomic_fetch_op): New functions to implement
2595 expansion of OMP_ATOMIC.
2596 (expand_omp, build_omp_regions_1): Add support for
2597 OMP_ATOMIC_LOAD/OMP_ATOMIC_STORE.
2598 * tree-cfg.c (make_edges): add case for OMP_ATOMIC_LOAD,
2600 * tree-gimple.c (is_gimple_stmt): Add OMP_ATOMIC_LOAD,
2602 * tree-parloops.c: add include to tree-vectorizer.h.
2603 (reduction_info): New structure for reduction.
2604 (reduction_list): New list to represent list of reductions per loop.
2605 (struct data_arg): New helper structure for reduction.
2606 (reduction_info_hash, reduction_info_eq, reduction_phi,
2607 initialize_reductions, create_call_for_reduction,
2608 create_phi_for_local_result, create_call_for_reduction_1,
2609 create_loads_for_reductions, create_final_loads_for_reduction):
2611 (loop_parallel_p): Identify reductions, add reduction_list parameter.
2612 (separate_decls_in_loop_name): Support reduction variables.
2613 (separate_decls_in_loop): Add reduction_list and ld_st_data arguments,
2614 call create_loads_for_reduction for each reduction.
2615 (canonicalize_loop_ivs): Identify reductions, add reduction_list
2617 (transform_to_exit_first_loop): Add reduction support, add
2618 reduction_list parameter.
2619 (gen_parallel_loop): Add reduction_list parameter. Add call
2620 separate_decls_in_loop with
2621 the new argument. Traverse reductions and call
2622 initialize_reductions, create_call_for_reduction.
2623 (parallelize_loops): Create and delete the reduction list.
2624 (add_field_for_name): Change use of data parameter. Add fields for
2626 * tree-vectorizer.h (vect_analyze_loop_form): Add declaration.
2627 * tree-vect-analyze.c (vect_analyze_loop_form): export it.
2628 * tree.def: Add definitions for OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
2629 * tree-inline.c (estimate_num_insns_1): add cases for
2630 OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
2631 * tree-cfg.c (make_edges): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
2632 * tree-ssa-operands.c (get_addr_dereference_operands):
2633 New function. Subroutine of get_indirect_ref_operands.
2634 (get_indirect_ref_operands): Call get_addr_dereference_operands.
2635 (get_expr_operands): Support OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
2638 2007-10-29 Hans-Peter Nilsson <hp@axis.com>
2640 * config/cris/cris.c: Include df.h.
2641 (cris_address_cost): Add gcc_assert for canonicalization
2642 assumptions. For PLUS with MULT or register, correct
2643 test for register in other arm. Tweak comments.
2645 2007-10-28 Richard Guenther <rguenther@suse.de>
2647 * tree-ssa-operands.c (add_vars_for_offset): Add parameter
2648 telling if the var is to be treated as points-to location.
2649 (add_vars_for_bitmap): Pass true to add_vars_for_offset.
2650 (add_virtual_operand): Only recurse into MPTs if aliases
2653 2007-10-28 Richard Guenther <rguenther@suse.de>
2655 * tree-ssa-operands.c (add_vars_for_offset): Clean and speed up.
2656 (add_vars_for_bitmap): Do not recurse further. Only add vars
2657 for pointed-to SFTs.
2658 (add_virtual_operand): Re-instantiate loop to add operands for
2659 aliases. Recurse into MPTs.
2660 (get_indirect_ref_operands): If we fall back to use a pointers
2661 SMT, make sure to not prune based on the access offset and size.
2663 2007-10-28 Andrew Pinski <pinskia@gmail.com>
2666 * tree-outof-ssa.c (rewrite_trees): If the statement changed, cleanup
2667 the eh information on the statement.
2669 2007-10-28 Richard Guenther <rguenther@suse.de>
2671 * tree-flow.h (subvar_t): Make it a VEC.
2672 (struct subvar): Remove.
2673 (struct var_ann_d): Use VEC(tree,gc) to store subvars.
2674 * tree-flow-inline.h (get_subvar_at): Adjust iterators over
2676 * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
2677 * tree-nrv.c (dest_safe_for_nrv_p): Likewise.
2678 * tree-ssa-alias.c (mark_aliases_call_clobbered): Likewise.
2679 (set_initial_properties): Likewise.
2680 (setup_pointers_and_addressables): Likewise.
2681 (new_type_alias): Likewise.
2682 (create_overlap_variables_for): Likewise.
2683 * tree-dfa.c (dump_subvars_for): Likewise.
2684 * tree-ssa-operands.c (add_vars_for_offset): Likewise.
2685 (get_expr_operands): Likewise.
2686 (add_to_addressable_set): Likewise.
2687 * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
2689 2007-10-28 Uros Bizjak <ubizjak@gmail.com>
2691 PR tree-optimization/33920
2692 * tree-if-conv.c (tree_if_conversion): Force predicate of single
2693 successor bb to true when predecessor bb has NULL predicate.
2694 (find_phi_replacement_condition): Assert that tmp_cond is non-null.
2696 2007-10-28 Richard Sandiford <rsandifo@nildram.co.uk>
2698 * config/mips/mips.md: Add combiner patterns for DImode extensions
2699 of HImode and QImode truncations. Reformat HImode <- QImode pattern
2702 2007-10-28 Richard Sandiford <rsandifo@nildram.co.uk>
2705 * config/mips/mips.c (mips_output_dwarf_dtprel): Add ATTRIBUTE_UNUSED.
2707 2007-10-28 Andreas Krebbel <krebbel1@de.ibm.com>
2709 * dce.c (delete_unmarked_insns): Just delete the RETVAL and
2710 LIBCALL notes if they are about to be moved to the same insn.
2712 2007-10-27 Richard Guenther <rguenther@suse.de>
2714 PR tree-optimization/33870
2715 * tree-ssa-operands.c (add_vars_for_offset): Reduce code
2716 duplication. Remove redundant call to access_can_touch_variable.
2717 (add_vars_for_bitmap): New helper for recursing over MPT contents.
2718 (add_virtual_operand): Use it.
2720 2007-10-26 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
2723 * pa.h (ASM_PN_FORMAT): Delete define.
2725 2007-10-26 Janis Johnson <janis187@us.ibm.com>
2727 * doc/invoke.texi (Option Summary, optimizations): Remove
2728 -fbounds-check. Add -fassociative-math, -freciprocal-math,
2729 -ftree-vrp and -funit-at-a-time. Change -fno-split-wide-types to
2730 -fsplit-wide-types to match later entry. Break up a long line.
2731 (Option Summary, code gen options) Add -fno-stack-limit. Add
2732 missing @gol to the end of a line.
2733 (Optimization Options): Remove -fbounds-check, which is also
2734 documented under Code Generation Options. Remove =n from
2735 index entry for -ftree-parallelize-loops. Change -fno-cprop-registers
2736 to -fcprop-registers to match other options, and say when it is
2737 enabled rather than disabled. Remove extra index entry for
2738 -fno-cx-limited-range. Add index entries for -fstack-protector
2739 and -fstack-protector-all.
2740 (Code Gen Options): Add index entry for -ftls-model.
2742 2007-10-26 Anatoly Sokolov <aesok@post.ru>
2744 * config/avr/avr.c (avr_OS_task_function_p): Add new function.
2745 (avr_regs_to_save): Handle functions with 'OS_task' attribute.
2746 (avr_simple_epilogue, expand_prologue, avr_asm_function_end_prologue,
2747 expand_epilogue, output_movhi): Don't handle 'main' function.
2748 (avr_attribute_table): Add 'OS_task' function attribute.
2749 * config/avr/avr.h (machine_function): Remove 'is_main' field, add
2751 * config/avr/avr.md (return_from_main_epilogue): Remove insn.
2752 (return_from_epilogue, return_from_interrupt_epilogue): Don't handle
2754 * config/avr/avr.opt (minit-stack): Remove.
2756 2007-10-26 Eric Botcazou <ebotcazou@adacore.com>
2758 * tree-nested.c (get_trampoline_type): Fix thinko.
2760 2007-10-26 Douglas Gregor <doug.gregor@gmail.com>
2763 * tree.c (build_offset_type): Build canonical type based on the
2764 TYPE_MAIN_VARIANT of the base type.
2766 2007-10-26 Daniel Jacobowitz <dan@codesourcery.com>
2768 * reorg.c (emit_delay_sequence): Move insn locator from the
2769 first insn to the sequence.
2771 2007-10-26 Samuel Tardieu <sam@rfc1149.net>
2773 * ipa-pure-const.c (check_decl): Return immediately when
2774 pure_const_state has been set to IPA_NEITHER.
2776 2007-10-25 Ira Rosen <irar@il.ibm.com>
2778 PR tree-optimization/33833
2779 * tree-vect-analyze.c (vect_analyze_data_refs): Use POINTER_PLUS_EXPR
2780 and convert init to sizetype in inner_base construction.
2782 2007-10-25 Richard Guenther <rguenther@suse.de>
2784 * tree-flow.h (mem_sym_stats): Remove.
2785 (dump_mem_sym_stats_for_var): Declare.
2786 * tree-dfa.c (dump_variable): Call dump_mem_sym_stats_for_var.
2787 (mem_sym_stats): Move ...
2788 * tree-ssa-alias.c (mem_sym_stats): ... here and make it static.
2789 (mem_sym_score): Rename from ...
2790 (pscore): ... this. Remove.
2791 (dump_mem_sym_stats_for_var): New function. Dump the score, but
2792 not the frequencies.
2793 (compare_mp_info_entries): Make sort stable by disambiguating
2796 2007-10-25 Ira Rosen <irar@il.ibm.com>
2798 PR tree-optimization/33866
2799 * tree-vect-transform.c (vectorizable_store): Check operands of all
2800 the stmts in the group of strided accesses. Get def stmt type for each
2801 store in the group and pass it to vect_get_vec_def_for_stmt_copy ().
2803 2007-10-25 Uros Bizjak <ubizjak@gmail.com>
2805 * config/i386/constraints.md (Y0): Rename register constraint to Yz.
2806 (Yt): Rename register constraint to Y2.
2807 * config/i386/sse.md: Use renamed register constraints.
2808 * config/i386/mmx.md: Ditto.
2809 * config/i386/i386.md: Ditto.
2811 2007-10-25 Rask Ingemann Lambertsen <rask@sygehus.dk>
2813 * config/i386/i386.md (*dummy_extendsfdf2): Fix operand 1 constraint.
2815 2007-10-24 Chao-ying Fu <fu@mips.com>
2817 * dwarf2out.c (base_type_die): Use DW_ATE_unsigned_fixed or
2818 DW_ATE_signed_fixed to describe FIXED_POINT_TYPE.
2820 2007-10-24 Samuel Tardieu <sam@rfc1149.net>
2821 Olga Golovanevsky <olga@il.ibm.com>
2823 * ipa-struct-reorg.c (replace_field_acc): Make it clear to
2824 the compiler that wr.wrap and wr.domain are initialized in
2827 2007-10-24 Samuel Tardieu <sam@rfc1149.net>
2829 * ipa-struct-reorg.c (sum_counts): Use HOST_WIDEST_PRINT_DEC
2830 to print gcov_type values.
2832 2007-10-24 Eric B. Weddington <eweddington@cso.atmel.com>
2834 * config/avr/avr.h: Do not include progmem_section definition when
2835 building with IN_TARGET_LIBS.
2837 2007-10-24 Richard Sandiford <rsandifo@nildram.co.uk>
2840 * config/mips/mips.c (mips_lo_sum_offset): New structure.
2841 (mips_hash_base, mips_lo_sum_offset_hash, mips_lo_sum_offset_eq)
2842 (mips_lo_sum_offset_lookup, mips_record_lo_sum)
2843 (mips_orphaned_high_part_p: New functions.
2844 (mips_avoid_hazard): Don't check INSN_P here.
2845 (mips_avoid_hazards): Rename to...
2846 (mips_reorg_process_insns): ...this. Cope with
2847 !TARGET_EXPLICIT_RELOCS. Delete orphaned high-part relocations,
2848 or turn them into nops.
2849 (mips_reorg): Remove TARGET_EXPLICIT_RELOCS check from calls to
2850 dbr_schedule and mips_avoid_hazards/mips_reorg_process_insns.
2851 (mips_set_mips16_mode): Don't set flag_delayed_branch here.
2852 (mips_override_options): Set flag_delayed_branch to 0.
2854 2007-10-24 Richard Sandiford <rsandifo@nildram.co.uk>
2856 * config/mips/mips.h (MOVE_MAX): Use UNITS_PER_WORD and describe
2857 MIPS-specific implementation details.
2858 (MIPS_MAX_MOVE_BYTES_PER_LOOP_ITER): New macro.
2859 (MIPS_MAX_MOVE_BYTES_STRAIGHT): Likewise.
2860 (MOVE_RATIO): Define to MIPS_MAX_MOVE_BYTES_STRAIGHT / UNITS_PER_WORD
2861 for targets with movmemsi.
2862 (MOVE_BY_PIECES_P): Define.
2863 * config/mips/mips.c (MAX_MOVE_REGS, MAX_MOVE_BYTES): Delete.
2864 (mips_block_move_loop): Add a bytes_per_iter argument.
2865 (mips_expand_block_move): Use MIPS_MAX_MOVE_BYTES_STRAIGHT.
2866 Update call to mips_block_move_loop.
2868 2007-10-24 Michael Matz <matz@suse.de>
2871 * var-tracking.c (variable_union): Don't break after one loop
2872 iteration but only when a difference is found.
2873 (dump_variable): Also print DECL_UID.
2875 2007-10-24 Olga Golovanevsky <olga@il.ibm.com>
2877 * ipa-type-escape.h: Expose function
2878 is_array_access_through_pointer_and_index.
2880 (is_array_access_through_pointer_and_index):
2881 Add three new parameters. Add support of
2882 POINTER_PLUS_EXPR tree code.
2884 2007-10-24 Olga Golovanevsky <olga@il.ibm.com>
2886 * ipa-struct-reorg.c, ipa-struct-reorg.h: New files.
2887 * tree-pass.h: Add pass_ipa_struct_reorg.
2888 * common.opt: Add ipa-struct-reorg flag.
2889 * Makefile.in: Add ipa-strcut-reorg.o compilation.
2890 * passes.c: Add pass pass_ipa_struct_reorg.
2891 * params.h: Add STRUCT_REORG_COLD_STRUCT_RATIO.
2892 * params.def: Add PARAM_STRUCT_REORG_COLD_STRUCT_RATIO.
2894 2007-10-24 Ira Rosen <irar@il.ibm.com>
2896 PR tree-optimization/33804
2897 * tree-vect-transform.c (vectorizable_operation): Remove the
2898 checks that the vectorization is worthwhile from the transformation
2901 2007-10-24 Ira Rosen <irar@il.ibm.com>
2903 * tree-vect-analyze.c (vect_build_slp_tree): Return false if
2904 vectype cannot be determined for the scalar type.
2905 (vect_analyze_slp_instance): Likewise.
2906 * tree-vect-transform.c (vect_model_reduction_cost): Change the
2907 return type to bool. Return false if vectype cannot be determined
2908 for the scalar type.
2909 (vect_get_constant_vectors): Return false if vectype cannot be
2910 determined for the scalar type.
2911 (get_initial_def_for_induction, vect_get_vec_def_for_operand,
2912 get_initial_def_for_reduction, vect_create_epilog_for_reduction,
2913 vectorizable_reduction): Likewise.
2915 2007-10-23 Craig Rodrigues <rodrigc@gcc.gnu.org>
2917 * config.gcc: For a FreeBSD target, parse the value of ${target}
2918 to determine the value of FBSD_MAJOR, instead of adding an
2919 explicit check for every possible FreeBSD major version.
2921 2007-10-23 Uros Bizjak <ubizjak@gmail.com>
2923 PR rtl-optimization/33846
2924 * combine.c (simplify_shift_const_1) [NOT]: Skip vector modes.
2926 2007-10-23 Dorit Nuzman <dorit@il.ibm.com>
2928 PR tree-optimization/33860
2929 * tree-vect-transform.c (vect_analyze_data_ref_access): Don't allow
2930 interleaved accesses in case the dr is inside the inner-loop during
2931 outer-loop vectorization.
2933 2007-10-23 Eric Botcazou <ebotcazou@libertysurf.fr>
2935 * doc/rtl.texi (Flags): Fix MEM_SCALAR_P entry.
2936 Document MEM_POINTER. Replace mentions of "integrated"
2937 field with "return_val". Delete outdated stuff.
2939 2007-10-23 David Edelsohn <edelsohn@gnu.org>
2941 * config/rs6000/rs6000.c (rs6000_override_options): Set
2942 rs6000_altivec_abi on AIX.
2943 (conditional_register_usage): Set VR20:31 fixed on AIX.
2945 2007-10-23 Richard Guenther <rguenther@suse.de>
2947 * alias.c (get_alias_set): For INDIRECT_REFs, deal with
2950 2007-10-22 Seongbae Park <seongbae.park@gmail.com>
2951 David S. Miller <davem@davemloft.net>
2953 * df-scan.c (df_get_call_refs): Mark global registers as both a
2954 DF_REF_REG_USE and a non-clobber DF_REF_REG_DEF.
2956 2007-10-22 Dorit Nuzman <dorit@il.ibm.com>
2958 PR tree-optimization/33834
2959 PR tree-optimization/33835
2960 * tree-vect-analyze.c (vect_analyze_operations): RELEVANT and LIVE
2961 stmts need to be checked for success seperately.
2962 * tree-vect-transform.c (vectorizable_call, vectorizable_conversion):
2963 Remove the check that stmt is not LIVE.
2964 (vectorizable_assignment, vectorizable_induction): Likewise.
2965 (vectorizable_operation, vectorizable_type_demotion): Likewise.
2966 (vectorizable_type_promotion, vectorizable_load, vectorizable_store):
2968 (vectorizable_live_operation): Check that op is not NULL.
2970 2007-10-22 Janis Johnson <janis187@us.ibm.com>
2972 * doc/invoke.texi (Optimization Options): In the summary, show
2973 that the value for options -falign-jumps, -falign-labels,
2974 -falign-loops, -falign-functions, -fsched-stalled-insns, and
2975 -fsched-stalled-insns-dep is optional. In the summary, show that
2976 -fsched-stalled-insns takes an optional argument and that
2977 -fparallelize-loops takes an argument. Add opindex for several
2978 optimization options, and fix typos in the opindex commands for
2979 several others. In the descriptions for -fsched-stalled-insns
2980 and -fsched-stalled-insns-dep, show the options with and without
2983 2007-10-22 Eric B. Weddington <eweddington@cso.atmel.com>
2985 * config/avr/avr.c (avr_mcu_types): Remove ATmega603 which was never
2987 * config/avr/avr.h (LINK_SPEC): Likewise.
2988 (CRT_BINUTILS_SPECS): Likewsie.
2989 * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2991 2007-10-22 Eric Botcazou <ebotcazou@libertysurf.fr>
2993 PR rtl-optimization/33644
2994 * cfgcleanup.c: Do not include dce.h.
2995 * cfgrtl.c (delete_insn_chain_and_edges): Resurrect.
2996 * combine.c (distribute_notes): Delete REG_LIBCALL_ID case.
2997 * dce.c (something_changed): Delete.
2998 (libcall_dead_p): New predicate.
2999 (delete_unmarked_insns): Use it to delete dead libcalls.
3000 Deal with REG_LIBCALL and REG_RETVAL notes.
3001 (prescan_libcall_for_dce): New function.
3002 (prescan_insns_for_dce): Use it to deal with libcalls.
3003 (mark_reg_dependencies): Do nothing special for libcalls.
3004 (dce_process_block): Likewise.
3005 (fast_dce): Delete unused local variable.
3006 (run_fast_dce): Do not return a value.
3007 * dce.h (struct df): Delete.
3008 (run_fast_dce): Adjust prototype.
3009 * optabs.c (libcall_id): Delete.
3010 (maybe_encapsulate_block): Do not emit REG_LIBCALL_ID notes.
3011 (emit_no_conflict_block): Do not look for REG_LIBCALL_ID notes.
3012 * reload1.c (reload): Delete REG_LIBCALL_ID case.
3013 * rtl.h (delete_insn_chain_and_edges): Resurrect prototype.
3014 * see.c (see_update_relevancy): Look for REG_LIBCALL and REG_RETVAL
3015 notes instead of REG_LIBCALL_ID notes.
3016 * reg-notes.def (LIBCALL_ID): Delete.
3017 * Makefile.in (see.o): Add dce.h dependency.
3018 (cfgcleanup.o): Remove dce.h dependency.
3020 2007-10-22 Michael Matz <matz@suse.de>
3022 PR tree-optimization/33855
3023 * tree-ssa-phiopt.c (cond_store_replacement): Handle COMPLEX_TYPE
3026 2007-10-22 Ira Rosen <irar@il.ibm.com>
3028 PR tree-optimization/33854
3029 * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
3030 FLOAT_EXPR to the list of promotion operations.
3032 2007-10-22 Rask Ingemann Lambertsen <rask@sygehus.dk>
3036 * config/i386/i386.c (output_pic_addr_const): Support Intel asm syntax.
3037 (print_reg): Print register prefix only with AT&T asm syntax.
3038 Support pc_rtx for RIP register.
3039 (print_operand_address): Use print_reg()'s pc_rtx support for RIP
3040 relative addressing. Always print segment register prefix with AT&T
3041 asm syntax and never with Intel asm syntax.
3042 (print_operand): Suppress 'XXX PTR' prefix for BLKmode operands.
3043 Fix prefix for 16-byte XFmode operands.
3044 (output_addr_const_extra): Support Intel asm syntax.
3045 (x86_file_start): Don't use register prefix with Intel asm syntax.
3046 * config/i386/i386.md ("*zero_extendqihi2_movzbl"): Fix typo.
3047 ("return_internal_long"): Fix Intel asm syntax output.
3048 ("set_got_rex64"): Support Intel asm syntax.
3049 ("set_rip_rex64"): Likewise.
3050 ("set_got_offset_rex64"): Likewise.
3051 ("*sibcall_1_rex64_v"): Print register prefix only with AT&T asm
3053 ("*tls_global_dynamic_64"): Likewise.
3054 ("*tls_local_dynamic_base_64"): Likewise.
3055 ("*load_tp_si")("*load_tp_di"): Likewise.
3056 ("*add_tp_si")("*add_tp_di"): Likewise.
3057 ("*tls_dynamic_lea_64"): Likewise.
3058 ("*sibcall_value_1_rex64_v"): Likewise.
3059 ("stack_tls_protect_set_si"): Likewise.
3060 ("stack_tls_protect_set_di"): Likewise.
3061 ("stack_tls_protect_test_si"): Likewise.
3062 ("stack_tls_protect_test_di"): Likewise.
3063 * config/i386/mmx.md ("*mov<mode>_internal_rex64"): Fix Intel asm
3065 ("*movv2sf_internal_rex64"): Likewise.
3066 * config/i386/cpuid.h (__cpuid): Support Intel asm syntax.
3067 (__get_cpuid_max): Likewise.
3069 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3071 * config/mips/mips-protos.h (mips_regno_mode_ok_for_base_p): Give
3072 the STRICT_P argument type "bool" rather than "int".
3073 (mips_legitimate_address_p): Likewise.
3074 (fp_register_operand, lo_operand): Delete.
3075 (mips_subword): Give the HIGH_P argument type "bool" rather than "int".
3076 (mips_emit_scc): Rename to...
3077 (mips_expand_scc): ...this.
3078 (gen_conditional_branch): Rename to...
3079 (mips_expand_conditional_branch): ...this.
3080 (gen_conditional_move): Rename to...
3081 (mips_expand_conditional_move): ...this.
3082 (mips_gen_conditional_trap): Rename to...
3083 (mips_expand_conditional_trap): ...this and take an rtx code instead
3084 of an operands array.
3085 (mips_expand_call): Give the SIBCALL_P argument type "bool"
3087 (mips_emit_fcc_reload): Rename to...
3088 (mips_expand_fcc_reload): ...this.
3089 (init_cumulative_args): Rename to...
3090 (mips_init_cumulative_args): ...this and remove the libname argument.
3091 (function_arg_advance): Rename to...
3092 (mips_function_arg_advance): ...this.
3093 (function_arg): Rename to...
3094 (mips_function_arg): ...this and use "rtx" instead of
3096 (function_arg_boundary): Rename to...
3097 (mips_function_arg_boundary): ...this.
3098 (mips_expand_unaligned_load): Rename to...
3099 (mips_expand_ext_as_unaligned_load): ...this and give the WIDTH
3100 and BITPOS arguments type "HOST_WIDE_INT".
3101 (mips_expand_unaligned_store): Rename to...
3102 (mips_expand_ins_as_unaligned_store): ...this and give the WIDTH
3103 and BITPOS arguments type "HOST_WIDE_INT".
3104 (override_options): Rename to...
3105 (mips_override_options): ...this.
3106 (print_operand): Rename to...
3107 (mips_print_operand): ...this.
3108 (print_operand_address): Rename to...
3109 (mips_print_operand_address): ...this.
3110 (mips_output_ascii): Remove the PREFIX argument.
3111 (mips_expand_epilogue): Give the SIBCALL_P argument type "bool"
3113 (mips_can_use_return_insn): Return a "bool" rather than an "int".
3114 (mips_function_value): Remove the FUNC argument. Use "rtx" instead
3115 of "struct rtx_def *".
3116 (mips_secondary_reload_class): Give the IN_P argument type "bool"
3118 (build_mips16_call_stub): Delete.
3119 (mips_store_data_bypass_p): Return a "bool" rather than an "int".
3120 (mips_use_ins_ext_p): Give the second and third arguments type
3121 "HOST_WIDE_INT" rather than "rtx".
3122 * config/mips/mips.h: Update after the above changes. Tweak comments
3124 (SECONDARY_INPUT_RELOAD_CLASS): Pass a boolean IN_P argument.
3125 (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
3126 (mips_print_operand_punct, mips_hard_regno_mode_ok): Change the
3127 element type from "char" to "bool".
3128 (mips_section_threshold, sym_lineno, set_noat, mips_branch_likely)
3129 (mips_cpu_info_table): Delete.
3130 * config/mips/mips.md: Update after the above changes. Tweak some
3132 * config/mips/mips-ps-3d.md: Likewise.
3133 * config/mips/mips.c: Tweak comments and formatting.
3134 Use NULL-like macros rather than 0 in various places.
3135 (mips_section_threshold): Rename to...
3136 (mips_small_data_threshold): ...this and give it an unsigned type.
3137 (num_source_filenames): Remove explicit initialization.
3138 (sdb_label_count): Likewise.
3139 (sym_lineno): Delete.
3140 (set_noat): Make static.
3141 (mips_branch_likely): Likewise, and give it type "bool".
3142 (mips_isa_info): Rename to...
3143 (mips_isa_option_info): ...this.
3144 (mips_flag_delayed_branch): Rename to...
3145 (mips_base_delayed_branch): ...this.
3146 (mips_split_addresses): Delete.
3147 (mips_print_operand_punct, mips_hard_regno_mode_ok): Change the
3148 element type from "char" to "bool".
3149 (mips_regno_to_class): Add an explicit array size.
3150 (mips16_flipper): Change from type "int" to type "bool".
3151 (mips_comp_type_attributes): Remove redundant FUNCTION_TYPE check.
3152 (mips_tls_operand_p): Rename to...
3153 (mips_tls_symbol_p): ...this.
3154 (mips_global_symbol_p): Remove redundant "const".
3155 (mips_offset_within_alignment_p): Simplify.
3156 (mips_regno_mode_ok_for_base_p): Change the name of the last argument
3157 to STRICT_P and give it type bool.
3158 (mips_valid_base_register_p): Likewise.
3159 (mips_classify_address): Likewise.
3160 (mips_legitimate_address_p): Likewise.
3161 (mips16_unextended_reference_p): Take the offset as an
3162 "unsigned HOST_WIDE_INT" rather than an "rtx". Simplify.
3163 (mips_const_insns): Use IN_RANGE.
3164 (mips_force_temporary): Remove an unnecessary copy_rtx.
3165 (mips16_gp_pseudo_reg): Simplify.
3166 (mips_split_symbol): Remove an unnecessary copy_rtx.
3167 (mips_legitimize_tls_address): Only create registers if we need them.
3168 (mips_legitimize_address): Use mips_split_plus.
3169 (mips_move_integer): Swap DEST and TEMP arguments. Rename local
3170 variable COST to NUM_OPS.
3171 (mips_legitimize_move): Use gen_lowpart.
3172 (mips_rewrite_small_data): Rename the OP parameter to PATTERN.
3173 (m16_check_op): Use IN_RANGE.
3174 (mips_subword): Give the HIGH_P argument type "bool" rather than "int".
3175 (mips_split_doubleword_move): Pass booleans to mips_subword.
3176 (mips_output_move): Store the mode in a local variable.
3177 Explicitly assert that this function does not deal with
3178 MFLO and MFHI. Use SMALL_OPERAND_UNSIGNED. Make order of
3179 cases more consistent.
3180 (mips_relational_operand_ok_p): Rename to...
3181 (mips_int_order_operand_ok_p): ...this.
3182 (mips_canonicalize_comparison): Rename to...
3183 (mips_canonicalize_int_order_test): ...this.
3184 (mips_emit_int_relational): Rename to...
3185 (mips_emit_int_order_test): ...this. Store the mode in a local
3187 (mips_reverse_fp_cond_p): Rename to...
3188 (mips_reversed_fp_cond): ...this.
3189 (mips_emit_compare): Make the order of the statements more consistent.
3190 (mips_emit_scc): Rename to...
3191 (mips_expand_scc): ...this.
3192 (gen_conditional_branch): Rename to...
3193 (mips_expand_conditional_branch): ...this.
3194 (gen_conditional_move): Rename to...
3195 (mips_expand_conditional_move): ...this. Build the condition
3196 separately from the main pattern.
3197 (mips_gen_conditional_trap): Rename to...
3198 (mips_expand_conditional_trap): ...this and take an rtx code instead
3199 of an operands array. Simplify.
3200 (init_cumulative_args): Rename to...
3201 (mips_init_cumulative_args): ...this. Use memset rather than a
3202 copy from a zeroed static. Use prototype_p and stdarg_p.
3203 (mips_arg_info): Rename to...
3204 (mips_get_arg_info): ...this and put the INFO argument first.
3205 (function_arg): Rename to...
3206 (mips_function_arg): ...this and use "rtx" instead of
3207 "struct rtx_def *". Only split structures into chunks if
3208 TARGET_HARD_FLOAT, rather than checking !TARGET_SOFT_FLOAT on
3209 a chunk-by-chunk basis. Use SCALAR_FLOAT_TYPE_P instead of a
3210 comparison with REAL_TYPE. Rename local variable REG to REGNO
3211 and make it unsigned.
3212 (function_arg_advance): Rename to...
3213 (mips_function_arg_advance): ...this.
3214 (function_arg_boundary): Rename to...
3215 (mips_function_arg_boundary): ...this.
3216 (mips_pad_arg_upward): Use SCALAR_INT_MODE_P instead of a comparison
3218 (mips_fpr_return_fields): Use SCALAR_FLOAT_TYPE_P instead of a
3219 comparison with REAL_TYPE.
3220 (mips_function_value): Remove the FUNC argument. Rename local
3221 variable UNSIGNEDP to UNSIGNED_P.
3222 (mips_return_in_memory): Use IN_RANGE.
3223 (mips_setup_incoming_varargs): Pass a boolean rather than an int
3224 to FUNCTION_ARG_ADVANCE.
3225 (mips_gimplify_va_arg_expr): Rename local variable INDIRECT
3226 to INDIRECT_P. Remove a redundant mips_abi check. Only calculate
3227 SIZE and RSIZE if needed.
3228 (mips16_stub): Rename FPRET to FP_RET_P and give it type "bool"
3230 (build_mips16_function_stub): Rename to...
3231 (mips16_build_function_stub): ...this.
3232 (build_mips16_call_stub): Rename to...
3233 (mips16_build_call_stub): ...this. Make static, and return a
3234 "bool" rather than an "int". Rename the ARG_SIZE argument to
3235 ARGS_SIZE. Rename the local variable FPRET to FP_RET_P and give
3236 it type "bool". Use "jr" rather than "j". Use XNEW. Simplify.
3237 (mips_load_call_address): Give the SIBCALL_P argument type "bool"
3239 (mips_expand_call): Likewise. Assert that MIPS16 calls via stubs
3240 are not sibling ones.
3241 (mips_emit_fcc_reload): Rename to...
3242 (mips_expand_fcc_reload): ...this.
3243 (mips_get_unaligned_mem): Give the WIDTH and BITPOS arguments type
3245 (mips_expand_unaligned_load): Rename to...
3246 (mips_expand_ext_as_unaligned_load): ...this and give the WIDTH
3247 and BITPOS arguments type "HOST_WIDE_INT". Remove redundant
3249 (mips_expand_unaligned_store): Rename to...
3250 (mips_expand_ins_as_unaligned_store): ...this and give the WIDTH
3251 and BITPOS arguments type "HOST_WIDE_INT".
3252 (mips_use_ins_ext_p): Rename second and third arguments to WIDTH
3253 and BITPOS and give them type "HOST_WIDE_INT" rather than "rtx".
3255 (mips_init_split_addresses): Replace with...
3256 (mips_split_addresses_p): ...this new function.
3257 (mips_init_relocs): Check mips_split_addresses_p () rather than
3258 mips_split_addresses. Always initialize mips_split_p with booleans.
3259 (print_operand_reloc): Rename to...
3260 (mips_print_operand_reloc): ...this. Use a gcc_assert rather than
3262 (print_operand): Rename to...
3263 (mips_print_operand): ...this.
3264 (print_operand_address): Rename to...
3265 (mips_print_operand_address): ...this. Use GP_REG_FIRST.
3266 (mips_in_small_data_p): Simplify.
3267 (mips_output_ascii): Remove the PREFIX argument and "register"
3268 keywords. Use the STRING parameter directly and cast to
3270 (mips16e_collect_argument_save_p): Use IN_RANGE.
3271 (mips_function_has_gp_insn): Simplify.
3272 (mips_set_return_address): Use BITSET_P.
3273 (mips_restore_gp): Use a separate statement to pick the base
3275 (mips_output_function_prologue): Use a local FRAME variable.
3276 (mips_save_reg): Pass booleans to mips_subword.
3277 (mips_expand_prologue): Use a local FRAME variable. Use
3278 cprestore_size to detect when .cprestore is needed.
3279 (mips_restore_reg): Use GP_REG_FIRST.
3280 (mips_expand_epilogue): Give the SIBCALL_P argument type "bool"
3281 rather than "int". Use local FRAME and REGNO variables.
3282 (mips_can_use_return_insn): Return a "bool" rather than an "int".
3283 (mips_secondary_reload_class): Give the IN_P argument type "bool"
3285 (mips_linked_madd_p): Rename arguments to OUT_INSN and IN_INSN.
3286 (mips_store_data_bypass_p): Return a "bool" rather than an "int".
3287 (vr4130_swap_insns_p): Rename local variables to DEP1_P and DEP2_P.
3288 (mips_74k_agen_init): Assume INSN satisfies USEFUL_INSN_P.
3289 (mips_variable_issue): Do nothing unless INSN satisfies USEFUL_INSN_P.
3290 (builtin_description): Rename to...
3291 (mips_builtin_description): ...this.
3292 (mips_bdesc): Rename to...
3293 (mips_ps_bdesc): ...this.
3294 (sb1_bdesc): Rename to...
3295 (mips_sb1_bdesc): ...this.
3296 (dsp_bdesc): Rename to...
3297 (mips_dsp_bdesc): ...this.
3298 (dsp_32only_bdesc): Rename to...
3299 (mips_dsp_32only_bdesc): ...this.
3300 (bdesc_map): Rename to...
3301 (mips_bdesc_map): ...this.
3302 (bdesc_arrays): Rename to...
3303 (mips_bdesc_arrays): ...this.
3304 (mips_prepare_builtin_arg): Rename OP to OPNO and ARGNUM to ARGNO.
3305 Tweak error message.
3306 (mips_expand_builtin_direct): Rename HAS_TARGET to HAS_TARGET_P.
3307 Rename local variables I and J to OPNO and ARGNO respectively.
3308 Assert that the number of arguments is no more than the number of
3310 (mips_expand_builtin_compare): Use an array of arguments rather
3311 than an array of operands. Assert that the number of operands is
3313 (add_constant): Rename to...
3314 (mips16_add_constant): ...this. Use XNEW.
3315 (dump_constants_1): Rename to...
3316 (mips16_emit_constants_1): ...this. Use ALL_SCALAR_FIXED_POINT_MODE_P.
3317 (dump_constants): Rename to...
3318 (mips16_emit_constants): ...this.
3319 (mips_sim_wait_reg, mips_sim_record_set): Use END_REGNO.
3320 (mips_set_mips16_mode): Don't call mips_init_split_addresses.
3321 Assign mips16_p to was_mips16_p.
3322 (mips_parse_cpu): Tweak warning message.
3323 (override_options): Rename to...
3324 (mips_override_options): ...this. Move the mips_cost initialization
3325 out of the "shared with GAS" block. Quote option names in error
3327 (mips_conditional_register_usage): Make local variable REGNO unsigned.
3328 (mips_order_regs_for_local_alloc): Remove register keyword.
3330 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3332 * system.h (IN_RANGE): Cast each argument individually.
3334 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3336 * config/mips/mips.c (mips_set_mips16_mode) Say sorry for hard-float
3337 MIPS16 code unless using o32 or o64.
3339 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3341 * config/mips/mips.c (mips_cannot_change_mode_class): Don't check
3342 for modes smaller than 4 bytes.
3343 * config/mips/mips.md (*movhi_internal, *movqi_internal): Remove
3346 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3348 * config/mips/mips-protos.h (mips_output_aligned_bss): Delete.
3349 * config/mips/linux.h (BSS_SECTION_ASM_OP): Delete.
3350 (ASM_OUTPUT_ALIGNED_BSS): Delete.
3351 * config/mips/mips.c (mips_output_aligned_bss): Delete.
3353 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3355 * config/mips/mips.c (mips_function_ok_for_sibcall): Only forbid
3356 sibling calls to "mips16" functions if the function satisfies
3357 const_call_insn_operand.
3359 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3361 * config/mips/mips.c (mips_va_start): Fix types in calls
3364 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3366 * config/mips/mips.c (mips_rtx_costs): Only recognize reciprocals
3369 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3371 * config/mips/mips.h (ISA_HAS_LDC1_SDC1): New macro.
3372 * config/mips/mips.c (mips_split_64bit_move_p): Use ISA_HAS_LDC1_SDC1
3373 instead of checking mips_isa.
3375 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3377 * doc/invoke.texi (-mpaired-single): Don't say that the option
3378 requires 64-bit code.
3379 * config/mips/mips-protos.h (mips_modes_tieable_p): Declare.
3380 * config/mips/mips.h (ISA_HAS_PAIRED_SINGLE): New macro.
3381 (ISA_HAS_NMADD_NMSUB): Add a mode argument. Return true for
3382 V2SF if ISA_MIPS32R2.
3383 (MODES_TIEABLE_P): Use mips_modes_tieable_p.
3384 * config/mips/mips.c (mips_rtx_costs): Pass a mode argument
3385 to ISA_HAS_NMADD_NMSUB.
3386 (mips_split_doubleword_move): Handle V2SF.
3387 (mips_modes_tieable_p): New function.
3388 (override_options): Report a warning rather than an error when
3389 -mpaired-single is used on ISAs that don't support it; use
3390 ISA_HAS_PAIRED_SINGLE to check that case.
3391 * config/mips/mips.md (MOVE64): New mode iterator. Replace DI
3392 and DF move splitters with a single MOVE64 splitter, thereby adding
3393 a V2SF splitter too.
3394 (SPLITF): Add TARGET_DOUBLE_FLOAT conditions to DI and DF.
3395 Add a TARGET_FLOAT64 condition to TF. Add V2SF to the iterator.
3396 (HALFMODE): Add V2SF.
3397 (*nmadd<mode>, *nmadd<mode>_fastmath, *nmsub<mode>)
3398 (*nmsub<mode>_fastmath): Add a mode argument to ISA_HAS_NMADD_NMSUB.
3399 (movv2sf_hardfloat_64bit): Tweak ordering of conditions.
3400 (movv2sf_hardfloat_32bit): New pattern.
3401 (load_low<mode>, load_high<mode>, store_word<mode>): Remove
3402 TARGET_DOUBLE_FLOAT conditions.
3404 2007-10-20 Jakub Jelinek <jakub@redhat.com>
3406 * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Point
3407 saved CR2 offset to low 32 bits of regs->ccr rather than the whole