1 2005-07-04 Diego Novillo <dnovillo@redhat.com>
3 * tree-dump.c (dump_files): Initialize dump number for .cgraph
6 2005-07-04 Diego Novillo <dnovillo@redhat.com>
8 * tree-ssa-structalias.c: Don't include expr.h.
10 2005-07-04 Diego Novillo <dnovillo@redhat.com>
12 * tree-iterator.h (TSI_NEW_STMT, TSI_SAME_STMT): Fix
15 2005-07-04 Daniel Berlin <dberlin@dberlin.org>
17 Fix PR tree-optimization/22279
19 * tree-ssa-structalias.c (offset_overlaps_with_access): Use
22 2005-07-04 J"orn Rennecke <joern.rennecke@st.com>
24 * sh.c (output_ieee_ccmpeq): Replace "\\;" with "\n\t".
26 2005-07-03 Joseph S. Myers <joseph@codesourcery.com>
28 * bb-reorder.c, c-pch.c, c-pragma.c, c.opt, cfghooks.c, cfgloop.c,
29 cfgrtl.c, cgraphunit.c, config/c4x/c4x.c, config/cris/cris.c,
30 config/frv/frv.c, config/host-darwin.c, config/iq2000/iq2000.c,
31 config/lynx.h, config/m68k/m68k.c, config/pa/pa.c, config/sh/sh.h,
32 config/stormy16/stormy16.c, config/v850/v850.c,
33 config/vax/netbsd-elf.h, coverage.c, dwarf2out.c, emit-rtl.c,
34 except.c, gcc.c, tree-cfg.c, tree-eh.c, tree-ssa.c, xcoffout.c:
35 Avoid "." or "\n" at end of diagnostics and capital letters at
37 * combine.c, cse.c: Don't translate dump file output.
38 * toplev.c (print_version): Only translate output if going to
41 2005-07-03 Kazu Hirata <kazu@codesourcery.com>
43 * c-decl.c, tree-object-size.c, tree-vectorizer.c,
44 config/arm/unwind-arm.c, config/arm/unwind-arm.h: Fix comment
47 2005-07-03 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
49 * pa.c (fix_range): Fix typo in comment.
51 2005-07-03 Kazu Hirata <kazu@codesourcery.com>
53 * tree-vrp.c (extract_range_from_assert): Replace
54 fold (build (...)) with fold_build2.
56 2005-07-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
58 * c-format.c (gcc_gfc_format_type, gcc_gfc_flag_pairs,
59 gcc_gfc_char_table, init_dynamic_gfc_info): New.
60 (format_types_orig, handle_format_attribute): Add support for
63 2005-07-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
65 * varasm.c (assemble_variable): Fix format specifier thinko.
67 2005-07-03 Ira Rosen <irar@il.ibm.com>
69 PR tree-optimization/22029 (and 22135)
70 * tree-pretty-print.c (dump_generic_node): Check that the node is not
71 a phi node before calling dump_vops.
73 2005-07-02 Gabriel Dos Reis <gdr@integrable-solutions.net>
75 * tree-dump.h (dump_string_field): Declare.
76 * tree-dump.c: Use it instead of dump_string.
77 (dump_string_field): Make non-static.
79 2005-07-03 Kaz Kojima <kkojima@gcc.gnu.org>
81 * config/sh/sh.c (sh_output_mi_thunk): Initialize and clean
82 up the minimal CFG stuff always when optimize > 0. Call
83 split_all_insns_noflow in PIC case if needed.
85 2005-07-02 Gabriel Dos Reis <gdr@integrable-solutions.net>
86 Christian Ehrhardt <ehrhardt@mathematik.uni-ulm.de>
89 * c-decl.c (c_write_global_declarations): Dump contents of
91 * tree-dump.c (dequeue_and_dump): Dump abstract origin of a decl.
92 <TRY_FINALLY_EXPR>, <RETURN_EXPR>, <CASE_LABEL_EXPR>, <LABEL_EXPR>,
93 <GOTO_EXPR>, <SWITCH_EXPR>: Add.
94 (dump_enabled_p): Return TRUE if PHASE is TDI_all and any dump
97 2005-07-03 Joseph S. Myers <joseph@codesourcery.com>
99 * c-common.h (GCC_DIAG_STYLE): Define.
100 * c-tree.h (GCC_DIAG_STYLE): Do not define. Change minimum GCC
101 version for format checking to 4.1.
102 * c-format.c: Include toplev.h after c-common.h.
103 (enum format_type): Add gcc_tdiag_format_type.
104 (gcc_tdiag_length_specs, gcc_tdiag_flag_pairs,
105 gcc_tdiag_flag_specs, gcc_tdiag_char_table): New.
106 (format_types_orig): Add gcc_tdiag.
107 (init_dynamic_diag_info): Support gcc_tdiag formats.
108 (handle_format_attribute): Likewise.
109 * toplev.h (NO_FRONT_END_DIAG, ATTRIBUTE_GCC_FE_DIAG): Remove.
110 (GCC_DIAG_STYLE): Default to __gcc_tdiag__. Change minimum GCC
111 version for format checking to 4.1.
112 (warning0, warning, error, pedwarn, sorry): Use
114 * config/rs6000/rs6000.c (altivec_expand_builtin), varasm.c
115 (finish_aliases_1): Do not use %qE.
116 * config/arm/arm.c, config/i386/i386.c, config/mmix/mmix.c,
117 config/pdp11/pdp11.c, stor-layout.c, tree-eh.c, tree-ssa.c:
119 * config/v850/v850-protos.h (v850_output_aligned_bss): Change size
120 parameter to unsigned HOST_WIDE_INT.
121 * config/v850/v850.c (v850_output_aligned_bss): Likewise.
123 2005-07-02 David Edelsohn <edelsohn@gnu.org>
126 * expr.c (write_complex_part): Use adjust_address for MEM.
127 (read_complex_part): Same.
129 2005-07-02 Daniel Berlin <dberlin@dberlin.org>
131 Fix PR tree-optimization/22280
133 * tree-sra.c (generate_element_init): Remove useless loop.
135 2005-07-02 Richard Henderson <rth@redhat.com>
137 * config/alpha/alpha.c (alpha_legitimize_address): Check for
139 (alpha_stdarg_optimize_hook): Use DECL_UID with va_list_vars.
141 2005-07-02 Andrew Pinski <pinskia@physics.uc.edu>
144 * fold-const.c (fold_binary): Handle the return value of
145 fold_to_nonsharp_ineq_using_bound if we get back the same operand back.
146 Implement "X +- C1 CMP C2" folding to "X CMP C2 -+ C1".
148 2005-07-02 Jeff Law <law@redhat.com>
150 * tree-ssa-dom.c (find_equivalent_equality_comparison): Do not
151 a eliminate type conversion which feeds an equality comparison
152 if the original type or either operand in the comparison is a
155 2005-07-02 Joseph S. Myers <joseph@codesourcery.com>
157 * c.opt, common.opt, config/bfin/bfin.opt, config/pa/pa.opt,
158 config/rs6000/rs6000.opt, params.def: Remove "." from end of help
160 * config/avr/avr.c: Do not use '`' as left quote.
161 * config/rs6000/rs6000.c, config/s390/s390.c, opts.c, tree.c:
162 Remove "." from end of diagnostics. Make diagnostics start with
165 2005-07-02 Zack Weinberg <zack@codesourcery.com>
166 Joseph S. Myers <joseph@codesourcery.com>
168 * toplev.c (default_tree_printer): Handle setting location with
170 * c-objc.common.c (c_tree_printer): Likewise.
171 * c-format.c (gcc_diag_flag_specs): Add '+'.
172 (gcc_cdiag_char_table): Allow '+' flag for tree formats.
173 (format_types_orig): Allow '+' flag for gcc_diag and gcc_cdiag
175 * c-common.c, c-decl.c, c-objc-common.c, c-pragma.c,
176 config/arm/pe.c, config/i386/winnt.c, config/ia64/ia64.c,
177 config/mcore/mcore.c, config/sh/symbian.c, config/sol2.c,
178 config/v850/v850.c, function.c, stor-layout.c, toplev.c,
179 tree-inline.c, tree-optimize.c, tree.c, varasm.c: Use '+' flag
180 instead of %J or %H. Use 'q' flag for quoting. Avoid '.' at end
181 of diagnostics. Use %q+D not %s for a decl. Do not pass excess
182 format arguments where %J is used without %D.
184 2005-07-02 Jakub Jelinek <jakub@redhat.com>
186 * gcc.c (LINK_SSP_SPEC): Define.
187 (link_ssp_spec): New variable.
188 (LINK_COMMAND_SPEC): Add %(link_ssp).
189 (static_specs): Add link_ssp_spec.
190 * configure.ac (TARGET_LIBC_PROVIDES_SSP): New test.
191 * configure: Rebuilt.
192 * config.in: Rebuilt.
194 * config/rs6000/linux.h (TARGET_THREAD_SSP_OFFSET): Define.
195 * config/rs6000/linux64.h (TARGET_THREAD_SSP_OFFSET): Likewise.
196 * config/i386/linux.h (TARGET_THREAD_SSP_OFFSET): Likewise.
197 * config/i386/linux64.h (TARGET_THREAD_SSP_OFFSET): Likewise.
198 * config/rs6000/rs6000.md (stack_protect_set, stack_protect_test):
199 If TARGET_THREAD_SSP_OFFSET is defined, use -0x7010(13) resp.
200 -0x7008(2) instead of reading __stack_chk_guard variable.
201 * config/i386/i386.md (UNSPEC_SP_SET, UNSPEC_SP_TEST): Change
203 (UNSPEC_SP_TLS_SET, UNSPEC_SP_TLS_TEST): New constants.
204 (stack_protect_set, stack_protect_test): Use *_tls* patterns
205 if TARGET_THREAD_SSP_OFFSET is defined.
206 (stack_tls_protect_set_si, stack_tls_protect_set_di,
207 stack_tls_protect_test_si, stack_tls_protect_test_di): New insns.
210 2005-06-27 Richard Henderson <rth@redhat.com>
211 * libgcc-std.ver (GCC_4.1.0): New.
212 * libgcc.h (__stack_chk_guard): Declare.
213 (__stack_chk_fail, __stack_chk_fail_local): Declare.
214 * libgcc2.c (L_stack_chk, L_stack_chk_local): New.
215 * mklibgcc.in (lib2funcs): Add them.
217 2005-07-01 Richard Henderson <rth@redhat.com>
219 * config/i386/linux-unwind.h (x86_64_fallback_frame_state): Cast to
220 void * before struct sigcontext *.
221 (x86_fallback_frame_state): Likewise.
223 2005-07-01 James E. Wilson <wilson@specifixinc.com>
225 * doc/invoke.texi (-funit-at-a-time): Correct grammar in second bullet.
227 2005-07-01 Andrew Pinski <pinskia@physics.uc.edu>
230 * tree-ssa-reassoc.c (should_transpose): Fix which operand
231 we check for SSA_NAME for.
233 2005-06-29 Daniel Berlin <dberlin@dberlin.org>
235 Fix PR tree-optimization/22071
237 * tree-ssa-structalias.c (offset_overlaps_with_access): New
239 (get_constraint_for_component_ref): Use it.
241 2005-07-01 Andrew Pinski <pinskia@physics.uc.edu>
244 * diagnostic.c (diagnostic_report_current_module): Use pp_newline to
245 print out the last new line.
247 2005-07-01 Hans-Peter Nilsson <hp@axis.se>
249 * config/cris/cris.md (CRIS_CC0_REGNUM): New constant.
250 Swap numbers for CRIS_AP_REGNUM and CRIS_MOF_REGNUM.
251 * config/cris/cris.c (cris_conditional_register_usage): Adjust
252 reg_names[CRIS_CC0_REGNUM] for early CRIS versions.
253 (cris_print_operand) <case REG>: Handle CRIS_CC0_REGNUM.
254 (cris_md_asm_clobbers): Clobber CRIS_CC0_REGNUM for all asms.
255 * config/cris/cris.h (CRIS_CANONICAL_CC0_REGNUM): New macro.
256 (enum reg_class): New member CC0_REGS.
257 (REG_CLASS_FROM_LETTER): Add 'c' for CC0_REGS.
258 (FIRST_PSEUDO_REGISTER, CALL_USED_REGISTERS, REG_ALLOC_ORDER)
259 (HARD_REGNO_MODE_OK, MODES_TIEABLE_P, REG_CLASS_NAMES)
260 (CRIS_SPECIAL_REGS_CONTENTS, REG_CLASS_CONTENTS, REGNO_REG_CLASS)
261 (PREFERRED_RELOAD_CLASS, REGISTER_NAMES, DBX_REGISTER_NUMBER):
262 Adjust for register now described.
264 2005-07-01 Jakub Jelinek <jakub@redhat.com>
267 * config/i386/i386.md (stack_protect_test_si,
268 stack_protect_test_di): Add earlyclobber for scratch 3.
269 * config/rs6000/rs6000.md (stack_protect_testsi,
270 stack_protect_testdi): Add earlyclobber for scratch 3,
271 remove earlyclobber from scratch 4.
273 2005-06-30 Diego Novillo <dnovillo@redhat.com>
277 * tree-ssa-alias.c (create_name_tags): Also process
278 non-dereferenced pointers.
279 Remove argument 'ai'. Update all callers.
281 2005-06-30 Andrew Pinski <pinskia@physics.uc.edu>
283 * config/rs6000/darwin.h (STARTING_FRAME_OFFSET):
284 Set to 0 for FRAME_GROWS_DOWNWARD.
285 (REGISTER_NAMES): Add sfp.
287 2005-07-01 Kelley Cook <kcook@gcc.gnu.org>
289 * config/arm/libunwind.S, config/arm/pr-support.c,
290 config/arm/unwind-arm.c, config/arm/unwind-arm.h,
291 config/c4x/predicates.md, tree-object-size.c: Update FSF address.
293 2005-06-30 Eric Botcazou <ebotcazou@libertysurf.fr>
296 * config/sparc/sparc.c (emit_and_preserve): Add 2nd register.
297 Preserve the 2nd register too, if present.
298 (sparc_output_mi_thunk) <PIC case>: Preserve the PIC register too.
299 Adjust call to emit_and_preserve.
301 2005-06-30 Zack Weinberg <zack@codesourcery.com>
302 Jakub Jelinek <jakub@redhat.com>
304 * pretty-print.h (PP_NL_ARGMAX): New.
305 (text_info): Add locus.
306 (struct chunk_info): New.
307 (output_buffer): Add formatted_obstack, chunk_obstack, and
308 cur_chunk_array. Change obstack to a pointer.
309 (pp_wrapping_mode_t, pp_wrapping_mode, pp_set_verbatim_wrapping): New.
310 (struct pretty_print_info): Replace ideal_maximum_length and
311 prefixing_rule with wrapping.
312 (pp_line_cutoff, pp_prefixing_rule): Update to match.
313 Update prototypes and wrapper macros throughout.
314 * pretty-print.c (pp_formatted_text_data, pp_append_r)
315 (pp_base_clear_output_area, pp_construct, pp_base_formatted_text)
316 (pp_base_last_position_in_text, pp_base_newline, pp_base_character):
317 Update for changes to pp structure.
318 (pp_base_prepare_to_format, pp_base_format_text): Delete.
319 (pp_base_format, pp_base_output_formatted_text): New functions.
320 (pp_base_format_verbatim): Use pp_set_verbatim_wrapping.
321 (pp_verbatim): Clear text.locus.
322 (pp_printf): Likewise. Use pp_format and pp_output_formatted_text.
323 * c-objc-common.c (c_tree_printer): Update function signature.
324 * diagnostic.c (diagnostic_initialize): Update for changes to
326 (diagnostic_report_diagnostic): Call pp_format and then
327 pp_output_formatted_text.
328 (verbatim): Clear text.locus.
329 * diagnostic.h (diagnostic_prefixing_rule, diagnostic_line_cutoff):
330 Update for changes to pp structure.
332 * c-lang.c: No need to include c-pretty-print.h.
333 * Makefile.in: Remove bogus line containing only a tab.
334 (c-lang.o): Update dependencies.
335 * toplev.c (announce_function): Don't use verbatim.
336 (default_tree_printer): Update signature.
338 * objc/objc-lang.c: No need to include c-pretty-print.h.
339 * objc/Make-lang.in: Update dependencies.
341 2005-06-29 Daniel Berlin <dberlin@dberlin.org>
343 * tree-complex.c (complex_variable_components): Now a hashtable.
346 (create_components): Use referenced var iterator.
347 Initialize hashtable. Use cvc_insert/lookup.
348 (extract_components): Use cvc_insert/lookup.
349 (update_complex_components): Ditto.
350 (update_complex_components_on_edge): Ditto.
351 * tree-dfa.c (referenced_vars): Now a hashtable.
352 (dump_referenced_vars): Use iterator.
353 (referenced_var_lookup): New function.
354 (referenced_var_insert): Ditto.
355 (add_referenced_var): Use referenced_var_insert.
356 (mark_new_vars_to_rename): Use DECL_UID.
357 * tree-flow-inline.h (first_htab_element): New function.
359 (next_htab_element): Ditto.
360 (first_referenced_var): Ditto.
361 (end_referenced_vars_p): Ditto.
362 (next_referenced_var): Ditto.
363 (is_call_clobbered): Use DECL_UID.
364 (mark_call_clobbered): Ditto.
365 (clear_call_clobbered): Ditto.
366 (mark_non_addressable): Ditto.
367 * tree-flow.h (htab_iterator): New struct.
368 (FOR_EACH_HTAB_ELEMENT): New macro.
369 (struct int_tree_map): New struct.
370 (int_tree_map_hash): Prototype.
371 (int_tree_map_eq): Ditto.
372 (referenced_var_iterator): Ditto.
373 (FOR_EACH_REFERENCED_VAR): New macro.
374 (referenced_vars): Now a hashtable.
375 * tree-into-ssa.c (symbol_marked_for_renaming): Use DECL_UID.
376 (add_new_name_mapping): Ditto.
377 (mark_def_sites): Ditto.
378 (insert_phi_nodes): Use referenced_var iterator.
379 (mark_def_site_blocks): Ditto.
380 (mark_sym_for_renaming): Use DECL_UID.
381 * tree-sra.c (is_sra_candidate_decl): Use DECL_UID.
382 (lookup_element): Ditto.
383 (find_candidates_for_sra): Use referenced_vars iterator.
385 * tree-ssa-alias.c (NUM_REFERENCES): New macro.
386 (NUM_REFERENCES_CLEAR): Ditto.
387 (NUM_REFERENCES_INC): Ditto.
388 (NUM_REFERENCES_SET): Ditto.
389 (alias_obstack): New bitmap obstack.
390 (struct alias_map_d): Use bitmap, not sbitmap.
391 (struct alias_info): Remove num_references.
392 (init_alias_info): Use referenced_var iterator.
393 Initialize bitmap obstack.
394 (delete_alias_info): Use referenced_var iterator.
396 (compute_points_to_and_addr_escape): Use DECL_UID.
397 Use new NUM_REFERENCES macros.
398 (compute_flow_sensitive_aliasing): may_aliases is now a bitmap.
399 Use new NUM_REFERENCES macros.
400 (group_aliases_into): Update prototype to use bitmap.
401 (setup_pointers_and_addressables): Use referenced_vars iterator.
402 Use DECL_UID. Use new NUM_REFERENCES macros.
403 (add_pointed_to_var): Use DECL_UID.
404 (dump_alias_info): Use referenced_var iterator.
405 (add_type_alias): Ditto.
406 (used_portions): Now a hashtable.
407 (used_part_map_eq): New function.
408 (used_part_map_hash): Ditto.
409 (free_used_part_map): Ditto.
412 (get_or_create_used_part_for): Use up_lookup.
413 (create_overlap_variables_for): Ditto.
414 (find_used_portions): Use up_insert.
416 (create_structure_vars): Init used_portions hashtable, use
417 referenced_vars iterator.
418 * tree-ssa-live.c (create_ssa_var_map): sbitmaps became bitmaps.
420 * tree-ssa-loop-im.c (gather_mem_refs_stmt): Use DECL_UID.
421 * tree-ssa-operands.c (get_asm_expr_operands): Ditto.
422 (note_addressable): Ditto.
423 * tree-ssa-structalias.c (set_uids_in_ptset): Ditto.
424 * tree-ssa.c (verify_flow_insensitive_alias_info): Use
425 referenced_var iterator.
427 (delete_tree_ssa): Ditto.
428 (int_tree_map_eq): New function.
429 (int_tree_map_hash): Ditto.
430 * tree-stdarg.c (find_va_list_reference): Use DECL_UID.
431 (va_list_ptr_read): Ditto.
432 (va_list_counter_struct_op): Ditto.
433 (va_list_ptr_write): Ditto.
434 (check_va_list_escapes): Ditto.
435 (check_all_va_list_escapes): Ditto.
436 (execute_optimize_stdarg): Ditto.
437 * tree-tailcall.c (suitable_for_tail_opt_p): Used referenced_var
440 2005-06-30 Andrew Pinski <pinskia@physics.uc.edu>
442 * config/rs6000/darwin.h (FRAME_POINTER_REGNUM): Rename to ...
443 (HARD_FRAME_POINTER_REGNUM): this.
445 2005-06-30 Jan Hubicka <jh@suse.cz>
447 * ipa-inline.c (cgraph_clone_inlined_nodes): Revert previous patch.
449 2005-06-30 Francois-Xavier Coudert <coudert@clipper.ens.fr>
452 * tree-ssa-structalias.c (build_constraint_graph, scc_visit,
453 process_unification_queue, init_topo_info, topo_visit,
454 init_scc_info, free_scc_info, perform_var_substitution,
455 solve_graph): Use unsigned instead of uint.
457 2005-06-30 Jakub Jelinek <jakub@redhat.com>
459 * function.c (gen_stack_protect_test): Add third argument.
461 2005-06-30 J. D. Johnston <jjohnst@us.ibm.com>
463 * gthr-tpf.h (CE2THRCPTR): Change field offset to 16.
465 2005-06-30 Kazu Hirata <kazu@codesourcery.com>
467 * config/c4x/c4x-protos.h: Remove the prototypes for those
468 functions removed from c4x.c. Add prototypes for those
469 functions exported in c4x.c.
470 * config/c4x/c4x.c (any_operand, fp_zero_operand,
471 const_operand, stik_const_operand, not_const_operand,
472 reg_operand, r0r1_reg_operand, r2r3_reg_operand,
473 ext_low_reg_operand, ext_reg_operand, std_reg_operand,
474 std_or_reg_operand, addr_reg_operand, index_reg_operand,
475 dp_reg_operand, sp_reg_operand, st_reg_operand,
476 rc_reg_operand, call_address_operand,
477 symbolic_address_operand, dst_operand, src_operand,
478 src_hi_operand, lsrc_operand, tsrc_operand,
479 nonimmediate_src_operand, nonimmediate_lsrc_operand,
480 reg_or_const_operand, par_ind_operand, parallel_operand):
482 (c4x_immed_float_p, c4x_a_register, c4x_x_register,
483 c4x_K_constant, c4x_N_constant, c4x_O_constant,
484 c4x_S_indirect): Export.
485 * config/c4x/c4x.h (PREDICATE_CODES): Remove.
486 * config/c4x/c4x.md: Include predicates.md.
487 * config/c4x/predicates.md: New.
489 2005-06-30 Jakub Jelinek <jakub@redhat.com>
491 * function.c (stack_protect_epilogue): Pass label to
492 stack_protect_test, assume it emitted also the conditional
494 * doc/md.texi (stack_protect_test): Adjust documentation.
495 * config/i386/i386.md (stack_protect_test): Add third argument,
496 emit beq with operands[2].
497 * config/rs6000/rs6000.h (FRAME_GROWS_DOWNWARD): Define to
498 flag_stack_protect != 0.
499 * config/rs6000/rs6000.md (UNSPEC_SP_SET, UNSPEC_SP_TEST): New
501 (stack_protect_set, stack_protect_test): New expanders.
502 (stack_protect_setsi, stack_protect_setdi, stack_protect_testsi,
503 stack_protect_testdi): New insns.
504 * config/rs6000/rs6000.c (rs6000_stack_protect_fail): New function.
505 (TARGET_STACK_PROTECT_FAIL): Define.
506 (rs6000_generate_compare): Handle UNSPEC_SP_TEST.
508 * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Increment.
509 (DWARF_FRAME_REGISTERS, DWARF_REG_TO_UNWIND_COLUMN): Adjust, so
510 that addition of sfp doesn't change these.
511 (FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS,
512 REG_ALLOC_ORDER): Add sfp.
513 (INT_REGNO_P): Include FRAME_POINTER_REGNUM.
514 (FRAME_POINTER_REGNUM): Define to 113.
515 (HARD_FRAME_POINTER_REGNUM): Define to 31.
516 (REG_CLASS_CONTENTS, REGNO_REG_CLASS): Add sfp.
517 (STARTING_FRAME_OFFSET): Set to 0 for FRAME_GROWS_DOWNWARD.
518 (ELIMINABLE_REGS): Never eliminate to
519 FRAME_POINTER_REGNUM, but HARD_FRAME_POINTER_REGNUM
520 instead. Add eliminations from FRAME_POINTER_REGNUM.
521 (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P):
522 Include FRAME_POINTER_REGNUM.
523 (REGISTER_NAMES): Add sfp.
524 * config/rs6000/rs6000.c (rs6000_reg_names): Add sfp.
525 (alt_reg_names): Likewise.
526 (rs6000_stack_info): Handle FRAME_GROWS_DOWNWARD.
527 (rs6000_emit_prologue): Use HARD_FRAME_POINTER_REGNUM
528 instead of FRAME_POINTER_REGNUM.
529 (rs6000_initial_elimination_offset): Never eliminate to
530 FRAME_POINTER_REGNUM, but HARD_FRAME_POINTER_REGNUM
531 instead. Add elimination offsets from FRAME_POINTER_REGNUM.
533 * config/rs6000/sysv4.h (RS6000_VARARGS_AREA): Only return non-zero
534 if DEFAULT_ABI == ABI_V4.
536 2005-06-30 Steven Bosscher <stevenb@suse.de>
538 * coretypes.h (tls_model): Add TLS_MODEL_NONE as 0.
539 * tree.h (struct tree_decl): New field `tls_model'.
540 (DECL_TLS_MODEL): New.
541 (DECL_THREAD_LOCAL_P): Rename from DECL_THREAD_LOCAL, make it
543 * rtl.h (decl_default_tls_model): Add prototype for it.
544 * varasm.c (decl_tls_model): Rewritten and renamed to ...
545 (decl_default_tls_model): ... this.
546 (default_encode_section_info): Use DECL_TLS_MODEL instead of
548 (assemble_variable): Replace DECL_THREAD_LOCAL with
550 (default_section_type_flags_1): Likewise.
551 (categorize_decl_for_section): Likewise.
552 * tree.c (staticp): Likewise.
553 (recompute_tree_invarant_for_addr_expr): Likewise.
554 * drawf2out (loc_descriptor_from_tree_1): Likewise.
555 * c-decl.c (diagnose_mismatched_decls): Likewise.
556 with DECL_THREAD_LOCAL_P.
557 (start_decl): Likewise.
558 * print-tree.c (print_node): Likewise. Print the TLS model.
559 (grokdeclarator): Set the default DECL_TLS_MODEL here.
560 * c-common.c (handle_tls_model_attribute): Rewrite to set the
561 TLS model up based on the attribute. Never add the attribute
562 to the decl's attributes list.
563 * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Replace
564 DECL_THREAD_LOCAL with DECL_THREAD_LOCAL_P.
566 2005-06-30 Zdenek Dvorak <dvorakz@suse.cz>
569 * tree-ssa-live.c (mark_all_vars_used_1): Ignore variables in
572 2005-06-30 Bernd Schmidt <bernd.schmidt@analog.com>
574 * config/bfin/bfin.md (addv2hi3, subv2hi3, sminv2hi3, smaxv2hi3,
575 mulv2hi3, negv2hi2, absv2hi2): Pattern names fixed by appending the
578 2005-06-29 David Edelsohn <edelsohn@gnu.org>
580 * config/rs6000/rs6000.c (rs6000_file_start): Use PPC405_ERRATUM77.
582 2005-06-29 Diego Novillo <dnovillo@redhat.com>
585 * tree-ssa-copy.c (fini_copy_prop): Do not overwrite copy_of
586 when following copy-of chains.
588 2005-06-30 Jan Hubicka <jh@suse.cz>
590 * function.h (struct function): Add saved blocks/unexpanded var list.
591 * gimple-low.c (record_vars): Insert only VAR_DECLs.
592 * tree-inline.c (add_lexical_block): Declare; do not clear sublocks.
593 (remap_decl): Do not declare vars.
594 (remap_block): Do not care inserting blocks.
595 (remap_blocks): New function.
596 (copy_body_r): Update debug info.
597 (expand_call_inline): Duplicate callee block tree into caller;
598 copy all the unexpanded_var_list.
599 (save_body): Save unexpanded_var_list and blocks.
600 * tree-optimize.c (tree_rest_of_optimization): Restore
601 blocks/unexpanded_var_list.
603 2005-06-29 Richard Henderson <rth@redhat.com>
605 * config/ia64/ia64.c (ia64_expand_vecint_minmax): Use us_minus and
606 plus for V4HImode UMAX.
608 2005-06-29 Joseph S. Myers <joseph@codesourcery.com>
610 * c-tree.h (default_function_array_conversion): Take and return
612 * c-typeck.c (default_function_array_conversion): Split into
613 array_to_pointer_conversion and function_to_pointer_conversion.
614 Take and return struct c_expr.
615 (array_to_pointer_conversion): Do not handle type qualifiers or
616 COMPOUND_EXPRs specially.
617 (build_function_call): Call function_to_pointer_conversion for
618 function designators.
619 (build_unary_op): Call array_to_pointer_conversion, not
620 default_function_array_conversion.
621 (digest_init, output_init_element): Likewise.
622 * c-parser.c: All callers of default_function_array_conversion
625 2005-06-29 Ziemowit Laski <zlaski@apple.com>
627 * config/darwin.c (machopic_select_section): constant ObjC string
628 objects now always have type "__builtin_ObjCString".
630 2005-06-29 Richard Henderson <rth@redhat.com>
632 * config/alpha/alpha.md (vec_shl_<VEC>, vec_shr_<VEC>): New.
634 2005-06-29 Richard Henderson <rth@redhat.com>
636 * tree-vect-transform.c (vect_min_worthwhile_factor): Declare.
637 (vect_create_epilog_for_reduction): Don't use vec_shr if the
638 operation is emulated.
639 (vectorizable_reduction): Duplicate vect_min_worthwhile_factor
640 tests from vectorizable_operation.
642 2005-06-29 Caroline Tice <ctice@apple.com>
645 * varasm.c (assemble_start_function): Add "L" to beginning of
646 local labels, so assembler & linker treat them as local.
648 2005-06-29 Richard Henderson <rth@redhat.com>
650 * config/i386/i386.c (ix86_expand_int_vcond): Remove unsignedp
651 argument. Simplify canonicalization of condition. Use unsigned
652 saturating subtraction for QI and HImode unsigned compares. Use
653 bit arithmetic tricks for SImode unsigned compares.
654 * config/i386/i386-protos.h (ix86_expand_int_vcond): Update decl.
655 * config/i386/sse.md (SSEMODE14): New.
656 (umaxv8hi3): Use us_minus+plus to avoid vcond.
658 (smax<SSEMODE14>3): Rename from smaxv16qi3 and macroize.
659 (smin<SSEMODE14>3): Similarly with sminv16qi3.
660 (umin<SSEMODE24>3): Similarly with uminv8hi3.
662 2005-06-29 Ian Lance Taylor <ian@airs.com>
664 * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Change
665 GEN_INT to gen_int_for_mode when storing register size to memory.
667 2005-06-29 Stuart Hastings <stuart@apple.com>
669 * gcc/config/i386/mmintrin.h: Mark vector intrinsics always_inline.
670 * gcc/config/i386/emmintrin.h: Likewise.
671 * gcc/config/i386/pmmintrin.h: Likewise.
672 * gcc/config/i386/xmmintrin.h: Likewise.
674 2005-06-29 Steve Ellcey <sje@cup.hp.com>
677 * tree.h (TYPE_VECTOR_SUBPARTS): Change to shift expression.
678 (SET_TYPE_VECTOR_SUBPARTS): New.
679 * tree.c (make_vector_type): Replace TYPE_VECTOR_SUBPARTS with
680 SET_TYPE_VECTOR_SUBPARTS.
681 * tree-vect-transform.c (vect_transform_loop): Add cast.
683 2005-06-29 Andreas Krebbel <krebbel1@de.ibm.com>
685 * config/s390/s390.c (s390_decompose_address): Accept invalid
686 displacements for addresses containing frame_pointer_rtx or
687 virtual_stack_vars_rtx.
688 (s390_frame_info): Replaced use of STARTING_FRAME_OFFSET.
689 (s390_initial_elimination_offset): New offset when eliminating the
691 * config/s390/s390.h (FRAME_GROWS_DOWNWARD): Defined as 1.
692 (STARTING_FRAME_OFFSET, STACK_DYNAMIC_OFFSET): Definitions changed.
694 2006-06-28 Ziemowit Laski <zlaski@apple.com>
696 * c-common.c (flag_next_runtime): Move...
697 * toplev.c (flag_next_runtime): ... here.
698 * c-common.h (flag_next_runtime): Move...
699 * flags.h (flag_next_runtime): ... here.
700 * config/darwin-c.c: Include flags.h.
701 * config/t-darwin (darwin-c.o): Depend on flags.h.
703 2005-06-29 Kaz Kojima <kkojima@gcc.gnu.org>
705 * config/sh/linux-unwind.h (shmedia_fallback_frame_state):
706 Disable aliasing warning with void * cast.
707 (sh_fallback_frame_state): Likewise.
709 2005-06-29 Kaz Kojima <kkojima@gcc.gnu.org>
711 * target.h (gcc_target): New field allocate_initial_value.
712 * target-def.h (TARGET_ALLOCATE_INITIAL_VALUE): New macro.
713 (TARGET_INITIALIZER): Include it.
714 * integrate.c (allocate_initial_values): Use
715 targetm.allocate_initial_value.
716 * system.h: Poison ALLOCATE_INITIAL_VALUE.
717 * config/sh/sh-protos.h (sh_pr_n_sets): Delete.
718 * config/sh/sh.c (sh_pr_n_sets): Make it static.
719 (sh_allocate_initila_value): New function.
720 (TARGET_ALLOCATE_INITIAL_VALUE): Override default.
721 * config/sh/sh.h (ALLOCATE_INITIAL_VALUE): Delete.
722 * doc/tm.texi (TARGET_ALLOCATE_INITIAL_VALUE): Rename and
723 update from ALLOCATE_INITIAL_VALUE.
725 2005-06-28 Richard Henderson <rth@redhat.com>
727 * tree-vectorizer.c (vect_is_simple_reduction): Compare types
728 using TYPE_MAIN_VARIANT.
730 2005-06-28 Richard Henderson <rth@redhat.com>
732 * config/ia64/ia64.c (ia64_expand_vecint_compare): Decompose to EQ
733 when using psubN.uuu.
735 2005-06-29 Kelley Cook <kcook@gcc.gnu.org>
737 * doc/gcc.texi: Update FSF address.
739 2005-06-28 Eric Christopher <echristo@redhat.com>
743 * c-decl.c (diagnose_mismatched_decls): Define DECL_EXTERN_INLINE.
744 Use. Fix detection of invalid extern inline redefinition.
746 2005-06-28 Diego Novillo <dnovillo@redhat.com>
748 * tree-optimize.c (init_tree_optimization_passes): Fix typo.
750 2005-06-28 Andrew Pinski <pinskia@physics.uc.edu>
752 * config/rs6000/rs6000.md (setmemsi): s/operand/operands/.
754 2005-06-28 Richard Henderson <rth@redhat.com>
756 * config/ia64/ia64.c (ia64_expand_vecint_compare): Use unsigned
757 saturating subtraction for QI and HImode unsigned compares. Use
758 bit arithmetic tricks for SImode unsigned compares.
759 (ia64_expand_vcondu_v2si): Remove.
760 (ia64_expand_vecint_cmov): Don't call it.
762 2005-06-28 Richard Henderson <rth@redhat.com>
764 * rtlanal.c (nonzero_bits1): Use the mode of the value for
765 determining integral-ness for comparisons.
767 2005-06-28 Andrew Pinski <pinskia@physics.uc.edu>
769 * config/rs6000/rs6000.md (setmemsi): Fix operand 2.
771 2005-06-28 Joseph S. Myers <joseph@codesourcery.com>
773 * target.h (invalid_conversion, invalid_unary_op,
774 invalid_binary_op): New hooks.
775 * target-def.h (TARGET_INVALID_CONVERSION,
776 TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
777 TARGET_INITIALIZER): Likewise.
778 * hooks.h (hook_constcharptr_tree_tree_null,
779 hook_constcharptr_int_tree_null,
780 hook_constcharptr_int_tree_tree_null): New.
781 * hooks.c (hook_constcharptr_tree_tree_null,
782 hook_constcharptr_int_tree_null,
783 hook_constcharptr_int_tree_tree_null): Likewise.
784 * gcc/doc/tm.texi (TARGET_INVALID_CONVERSION,
785 TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP): Document.
786 * c-convert.c (convert): Use invalid_conversion hook.
787 * c-typeck.c (build_unary_op): Use invalid_unary_op hook.
788 (build_binary_op): Use invalid_binary_op hook.
789 * config/ia64/ia64-modes.def: Define RFmode.
790 * config/ia64/ia64-protos.h (spill_xfmode_operand): Remove.
791 (ia64_expand_movxf_movrf): New.
792 * config/ia64/ia64.md (movxf): Move code to
793 ia64_expand_movxf_movrf.
794 (movrf, movrf_internal): New.
795 * ia64.c (ia64_invalid_conversion, ia64_invalid_unary_op,
796 ia64_invalid_binary_op, TARGET_INVALID_CONVERSION,
797 TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP): New.
798 (spill_xfmode_operand): Rename to spill_xfmode_rfmode_operand.
799 Add mode parameter. Make static.
800 (ia64_expand_movxf_movrf): New, moved from ia64.md. Handle RFmode
802 (ia64_function_arg, ia64_function_value, ia64_register_move_cost,
803 ia64_scalar_mode_supported_p): Handle RFmode as well as XFmode.
804 (ia64_init_builtins): Set up __fpreg as RFmode.
805 (ia64_mangle_fundamental_type): Mangle __fpreg as u7__fpreg.
807 2006-06-28 Adrian Straetling <straetling@de.ibm.com>
809 * builtins.c: (expand_builtin_memset): Rewrite to support
810 'set_storage_via_setmem'.
811 * expr.c: (enum insn_code setmem_optab): Define.
812 (enum insn_code clrmem_optab): Remove.
813 (set_storage_via_setmem): New function.
814 (clear_storage_via_setmem): Remove.
815 (clear_storage): Replace call to "clear_storage_via_clrmem" with
816 "set_storage_via_setmem".
817 * expr.h: (set_storage_via_setmem): Declare.
818 (CLEAR_RATIO): Redefine using HAVE_setmemM.
819 * optabs.h: (enum insn_code setmem_optab): Declare.
820 (enum insn_code clrmem_optab): Remove.
821 * optabs.c: (init_optabs): Initialize setmem_optab.
822 (enum insn_code clrmem_optab): Remove.
823 * genopinit.c: (otabs): Likewise.
824 * doc/md.texi: Document new standard pattern 'setmem'. Remove
826 * config/alpha/alpha.c: (alpha_expand_block_clear): Adjust
828 * config/frv/frv.c: (frv_expand_block_clear): Likewise.
829 * config/rs6000/rs6000.c: (expand_block_clear): Likewise.
830 * config/alpha/alpha.md: ("clrmemqi", "clrmemdi"): Rename to "setmemM".
831 FAIL on operands[2]!=const0_rtx. Adjust 'operands' ordering.
832 * config/avr/avr.md: ("clrmemhi"): Likewise.
833 * config/frv/frv.md: ("clrmemsi"): Likewise.
834 * config/i386/i386.md: ("clrmemsi", "clrmemdi"): Likewise.
835 * config/pa/pa.md: ("clrmemsi", "clrmemdi"): Likewise.
836 * config/rs6000/rs6000.md: ("clrmemsi"): Likewise.
837 * config/s390/s390.md: ("clrmem<mode>"): Likewise.
839 2005-06-28 Paul Brook <paul@codesourcery.com>
841 * Makefile.in: Set and use UNWIND_H. Install as unwind.h.
842 * c-decl.c (finish_decl): Call default_init_unwind_resume_libfunc.
843 * except.c (add_ehspec_entry): Generate arm eabi filter lists.
844 (assign_filter_values): Ditto.
845 (output_ttype): New function.
846 (output_function_exception_table): Use output_ttype. Generate arm
848 (default_init_unwind_resume_libfunc): New function.
849 * except.h (default_init_unwind_resume_libfunc): Add prototype.
850 * optabs.c (init_optabs): Don't set unwind_resume_libfunc.
851 * opts.c (decode_options): Use targetm.unwind_tables_default.
852 * target-def.h (TARGET_ASM_TTYPE): Provide and use definition.
853 (TARGET_ARM_EABI_UNWINDER, TARGET_UNWIND_TABLES_DEFAULT): Ditto.
854 * target.h (struct gcc_target): Add asm.ttype, unwind_tables_default
855 and arm_eabi_unwinder.
856 * unwind-c.c: Support Arm EABI unwinder.
857 * unwind.h: Rename ...
858 * unwind-generic.h: ... To this.
859 * doc/tm.texi (TARGET_ASM_TTYPE, TARGET_ARM_EABI_UNWINDER): Document.
860 (TARGET_UNWID_TABLES_DEFAULT): Document.
862 * config/arm/arm-protos.h (arm_output_fn_unwind): Add prototype.
863 * config/arm/arm.c (arm_unwind_emit, arm_output_ttype): New functions.
864 (TARGET_UNWIND_EMIT, TARGET_ASM_TTYPE, TARGET_ARM_EABI_UNWINDER):
866 (thumb_pushpop, thumb_output_function_prologue): Output unwinding
868 (arm_unwind_emit_stm, arm_unwind_emit_set): New functions.
869 * config/arm/arm.h (MUST_USE_SJLJ_EXCEPTIONS): Only define when
871 (ARM_OUTPUT_FN_UNWIND, ARM_EABI_UNWIND_TABLES): Define.
872 * config/arm/bpabi.h (TARGET_UNWIND_INFO): Define.
873 * config/arm/elf.h (ASM_DECLARE_FUNCTION_NAME,
874 ASM_DECLARE_FUNCTION_SIZE): Use ARM_OUTPUT_FN_UNWIND.
875 * config/arm/lib1funcs.asm: Include libunwind.S.
876 * config/arm/libgcc-bpabi.ver: Add unwinding routines.
877 * config/arm/libunwind.S: New file.
878 * config/arm/pr-support.c: New file.
879 * config/arm/t-bpabi (LIB1ASMFUNCS): Add _unwind.
880 (UNWIND_H, LIB2ADDEH, LIB2ADDEHDEP): Set.
881 * config/arm/t-symbian (UNWIND_H, LIB2ADDEH, LIB2ADDEHDEP): Set.
882 * config/arm/unwind-arm.c: New file.
883 * config/arm/unwind-arm.h: New file.
884 * config/i386/t-netware (USER_H): Remove unwind.h.
885 * config/ia64/ia64.h (TARGET_UNWIND_TABLES_DEFAULT): Define.
887 2005-06-28 DJ Delorie <dj@redhat.com>
889 * c-decl.c (pop_scope): Move warning control into warning call.
890 (diagnose_mismatched_decls): Likewise.
891 (pushdecl): Likewise.
892 (start_decl): Likewise.
893 (grokparms): Likewise.
894 (start_function): Likewise.
895 (store_parm_decls_newstyle): Likewise.
896 (store_parm_decls_oldstyle): Likewise.
897 (finish_function): Likewise.
898 (declspecs_add_scspec): Likewise.
899 * c-format.c (decode_format_attr): Likewise.
900 (maybe_read_dollar_number): Likewise.
901 (avoid_dollar_number): Likewise.
902 (finish_dollar_format_checking): Likewise.
903 (check_format_info): Likewise.
904 (check_format_info_main): Likewise.
905 (check_format_types): Likewise.
906 (format_type_warning): Likewise.
907 * c-typeck.c (function_types_compatible_p): Likewise.
908 (build_array_ref): Likewise.
909 (convert_arguments): Likewise.
910 (build_c_cast): Likewise.
911 (store_init_value): Likewise.
912 (process_init_element): Likewise.
913 (c_start_case): Likewise.
914 * stor-layout.c (finalize_record_size): Likewise.
915 * tree-cfg.c (execute_warn_function_noreturn): Likewise.
916 * tree-inline.c (expand_call_inline): Likewise.
918 2005-06-28 Uros Bizjak <uros@kss-loka.si>
921 * config/i386/i386.md (fist<mode>2_with_temp splitter):
922 Clobber memory operand, not scratch register.
924 2005-06-28 Andreas Krebbel <krebbel1@de.ibm.com>
926 * config/s390/s390.c (machine_function): New field has_landing_pad_p.
927 (s390_set_has_landing_pad_p, s390_reg_clobbered_rtx,
928 s390_regs_ever_clobbered): New functions.
929 (s390_return_addr_rtx): Use get_hard_reg_initial_value.
930 (s390_register_info, s390_init_frame_layout, s390_update_frame_layout):
931 Use s390_regs_ever_clobbered.
932 (s390_emit_prologue): Don't use r14 as temp reg if its content is used
933 for builtin_return_address.
934 * config/s390/s390.md ("exception_receiver"): New expander.
935 * config/s390/s390-protos.h (s390_set_has_landing_pad_p): Prototype
938 2005-06-28 Andreas Krebbel <krebbel1@de.ibm.com>
940 * except.c (current_function_has_exception_handlers): Function
941 description added and if statements merged.
943 2005-06-28 Richard Henderson <rth@redhat.com>
945 * config/i386/sse.md (smaxv16qi3): Fix buffer overflow.
946 (sminv16qi3, umaxv8hi3, uminv8hi3): Likewise.
948 2005-06-27 Richard Henderson <rth@redhat.com>
950 * config/ia64/ia64.c (ia64_expand_vcondu_v2si): Generate proper
951 comparison operations.
952 (ia64_expand_vecint_minmax): Fix size of xops.
953 * config/ia64/vect.md (umax<VECINT>3): Fix fallback pattern typo.
954 (vec_shl_<VECINT>, vec_shr_<VECINT>): New.
956 2005-06-27 Richard Henderson <rth@redhat.com>
958 * tree-vect-transform.c (get_initial_def_for_reduction): Use correct
959 type for DEF and INIT_VAL. Pretend MIN/MAX need epilogue adjustment.
961 2005-06-27 Richard Henderson <rth@redhat.com>
963 * config/i386/sse.md (vec_shl_<SSEMODEI>, vec_shr_<SSEMODEI>): New.
964 (smaxv16qi3, umaxv8hi3, sminv16qi3, uminv8hi3): New.
966 2005-06-27 Richard Henderson <rth@redhat.com>
968 * tree-vect-transform.c (vect_create_epilog_for_reduction): Remove
969 duplicate little-endian adjustment.
971 2005-06-28 Kelley Cook <kcook@gcc.gnu.org>
973 * doc/include/texinfo.tex: Import from upstream CVS.
975 2005-06-28 Jan Hubicka <jh@suse.cz>
977 * cgraph.c (cgraph_remove_node): Do not release function bodies until
978 full cgraph is built.
979 * cgraph.h (cgraph_decide_inlining_incrementally): Add early argument.
980 * cgraphunit.c (cgraph_finalize_function): Update call of
981 cgraph_decide_inlining_incrementally.
982 (initialize_inline_failed): Break out of ...
983 (cgraph_analyze_function): ... here.
984 (rebuild_cgraph_edges): New function.
985 (pass_rebuild_cgraph_edges): New pass.
986 * common.opt (fearly-inlining): New flag.
987 * ipa-inline.c: Include ggc.h
988 (cgraph_clone_inlined_nodes): Avoid re-using of original copy
989 when cgraph is not fully built.
990 (cgraph_decide_inlining_incrementally): Add early mode.
991 (cgraph_early_inlining): New function.
992 (cgraph_gate_early_inlining): Likewise.
993 (pass_early_ipa_inline): New pass.
994 * ipa.c (cgraph_postorder): NULLify aux pointer.
995 * tree-inline.c (expand_call_inline): Avoid warning early.
996 * tree-optimize.c (pass_early_local_passes): New.
997 (execute_cleanup_cfg_pre_ipa): New.
998 (pass_cleanup_cfg): New.
999 (register_dump_files): Fix handling subpasses of IPA pass.
1000 (init_tree_optimization_passes): Add early passes.
1001 (execute_ipa_pass_list): Fix handling of subpasses of IPA pass.
1002 * passes.h (pass_early_tree_profile, pass_rebuild_cgraph_edges,
1003 pass_early_ipa_inline): New passes.
1004 * tree-profile.c (do_early_tree_profiling, pass_early_tree_profile): New.
1006 * invoke.texi: Document early-inlining.
1008 2005-06-28 Kelley Cook <kcook@gcc.gnu.org>
1010 * doc/include/fdl.texi: Merge in changes from upstream.
1011 * doc/include/gpl.texi: Likewise.
1013 2005-06-27 Diego Novillo <dnovillo@redhat.com>
1016 * tree-ssa-loop-niter.c (scev_probably_wraps_p): Handle type
1017 casts between unsigned and signed types with different size
1020 2005-06-28 Jan Hubicka <jh@suse.cz>
1022 * tree-optimize.c (exercute_free_datastructures):
1023 Do not disband implicit edges; do not attempt to build insn list;
1024 do not free cfg annotations.
1025 (execute_free_cfg_annotations); Disband implicit edges here;
1026 free cfg annotations here too.
1027 (pass_free_cfg_annotations); New pass.
1028 (init_tree_optimization_passes); Add pass_free_cfg_annotations.
1029 * tree-ssa-operands.c (free_ssa_operands); Recover; export.
1030 * tree-ssa-operands.h (free_ssa_operands); declare.
1031 * tree-ssa.c (delete_tree_ssa); Free SSA operand; mark stmt modified;
1033 * tree-ssanames.c (release_defs): Kill addresses_taken.
1035 * basic-block.h (basic_block_def): Kill rbi.
1036 (reorder_block_def): Kill; Remove next field (replaced by aux);
1037 move other fields to ...
1038 (rtl_bb_info): ... here.
1039 * bb-reorder.c (find_traces, rotate_loop, find_traces_1_round,
1040 copy_bb, connect_traces, add_labels_and_missing_jumps
1041 fix_up_fall_thru_edges, fix_crossing_conditional_branches,
1042 duplicate_computed_gotos, partition_hot_cold_basic-blocks):
1043 Update to new fields.
1044 * cfg.c (initialize_bb_rbi): Kill.
1045 * cfglayout.c (record_effective_endpoints, fixup_reorder_chain,
1046 fixup_fallthru_exit_predecessor, cfg_layout_duplicate_bb): Update.
1047 * cfgrtl.c (cfg_layout_create_basic_block): Do not initialize rbi.
1048 (try_redirect_by_replacing_jump): Update rbi references.
1049 (cfg_layout_split_block): Likewise.
1050 (cfg_layout_delete_block): Likewise.
1051 (cfg_layout_merge_blocks): Likewise.
1052 * function.c (thread_prologue_and_epilogue_insns): Likewise.
1053 * passes.c (rest_of_handle_sms): Likewise.
1054 * tracer.c (seen, tail_duplicate, layout_superblocks): Likewise.
1056 2005-06-27 David Edelsohn <edelsohn@gnu.org>
1058 * config/rs6000/rs6000.c (rs6000_file_start): Note PPC405 erratum
1059 in verbose_asm output.
1060 * config/rs6000/rs6000.h (PPC405_ERRATUM77): Bracket with
1062 * config.gcc (powerpc with_which): Define CONFIG_PPC405CR for
1065 2005-06-27 Jakub Jelinek <jakub@redhat.com>
1067 * builtin-attrs.def (DEF_ATTR_FOR_INT): Add for 5 and 6.
1068 (DEF_LIST_INT_INT): Add for 4,0, 4,5, 5,0, 5,6.
1069 (ATTR_NOTHROW_NONNULL_4, ATTR_NOTHROW_NONNULL_5): Define.
1070 (ATTR_FORMAT_PRINTF_4_0, ATTR_FORMAT_PRINTF_4_5,
1071 ATTR_FORMAT_PRINTF_5_0, ATTR_FORMAT_PRINTF_5_6): Define.
1072 * builtins.c: Include tree-flow.h.
1073 (expand_builtin_mempcpy, expand_builtin_memmove): Comment fixes.
1074 (expand_builtin_object_size, expand_builtin_memory_chk,
1075 maybe_emit_chk_warning, maybe_emit_sprintf_chk_warning,
1076 compute_object_offset, compute_builtin_object_size,
1077 fold_builtin_object_size): New functions.
1078 (expand_builtin): Handle BUILT_IN_OBJECT_SIZE and BUILT_IN_*_CHK.
1079 (fold_builtin_1): Likewise. Handle BUILT_IN_{,V}{,F}PRINTF
1080 and BUILT_IN_{,F}PRINTF_UNLOCKED.
1081 (fold_builtin_memory_chk, fold_builtin_stxcpy_chk,
1082 fold_builtin_strncpy_chk, fold_builtin_strcat_chk,
1083 fold_builtin_strncat_chk, fold_builtin_sprintf_chk,
1084 fold_builtin_snprintf_chk, fold_builtin_printf, fold_builtin_fprintf):
1086 * builtins.def (BUILT_IN_OBJECT_SIZE, BUILT_IN_MEMCPY_CHK,
1087 BUILT_IN_MEMMOVE_CHK, BUILT_IN_MEMPCPY_CHK, BUILT_IN_MEMSET_CHK,
1088 BUILT_IN_STPCPY_CHK, BUILT_IN_STRCAT_CHK, BUILT_IN_STRCPY_CHK,
1089 BUILT_IN_STRNCAT_CHK, BUILT_IN_STRNCPY_CHK, BUILT_IN_SNPRINTF_CHK,
1090 BUILT_IN_SPRINTF_CHK, BUILT_IN_VSNPRINTF_CHK, BUILT_IN_VSPRINTF_CHK,
1091 BUILT_IN_FPRINTF_CHK, BUILT_IN_PRINTF_CHK, BUILT_IN_VFPRINTF_CHK,
1092 BUILT_IN_VPRINTF_CHK): New builtins.
1093 * builtin-types.def (DEF_FUNCTION_TYPE_5, DEF_FUNCTION_TYPE_VAR_4):
1095 (BT_FN_SIZE_CONST_PTR_INT, BT_FN_INT_INT_CONST_STRING_VALIST_ARG,
1096 BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, BT_FN_PTR_PTR_INT_SIZE_SIZE,
1097 BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE,
1098 BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG,
1099 BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG,
1100 BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG,
1101 BT_FN_INT_INT_CONST_STRING_VAR, BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR,
1102 BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR,
1103 BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR): New types.
1104 * c-common.c (DEF_FUNCTION_TYPE_5, DEF_FUNCTION_TYPE_6,
1105 DEF_FUNCTION_TYPE_VAR_4, DEF_FUNCTION_TYPE_VAR_5): Define.
1106 * Makefile.in (OBJS-common): Add tree-object-size.o.
1107 (tree-object-size.o): Add dependencies.
1108 * tree-pass.h (pass_object_sizes): Add.
1109 * tree-optimize.c (init_tree_optimization_passes): Add
1111 * tree-object-size.c: New file.
1112 * tree.h (fold_builtin_memory_chk, fold_builtin_stxcpy_chk,
1113 fold_builtin_strncpy_chk, fold_builtin_snprintf_chk,
1114 compute_builtin_object_size, init_object_sizes, fini_object_sizes):
1116 * tree-ssa-ccp.c (get_strlen): Rename to ...
1117 (get_maxval_strlen): ...this function. Handle also computing of maximum
1118 string length and maximum integral value.
1119 (ccp_fold_builtin): Handle BUILT_IN_*_CHK. Use get_maxval_strlen
1120 instead of get_strlen. Pass CALLEE and ARGLIST variables to the
1121 folding functions instead of computing them again.
1122 (execute_fold_all_builtins): Retry ccp_fold_builtin if a builtin changed
1123 into some other builtin.
1124 * doc/extend.texi (Object Size Checking): Document.
1126 * regrename.c (copy_value): Fix comment.
1128 * toplev.c (process_options): Use if (FRAME_GROWS_DOWNWARD)
1129 instead of preprocessor conditionals.
1131 * targhooks.c (default_hidden_stack_protect_fail): Fall back to
1132 default_external_stack_protect_fail if visibility is not supported
1134 * config/i386/i386.c (ix86_stack_protect_fail): New function.
1135 (TARGET_STACK_PROTECT_FAIL): Define.
1136 * config/i386/i386.md (stack_protect_si): Change CLOBBER into
1138 (stack_protect_di): Likewise. Use %k2 instead of %2 to avoid
1139 invalid instruction xorl %rax, %rax.
1141 2005-06-27 Richard Henderson <rth@redhat.com>
1143 * c-cppbuiltin.c (c_cpp_builtins): Add __SSP_ALL__ and __SSP__.
1144 * cfgexpand.c: Include params.h.
1145 (has_protected_decls, has_short_buffer): New.
1146 (expand_stack_vars): Take a predicate to determine what to expand.
1147 (defer_stack_allocation): True when flag_stack_protect on.
1148 (SPCT_HAS_LARGE_CHAR_ARRAY, SPCT_HAS_SMALL_CHAR_ARRAY): New.
1149 (SPCT_HAS_ARRAY, SPCT_HAS_AGGREGATE): New.
1150 (stack_protect_classify_type, stack_protect_decl_phase): New.
1151 (stack_protect_decl_phase_1, stack_protect_decl_phase_2): New.
1152 (add_stack_protection_conflicts, create_stack_guard): New.
1153 (expand_used_vars): Add stack protection logic.
1154 (tree_expand_cfg): Likewise.
1155 * common.opt (Wstack-protector): New.
1156 (fstack-protector, fstack-protector-all): New.
1157 * function.c: Include predict.h.
1158 (assign_parm_adjust_stack_rtl): Zap stack_parm when stack protect
1159 wants to copy the parameter into the stack frame.
1160 (stack_protect_prologue, stack_protect_epilogue): New.
1161 (expand_function_end): Call stack_protect_epilogue. Do
1162 sjlj_emit_function_exit_after after naked_return_label.
1163 * function.h (struct function): Add stack_protect_guard.
1164 * params.def (PARAM_SSP_BUFFER_SIZE): New.
1165 * toplev.c (process_options): Disable flag_stack_protect and/or
1166 warn_stack_protect based on FRAME_GROWS_DOWNWARD.
1167 * tree.h (stack_protect_prologue): Declare.
1169 * target-def.h (TARGET_STACK_PROTECT_GUARD): New.
1170 (TARGET_STACK_PROTECT_FAIL): New.
1171 (TARGET_INITIALIZER): Add them.
1172 * target.h (struct gcc_target): Add stack_protect_guard and
1174 * targhooks.c: Include ggc.h, gty header.
1175 (stack_chk_guard_decl, default_stack_protect_guard): New.
1176 (stack_chk_fail_decl, default_external_stack_protect_fail): New.
1177 (default_hidden_stack_protect_fail): New.
1178 * targhooks.h (default_stack_protect_guard): Declare.
1179 (default_external_stack_protect_fail): Declare.
1180 (default_hidden_stack_protect_fail): Declare.
1181 * config/i386/i386.c (TARGET_STACK_PROTECT_FAIL): New.
1182 * config/i386/i386.md (UNSPEC_SP_SET, UNSPEC_SP_TEST): New.
1184 (conditional_trap, conditional_trap_1): Remove.
1185 (stack_protect_set, stack_protect_set_si, stack_protect_set_di): New.
1186 (stack_protect_test, stack_protect_test_si, stack_protect_test_di): New.
1187 * doc/md.texi (stack_protect_set, stack_protect_test): New.
1188 * doc/tm.texi (TARGET_STACK_PROTECT_GUARD): New.
1189 (TARGET_STACK_PROTECT_FAIL): New.
1191 * libgcc-std.ver (GCC_4.1.0): New.
1192 * libgcc.h (__stack_chk_guard): Declare.
1193 (__stack_chk_fail, __stack_chk_fail_local): Declare.
1194 * libgcc2.c (L_stack_chk, L_stack_chk_local): New.
1195 * mklibgcc.in (lib2funcs): Add them.
1197 2005-06-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1200 * c-common.c (check_function_sentinel): Pass in named argument
1201 list, skip over named arguments before looking for a sentinel.
1202 (check_function_arguments): Pass in named argument list.
1203 * c-common.h (check_function_arguments): Likewise.
1204 * c-typeck.c (build_function_call): Likewise.
1206 2005-06-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1208 * genautomata.c (decl_mode_check_failed,
1209 regexp_mode_check_failed): Add noreturn attribute.
1211 2005-06-26 Kazu Hirata <kazu@codesourcery.com>
1213 * cfg.c, tree-vect-transform.c, tree.def: Fix comment typos.
1214 * doc/invoke.texi: Fix typos.
1216 * builtins.c, c-common.c, c-convert.c, c-decl.c, c-typeck.c,
1217 convert.c, lambda-code.c, predict.c, tree-cfg.c,
1218 tree-complex.c, tree-data-ref.c, tree-if-conv.c,
1219 tree-mudflap.c, tree-scalar-evolution.c, tree-ssa-ccp.c,
1220 tree-ssa-loop-ivcanon.c, tree-ssa-loop-ivopts.c,
1221 tree-ssa-loop-manip.c, tree-ssa-phiopt.c, tree-ssa-pre.c,
1222 tree-vect-analyze.c, tree-vect-transform.c, tree-vectorizer.c,
1223 tree.c: Use fold_buildN instead of fold (buildN (...)).
1225 2005-06-26 Gerald Pfeifer <gerald@pfeifer.com>
1227 * doc/install.texi (Specific): Do not specify the concrete
1228 versions of GCC provided by Cygwin. Simplify the part on
1231 2005-06-26 Kazu Hirata <kazu@codesourcery.com>
1233 * config/arc/arc-protos.c: Remove the prototype for
1235 * config/arc/arc.c (arc_finalize_pic): Remove.
1236 * config/arc/arc.h (FINALIZE_PIC): Likewise.
1237 * config/bfin/bfin.h (FINALIZE_PIC): Likewise.
1238 * config/rs6000/rs6000.h (FINALIZE_PIC): Likewise.
1240 2005-06-26 Jakub Jelinek <jakub@redhat.com>
1243 * calls.c (expand_call, emit_library_call_value_1): Use xmalloc/free
1244 instead of alloca for really big argument sizes.
1247 * gimplify.c (gimplify_type_sizes): Check for type == error_mark_node
1248 earlier in the function.
1250 * regrename.c (copy_value): Don't replace fixed or global
1251 regs with older regs.
1253 * defaults.h (FRAME_GROWS_DOWNWARD): Define to 0 if not defined.
1254 * function.c (get_func_frame_size): Use if (FRAME_GROWS_DOWNWARD)
1255 instead of preprocessor conditionals.
1256 (assign_stack_local_1, assign_stack_temp_for_type): Likewise.
1257 * cfgexpand.c (FRAME_GROWS_DOWNWARD): Don't redefine to 1 or 0
1258 depending on if it was or was not defined previously.
1259 * doc/rtl.texi (VIRTUAL_STACK_VARS_REGNUM): Mention that only non-zero
1260 definition of FRAME_GROWS_DOWNWARD means frame grows downward.
1261 * doc/tm.texi (FRAME_GROWS_DOWNWARD): Likewise.
1262 * config/m68hc11/m68hc11.h (FRAME_GROWS_DOWNWARD): Define to 0. Update
1264 * config/pa/pa.h (FRAME_GROWS_DOWNWARD): Likewise.
1265 * config/rs6000/rs6000.h (FRAME_GROWS_DOWNWARD): Likewise.
1266 * config/stormy16/stormy16.h (FRAME_GROWS_DOWNWARD): Define to 0.
1267 * config/c4x/c4x.h (FRAME_GROWS_DOWNWARD): Likewise.
1268 * config/sh/sh.h (FRAME_GROWS_DOWNWARD): Likewise.
1269 * config/ia64/ia64.h (FRAME_GROWS_DOWNWARD): Likewise.
1270 * config/iq2000/iq2000.h (FRAME_GROWS_DOWNWARD): Likewise.
1271 * config/pdp11/pdp11.h (FRAME_GROWS_DOWNWARD): Define to 1. Update
1273 * config/i860/i860.h (FRAME_GROWS_DOWNWARD): Likewise.
1274 * config/h8300/h8300.h (FRAME_GROWS_DOWNWARD): Likewise.
1275 * config/arc/arc.h (FRAME_GROWS_DOWNWARD): Likewise.
1276 * config/vax/vax.h (FRAME_GROWS_DOWNWARD): Likewise.
1277 * config/sparc/sparc.h (FRAME_GROWS_DOWNWARD): Likewise.
1278 * config/i386/i386.h (FRAME_GROWS_DOWNWARD): Likewise.
1279 * config/fr30/fr30.h (FRAME_GROWS_DOWNWARD): Likewise.
1280 * config/frv/frv.h (FRAME_GROWS_DOWNWARD): Likewise.
1281 * config/mn10300/mn10300.h (FRAME_GROWS_DOWNWARD): Likewise.
1282 * config/bfin/bfin.h (FRAME_GROWS_DOWNWARD): Likewise.
1283 * config/ns32k/ns32k.h (FRAME_GROWS_DOWNWARD): Likewise.
1284 * config/v850/v850.h (FRAME_GROWS_DOWNWARD): Likewise.
1285 * config/alpha/alpha.h (FRAME_GROWS_DOWNWARD): Update comment.
1286 * config/s390/s390.h (FRAME_GROWS_DOWNWARD): Likewise.
1287 * config/arm/arm.h (FRAME_GROWS_DOWNWARD): Likewise.
1288 * config/alpha/unicosmk.h (FRAME_GROWS_DOWNWARD): Define to 1.
1289 * config/cris/cris.h (FRAME_GROWS_DOWNWARD): Likewise.
1290 * config/m68k/m68k.h (FRAME_GROWS_DOWNWARD): Likewise.
1291 * config/mmix/mmix.h (FRAME_GROWS_DOWNWARD): Likewise.
1293 2005-06-26 Kazu Hirata <kazu@codesourcery.com>
1295 PR tree-optimization/22026
1296 * tree-vrp.c (extract_range_from_binary_expr): Drop to
1297 VR_VARYING if a binary expression involving VR_ANTI_RANGE is
1298 PLUS_EXPR, MINUS_EXPR, or unsigned MULT_EXPR.
1300 2005-06-26 Kazu Hirata <kazu@codesourcery.com>
1302 * Makefile.in (OBJS-common): Remove duplicate object file
1305 2005-06-25 Jan Hubicka <jh@suse.cz>
1307 * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update profile.
1308 * cfg.c (update_bb_profile_for_threading): Fix rescaling.
1310 * passes.c (rest_of_handle_branch_prob): Do not rebuild profiling info
1312 (rest_of_compilation): Fix conditional on branch prob pass.
1313 * predict.c (tree_estimate_probability): Enable strip_builtin_expect
1314 when not loop optimizing.
1316 2005-06-25 Bernd Schmidt <bernd.schmidt@analog.com>
1318 * config/bfin/bfin.md (ror_one, rol_one, ashrdi3, ashldi3, lshrdi3):
1320 (movbi): Add alternative to set CC to zero.
1321 (compare_eq, compare_ne, compare_le, compare_lt, compare_leu,
1322 compare_ltu): Now named patterns.
1324 2005-06-25 Kelley Cook <kcook@gcc.gnu.org>
1326 * all files: Update FSF address in copyright headers.
1328 2005-06-25 Kelley Cook <kcook@gcc.gnu.org>
1330 * gengtype.c: Update FSF address in copyright header.
1331 (create_file): Update FSF in outputed copyright header.
1333 2005-06-24 Kazu Hirata <kazu@codesourcery.com>
1335 * cfglayout.c (block_locators_locs, line_locators_locs,
1336 line_locators_lines, file_locators_locs): Change the type to
1338 (insn_locators_initialize, change_scope, insn_scope,
1339 locator_line, insn_line, locator_file): Use VEC instead of
1342 2005-06-24 Jason Merrill <jason@redhat.com>
1344 * tree-nrv.c (tree_nrv): Fix to check assignments to the
1345 RESULT_DECL rather than just RETURN_EXPRs.
1346 (finalize_nrv_r): Adjust.
1348 2005-06-24 Jan Hubicka <jh@suse.cz>
1350 * tree-optimize.c (init_tree_optimization_passes): Fix flags of
1351 all_passes and all_ipa_passes.
1353 * c-common.c: Include cgraph.h
1354 (handle_externally_visible_attribute): New function.
1355 (c_common_att): Add "externally_visible" attribute.
1356 * cgraph.c (decide_is_variable_needed): Obey externally
1358 (cgraph_varpool_finalize_decl): Avoid redundant checking.
1359 * cgraph.h (struct cgraph_node): New flag externally_visible.
1360 (decide_is_function_needed): Obey externally visible flag.
1361 (cgraph_finalize_function): Avoid redundant checks.
1362 (cgraph_function_and_variable_visibility): Bring symbols local
1364 * common.opt (fwhole-program): New flag.
1366 * doc/invoke.texi (-fwhole-program): Document.
1368 2005-06-24 Mark Mitchell <mark@codesourcery.com>
1371 * tree-ssa-operands.c (get_expr_operands): Check s_ann for NULL
1374 2005-06-23 Mark Mitchell <mark@codesourcery.com>
1377 * tree-ssa-operands.c (get_expr_operands): Check the volatility of
1378 the FIELD_DECL and set s_ann->has_volatile_ops accordingly.
1380 2005-06-24 Jan Hubicka <jh@suse.cz>
1382 * opts.c (decode_options): Enable unit-at-a-time by default at -O1.
1384 2005-06-23 Jeff Law <law@redhat.com>
1386 * tree-optimize.c (init_tree_optimization_passes): Move
1387 copy prop pass to run just before VRP.
1388 * tree-vrp.c (remove_range_assertions): Remove copies created
1389 by ASSERT_EXPR removal.
1391 2005-06-23 Kazu Hirata <kazu@codesourcery.com>
1393 PR tree-optimization/22117
1394 * tree-vrp.c (extract_range_from_binary_expr): Compute a
1395 correct range when adding two pointers.
1397 2005-06-23 Jason Merrill <jason@redhat.com>
1400 Leave the return slot target in the MODIFY_EXPR rather than making
1401 it an argument, but only use it if the CALL_EXPR has a flag set.
1402 * tree.h (CALL_EXPR_HAS_RETURN_SLOT_ADDR): Rename to
1403 CALL_EXPR_RETURN_SLOT_OPT.
1404 * calls.c (expand_call): Adjust.
1405 * tree-inline.c (expand_call_inline): Adjust.
1406 * tree-pretty-print.c (dump_generic_node): Adjust.
1408 And set the flag as appropriate.
1409 * gimplify.c (gimplify_modify_expr_rhs): Set
1410 CALL_EXPR_HAS_RETURN_SLOT_ADDR where the LHS is obviously safe.
1411 * tree-nrv.c (execute_return_slot_opt): Set
1412 CALL_EXPR_HAS_RETURN_SLOT_ADDR based on escape analysis.
1413 * tree-pass.h: Declare pass_return_slot.
1414 * tree-optimize.c (init_tree_optimization_passes): Add it.
1416 2005-06-23 David Edelsohn <edelsohn@gnu.org>
1419 * config/rs6000/rs6000.h (PPC405_ERRATUM77): New.
1420 * config/rs6000/rs6000.md: Move atomic instructions to ...
1421 * config/rs6000/sync.md: Here.
1422 Change sync_compare_and_swap<mode> to define_expand. All stwcx
1423 patterns test PPC405_ERRATUM77.
1425 2005-06-23 Jan Hubicka <jh@suse.cz>
1427 * tree-inline.c (copy_body_r): Remap labels correctly.
1429 2005-06-22 Alan Modra <amodra@bigpond.net.au>
1431 * config/rs6000/sysv4.h (TARGET_ASM_EXCEPTION_SECTION): Delete.
1433 2005-06-22 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
1436 * varasm.c (compute_reloc_for_constant): Treat VIEW_CONVER_EXPR
1437 the same as the other cast operands.
1438 (output_addressed_constants): Likewise.
1440 2005-06-21 Jeff Law <law@redhat.com>
1442 * tree-vrp.c (extract_range_from_unary_expr): Handle type
1445 2005-06-21 Dorit Nuzman <dorit@il.ibm.com>
1447 * genopinit.c (vec_shl_optab, vec_shr_optab): Initialize new optabs.
1448 (reduc_plus_optab): Removed. Replcaed with...
1449 (reduc_splus_optab, reduc_uplus_optab): Initialize new optabs.
1450 * optabs.c (optab_for_tree_code): Return reduc_splus_optab or
1451 reduc_uplus_optab instead of reduc_plus_optab.
1452 (expand_vec_shift_expr): New function.
1453 (init_optabs): Initialize new optabs. Remove initialization of
1455 (optab_for_tree_code): Return vec_shl_optab/vec_shr_optab
1456 for VEC_LSHIFT_EXPR/VEC_RSHIFT_EXPR.
1457 * optabs.h (OTI_reduc_plus): Removed. Replaced with...
1458 (OTI_reduc_splus, OTI_reduc_uplus): New.
1459 (reduc_plus_optab): Removed. Replcaed with...
1460 (reduc_splus_optab, reduc_uplus_optab): New optabs.
1461 (vec_shl_optab, vec_shr_optab): New optabs.
1462 (expand_vec_shift_expr): New function declaration.
1464 * tree.def (VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR): New tree-codes.
1465 * tree-inline.c (estimate_num_insns_1): Handle new tree-codes.
1466 * expr.c (expand_expr_real_1): Handle new tree-codes.
1467 * tree-pretty-print.c (dump_generic_node, op_symbol, op_prio): Likewise.
1468 * tree-vect-generic.c (expand_vector_operations_1): Add assert.
1470 * tree-vect-transform.c (vect_create_epilog_for_reduction): Add two
1471 alternatives for generating reduction epilog code.
1472 (vectorizable_reduction): Don't fail of direct reduction support is
1474 (vectorizable_target_reduction_pattern): Likewise.
1476 * config/rs6000/altivec.md (reduc_smax_v4si, reduc_smax_v4sf,
1477 reduc_umax_v4si, reduc_smin_v4si, reduc_smin_v4sf, reduc_umin_v4si,
1478 reduc_plus_v4si, reduc_plus_v4sf): Removed.
1479 (vec_shl_<mode>, vec_shr_<mode>, altivec_vsumsws_nomode,
1480 reduc_splus_<mode>, reduc_uplus_v16qi): New.
1482 2005-06-20 Daniel Berlin <dberlin@dberlin.org>
1484 * c-typeck.c (build_function_call): Set fundecl = function again.
1485 * tree-ssa-alias.c (find_used_portions): Address taking causes the
1486 entire variable to be used.
1487 * tree-ssa-structalias.c (do_structure_copy): Fix handling of
1488 unknown size variables, and structure copies from addressof
1489 operations. Simplify how we do *a = *b type structure copies.
1490 (init_base_vars): Add ANYTHING = &ANYTHING constraint the right
1491 way. READONLY's address is not taken by default.
1492 INTEGER dereference should point to anything.
1493 (create_variable_info_for): It's okay for the first field to not start
1496 2005-06-20 Kaz Kojima <kkojima@gcc.gnu.org>
1498 config/sh/linux.h (FUNCTION_PROFILER): Constify a char*.
1500 2005-06-20 Roger Sayle <roger@eyesopen.com>
1501 Fariborz Jahanian <fjahanian@apple.com>
1503 * combine.c (simplify_set): Simplify setting of CC register
1504 by removing redundant compare with 0 on RHS.
1506 2005-06-20 Jan Beulich <jbeulich@novell.com>
1508 * config/i386/netware-libgcc.def: Update copyright.
1509 * config/i386/netware-libgcc.exp (__divdc3, __divsc3, __divxc3,
1510 __muldc3, __mulsc3, __mulxc3, __powidf2, __powisf2, __powixf2): Add.
1511 * config/i386/netware.c (gen_stdcall_decoration,
1512 gen_fastd_decoration): Merge into ...
1513 (gen_stdcall_or_fastcall_decoration): ... this. Adjust to match
1515 (gen_regparm_prefix): Adjust to match i386_nlm_encode_section_info.
1516 (i386_nlm_encode_section_info): Adjust to match WinNT's changes.
1517 * config/i386/t-nwld (SHLIB_LINK): Also create libgcc.imp alias of
1518 libgcc_s.imp. Use 'expr' rather than $(()) shell expressions.
1519 * gthr-nks.h (__gthread_objc_mutex_allocate): Kill another dubious
1520 use of NX_MUTEX_RECURSIVE.
1522 2005-06-19 Roger Sayle <roger@eyesopen.com>
1524 * fold-const.c (swap_tree_comparison): Add support for unordered
1525 floating point comparisons.
1526 * tree-vrp.c (opposite_comparison): Delete.
1527 (extract_range_from_assert): Replace calls to opposite_comparison
1528 with calls to swap_tree_comparison.
1529 (register_edge_assert_for): Likewise.
1530 (vrp_evaluate_conditional): Likewise.
1532 2005-06-20 Kaz Kojima <kkojima@gcc.gnu.org>
1534 * integrate.c (allocate_initial_values): Update the references
1535 to global_live_at_start and global_live_at_end.
1537 2005-06-20 Jan Hubicka <jh@suse.cz>
1539 * cfgloop.h (DLTHE_RECORD_COPY_NUMBER): New flag.
1540 * cfgloopmanip.c (duplicate_loop_to_header_edge): Set aux flags only
1542 * loop-unroll.c (peel_loop_completely, unroll_loop_constant_iterations,
1543 unroll_loop_runtime_iterations, peel_loop_simple, unroll_loop_stupid):
1544 Update call of duplicate_loop_to_header_edge.
1545 (apply_opt_in_copies): Clear out aux pointers.
1547 2005-06-19 Joseph S. Myers <joseph@codesourcery.com>
1549 * config/i386/i386.c (TARGET_MANGLE_FUNDAMENTAL_TYPE): Define.
1550 (ix86_mangle_fundamental_type): New.
1551 * config/ia64/ia64.c (TARGET_MANGLE_FUNDAMENTAL_TYPE): Define.
1552 (ia64_mangle_fundamental_type): New.
1554 2005-06-19 Roger Sayle <roger@eyesopen.com>
1556 * c-decl.c (grokdeclarator): Only check TREE_OVERFLOW on
1558 * c-typeck.c (build_c_cast): Only preserve TREE_OVERFLOW on
1559 CONSTANT_CLASS_P nodes.
1561 2005-06-19 Richard Henderson <rth@redhat.com>
1563 * config/ia64/vect.md (vec_extractv2sf_1): Fix cut-and-paste error;
1564 the shift is always required.
1566 2005-06-19 Richard Henderson <rth@redhat.com>
1568 * config/ia64/ia64-modes.def (V4SF): Add.
1569 * config/ia64/ia64.c (ia64_legitimate_constant_p): Handle CONST_VECTOR.
1570 * config/ia64/ia64.h (CANNOT_CHANGE_MODE_CLASS): Allow vector to
1571 integer mode changes in fp regs.
1572 * config/ia64/ia64.md (UNSPEC_VECT_EXTR): New.
1573 * config/ia64/vect.md (smaxv2sf3, sminv2sf3): Fix typos in names.
1574 (reduc_plus_v2sf, reduc_smax_v2sf, reduc_smin_v2sf): New.
1575 (vcondv2sf): Use gen_fpack
1576 (fpack): Remove * from name.
1577 (fswap, fmix_l, fmix_r, fmix_lr): New.
1578 (vec_setv2sf, vec_extractv2sf_0_le, vec_extractv2sf_0_be): New.
1579 (vec_extractv2sf_1, vec_extractv2sf): New.
1581 2005-06-19 Andreas Krebbel <krebbel1@de.ibm.com>
1583 * combine.c (make_compound_operation): Use simplify_subreg. Delete
1584 a optimization already done by simplify_subreg.
1586 2005-06-19 Ulrich Weigand <uweigand@de.ibm.com>
1588 * loop.c (scan_loop): Do not consider insns setting the frame
1589 pointer to be candidates for hoisting.
1591 2005-06-19 Uros Bizjak <uros@kss-loka.si>
1593 * config/i386/i386.md (*cmpfp_0_sf, *cmpfp_0_df, cmpfp_0_xf):
1594 Remove instruction patterns.
1595 (*cmpfp_0): New instruction pattern. Set "unit" attribute to "i387".
1596 (*cmpfp_sf, *cmpfp_df, *cmpfp_xf, *cmpfp_u, *_cmpfp_<mode>):
1597 Set "unit" attribute to "i387".
1598 (*pushsf, *pushsf_rex64, *pushdf_nointeger, *pushdf_integer)
1599 (*pushxf_nointeger, *pushxf_integer): Set "unit" attribute to "i387"
1601 (*truncdfsf_mixed, *truncdfsf_i387, *truncxfsf2_mixed)
1602 (*truncxfsf2_i387, *truncxfdf2_mixed, *truncxfdf2_i387): Set "unit"
1603 attribute to "i387" when "type" attribute equals "multi".
1604 (*floathisf2_i387, *floatsisf2_mixed, *floatsisf2_i387)
1605 (*floatdisf2_mixed, *floatdisf2_i387, *floathidf2_i387)
1606 (*floatsidf2_mixed, *floatsidf2_i387, *floatdidf2_mixed)
1607 (*floatdidf2_i387, floathixf2, floatsixf2, floatdixf2): Set "unit"
1608 attribute to "i387" when "type" attribute equals "multi".
1609 * config/i386/mmx.md (*mov<mode>_internal_rex64)
1610 (*mov<mode>_internal, *movv2sf_internal_rex64, *movv2sf_internal):
1611 Set "unit" attribute to "mmx" when "type" attribute equals "ssecvt".
1612 (mmx_pmovmskb): Correct wrong "type" and "mode" attributes.
1613 * config/i386/sse.md (sse_cvtps2pi, sse_cvttps2pi, sse_cvtpd2di)
1614 (sse_cvttpd2pi): Set "unit" attribute to "mmx".
1615 (sse2_cvtpi2pd): Split register constraints. Set "unit" attribute
1616 to "mmx" for "y" operand 1.
1618 2005-06-19 Uros Bizjak <uros@kss-loka.si>
1620 * config/i386/i386.c (ix86_function_arg_regno_p): Add MMX_REGNO_P
1621 for TARGET_MMX. Use MMX_REGPARM_MAX and SSE_REGPARM_MAX for MMX
1622 and SSE registers to determine if regno is valid.
1623 (ix86_function_value_regno_p): Depend FIRST_FLOAT_REG on
1624 TARGET_FLOAT_RETURNS_IN_80387 also for TARGET_64BIT. Clean up.
1626 2005-06-18 Richard Henderson <rth@redhat.com>
1628 * tree-complex.c (init_dont_simulate_again): Clear DONT_SIMULATE_AGAIN
1629 for control-altering statements; set it again for returns.
1630 (complex_visit_stmt): Return SSA_PROP_VARYING for stmts that are
1633 2005-06-18 Richard Henderson <rth@redhat.com>
1636 * tree-ssa-pre.c (create_expression_by_pieces): Set
1637 DECL_COMPLEX_GIMPLE_REG_P.
1638 (insert_into_preds_of_block): Likewise.
1640 2005-06-18 Steven Bosscher <stevenb@suse.de>
1642 * Makefile.in: Fix tree-cfgcleanup.c dependencies.
1644 2005-06-18 Richard Henderson <rth@redhat.com>
1646 * expr.c (store_constructor): Use store of 0 to indicate value
1647 death instead of a clobber.
1649 * config/i386/i386.c (ix86_expand_reduc_v4sf): New.
1650 * config/i386/i386-protos.h (ix86_expand_reduc_v4sf): Declare.
1651 * config/i386/sse.md (reduc_plus_v4sf): New.
1652 (reduc_smax_v4sf, reduc_smin_v4sf): New.
1654 2005-06-18 James A. Morrison <phython@gcc.gnu.org>
1656 * fold_const (fold_binary): Fold X % (2**N) to X & (2**N - 1) for
1657 nonnegative values of X.
1659 2005-06-18 Uros Bizjak <uros@kss-loka.si>
1661 * doc/md.texi (Standard Names): Change insn pattern name
1662 from truncM2 to btruncM2 for 'trunc' built-in description.
1663 Add rintM2 insn pattern description.
1665 2005-06-18 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1667 * c-decl.c (locate_old_decl): Add format attribute.
1668 (implicit_decl_warning): Likewise.
1670 * diagnostic.h (verbatim): Move ...
1671 * toplev.h (verbatim): ... here. Add ATTRIBUTE_GCC_DIAG.
1672 * pretty-print.h (pp_verbatim): Add ATTRIBUTE_GCC_PPDIAG.
1674 2005-06-18 Roger Sayle <roger@eyesopen.com>
1677 * config/rs6000/aix51.h (TARGET_C99_FUNCTIONS): Remove definition.
1679 2005-06-18 Dorit Nuzman <dorit@il.ibm.com>
1681 * tree.def (REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR): New
1683 * optabs.h (OTI_reduc_smax, OTI_reduc_umax, OTI_reduc_smin,
1684 OTI_reduc_umin, OTI_reduc_plus): New optabs for reduction.
1685 (reduc_smax_optab, reduc_umax_optab, reduc_smin_optab, reduc_umin_optab,
1686 reduc_plus_optab): New optabs for reduction.
1687 * expr.c (expand_expr_real_1): Handle new tree-codes.
1688 * tree-inline.c (estimate_num_insns_1): Handle new tree-codes.
1689 * tree-pretty-print.c (dump_generic_node, op_prio, op_symbol): Handle
1691 * optabs.c (optab_for_tree_code): Handle new tree-codes.
1692 (init_optabs): Initialize new optabs.
1693 * genopinit.c (optabs): Define handlers for new optabs.
1695 * tree-vect-analyze.c (vect_analyze_operations): Fail vectorization in
1696 case of a phi that is marked as relevant. Call vectorizable_reduction.
1697 (vect_mark_relevant): Phis may be marked as relevant.
1698 (vect_mark_stmts_to_be_vectorized): The use corresponding to the
1699 reduction variable in a reduction stmt does not mark its defining phi
1700 as relevant. Update documentation accordingly.
1701 (vect_can_advance_ivs_p): Skip reduction phis.
1702 * tree-vect-transform.c (vect_get_vec_def_for_operand): Takes
1703 additional argument. Handle reduction.
1704 (vect_create_destination_var): Update call to vect_get_new_vect_var.
1705 Handle non-vector argument.
1706 (get_initial_def_for_reduction): New function.
1707 (vect_create_epilog_for_reduction): New function.
1708 (vectorizable_reduction): New function.
1709 (vect_get_new_vect_var): Handle new vect_var_kind.
1710 (vectorizable_assignment, vectorizable_operation, vectorizable_store,
1711 vectorizable_condition): Update call to vect_get_new_vect_var.
1712 (vect_transform_stmt): Call vectorizable_reduction.
1713 (vect_update_ivs_after_vectorizer): Skip reduction phis.
1714 (vect_transform_loop): Skip if stmt is both not relevant and not live.
1715 * tree-vectorizer.c (reduction_code_for_scalar_code): New function.
1716 (vect_is_simple_reduction): Was empty - added implementation.
1717 * tree-vectorizer.h (vect_scalar_var): New enum vect_var_kind value.
1718 (reduc_vec_info_type): New enum vect_def_type value.
1719 * config/rs6000/altivec.md (reduc_smax_v4si, reduc_smax_v4sf,
1720 reduc_umax_v4si, reduc_smin_v4si, reduc_umin_v4sf, reduc_smin_v4sf,
1721 reduc_plus_v4si, reduc_plus_v4sf): New define_expands.
1723 * tree-vect-analyze.c (vect_determine_vectorization_factor): Remove
1724 ENABLE_CHECKING around gcc_assert.
1725 * tree-vect-transform.c (vect_do_peeling_for_loop_bound,
1726 (vect_do_peeling_for_alignment, vect_transform_loop,
1727 vect_get_vec_def_for_operand): Likewise.
1729 2005-06-18 Joseph S. Myers <joseph@codesourcery.com>
1731 * config/ia64/ia64.c (ia64_function_arg): Set up a PARALLEL for a
1732 big-endian unnamed __float80 value.
1734 2005-06-18 Richard Henderson <rth@redhat.com>
1737 * tree-sra.c (generate_copy_inout): Handle SSA_NAME complex
1740 2005-06-17 Richard Henderson <rth@redhat.com>
1742 * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Use
1743 initialize_original_copy_tables and free_original_copy_tables.
1744 (vect_do_peeling_for_alignment): Likewise.
1746 2005-06-17 Pat Haugen <pthaugen@us.ibm.com>
1748 * bb-reorder.c (find_traces_1_round): Use succ block frequency
1749 instead of edge frequency for calls to better_edge_p.
1751 2005-06-17 Andrew Pinski <pinskia@physics.uc.edu>
1754 * tree-ssa-loop-im.c (for_each_index): Handle COMPLEX_CST.
1756 2005-06-17 Steve Ellcey <sje@cup.hp.com>
1759 * config/ia64/hpux.h (FUNCTION_PROFILER): New (dummy).
1760 (PROFILE_HOOK): New.
1761 (PROFILE_BEFORE_PROLOGUE): Undef.
1762 (NO_PROFILE_COUNTERS): New.
1763 * config/ia64/ia64-protos.h (ia64_profile_hook): New.
1764 * config/ia64/ia64.c (ia64_compute_frame_size): Add ifdef.
1765 (gen_mcount_func_rtx): New.
1766 (ia64_profile_hook): New.
1767 * config/ia64/ia64.md (ip_value): New.
1769 2005-06-17 Devang Patel <dpatel@apple.com>
1771 * config/rs6000/predicates.md (s5bit_cint_operand,
1772 u5bit_cint_operand): New.
1773 * config/rs6000/altivec.md (altivec_vspltb, altivec_vsplth,
1774 altivec_vspltisw_v4sf): Use new 5 bit constant operand predicates.
1775 * config/rs6000/rs6000.c (rs6000_expand_unop_builtin): Fix signed
1776 5 bit constant check.
1778 2005-06-17 Richard Henderson <rth@redhat.com>
1780 * local-alloc.c (update_equiv_regs): Update reg_equiv_init
1781 properly when moving an initialization insn.
1783 2005-06-17 Paolo Bonzini <bonzini@gnu.org>
1785 * aclocal.m4 (gcc_AC_CHECK_TOOL): Do not overwrite the
1787 * configure.ac: Regenerate.
1789 2005-06-17 Jan Hubicka <jh@suse.cz>
1791 * tree-optimize.c (execute_ipa_pass_list): New.
1792 (ipa_passes): Use it.
1794 2005-06-16 Richard Henderson <rth@redhat.com>
1797 * tree-complex.c (update_phi_components): Avoid no-op moves.
1799 2005-06-16 Joseph S. Myers <joseph@codesourcery.com>
1801 * Makefile.in (cc1-checksum.c): Use
1802 build/genchecksum$(build_exeext), not build/genchecksum$(exeext).
1804 2005-06-16 Geoffrey Keating <geoffk@apple.com>
1806 * gengtype.c (adjust_field_rtx_def): Don't add a skip to
1809 * config/t-slibgcc-darwin (SHLIB_SOVERSION): Rename from
1811 (SHLIB_REVISION): Delete.
1812 (SHLIB_VERSTRING): Update to compensate.
1813 (SHLIB_SONAME): Just use one '.' in the name.
1815 2005-06-16 Eric Botcazou <ebotcazou@libertysurf.fr>
1817 PR tree-optimization/22018
1818 * tree-vrp.c (vrp_int_const_binop): Overhaul handling of overflow.
1820 2005-06-16 Richard Henderson <rth@redhat.com>
1823 * builtins.c (fold_builtin_complex_mul): Remove.
1824 (fold_builtin_complex_div): Remove.
1825 (fold_builtin_1): Don't call them.
1826 * fold-const.c (fold_complex_add, fold_complex_mult_parts,
1827 fold_complex_mult, fold_complex_div_parts, fold_complex_div): Remove.
1828 (fold_binary): Don't call them. Don't expand complex comparisons to
1829 elementary comparisons.
1830 * tree-complex.c (init_dont_simulate_again): Enhance search for
1831 stmts that require decomposition.
1832 (complex_visit_stmt): Handle RETURN_EXPR properly.
1833 (create_components): Handle no referenced variables properly.
1834 * tree.h (fold_complex_mult_parts): Remove.
1835 (fold_complex_div_parts): Remove.
1837 2005-06-16 Richard Guenther <rguenth@gcc.gnu.org>
1839 * doc/extend.texi: Document sseregparm target attribute.
1840 Clarify fastcall and regparm documentation.
1841 * config/i386/i386.h: Adjust float_in_sse documentation.
1842 * config/i386/i386.c: Add new target attribute sseregparm.
1843 (ix86_handle_cdecl_attribute, ix86_handle_regparm_attribute):
1845 (ix86_handle_cconv_attribute): ... here. Also handle
1846 sseregparm attribute.
1847 (ix86_comp_type_attributes): Compare sseregparm attributes.
1848 (ix86_function_sseregparm): New function, split out from ...
1849 (init_cumulative_args): ... here. Use to decide use
1850 of SSE registers and error in case of missing support.
1851 (ix86_value_regno): Likewise.
1852 (function_arg_advance): Do not bail out for DFmode if we need
1853 to pass doubles in registers.
1854 (function_arg): Likewise.
1856 2005-06-16 Paolo Bonzini <bonzini@gnu.org>
1857 Daniel Jacobowitz <dan@codesourcery.com>
1858 Alan Modra <amodra.bigpond.net.au>
1860 * configure.ac (gcc_version): Set near the beginning.
1861 (as, ld, nm): Do not link in-tree tools. Set gcc_cv_* if tools are
1862 found in the tree. Use gcc_AC_PROG to find the tools in the system.
1863 (objdump): Do not look for it.
1864 * Makefile.in (NM_FOR_TARGET): Point to ./nm
1865 (ORIGINAL_AS_FOR_TARGET, ORIGINAL_LD_FOR_TARGET,
1866 ORIGINAL_NM_FOR_TARGET): Substitute from autoconf.
1867 (as, ld, nm): New rules.
1868 (libgcc.mk): Depend on them.
1869 * aclocal.m4 (gcc_AC_TOOL_DIRS, gcc_AC_CHECK_TOOL,
1870 gcc_AC_BUILD_EXEEXT): New.
1871 (gcc_AC_CHECK_PROG_VER): Use gcc_AC_BUILD_EXEEXT.
1872 * configure: Regenerate.
1874 2005-06-16 Jan Hubicka <jh@suse.cz>
1876 * basic-block.h (rtl_bb_info): Break out head_, end_,
1877 global_live_at_start, global_live_at_end from ...
1878 (basic_block_def): ... here; update all references
1880 (init_rtl_bb_info): Declare.
1881 * cfgexpand.c (expand_gimple_basic_block): Init bb info, set BB_RTL
1883 * cfgrtl.c: Include ggc.h
1884 (create_basic_block_structure): Init bb info.
1885 (rtl_verify_flow_info_1): Check BB_RTL flag and rtl_bb_info pointer.
1886 (init_rtl_bb_info): New function.
1887 (rtl_merge_block, cfglayout_merge_block): Copy global_live_at_end here.
1888 * cfghooks.c (merge_block): Do not copy global_live_at_end here.
1889 * cfg.c (clear_bb_flags): Skip BB_RTL flag.
1890 (dump_flow_info): Gueard global_live_* dumping.
1892 * Makefile.in (cfg.o): Add new dependencies.
1893 * basic-block.h (reorder_block_def): Kill
1894 original/copy/duplicated/copy_number fields.
1895 (BB_DUPLICATED): New flag.
1896 (initialize_original_copy_tables, free_original_copy_tables,
1897 set_bb_original, get_bb_original, set_bb_copy, get_bb_copy): New.
1898 * cfg.c: Include hashtab.h and alloc-pool.h
1899 (bb_original, bb_copy, original_copy_bb_pool): New static vars.
1900 (htab_bb_copy_original_entry): New struct.
1901 (bb_copy_original_hash, bb_copy_original_eq): New static functions.
1902 (initialize_original_copy_tables, free_original_copy_tables,
1903 set_bb_original, get_bb_original, set_bb_copy, get_bb_copy): New
1905 * cfghooks.c (duplicate_block): Update original/copy handling.
1906 * cfglayout.c (fixup_reorder_chain): Likewise.
1907 (cfg_layout_initialize): Initialize orignal_copy tables.
1908 (cfg_layout_finalize): FInalize original_copy tables.
1909 (can_copy_bbs_p): Use BB_DUPLICATED flag.
1910 (copy_bbs): Likewise.
1911 * cfgloopmanip.c (update-single_exits_after_duplication): Likewise.
1912 (duplicate_loop_to_header_edge): Likewise; update handling of
1914 (loop_version): Likewise.
1915 * dominance.c (get_dominated_by_region): Use BB_DUPLICATED_FLAG.
1916 * except.c (expand_resx_expr): Check that reg->resume is not set.
1917 * loop-unroll.c (unroll_loop_constant_iterations,
1918 unroll_loop_runtime_iterations, apply_opt_in_copies): Update
1919 copy/original handling.
1920 * loop-unwitch.c (unswitch_loop): Likewise.
1921 * tree-cfg.c (create_bb): Do not initialize RBI.
1922 (disband_implicit_edges): Do not kill RBI.
1923 (add_phi_args_after_copy_bb): Use new original/copy mapping.
1924 (add_phi_args_after_copy): Use BB_DUPLICATED flag.
1925 (tree_duplicate_sese_region): Update original/copy handling.
1926 * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Likewise.
1927 * tree-ssa-loop-manip.c (copy_phi_node_args): Likewise.
1928 * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Likewise.
1930 2005-06-15 Andrew Pinski <pinskia@physics.uc.edu>
1933 * tree-ssa.c (tree_ssa_useless_type_conversion_1): Conversions between
1934 integer types whos ranges are different are not useless.
1936 2005-06-15 Andrew Pinski <pinskia@physics.uc.edu>
1939 * tree-ssa-reassoc.c (init_reassoc): Also give chain decl a distint
1942 2005-06-15 Diego Novillo <dnovillo@redhat.com>
1944 * tree-ssa-structalias.c (dump_solution_for_var): Reformat
1946 (dump_sa_points_to_info): Make extern.
1947 (debug_sa_points_to_info): New.
1948 * tree-ssa-structalias.h (TREE_SSA_STRUCTALIAS_H): Rename from
1950 (dump_sa_points_to_info): Declare.
1951 (debug_sa_points_to_info): Declare.
1953 2005-06-15 Joseph S. Myers <joseph@codesourcery.com>
1955 * c-tree.h (default_function_array_conversion): Declare.
1956 * c-typeck.c (default_function_array_conversion): Export. Correct
1958 (default_conversion): Do not call
1959 default_function_array_conversion. Do not allow FUNCTION_TYPE.
1960 (build_function_call): Call default_function_array_conversion on
1962 (convert_arguments): Do not call it on the function arguments.
1963 (build_unary_op): Do not allow ARRAY_TYPE or FUNCTION_TYPE for
1964 TRUTH_NOT_EXPR. Call default_function_array_conversion for taking
1965 address of ARRAY_REF.
1966 (build_compound_expr): Do not call
1967 default_function_array_conversion.
1968 (build_c_cast): Do not call default_function_array_conversion.
1969 (convert_for_assignment): Do not call default_conversion.
1970 (digest_init): Call default_function_array_conversion to convert
1971 string constants and compound literals to pointers, but not
1973 (output_init_element): Likewise.
1974 (build_asm_expr): Do not call default_function_array_conversion.
1975 (c_process_expr_stmt): Likewise.
1976 (c_objc_common_truthvalue_conversion): Likewise. Do not allow
1978 * c-parser.c (c_parser_expression_conv): New.
1979 (c_parser_asm_operands, c_parser_expr_list): Add convert_p
1980 argument. All callers changed. Call
1981 default_function_array_conversion if convert_p.
1982 (c_parser_initializer, c_parser_initval): Call
1983 default_function_array_conversion except for string constants and
1985 (c_parser_initelt): Call default_function_array_conversion for
1986 ObjC expression received.
1987 (c_parser_statement_after_labels): Call c_parser_expression_conv
1988 for return and expression statements.
1989 (c_parser_paren_condition, c_parser_for_statement,
1990 c_parser_conditional_expression): Call c_parser_expression_conv.
1991 (c_parser_expr_no_commas, c_parser_conditional_expression,
1992 c_parser_binary_expression, c_parser_cast_expression,
1993 c_parser_unary_expression): Call
1994 default_function_array_conversion.
1996 2005-06-15 Diego Novillo <dnovillo@redhat.com>
1998 * tree-vrp.c (vrp_int_const_binop): Do not handle MAX_EXPR
1999 when the result overflows.
2001 2005-06-15 David Ung <davidu@mips.com>
2003 * config/mips/mips.c (mips_rtx_cost_data): Add cost for 4kc, 4kp,
2006 2005-06-15 Richard Sandiford <richard@codesourcery.com>
2008 * doc/invoke.texi (-mips16): Fix typo.
2010 2005-06-15 David Ung <davidu@mips.com>
2012 * config/mips/mips.h (GENERATE_MIPS16E): New definition.
2013 * config/mips/mips.md (zero_extend<SHORT:mode><GPR:mode>2):
2014 Changed expand condition to exclude generating of "and" if
2015 GENERATE_MIPS16E is true.
2016 (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): New pattern for
2017 matching mips16e zeb/zeh.
2018 (*extend<SHORT:mode><GPR:mode>2_mips16e): New pattern for matching
2020 (*extend<SHORT:mode><GPR:mode>2): Disable this pattern for
2022 * doc/invoke.texi (MIPS Options): Add comment to -mips16
2023 indicating MIPS16e ASE is used if targetting for MIPS32 or MIPS64.
2025 2005-06-15 Diego Novillo <dnovillo@redhat.com>
2028 * tree-vrp.c (vrp_int_const_binop): New.
2029 (extract_range_from_binary_expr): Call it.
2030 Unify handling division and multiplication.
2032 2005-06-15 Aldy Hernandez <aldyh@redhat.com>
2034 * c-common.h (same_scalar_type_ignoring_signedness): Protoize.
2036 * c-common.c (same_scalar_type_ignoring_signedness): New.
2038 * c-typeck.c (build_binary_op): Check compatability of vector
2039 types. Move error report after switch.
2040 Do not clobber code[01] on *_DIV_EXPR case.
2042 * testsuite/gcc.dg/simd-1.c: Update error messages.
2043 * testsuite/gcc.dg/simd-1b.c: Re-enable tests. Update error
2045 * testsuite/gcc.dg/simd-2.c: Update error messages.
2046 * testsuite/gcc.dg/simd-4.c: New.
2048 2005-06-15 Bernd Schmidt <bernd.schmidt@analog.com>
2050 * Makefile.in (local-alloc.o): Depend on $(GGC_H) and reload.h.
2051 * local-alloc.c: Include "ggc.h" and "reload.h".
2052 (struct equivalence): New member is_arg_equivalence.
2053 (local_alloc): Always call update_equiv_regs.
2054 (update_equiv_regs): Allocate reg_equiv_init; set reg_equiv_init_size.
2055 Detect equivalences made by stores to memory in a second pass.
2056 Return early if not optimizing.
2057 Initialize reg_equiv_init for all equivalences; treat equivalences for
2058 REG_EQUIV notes existing before this pass specially.
2059 (no_equiv): Don't clear reg_equiv_init or remove notes if the
2060 is_arg_equivalence field is set.
2061 * reload.h (reg_equiv_init, reg_equiv_init_size): Declare.
2062 * reload1.c (reg_equiv_init): No longer static.
2063 (reg_equiv_init_size): New variable.
2064 (reload): Don't allocate reg_equiv_init; don't free it when done but
2066 Restructure equivalence set up code not to set reg_equiv_init, but to
2067 clear it when we can't use an equivalence.
2068 Undo change disabling equivalences for MEM_READONLY_P memrefs.
2069 Dump equivalencing insns to dump_file.
2071 2005-06-14 Richard Sandiford <richard@codesourcery.com>
2073 * config/mips/mips.c (machine_function): Add varargs_size field.
2074 (mips_setup_incoming_varargs): Store the amount of extra stack space
2075 there rather than in *pretend_size. When saving registers, always
2076 expect virtual_incoming_args_rtx to point to the start of the
2078 (mips_va_start): Remove alignment hack. Handle all
2079 !EABI_FLOAT_VARARGS_P cases in the same way.
2080 (compute_frame_size): Handle varargs_size. Remove the redundant
2081 !TARGET_OLDABI condition in the handling of pretend_args_size.
2082 (mips_initial_elimination_offset): Remove the now-redundant check
2085 2005-06-14 Jeff Law <law@redhat.com>
2087 * tree-vrp.c (local_fold): Remove.
2088 (simplify_using_ranges): Use fold_convert, not local_fold. Tweak
2089 DIV/MOD case slightly for readability.
2091 2005-06-14 Frank Ch. Eigler <fche@redhat.com>
2094 * tree-mudflap.c (mudflap_finish_file): Exclude non-public
2095 rather than static objects (!) from libmudflap registration.
2097 2005-06-14 Richard Sandiford <richard@codesourcery.com>
2099 * opt-functions.awk (global_state_p, needs_state_p, static_var): New.
2100 (var_ref): Take the option's flags as a second parameter. Check
2102 * optc-gen.awk: Declare local state variables. Pass flags to var_ref.
2104 2005-06-14 Eric Botcazou <ebotcazou@libertysurf.fr>
2107 * config/sparc/sol2.h (ASM_GENERATE_INTERNAL_LABEL): Emit
2108 unsigned index numbers.
2110 2005-06-13 Geoffrey Keating <geoffk@apple.com>
2112 * Makefile.in (install-man): Doesn't really depend on installdirs.
2113 (various rules for installing manpages): Do depend on installdirs.
2115 2005-06-14 Nathan Sidwell <nathan@codesourcery.com>
2117 * unwind-dw2-fde-darwin.c (examine_objects): Fix aliasing in
2118 read_encoded_value_with_base call.
2119 * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Likewise.
2120 * unwind-dw2-fde.c (_Unwind_Find_FDE): Likewise.
2121 * unwind-dw2.c (extract_cie_info): Fix aliasing in
2122 read_encoded_value call.
2123 (execute_cfa_program, uw_frame_state_for): Likewise.
2125 2005-06-13 Roger Sayle <roger@eyesopen.com>
2127 PR rtl-optimization/22053
2128 * reg-stack.c (compensate_edge): Correct mistake in the assertion
2129 checking of EDGE_ABNORMAL_CALL edges; complex return values can
2130 result in the top two stack slots, st(0) and st(1), being live.
2132 2005-06-13 Jeff Law <law@redhat.com>
2134 * tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): No longer
2135 simplify DIV, MOD or ABS expressions using VRP information.
2136 Remove WALK_DATA parameter. Prototype and all callers updated.
2137 (eliminate_redundant_computations): Remove WALK_DATA parameter.
2138 Prototype and all callers updated.
2139 (optimize_stmt): WALK_DATA parameter is now unused.
2141 * tree-vrp.c (local_fold): New function. Like fold, but
2142 strips useless type conversions in the result.
2143 (simplify_using_ranges): New function, largely cribbed from
2144 tree-ssa-dom.c::simplify_rhs_and_lookup_avail_expr.
2145 (vrp_finalize): Call simplify_using_ranges.
2147 2005-06-13 Mark Mitchell <mark@codesourcery.com>
2149 * config/i386/x86-64.h (ASM_SPEC): Explicitly pass --64 to the
2150 assembler in 64-bit mode.
2152 2005-06-13 David Edelsohn <edelsohn@gnu.org>
2154 Revert scc_operand patch.
2155 * config/rs6000/predicates.md (scc_operand): Delete.
2156 * config/rs6000/rs6000.md (scc_operand): Change to scc_eq_operand.
2158 2005-06-13 Zdenek Dvorak <dvorakz@suse.cz>
2161 * fold-const.c (split_address_to_core_and_offset): Always return
2162 the address of the base object.
2164 2005-06-13 Bernd Schmidt <bernd.schmidt@analog.com>
2166 * doc/invoke.texi (Blackfin Options): Document -mlong-calls.
2168 2005-06-12 Richard Henderson <rth@redhat.com>
2171 * tree-complex.c (update_complex_components_on_edge): New.
2172 (update_parameter_components): Use it.
2173 (update_phi_components): Likewise.
2174 (expand_complex_move): Likewise for is_ctrl_altering_stmt.
2176 2005-06-12 James A. Morrison <phython@gcc.gnu.org>
2178 PR tree-optimization/14796
2179 * fold-const (fold_binary): Transform (X << C) >> C into X & (-1>>C)
2182 2005-06-12 Kazu Hirata <kazu@codesourcery.com>
2184 * cgraphunit.c, tree-ssa-loop-ivopts.c,
2185 tree-ssa-structalias.c, tree-vectorizer.c, tree-vectorizer.h,
2186 config/sparc/sparc.c: Fix comment typos.
2188 2005-06-12 Richard Earnshaw <richard.earnshaw@arm.com>
2190 * arm/ieee754-df.s (aeabi_dcmpeq, aeabi_dcmplt, aeabi_dcmple)
2191 (aeabi_dcmpge, aeabi_dcmpgt): Maintain 8-byte stack alignment.
2192 * arm/ieee754-sf.s (aeabi_l2f, aeabi_fcmpeq, aeabi_fcmplt)
2193 (aeabi_fcmple, aeabi_fcmpge, aeabi_fcmpgt): Likewise.
2195 2005-06-12 James A. Morrison <phython@gcc.gnu.org>
2197 PR tree-optimization/14796
2198 * fold-const.c (fold_binary): Transform (A >> C) << C into
2200 <shift>: Transform (A OP c1) OP c2 into A OP (c1 + c2).
2202 2005-06-11 Geoffrey Keating <geoffk@apple.com>
2204 * config/rs6000/predicates.md (reg_or_arith_cint_operand): Delete.
2205 (reg_or_add_cint_operand): Rename from reg_or_add_cint64_operand.
2207 (reg_or_sub_cint_operand): Likewise.
2208 (mask_operand): Handle DImode.
2209 (mask64_operand): Delete.
2210 (and64_operand): Delete.
2211 * config/rs6000/rs6000.c (num_insns_constant): Use mask_operand
2212 instead of mask64_operand.
2213 (print_operand): Likewise.
2214 (rs6000_rtx_costs): Use mask_operand and reg_or_add_cint_operand and
2215 reg_or_sub_cint_operand instead of *64_* variants.
2216 * config/rs6000/rs6000.h (EXTRA_CONSTRAINT): Use mask_operand
2217 instead of mask64_operand.
2218 * config/rs6000/rs6000.md: Use mask_operand and and_operand instead
2222 (add<mode>3): Use reg_or_add_cint_operand.
2224 (sub<mode>3): Use reg_or_sub_cint_operand.
2225 (udiv<mode>3, div<mode>3, div<mode>3_no_mq, mod<mode>3,
2226 mov<mode>_internal2, mov<mode>, cmp<mode>, cmp<mode>,
2227 cmp<mode>_internal1, indirect_jump<mode>, ctr<mode>,
2228 ctr<mode>_internal1, ctr<mode>_internal2, ctr<mode>_internal5,
2229 ctr<mode>_internal6, save_fpregs_<mode>, return_internal_<mode>,
2230 return_and_restore_fpregs_<mode>, eh_set_lr_<mode>,
2231 various unnamed patterns): New.
2232 (udivsi3, divsi3, divsi3_no_mq, modsi3, movsi_internal2, movsi,
2233 cmpsi, cmpsi_internal1, indirect_jumpsi, ctrsi, ctrsi_internal1,
2234 ctrsi_internal2, ctrsi_internal5, ctrsi_internal6, save_fpregs_si,
2235 return_internal_si, return_and_restore_fpregs_si, eh_set_lr_si,
2236 udivdi3, divdi3, divdi3_no_mq, moddi3, movdi_internal2, movdi,
2237 cmpdi, cmpdi_internal1, indirect_jumpdi, ctrdi, ctrdi_internal1,
2238 ctrdi_internal2, ctrdi_internal5, ctrdi_internal6, save_fpregs_di,
2239 return_internal_di, return_and_restore_fpregs_di, eh_set_lr_di,
2240 movhi, movqi, cmpsf, cmpdf, cmptf, various unnamed patterns):
2243 2005-06-11 Gabriel Dos Reis <gdr@integrable-solutions.net>
2245 * rtl.h (to_rtx_code): Remove.
2246 * machmode.h (to_machine_mode): Likewise.
2247 * read-rtl.c (apply_mode_macro): Replace to_machine_mode with
2249 (apply_mode_maps): Likewise.
2250 (read_rtx_1): Likewise.
2251 (apply_code_macro): Replace to to_rtx_code with explicit cast.
2252 (check_code_macro): Likewise.
2253 (read_rtx_1): Likewise.
2255 2005-06-11 Gabriel Dos Reis <gdr@integrable-solutions.net>
2257 * c-typeck.c (convert_for_assignment): Avoid checking
2258 OPT_Wc___compat, as it is always true.
2260 2005-06-11 David Edelsohn <edelsohn@gnu.org>
2262 * config/rs6000/rs6000.md (eq<mode>_compare): Restrict to Pmode.
2264 2005-06-11 Daniel Berlin <dberlin@dberlin.org>
2266 Fix PR tree-optimization/22005
2267 Fix PR tree-optimization/22025
2269 * tree-ssa-structalias.c (struct variable_info): Add has_union
2271 (create_variable_info_for): Mark variables containing unions.
2272 Don't sort the field stack if notokay is true.
2273 (find_what_p_points_to): Convert variables containing unions back
2274 to their SFT's if necessary.
2276 2005-06-11 Daniel Berlin <dberlin@dberlin.org>
2278 * lambda-code.c (replace_uses_equiv_to_x_with_y): Verify the step
2279 is an INTEGER_CST before calling int_cst_value.
2281 2005-06-10 Uros Bizjak <uros@kss-loka.si>
2284 * config/i386/i386.c (ix86_function_value_regno_p): Return true
2285 for FIRST_MMX_REG if TARGET_MMX.
2286 (ix86_return_in_memory): Return 1 for MMX/3dNow vectors. Delete
2288 (ix86_struct_value_rtx): Emit warning for MMX ABI violations.
2289 (ix86_value_regno): Return FIRST_MMX_REG for MMX vector modes.
2291 2005-06-10 Daniel Berlin <dberlin@dberlin.org>
2293 * lambda-code.c (replace_uses_equiv_to_x_with_y): Check step
2294 and access function against chrec_dont_know.
2296 2005-06-10 Daniel Berlin <dberlin@dberlin.org>
2298 * lambda-code.c (replace_uses_of_x_with_y): Renamed and rewritten
2300 (exit_phi_for_loop_p): New function.
2301 (can_put_in_inner_loop): Ditto.
2302 (can_convert_to_perfect_nest): Ditto.
2303 (perfect_nestify): Create iv with right type.
2304 Rewrite statements in correct order.
2306 2005-06-10 Keith Besaw <kbesaw@us.ibm.com>
2308 * tree-ssa-alias.c (new_type_alias): Use existing type
2309 tag if VAR has just one in its may_aliases list.
2311 2005-06-10 Fariborz Jahanian <fjahanian@apple.com>
2313 * rs6000/predicates.md (scc_operand): New.
2314 * rs6000/rs6000.md : Use scc_operand for eq:SI compares.
2316 2005-06-10 Dorit Nuzman <dorit@il.ibm.com>
2318 * tree-vect-analyze.c (vect_analyze_data_ref_dependence): DRs whose
2319 dependence-distance modulo VF is 0 are recorded in the
2320 SAME_ALIGN_REFs VEC in each DR.
2321 (vect_enhance_data_refs_alignment): Avoid 80 column overflow. The
2322 alignment information of DRs that are in the SAME_ALIGN_REFs VEC of the
2323 DR we want to peel for, is set to 0.
2324 * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Fix printout.
2325 * tree-vectorizer.c (destroy_loop_vec_info): Free the SAME_ALIGN_REFs
2327 * tree-vectorizer.h (dr_p): New type. Defined to use the VEC API.
2328 (_stmt_vec_info): Added new field same_align_refs.
2329 (STMT_VINFO_SAME_ALIGN_REFS): New macro.
2331 2005-06-10 Nathan Sidwell <nathan@codesourcery.com>
2333 * vec.h (VEC_safe_grow): Append MEM_STAT_INFO.
2335 2005-06-10 Alan Modra <amodra@bigpond.net.au>
2337 * config/rs6000/linux.h (NO_PROFILE_COUNTERS): Define.
2338 * config/rs6000/linux64.h (NO_PROFILE_COUNTERS): Define as 1.
2339 * config/rs6000/rs6000.c (output_function_profiler): Obey
2340 NO_PROFILE_COUNTERS. Handle TARGET_SECURE_PLT. Use "bcl 20,31"
2341 for -fPIC. Delete save_lr and substitute its value into strings.
2343 2005-06-09 Dale Johannesen <dalej@apple.com>
2345 * config/i386/i386.c (optimization_options): Make -fno-math-errno
2346 the default on Darwin.
2347 * config/rs6000/rs6000.c (optimization_options): Ditto.
2348 * doc/invoke.texi (-fno-math-errno): Document.
2350 2005-06-09 Dale Johannesen <dalej@apple.com>
2352 * config/rs6000/rs6000.c (TARGET_INSN_VALID_WITHIN_DOLOOP):
2353 Change to TARGET_INVALID_WITHIN_DOLOOP.
2355 2005-06-09 David Edelsohn <edelsohn@gnu.org>
2357 * config/rs6000/rs6000.md (eq): Convert to define_insn_and_split.
2358 * config/rs6000/predicates.md (scc_eq_operand): New.
2360 2005-06-09 Kaz Kojima <kkojima@gcc.gnu.org>
2362 * config/sh/sh.md (mextr_rl): Set buffer size properly.
2363 (*mextr_lr): Likewise.
2365 2005-06-09 Gabriel Dos Reis <gdr@integrable-solutions.net>
2368 * c.opt (Wc++-compat): New.
2369 * doc/invoke.texi (-Wc++-compat): Document.
2370 * c-typeck.c (convert_for_assignment): Check for implicit
2371 conversion void* -> T*.
2373 2005-06-09 Gabriel Dos Reis <gdr@integrable-solutions.edu>
2375 * machmode.h (to_machine_mode): New.
2376 * rtl.h (to_rtx_code): Likewise.
2377 * read-rtl.c (apply_mode_macro): Convert mode to machine_mode.
2378 (print_c_condition): Convert return value of htab_find().
2379 (apply_code_macro): Add explicit cast when convertin to enums.
2380 (apply_mode_maps): Likewise.
2381 (check_code_macro): Likewise.
2382 (read_rtx_1): Likewise.
2384 2005-06-09 Richard Henderson <rth@redhat.com>
2386 * config/ia64/ia64.c (update_set_flags): Just return for IF_THEN_ELSE.
2387 Use SCALAR_FLOAT_MODE_P.
2388 * config/ia64/vect.md (vcondv2sf): Remove code check on comparison.
2389 (fselect): Rename from fpcmp; use %F.
2392 2005-06-09 Jan Hubicka <jh@suse.cz>
2394 * cgraphunit.c (cgraph_create_edges): Do not walk BLOCK; finalize
2395 local statics when doing unit-at-a-time.
2396 (cgraph_varpool_assemble_pending_decls): Output debug info.
2397 * dwarf2out.c (decls_for_scope): Skip local statics.
2398 (dwarf2out_decl): Handle local statics.
2399 * passes.c (rest_of_decl_compilation): Do not differentiate
2400 local and global statics in unit-at-a-time.
2401 * tree-inline.c (remap_decls): Put local static into
2402 unexpanded_vars_list rather than introducing duplicated VAR_DECL
2405 2005-06-09 Daniel Berlin <dberlin@dberlin.org>
2407 * config/rs6000/rs6000.c: (rs6000_insn_valid_within_doloop): Fix
2410 2005-06-08 Daniel Berlin <dberlin@dberlin.org>
2412 * Makefile.in (OBJS-common): Add tree-ssa-structalias.o.
2413 * tree-flow.h (find_what_p_points_to): Add prototype.
2414 (push_fields_onto_fieldstack): Ditto.
2415 (sort_fieldstack): Ditto.
2416 * tree-optimize.c (init_tree_optimization_passes): Add
2417 pass_build_pta and pass_del_pta.
2418 * tree-pass.h (pass_build_pta): New structure.
2419 (pass_del_pta): Ditto.
2420 * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Disambiguate
2421 using new alias analyzer.
2422 (push_fields_onto_fieldstack): Removed from here.
2423 (bitpos_of_field): Ditto.
2424 (fieldoff_compare): Ditto.
2425 * tree-ssa-structalias.c: New file.
2426 * tree-ssa-structalias.h: Ditto.
2428 2005-06-09 Nathan Sidwell <nathan@codesourcery.com>
2430 * c-typeck.c (build_c_cast): Check type punning on COMPONENT_REF
2433 2005-06-09 Bernd Schmidt <bernd.schmidt@analog.com>
2435 * config/bfin/bfin.c (enum bfin_builtins): Moved here from...
2436 * config/bfin/bfin.h (enum bfin_builtins): ... here.
2438 2005-06-09 Adrian Straetling <straetling@de.ibm.com>
2440 * target.h (insn_valid_within_doloop): Rename into
2441 "invalid_within_doloop". Change return type to "const char *".
2443 * targhooks.h (default_insn_valid_within_doloop): Rename into
2444 "default_invalid_within_doloop".
2445 * targhooks.c (default_insn_valid_within_doloop): Likewise.
2447 * target-def.h (TARGET_INSN_VALID_WITHIN_DOLOOP): Rename target hook
2448 into "TARGET_INVALID_WITHIN_DOLOOP". Default it to
2449 "default_invalid_within_doloop".
2450 * hooks.c (hook_constcharptr_rtx_null): New function.
2451 (hook_bool_rtx_true): Remove.
2452 * hooks.h (hook_constcharptr_rtx_null): Declare.
2453 (hook_bool_rtx_true): Remove.
2454 * loop-doloop.c (doloop_valid_p): Temporarily store return value of
2455 "invalid_within_doloop" and print error message if non-null.
2457 * doc/tm.texi: Update documentation.
2458 * config/s390/s390.c: Adjust to new hook name and new default hook.
2459 * config/rs6000/rs6000.c: (rs6000_insn_valid_within_doloop): Rename
2460 into "rs6000_invalid_within_doloop".
2461 (rs6000_invalid_within_doloop): Change return type to "static const
2462 char *" and replace return values. Update Comment.
2464 2005-06-09 Bernd Schmidt <bernd.schmidt@analog.com>
2466 * config/bfin/bfin.opt (mlong-calls): New.
2467 * config/bfin/predicates.md (call_insn_operand): Disallow SYMBOL_REF
2468 if TARGET_LONG_CALLS.
2470 2005-06-09 Richard Henderson <rth@redhat.com>
2473 * tree.h (DECL_COMPLEX_GIMPLE_REG_P): New.
2474 (struct tree_decl): Add gimple_reg_flag.
2475 * integrate.c (copy_decl_for_inlining): Copy it.
2476 * gimplify.c (internal_get_tmp_var): Set it.
2477 (gimplify_bind_expr): Likewise.
2478 (gimplify_function_tree): Likewise.
2479 (gimplify_modify_expr_complex_part): New.
2480 (gimplify_modify_expr): Use it.
2481 * tree-gimple.c (is_gimple_reg_type): Allow complex.
2482 (is_gimple_reg): Allow complex with DECL_COMPLEX_GIMPLE_REG_P set.
2484 * tree-complex.c (complex_lattice_t): New.
2485 (complex_lattice_values, complex_variable_components): New.
2486 (some_nonzerop, find_lattice_value, is_complex_reg,
2487 init_parameter_lattice_values, init_dont_simulate_again,
2488 complex_visit_stmt, complex_visit_phi, create_components,
2489 update_complex_components, update_parameter_components,
2490 update_phi_components, update_all_vops, expand_complex_move): New.
2491 (extract_component): Handle INDIRECT_REF, COMPONENT_REF, ARRAY_REF,
2493 (update_complex_assignment): Use update_complex_components;
2494 handle updates of return_expr properly.
2495 (expand_complex_addition): Use complex lattice values.
2496 (expand_complex_multiplication): Likewise.
2497 (expand_complex_division): Likewise.
2498 (expand_complex_libcall): Use update_complex_components.
2499 (expand_complex_comparison): Use update_stmt.
2500 (expand_complex_operations_1): Use expand_complex_move, retrieve
2502 (tree_lower_complex): Compute lattice values.
2503 (tree_lower_complex_O0): Duplicate from tree_lower_complex.
2504 (pass_lower_complex_O0): Rename from pass_lower_complex.
2505 (pass_lower_complex, gate_no_optimization): New.
2506 * tree-optimize.c (init_tree_optimization_passes): Update for
2507 complex pass changes.
2508 * tree-pass.h (pass_lower_complex_O0): Declare.
2510 2005-06-08 Dale Johannesen <dalej@apple.com>
2512 * config/darwin.c (darwin_binds_local_p): New.
2513 * config/darwin-protos.h (darwin_binds_local_p): Declare it.
2514 * config/i386/i386.c (TARGET_BINDS_LOCAL_P): Use it for TARGET_MACHO.
2515 * config/rs6000/rs6000.c (rs6000_binds_local_p): Remove.
2516 (TARGET_BINDS_LOCAL_P): Change it to darwin_binds_local_p.
2518 2005-06-08 Aldy Hernandez <aldyh@redhat.com>
2520 * config/rs6000/rs6000.h: Remove rs6000_long_double_size_string,
2521 rs6000_isel, rs6000_spe, rs6000_alignment_string,
2522 rs6000_sched_restricted_insns_priority_str,
2523 rs6000_sched_restricted_insns_priority, rs6000_abi_string.
2525 2005-06-08 Zdenek Dvorak <dvorakz@suse.cz>
2527 * tree-ssa-address.c (addr_for_mem_ref): Use LAST_VIRTUAL_REGISTER
2528 instead of FIRST_PSEUDO_REGISTER for creating pseudoregisters.
2529 * tree-ssa-loop-ivopts.c (add_cost, multiply_by_cost,
2530 multiplier_allowed_in_address_p, get_address_cost): Ditto.
2532 2005-06-08 Richard Henderson <rth@redhat.com>
2534 * config/ia64/ia64.h (NO_PROFILE_COUNTERS): New.
2535 * config/ia64/ia64.c (ia64_output_function_profiler): Honor it.
2536 Emit out3 load right after alloc.
2538 2005-06-08 Aldy Hernandez <aldyh@redhat.com>
2540 * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
2541 rs6000_explicit_options.
2543 2005-06-08 Richard Henderson <rth@redhat.com>
2545 * config/ia64/ia64.h (FUNCTION_PROFILER): Move implementation ...
2546 * config/ia64/ia64.c (ia64_output_function_profiler): ... here; add
2548 * config/ia64/ia64-protos.h (ia64_output_function_profiler): Declare.
2550 2005-06-08 Joseph S. Myers <joseph@codesourcery.com>
2552 * config/sol2-c.c (cmn_err_char_table): Allow width for %b
2555 2005-06-08 James A. Morrison <phython@gcc.gnu.org>
2558 * config/sparc/sparc.c (sparc_fold_builtin): New function
2559 (sparc_vis_mul8x16): New function.
2560 (sparc_handle_vis_mul8x16): New function.
2561 (TARGET_FOLD_BUILTIN): Define to sparc_fold_builtin.
2563 2005-06-08 David Edelsohn <edelsohn@gnu.org>
2565 * config/rs6000/rs6000.md (call_indirect_nonlocal_aix32): Prefer
2567 (call_indirect_nonlocal_aix64): Same.
2568 (call_value_indirect_nonlocal_aix32): Same.
2569 (call_value_indirect_nonlocal_aix64): Same.
2572 (eq): Use CLZ splitter for compare with zero.
2574 2005-06-08 Bernd Schmidt <bernd.schmidt@analog.com>
2576 * config/bfin/bfin.c (bfin_return_in_memory): Simplify; return
2577 everything larger than 8 bytes in memory.
2579 * config/bfin/bfin.h (enum bfin_builtins): New.
2580 * config/bfin/bfin.md (UNSPEC_VOLATILE_CSYNC, UNSPEC_VOLATILE_SSYNC):
2582 (csync, ssync): New insn patterns.
2583 * config/bfin/bfin.c (bfin_init_builtins, bfin_expand_builtin):
2585 (def_builtin): New macro.
2586 (TARGET_INIT_BUILTINS, TARGET_EXPAND_BUILTIN): Define.
2588 From Jie Zhang <jie.zhang@analog.com>
2589 * config/bfin/bfin.h (ASM_OUTPUT_ALIGN): Gas now emulates the
2590 behavior of the native assembler in VDSP. So change accordingly.
2592 2005-06-08 Sebastian Pop <pop@cri.ensmp.fr>
2594 * tree-data-ref.c (compute_estimated_nb_iterations,
2595 analyze_array_indexes, compute_overlap_steps_for_affine_1_2,
2596 analyze_subscript_affine_affine, find_data_references_in_loop):
2597 Fixed to use chrec_contains_undetermined to test the values of
2598 loop->estimated_nb_iterations.
2599 * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop):
2600 Compute the estimation only when loop->estimated_nb_iterations
2601 has not yet been initialized.
2602 (convert_step_widening, scev_probably_wraps_p): Add a call to
2603 estimate_numbers_of_iterations_loop.
2604 * tree-vrp.c (execute_vrp): Don't call estimate_numbers_of_iterations.
2606 2005-06-08 Eric Botcazou <ebotcazou@libertysurf.fr>
2609 * dwarf2out.c (add_loc_descr_op_piece): Move to the
2610 DWARF2_DEBUGGING_INFO section.
2612 2005-06-08 Richard Henderson <rth@redhat.com>
2615 * config/ia64/ia64.c (emit_predicate_relation_info): Skip p0.
2617 2005-06-08 Eric Botcazou <ebotcazou@libertysurf.fr>
2620 * target.h (gcc_target) <asm_out>: New field output_dwarf_dtprel.
2621 * target-def.h (TARGET_ASM_OUTPUT_DWARF_DTPREL): New macro.
2622 (TARGET_ASM_OUT): Add it.
2623 * doc/tm.texi (Debugging Info): Document it.
2624 * dwarf2out.c (output_loc_operands) <INTERNAL_DW_OP_tls_addr>:
2625 Test it instead of ASM_OUTPUT_DWARF_DTPREL.
2626 (loc_descriptor_from_tree_1) <VAR_DECL>: Likewise.
2627 * system.h: Poison ASM_OUTPUT_DWARF_DTPREL.
2628 * config/frv/frv-protos.h (frv_output_dwarf_dtprel): Delete.
2629 * config/frv/frv.c (frv_output_dwarf_dtprel): Make static and unused.
2630 (gen_inlined_tls_plt): Remove unused variable MEM.
2631 (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to frv_output_dwarf_dtprel.
2632 * config/frv/frv.h (ASM_OUTPUT_DWARF_DTPREL): Delete.
2633 * config/i386/i386-protos.h (i386_output_dwarf_dtprel): Delete.
2634 * config/i386/i386.c (i386_output_dwarf_dtprel): Make static and
2636 (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to i386_output_dwarf_dtprel.
2637 * config/i386/i386.h (ASM_OUTPUT_DWARF_DTPREL): Delete.
2638 * config/ia64/ia64-protos.h (ia64_output_dwarf_dtprel): Delete.
2639 * config/ia64/ia64.c (ia64_output_dwarf_dtprel): Make static and
2641 (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to ia64_output_dwarf_dtprel.
2642 * config/ia64/ia64.h (ASM_OUTPUT_DWARF_DTPREL): Delete.
2643 * config/rs6000/rs6000-protos.h (rs6000_output_dwarf_dtprel): Delete.
2644 * config/rs6000/rs6000.c (rs6000_output_dwarf_dtprel): Make static and
2646 (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to rs6000_output_dwarf_dtprel
2647 * config/rs6000/rs6000.h (ASM_OUTPUT_DWARF_DTPREL): Delete.
2648 * config/s390/s390-protos.h (s390_output_dwarf_dtprel): Delete.
2649 * config/s390/s390.c (s390_output_dwarf_dtprel): Make static and
2651 (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to s390_output_dwarf_dtprel.
2652 * config/s390/s390.h (ASM_OUTPUT_DWARF_DTPREL): Delete.
2653 * config/sparc/sol2-gas.h (TARGET_SUN_TLS): Define to 0.
2654 (TARGET_GNU_TLS): Define to 1.
2655 * config/sparc/sparc-protos.h (sparc_output_dwarf_dtprel): Delete.
2656 * config/sparc/sparc.c (sparc_output_dwarf_dtprel): Make static and
2658 (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to sparc_output_dwarf_dtprel
2659 if TARGET_GNU_TLS only.
2660 * config/sparc/sparc.h (ASM_OUTPUT_DWARF_DTPREL): Delete.
2662 * config.gcc (sparc64-*-solaris2*): Include tm-dwarf2.h last.
2663 (sparc-*-solaris2*): Likewise on Solaris 7 and up.
2665 2005-06-07 Dale Johannesen <dalej@apple.com>
2667 * config/i386/i386.md (movqi_1): Fix case where source
2668 is memory and destination EDI.
2670 2005-06-08 Kazu Hirata <kazu@codesourcery.com>
2672 * config/c4x/c4x.h (PREDICATE_CODES): Remove mem_operand.
2674 2005-06-07 Eric Christopher <echristo@redhat.com>
2676 * system.h: Poison EXTRA_CC_MODES.
2677 * config/frv/frv.h (SELECT_CC_MODE): Rewrite comment.
2678 * config/ia64/ia64.h (SELECT_CC_MODE): Ditto.
2679 * doc/md.texi (Jump Patterns): Replace reference to
2680 EXTRA_CC_MODES with machine-modes.def.
2681 * doc/rtl.texi (Machine Modes): Ditto.
2683 2005-06-07 Richard Henderson <rth@redhat.com>
2685 * varasm.c (initialize_cold_section_name): Fix alloca buffer overflow.
2686 (assemble_start_function): Fix strcmp confusion.
2688 2005-06-07 Uros Bizjak <uros@kss-loka.si>
2690 * config/i386/i386.h (enum ix86_entity): New.
2691 (enum ix86_stack_slot): New.
2692 (OPTIMIZE_MODE_SWITCHING): Redefine to use
2693 ix86_optimize_mode_switching[] array.
2694 (NUM_MODES_FOR_MODE_SWITCHING): Redefine for 4 entities.
2695 (MODE_NEEDED): Use ix86_mode_needed() function.
2696 (EMIT_MODE_SET): Redefine for changed emit_i387_cw_initialization ()
2698 (struct machine_function): Use optimize_mode_switching[] array.
2700 * config/i386/i386.c (MAX_386_STACK_LOCALS): Remove.
2701 (ix86_mode_needed): New function.
2702 (emit_i387_cw_initialization): Cleanup. Use mode to calculate
2703 correct stack positions for stored control words.
2704 (assign_386_stack_local): Use enum ix86_stack_slot. Change assert.
2705 (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR]: Change constant to
2707 [IX86_BUILTIN_STMXCSR]: Same.
2709 * config/i386/i386-protos.h (assign_stack_local): Change prototype.
2710 (emit_i387_cw_initialization): Change prototype.
2711 (ix86_mode_needed): New prototype.
2713 * config/i386/i386.md (i387_cw attribute): Change order of elements.
2714 (truncdfsf2, truncxfsf2, truncxfdf2, fix_trunc<mode>_fisttp_i387_1)
2715 (*fix_trunc<mode>_i387_1, lrint<mode>2, *fist<mode>2_floor_1)
2716 (*fist<mode>2_ceil_1): Change constant in call to
2717 assign_386_stack_local to SLOT_TEMP.
2718 (*fix_trunc<mode>_i387_1): Change constant in call to
2719 assign_386_stack_local to SLOT_CW_STORED and SLOT_CW_TRUNC.
2720 Use new ix86_optimize_mode_switching[] array.
2721 (frndintxf2_floor, *fist<mode>2_floor_1): Change constants in call to
2722 assign_386_stack_local to SLOT_CW_STORED and SLOT_CW_FLOOR.
2723 Use new ix86_optimize_mode_switching[] array.
2724 (frndintxf2_ceil, *fist<mode>2_ceil_1): Change constants in call to
2725 assign_386_stack_local to SLOT_CW_STORED and SLOT_CW_CEIL.
2726 Use new ix86_optimize_mode_switching[] array.
2727 (frndintxf2_trunc): Change constants in call to
2728 assign_386_stack_local to SLOT_CW_STORED and SLOT_CW_TRUNC.
2729 Use new ix86_optimize_mode_switching[] array.
2730 (frndintxf2_mask_pm): Change constants in call to
2731 assign_386_stack_local to SLOT_CW_STORED and SLOT_CW_MASK_PM.
2732 Use new ix86_optimize_mode_switching[] array.
2734 (define_peephole2): Change constant from 17 to FLAGS_REG;
2736 2005-06-07 Richard Henderson <rth@redhat.com>
2739 * rtlanal.c (reg_overlap_mentioned_p) <MEM>: Handle 'E' formats.
2741 2005-06-07 Dale Johannesen <dalej@apple.com>
2743 * tree-nested.c (finalize_nesting_tree_1): Disable
2744 warn_padded around layout_type call.
2746 2005-06-08 Zdenek Dvorak <dvorakz@suse.cz>
2748 * tree-ssa-loop-ivopts.c (rewrite_use_outer): Unshare the expression
2751 2005-06-07 Eric Christopher <echristo@redhat.com>
2753 * config/mips/predicates.md: Revert previous patch.
2755 2005-06-07 Jakub Jelinek <jakub@redhat.com>
2758 * tree.c (get_unwidened): Stop at NOP_EXPR/CONVERT_EXPR that convert
2761 2005-06-07 Diego Novillo <dnovillo@redhat.com>
2763 * tree-ssa-threadupdate.c (struct thread_stats_d): Declare.
2764 (thread_stats): New local variable.
2765 (redirect_edges): Increment count of threaded edges.
2766 (thread_through_all_blocks): Initialize thread_stats.
2767 Display number of threaded jumps if TDF_STATS is enabled.
2769 2005-06-07 Kazu Hirata <kazu@codesourcery.com>
2771 * sbitmap.h (sbitmap_iter_init): Consistently treat bit_num as
2772 the current bit index with no modulo.
2774 2005-06-07 Sebastian Pop <pop@cri.ensmp.fr>
2776 PR 18403 and meta PR 21861.
2777 * Makefile.in (tree-chrec.o): Depend on CFGLOOP_H and TREE_FLOW_H.
2778 * tree-chrec.c: Include cfgloop.h and tree-flow.h.
2779 (evolution_function_is_invariant_rec_p,
2780 evolution_function_is_invariant_p): New.
2781 (chrec_convert): Use an extra parameter AT_STMT for refining the
2782 information that is passed down to convert_step. Integrate the
2783 code that was in count_ev_in_wider_type.
2784 * tree-chrec.h (count_ev_in_wider_type): Removed.
2785 (chrec_convert): Modify its declaration.
2786 (evolution_function_is_invariant_p): Declared.
2787 (evolution_function_is_affine_p): Use evolution_function_is_invariant_p.
2788 * tree-flow.h (can_count_iv_in_wider_type): Renamed convert_step.
2789 (scev_probably_wraps_p): Declared.
2790 * tree-scalar-evolution.c (count_ev_in_wider_type): Removed.
2791 (follow_ssa_edge_in_rhs, interpret_rhs_modify_expr):
2792 Use an extra parameter AT_STMT for refining the information that is
2793 passed down to convert_step.
2794 (follow_ssa_edge_inner_loop_phi, follow_ssa_edge,
2795 analyze_scalar_evolution_1): Initialize AT_STMT with the current
2797 (instantiate_parameters_1): Don't know yet how to initialize AT_STMT.
2798 * tree-ssa-loop-ivopts.c (idx_find_step): Update the use of
2799 can_count_iv_in_wider_type to use convert_step.
2800 * tree-ssa-loop-niter.c (can_count_iv_in_wider_type_bound): Move
2801 code that is independent of the loop over the known iteration
2802 bounds to convert_step_widening, the rest is moved to
2803 proved_non_wrapping_p.
2804 (scev_probably_wraps_p): New.
2805 (can_count_iv_in_wider_type): Renamed convert_step.
2806 * tree-vrp.c (adjust_range_with_scev): Take an extra AT_STMT parameter.
2807 Use scev_probably_wraps_p for computing init_is_max.
2808 (vrp_visit_assignment): Pass the current analyzed statement to
2809 adjust_range_with_scev.
2810 (execute_vrp): Call estimate_numbers_of_iterations for refining the
2811 information provided by scev analyzer.
2813 2005-06-07 Eric Christopher <echristo@redhat.com>
2815 * config/mips/predicates.md (sleu_operand): Use
2816 IN_RANGE to specify range of operand.
2818 2005-06-07 Steven Bosscher <stevenb@suse.de>
2820 PR tree-optimization/21847
2821 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): With
2822 -fnon-call-exceptions, also mark statements inherently
2823 necessary if they may throw.
2825 2005-06-07 Adrian Straetling <straetling@de.ibm.com>
2827 * config/s390/s390.md: ("UNSPECV_MB", "UNSPECV_CAS"): New constants.
2828 ("type"): Add "sem" to 'type' attribute.
2829 ("memory_barrier", "*memory_barrier", "sync_compare_and_swapdi",
2830 "sync_compare_and_swapsi", "sync_compare_and_swap_ccdi",
2831 "sync_compare_and_swap_ccsi", "*sync_compare_and_swap_ccdi",
2832 "*sync_compare_and_swap_ccsi"): New patterns.
2833 * config/s390/2064.md: ("z_sem"): New insn_reservation.
2834 * config/s390/2084.md: ("x_sem"): New insn_reservation.
2835 * config/s390/s390.c: (s390_compare_emitted): New global variable.
2836 (s390_emit_compare): Do not emit comparison again after cas.
2837 * config/s390/s390.h (s390_compare_emitted): Declare.
2839 2005-06-07 Kazu Hirata <kazu@codesourcery.com>
2841 * sbitmap.h (sbitmap_iterator, sbitmap_iter_init,
2842 sbitmap_iter_cond, sbitmap_iter_next): New.
2843 * bt-load.c, cfganal.c, combine.c, ddg.c, flow.c,
2844 modulo-sched.c, sbitmap.c, sched-rgn.c, tree-into-ssa.c,
2845 tree-outof-ssa.c, tree-ssa-alias.c, tree-ssa-live.c: Update
2846 uses of EXECUTE_IF_SET_IN_SBITMAP to the new style.
2848 2005-06-07 Zdenek Dvorak <dvorakz@suse.cz>
2850 * tree-ssa-address.c: New file.
2851 * Makefile.in (tree-ssa-address.o): Add.
2852 * expr.c (expand_expr_real_1): Do not handle REF_ORIGINAL on
2853 INDIRECT_REFs. Handle TARGET_MEM_REFs.
2854 * tree-eh.c (tree_could_trap_p): Handle TARGET_MEM_REFs.
2855 * tree-flow.h (struct mem_address): New.
2856 (struct affine_tree_combination): Moved from tree-ssa-loop-ivopts.c.
2857 (create_mem_ref, addr_for_mem_ref, get_address_description,
2858 maybe_fold_tmr, multiplier_allowed_in_address_p,
2859 multiply_by_cost): Declare.
2860 * tree-mudflap.c (mf_xform_derefs_1): Handle TARGET_MEM_REFs.
2861 * tree-pretty-print.c (dump_generic_node): Ditto.
2862 * tree-ssa-loop-im.c (for_each_index): Ditto.
2863 * tree-ssa-loop-ivopts.c (may_be_unaligned_p,
2864 find_interesting_uses_address): Ditto.
2865 (rewrite_address_base, build_addr_strip_iref): Removed.
2866 (struct affine_tree_combination): Moved to tree-flow.h.
2867 (get_ref_tag, copy_ref_info): New functions.
2868 (rewrite_use_address): Produce TARGET_MEM_REFs.
2869 (tree_ssa_iv_optimize): Do not call update_ssa
2870 and rewrite_into_loop_closed_ssa.
2871 (tree_to_aff_combination): Use build_fold_addr_expr instead of
2872 build_addr_strip_iref.
2873 (unshare_aff_combination): New function.
2874 (fold_affine_sum): Removed.
2875 (get_computation_at): Use get_computation_aff. Unshare the result.
2876 (get_computation_aff, multiplier_allowed_in_address_p): New function.
2877 (multiply_by_cost): Exported.
2878 (get_address_cost): Use multiplier_allowed_in_address_p.
2879 * tree-ssa-operands.c (get_tmr_operands): New function.
2880 (get_expr_operands): Handle TARGET_MEM_REFs.
2881 * tree.c (copy_node_stat): Copy annotations for TARGET_MEM_REFs.
2882 (build): Handle 7 arguments.
2883 (build7_stat): New function.
2884 * tree.def (TARGET_MEM_DEF): New.
2885 * tree.h (REF_ORIGINAL): Removed.
2886 (TMR_SYMBOL, TMR_BASE, TMR_INDEX, TMR_STEP, TMR_OFFSET, TMR_ORIGINAL,
2887 TMR_TAG, build7): New macros.
2888 (build7_stat, tree_mem_ref_addr, copy_mem_ref_info): Declare.
2889 * tree-ssa-ccp.c (fold_stmt_r): Call maybe_fold_tmr.
2890 * doc/c-tree.texi: Document TARGET_MEM_REF.
2891 * doc/tree-ssa.texi: Add TARGET_MEM_REF to gimple grammar.
2893 2005-06-07 Jakub Jelinek <jakub@redhat.com>
2896 * dwarf2out.c (add_loc_descr_op_piece): New function.
2897 (multiple_reg_loc_descriptor, concat_loc_descriptor,
2898 loc_descriptor): Use it.
2899 * var-tracking.c: Include regs.h and expr.h.
2900 (emit_note_insn_var_location): Skip over pieces where offset
2901 is smaller than previous offset plus previous piece mode size.
2902 Optimize adjacent hard registers or memory locations.
2903 * Makefile.in (var-tracking.o): Depend on $(REGS_H) and $(EXPR_H).
2905 2005-06-07 Richard Guenther <rguenth@gcc.gnu.org>
2907 * c-typeck.c (c_finish_if_stmt): Use void_type_node as type
2909 * gimplify.c (gimplify_cond_expr): No need to fix up the
2912 2005-06-07 Richard Guenther <rguenth@gcc.gnu.org>
2914 * tree-ssa.c (tree_ssa_useless_type_conversion_1): Fix
2917 2005-06-07 Geoffrey Keating <geoffk@apple.com>
2919 * config/rs6000/host-darwin.c (segv_handler): Widen the possible
2920 'stwux' instructions that are considered to be stack decrements.
2922 * rtlanal.c (subreg_offset_representable_p): Handle objects
2925 2005-06-06 Uros Bizjak <uros@kss-loka.si>
2927 * mode-switching.c (optimize_mode_switching): Fix n_exprs parameter
2928 in call to pre_edge_lcm.
2930 2005-06-06 Kaz Kojima <kkojima@gcc.gnu.org>
2932 * config/sh/linux-unwind.h (SH_DWARF_FRAME_XD0): Remove for SH5.
2933 (SH_DWARF_FRAME_PR, SH_DWARF_FRAME_GBR, SH_DWARF_FRAME_MACL)
2934 (SH_DWARF_FRAME_MACH, SH_DWARF_FRAME_PC, SH_DWARF_FRAME_FPUL):
2936 (SH_DWARF_FRAME_FP0, SH_DWARF_FRAME_FPSCR): Define to the correct
2937 dwarf register number for SHmedia.
2938 (shmedia_fallback_frame_state): New.
2939 (MD_FALLBACK_FRAME_STATE_FOR): Define to it for SH5.
2941 * config/sh/linux.h (FUNCTION_PROFILER): Provide SHMEDIA version.
2943 2005-06-06 Gabriel Dos Reis <gdr@integrable-solutions.net>
2945 * c-lex.c (lex_string): Use XOBFINISH.
2946 * collect2.c (extract_string, dump_file): Likewise.
2947 * dbxout.c (dbxout_finish_complex_stabs): Likewise.
2948 * gcc.c (init_spec, build_search_list, convert_filename,
2949 set_collect_gcc_options, do_spec_2, do_spec_1, main): Likewise.
2950 * genpreds.c (write_predicate_subfunction): Likewise.
2951 * genflags.c (main): Likewise.
2952 * read-rtl.c (mode_attr_index, apply_macro_to_string,
2953 join_c_conditions, read_quoted_string, read_braced_string,
2954 read_rtx_1): Likewise.
2955 * stringpool.c (ggc_alloc_string): Likewise.
2956 * tlink.c (obstack_fgets, recompile_files): Likewise.
2958 2005-06-06 Jakub Jelinek <jakub@redhat.com>
2960 * intl.h (G_): New macro.
2961 * rtl-error.c (error_for_asm, warning_for_asm): Use gmsgid
2962 instead of msgid for argument name.
2963 * tree-ssa.c (warn_uninit): Likewise.
2964 * c-parser.c (c_parser_error): Likewise.
2965 * config/rs6000/rs6000-c.c (SYNTAX_ERROR): Likewise.
2966 * config/darwin-c.c (BAD): Likewise.
2967 * config/c4x/c4x-c.c (BAD): Likewise.
2968 * c-pragma.c (GCC_BAD, GCC_BAD2): Likewise.
2969 * c-errors.c (pedwarn_c99, pedwarn_c90): Likewise.
2970 * c-common.c (c_parse_error): Likewise.
2971 * diagnostic.c (diagnostic_set_info, verbatim, inform, warning,
2972 warning0, pedwarn, error, sorry, fatal_error, internal_error):
2974 (fnotice): Use cmsgid instead of msgid for argument name.
2975 * gcov.c (fnotice): Likewise.
2976 * protoize.c (notice): Likewise.
2977 * final.c (output_operand_lossage): Likewise.
2978 * gcc.c (fatal, notice): Likewise.
2979 (error): Use gmsgid instead of msgid for argument name.
2980 * collect2.c (notice, fatal_perror, fatal): Use cmsgid instead
2981 of msgid for argument name.
2982 (error): Use gmsgid instead of msgid for argument name.
2983 * c-decl.c (locate_old_decl, implicit_decl_warning): Use G_()
2985 * c-typeck.c (readonly_error, convert_for_assignment): Likewise.
2986 * tree-inline.c (inline_forbidden_p_1): Likewise.
2987 * ABOUT-GCC-NLS: Require gettext 0.14.5 or later. Mention the new
2988 conventions for marking translations.
2989 * doc/install.texi: Mention gettext 0.14.5 or later requirement.
2991 * tree-chrec.c (reset_evolution_in_loop): Use build3 instead of
2994 * fold-const.c (operand_equal_p): Don't return 1, if element
2995 chains for 2 VECTOR_CSTs are not the same length.
2998 * fold-const.c (fold_ternary) <case BIT_FIELD_REF>: Don't crash if
2999 not all VECTOR_CST elements are given.
3001 * combine.c (try_combine): Use hard_regno_nregs array instead of
3002 HARD_REGNO_NREGS macro.
3003 * config/rs6000/rs6000.c (rs6000_split_multireg_move,
3004 rs6000_register_move_cost, rs6000_memory_move_cost): Likewise.
3005 * config/ia64/ia64.c (mark_reg_gr_used_mask): Likewise.
3007 2005-06-06 Daniel Berlin <dberlin@dberlin.org>
3009 * tree-ssa-reassoc.o: New.
3010 (OBJS-common): Add tree-ssa-reassoc.o
3011 * timevar.def: Add TV_TREE_REASSOC
3012 * tree-optimize.c (pass_reassoc): Add call.
3013 * tree-pass.h (pass_reassoc): Add.
3014 * tree-ssa-reassoc.c: New file.
3016 2005-06-06 Eric Christopher <echristo@redhat.com>
3019 * expr.c (do_store_flag): Remove check for non-negative BRANCH_COST.
3021 2005-06-06 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
3023 * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Guard with
3024 HAVE_GAS_MAX_SKIP_P2ALIGN.
3025 (HAVE_AS_DWARF2_DEBUG_LINE): Remove.
3027 2005-06-06 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
3029 * Makefile.in (mips-tfile.o): Add $(srcdir)/../include prefix to
3030 getopt.h dependency.
3031 (mips-tdump.o): Likewise.
3033 2005-06-06 Jan Hubicka <jh@suse.cz>
3035 * predict.c (tree_predict_edge): Don't drop useless predictions;
3036 check that it is not called too late in the game.
3037 (gate_estimate_probability): New gate.
3038 (pass_profile): Gate.
3039 * tree-mudflap.c (mf_build_check_statement_for): Do not drop
3040 predictions; update CFG instead.
3041 * cfgrtl.c (rtl_verify_flow_info): Check that predcitions are consumed.
3043 2005-06-06 Jie Zhang <jie.zhang@analog.com>
3045 * config.gcc (bfin*-uclinux*): New.
3046 * config/bfin/uclinux.h: New file.
3048 2005-06-06 Ben Elliston <bje@au.ibm.com>
3050 * doc/md.texi (Insn Splitting): Fix some wording.
3052 2005-06-05 David Edelsohn <edelsohn@gnu.org>
3054 * config/rs6000/rs6000.c (rs6000_emit_swdivsf): New function.
3055 (rs6000_emit_swdivdf): New function.
3056 * config/rs6000/rs6000.md (fres): New pattern.
3057 (divsf3): Add approximation through rs6000_emit_swdivsf.
3058 (fred): New pattern.
3059 (divdf3): Add approximation through rs6000_emit_swdivdf.
3060 * config/rs6000/rs6000-protos.h (rs6000_emit_swdivsf): Declare.
3061 (rs6000_emit_swdivdf): Declare.
3062 * config/rs6000/rs6000.opt (mswdiv): New option.
3063 * doc/invoke.texi (RS/6000 and PowerPC Options): Document mswdiv.
3065 2005-06-05 Zdenek Dvorak <dvorakz@suse.cz>
3067 PR tree-optimization/21846
3068 * tree-cfg.c (replace_uses_by): Update information stored at loops.
3069 * tree-flow.h (substitute_in_loop_info): Declare.
3070 * tree-scalar-evolution.c (initialize_scalar_evolutions_analyzer):
3071 Ensure that chrec_dont_know and chrec_known have a type.
3072 * tree-ssa-loop-niter.c (substitute_in_loop_info): New function.
3074 2005-06-05 Steven Bosscher <stevenb@suse.de>
3076 * config/i386/i386.c (x86_use_loop): Remove.
3077 * config/i386/i386.h (x86_use_loop): Remove extern decl.
3078 (TARGET_USE_LOOP): Remove.
3079 * config/i386/i386.md (doloop_end, doloop_end_internal): Remove.
3080 Also remove related define_splits.
3082 2005-06-05 Dorit Nuzman <dorit@il.ibm.com>
3084 * tree-flow.h (stmt_ann_d): Move aux to ...
3085 (tree_ann_common_d): ... here.
3086 * tree-ssa-loop-im.c (LIM_DATA, determine_invariantness_stmt,
3087 move_computations_stmt, schedule_sm): Update references to
3089 * tree-vectorizer.h (set_stmt_info, vinfo_for_stmt): Likewise.
3090 * tree-vect-transform.c (vect_create_index_for_vector_ref): Update
3091 call to set_stmt_info.
3092 (vect_transform_loop): Likewise.
3093 * tree-vectorizer.c (new_loop_vec_info, destroy_loop_vec_info):
3096 * tree-vect-analyze.c (vect_analyze_scalar_cycles): Made void instead of
3098 (vect_mark_relevant): Takes two additional arguments - live_p and
3099 relevant_p. Set RELEVANT_P and LIVE_P according to these arguments.
3100 (vect_stmt_relevant_p): Differentiate between a live stmt and a
3101 relevant stmt. Return two values = live_p and relevant_p.
3102 (vect_mark_stmts_to_be_vectorized): Call vect_mark_relevant and
3103 vect_stmt_relevant_p with additional arguments. Phis are no longer
3104 put into the worklist (analyzed seperately in analyze_scalar_cycles).
3105 (vect_determine_vectorization_factor): Also check for LIVE_P, because a
3106 stmt that is marked as irrelevant and live, cause it's only used out
3107 side the loop, may need to be vectorized (e.g. reduction).
3108 (vect_analyze_operations): Examine phis. Call
3109 vectorizable_live_operation for for LIVE_P stmts. Check if
3111 (vect_analyze_scalar_cycles): Update documentation. Don't fail
3112 vectorization - just classify the scalar cycles created by the loop
3113 phis. Call vect_is_simple_reduction.
3114 (vect_analyze_loop): Call to analyze_scalar_cycles moved earlier.
3115 * tree-vect-transform.c (vect_create_index_for_vector_ref): Update
3116 call to set_stmt_info.
3117 (vect_get_vec_def_for_operand): Code reorganized - the code that
3118 classifies the type of use was factored out to vect_is_simple_use.
3119 (vectorizable_store, vect_is_simple_cond): Call vect_is_simple_use with
3120 additional arguments.
3121 (vectorizable_assignment): Likewise. Also make sure the stmt is relevant
3122 and computes a loop_vec_def.
3123 (vectorizable_operation, vectorizable_load, vectorizable_condition):
3125 (vectorizable_live_operation): New.
3126 (vect_transform_stmt): Handle LIVE_P stmts.
3127 * tree-vectorizer.c (new_stmt_vec_info): Initialize the new fields
3128 STMT_VINFO_LIVE_P and STMT_VINFO_DEF_TYPE.
3129 (new_loop_vec_info, destroy_loop_vec_info): Also handle phis.
3130 (vect_is_simple_use): Determine the type of the def and return it
3131 in a new function argument. Consider vect_reduction_def and
3132 vect_induction_def, but for now these are not supported.
3133 (vect_is_simple_reduction): New. Empty for now.
3134 * tree-vectorizer.h (vect_def_type): New enum type.
3135 (_stmt_vec_info): Added new fields - live and _stmt_vec_info.
3136 (STMT_VINFO_LIVE_P, STMT_VINFO_DEF_TYPE): New accessor macros.
3137 (vect_is_simple_use): New arguments added to function declaration.
3138 (vect_is_simple_reduction): New function declaration.
3139 (vectorizable_live_operation): New function declaration.
3141 * tree-vect-analyze.c (vect_can_advance_ivs_p): Add debug printout.
3142 (vect_can_advance_ivs_p): Likewise.
3143 * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Likewise.
3145 2005-06-05 Eric Christopher <echristo@redhat.com>
3147 * config/mips/mips.c (mips_rtx_costs): Remove unused variable.
3149 2005-06-05 Hans-Peter Nilsson <hp@bitrange.com>
3152 * config/mmix/mmix.md ("*movdicc_real_foldable")
3153 ("*movdfcc_real_foldable", "*bCC_foldable")
3154 ("*bCC_inverted_foldable"): Specify DImode for register being
3157 2005-06-04 Roger Sayle <roger@eyesopen.com>
3159 * reg-stack.c (struct block_info_def): Correct grammar typo.
3160 (compensate_edge): Clean-up. Perform as little work as possible
3161 when src and dest stacks match. Avoid modifying block_info.
3162 Reorder and simplify assertion checks. Avoid unnecessary copying
3163 of regstack structure.
3164 (convert_regs_1): Set the done flag here...
3165 (convert_regs_2): ... instead of here.
3167 2005-06-04 Dale Johannesen <dalej@apple.com>
3169 * config/rs6000/rs6000.c (no_global_regs_above): New.
3170 (rs6000_emit_prologue): Use it; cosmetic formatting fixes.
3171 (rs6000_emit_epilogue): Use it; cosmetic formatting fixes.
3172 (rs6000_conditional_register_usage): Don't put Darwin PIC
3173 register in global_regs.
3174 (rs6000_stack_info): Don't set lr_save_p just because Darwin
3176 (rs6000_emit_prologue): Save LR in R0 around Darwin PIC setup,
3177 if not done by lr_save_p.
3178 * config/rs6000/rs6000.md (insnv1_internal1): Back out 05-18 patch.
3179 Use rotate instead of ashift.
3180 (call_indirect_nonlocal_sysv): Prefer CTR to LR.
3181 (call_value_indirect_nonlocal_sysv): Ditto.
3183 2005-06-04 Jan Hubicka <jh@suse.cz>
3185 * cgraphunit.c (cgraph_reset_node): Break out from ...
3186 (cgraph_finalize_function): ... here.
3187 (cgraph_finalize_compilation_unit): Reset nodes where backend
3190 2005-06-04 Richard Henderson <rth@redhat.com>
3193 * config/alpha/alpha.c (alpha_align_insns): Don't insert nops
3194 until we've passed initial ldgp.
3196 2005-06-04 Daniel Berlin <dberlin@dberlin.org>
3198 * cfgexpand.c (expand_one_var): Use DECL_HAS_VALUE_EXPR_P.
3199 * dwarf2out.c (loc_descriptor_from_tree_1): Ditto.
3200 * expr.c (expand_var): Ditto.
3201 * function.c (gimplify_parameters): Use SET_DECL_VALUE_EXPR too.
3202 * gimplify.c (gimplify_decl_expr): Ditto.
3203 (gimplify_expr): Ditto.
3204 * tree-mudflap.c (mf_decl_eligible_p): Use DECL_HAS_VALUE_EXPR_P.
3205 * tree.c (value_expr_for_decl): New.
3206 (print_value_expr_statistics): New.
3207 (init_ttree): Init value_expr_for_decl.
3208 (decl_value_expr_lookup): New.
3209 (decl_value_expr_insert): Ditto.
3210 (copy_node_stat): Copy DECL_VALUE_EXPR status.
3211 * tree.h (DECL_VALUE_EXPR): Use hashtable.
3212 (SET_DECL_VALUE_EXPR): New.
3213 (DECL_HAS_VALUE_EXPR_P): New.
3215 2005-06-04 Steven Bosscher <stevenb@suse.de>
3217 * lcm.c: Move all mode-switching related functions from here...
3218 * mode-switching.c: ...to this new file.
3219 * doc/passes.texi: Update accordingly.
3221 * basic-block.h (label_value_list): Remove extern decl.
3222 * cfgrtl.c (label_value_list): Remove.
3223 (can_delete_label_p): Don't look at it.
3224 * cfgcleanup.c (cleanup_cfg): Don't free it.
3226 * common.opt: Don't refer to non-existing flag_alias_check.
3228 2005-06-04 David Edelsohn <edelsohn@gnu.org>
3230 * config/rs6000/aix52.h (ASM_CPU_SPEC): Add power5.
3232 2005-06-04 Kazu Hirata <kazu@codesourcery.com>
3234 * function.c (prologue, epilogue, sibcall_epilogue): Change
3235 their types to VEC(int,heap)*.
3236 (free_after_compilation): Free the three vectors above.
3237 (init_function_for_compilation, record_insns, contains,
3238 prologue_epilogue_contains, sibcall_epilogue_contains,
3239 reposition_prologue_and_epilogue_notes): Use VEC instead of
3240 VARRAY. (init_function_once): Remove.
3241 * function.h: Remove the prototype for init_function_once.
3242 * toplev.c (backend_init): Don't call init_function_once.
3244 2005-06-04 Jan Hubicka <jh@suse.cz>
3246 * predict.c (tree_predict_edge): Do not predict entry edge and
3247 single succestor edge.
3249 2005-06-04 Joseph S. Myers <joseph@codesourcery.com>
3252 * c-typeck.c (push_init_level): Don't pop levels without braces if
3255 2005-06-03 Sebastian Pop <pop@cri.ensmp.fr>
3257 * tree-data-ref.c (compute_self_dependence): New function.
3258 (compute_all_dependences): Use it.
3260 2005-06-03 Geoffrey Keating <geoffk@apple.com>
3262 * c-parser.c (c_parser_parms_declarator): Don't use chainon().
3263 (c_parser_expr_list): Don't use chainon().
3265 * config/darwin.h (LINK_SPEC): Pass -syslibroot to linker
3266 when -isysroot passed.
3268 2005-06-03 Joseph S. Myers <joseph@codesourcery.com>
3271 * c-decl.c (start_function): Restore label_context_stack_se and
3272 label_context_stack_vm if returning with an error.
3274 2005-06-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
3276 * configure.ac: Check declaration for asprintf, needed by
3278 * configure: Regenerate.
3279 * config.in: Likewise.
3281 2005-06-03 Diego Novillo <dnovillo@redhat.com>
3283 * tree-ssa-dom.c (record_edge_info): Use last_basic_block to
3284 allocate info array.
3285 * tree-vrp.c (extract_range_from_unary_expr): Set resulting
3286 range to varying in cast expressions that change
3289 2005-06-03 Eric Christopher <echristo@redhat.com>
3291 * config/mips/mips.opt: Add RejectNegative to divide-breaks and
3294 2005-06-03 Jan Hubicka <jh@suse.cz>
3296 * basic-block.h (remove_predictions_associated_with_edge): Declare.
3297 * cfg.c (remove_edge): Use it.
3298 * predict.c (remove_predictions_associated_with_edge): New function.
3300 2005-06-03 Pat Haugen <pthaugen@us.ibm.com>
3302 * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
3303 Clear call_realy_used_regs[r2] when ABI_AIX.
3305 2005-06-03 Richard Guenther <rguenth@gcc.gnu.org>
3308 * fold-const.c (fold_binary): Fix type mismatches in folding
3311 2005-06-03 Kazu Hirata <kazu@codesourcery.com>
3313 * cgraph.c, cgraphunit.c, config/mips/mips.c: Fix comment
3316 2005-06-03 Joseph S. Myers <joseph@codesourcery.com>
3318 * collect2.c (maybe_unlink): Use unlink_if_ordinary.
3320 2005-06-02 Bernd Schmidt <bernd.schmidt@analog.com>
3322 * reload1.c (reload): Revert my previous patch.
3324 2005-06-03 Nick Clifton <nickc@redhat.com>
3326 * config/arm/semi.h (ASM_SPEC): Fix typo passing -mfloat-abi to
3329 2005-06-03 Kazu Hirata <kazu@codesourcery.com>
3331 PR tree-optimization/21849
3332 * tree-ssa-copy.c (dump_copy_of): Call sbitmap_zero.
3334 2005-06-02 Richard Henderson <rth@redhat.com>
3336 * Makefile.in (tree-vect-generic.o): New.
3337 (OBJS-common, GTFILES, s-gtype): Add it.
3338 * tree-complex.c (build_replicated_const, vector_inner_type,
3339 vector_last_type, vector_last_nunits, build_word_mode_vector_type,
3340 elem_op_func, tree_vec_extract, do_unop, do_binop, do_plus_minus,
3341 do_negate, expand_vector_piecewise, expand_vector_parallel,
3342 expand_vector_addition, expand_vector_operation,
3343 type_for_widest_vector_mode, expand_vector_operations_1,
3344 gate_expand_vector_operations, expand_vector_operations,
3345 pass_lower_vector_ssa): Move to tree-vect-generic.c.
3346 (tree_lower_complex): Rename from tree_lower_operations.
3347 (pass_lower_complex): Rename from pass_pre_expand.
3348 * tree-vect-generic.c: New file.
3349 * tree-pass.h (pass_lower_complex): Rename from pass_pre_expand.
3350 (pass_lower_vector): New.
3351 * tree-optimize.c (init_tree_optimization_passes): Update to match.
3353 2005-06-02 Richard Henderson <rth@redhat.com>
3355 * modulo-sched.c (doloop_register_get): Protect against
3356 doloop_end not defined.
3358 2005-06-02 Kazu Hirata <kazu@codesourcery.com>
3360 * config/sh/sh.c (general_movsrc_operand,
3361 general_movdst_operand, arith_reg_operand, arith_reg_dest,
3362 logical_reg_operand, int_gpr_dest, fp_arith_reg_operand,
3363 fp_arith_reg_dest, arith_operand, arith_reg_or_0_operand,
3364 xor_operand, cmp_operand, logical_operand, and_operand,
3365 fpscr_operand, fpul_operand, symbol_ref_operand,
3366 commutative_float_operator, noncommutative_float_operator,
3367 unary_float_operator, binary_float_operator,
3368 binary_logical_operator, equality_comparison_operator,
3369 greater_comparison_operator, less_comparison_operator,
3370 shift_operator, logical_operator, target_reg_operand,
3371 target_operand, mextr_bit_offset, extend_reg_operand,
3372 trunc_hi_operand, extend_reg_or_0_operand, minuend_operand,
3373 general_extend_operand, ua_address_operand,
3374 cache_address_operand, inqhi_operand, sh_rep_vec, sh_1el_vec,
3375 sh_const_vec, ua_offset, sh_register_operand, cmpsi_operand,
3376 shift_count_reg_operand, shift_count_operand,
3377 unaligned_load_operand): Move to ...
3378 * config/sh/predicates.md: ... here.
3379 * config/sh/sh.h (PREDICATE_CODES, SPECIAL_MODE_PREDICATES):
3382 2005-06-02 Andrew Pinski <pinskia@physics.uc.edu>
3384 * tree.c (build_common_builtin_nodes): Fix the return type on
3387 2005-06-02 Richard Guenther <rguenth@gcc.gnu.org>
3389 * tree-ssa-loop-ivopts.c (build_addr_strip_iref): Remove.
3390 (find_interesting_uses_address): Use build_fold_addr_expr instead.
3391 (strip_offset_1): Likewise.
3392 (tree_to_aff_combination): Likewise.
3394 2005-06-02 DJ Delorie <dj@redhat.com>
3396 * convert.c (convert_to_pointer): Avoid recursion if no conversion
3399 2005-06-02 Richard Guenther <rguenth@gcc.gnu.org>
3401 * tree-chrec.c (chrec_fold_plus_1): Ensure we build
3402 binary operations with the correct types.
3403 * tree-ssa-loo-ivopts.c (idx_find_step): Use sizetype
3404 for all computation.
3406 2005-06-02 Kazu Hirata <kazu@codesourcery.com>
3408 * tree-vrp.c, config/arm/arm.md, config/arm/arm1020e.md,
3409 config/rs6000/rs6000.md: Fix comment typos. Follow splling
3411 * doc/install.texi: Fix a typo.
3413 2005-06-02 Jan Hubicka <jh@suse.cz>
3415 * cgraphunit.c (cgraph_function_and_variable_visibility): Extern
3416 inline functions are not local.
3418 2005-06-02 Kazu Hirata <kazu@codesourcery.com>
3420 * gimplify.c (gimplify_ctx): Change the type of case_labels to
3422 (gimplify_switch_expr, gimplify_case_label_expr): Adjust uses
3425 2005-06-02 Richard Guenther <rguenth@gcc.gnu.org>
3427 * c-typeck.c (build_indirect_ref): Build INDIRECT_REF
3430 2005-06-02 Ulrich Weigand <uweigand@de.ibm.com>
3432 * config/s390/s390.c (s390_add_execute): Do not handle out-of-pool
3434 (s390_dump_pool): Likewise.
3435 (s390_mainpool_start, s390_mainpool_finish): Likewise.
3436 (s390_chunkify_start): Likewise.
3437 (s390_dump_execute): Remove.
3438 (s390_reorg): Handle out-of-pool execute templates.
3440 2005-06-02 Adrian Straetling <straetling@de.ibm.com>
3442 * optabs.c: (expand_bool_compare_and_swap): Emit barrier after
3445 2005-06-02 Jan Hubicka <jh@suse.cz>
3447 * cgraph.c (cgraph_node): Maintain master clones.
3448 (cgraph_remove_node): Likewise.
3449 (availability_names): New static variable.
3450 (dump_cgraph_node): Dump availability.
3451 (dump_cgraph_varpool_node): Likewise.
3452 (cgraph_is_master_clone, cgraph_master_clone,
3453 cgraph_function_body_availability,
3454 cgraph_variable_initializer_availability): New functions.
3455 * cgraph.h (availability): New enum.
3456 (struct cgraph_node): Add master_clone.
3457 (cgraph_is_master_clone, cgraph_master_clone,
3458 cgraph_function_body_availability,
3459 cgraph_variable_initializer_availability): Declare.
3460 * cgraphunit.c (cgraph_expand_function): Setcgraph_function_flags_ready.
3461 (cgraph_remove_unreachable_nodes): Remove unreachable nodes.
3462 * ipa-inline.c (cgraph_decide_inlining): Do not call
3463 cgraph_remove_unreachable_nodes.
3465 * cgraphunit.c (cgraph_function_and_variable_visibility): Fix typo in
3468 2005-06-02 Diego Novillo <dnovillo@redhat.com>
3471 * tree-vrp.c (nonnull_arg_p): New.
3472 (get_value_range): Call it.
3474 2005-06-02 Eric Christopher <echristo@redhat.com>
3476 * config/mips/mips.h (processor_type): Remove PROCESSOR_DEFAULT,
3478 (mips_rtx_cost_data): New datatype.
3479 (MEMORY_MOVE_COST): Use data from structure.
3480 (BRANCH_COST): Ditto.
3481 (LOGICAL_OP_NON_SHORT_CIRCUIT): Define to zero.
3482 * config/mips/mips.md (cpu): Rework for processor_type changes.
3483 * config/mips/mips.c (mips_cost): New variable.
3484 (DEFAULT_COSTS): Define.
3485 (mips_rtx_cost_data): New.
3486 (mips_rtx_costs): Use. Minor formatting changes. Use COSTS_N_INSNS
3487 for NEG cost. Add support for FLOAT, UNSIGNED_FLOAT, FIX,
3488 FLOAT_EXTEND, FLOAT_TRUNCATE, and SQRT.
3489 (override_options): Set cost data.
3490 (mips_register_move_cost): Formatting changes.
3491 (bdesc_arrays): Use PROCESSOR_MAX.
3492 (mips_init_builtins): Ditto.
3494 2005-06-02 Diego Novillo <dnovillo@redhat.com>
3497 * doc/invoke.texi: Document -ftree-vrp.
3499 2005-06-02 Dorit Nuzman <dorit@il.ibm.com>
3501 PR tree-optimization/21734
3502 * tree-vectorizer.c (slpeel_update_phis_for_duplicate_loop): Use the
3503 phi_result when current_def is not available.
3504 (slpeel_update_phi_nodes_for_guard1): Don't fail if current_def is not
3507 2005-06-02 David Edelsohn <edelsohn@gnu.org>
3509 * config/rs6000/rs6000.c (rs6000_insn_valid_within_doloop): New.
3510 (TARGET_INSN_VALID_WITHIN_DOLOOP): Define.
3512 2005-06-02 Diego Novillo <dnovillo@redhat.com>
3514 * tree-vrp.c (has_assert_expr, maybe_add_assert_expr): Remove.
3516 2005-06-02 Jan Hubicka <jh@suse.cz>
3518 * cgraph.c (dump_cgraph_node): Print new flags.
3519 (dump_cgraph_varpool_node): Likewise.
3520 (decide_variable_is_needed): Initialize externally_visible flag.
3521 * cgraph.h (cgraph_local_info): Add externally_visible flag.
3522 (cgraph_varpool_node): Likewise.
3523 (cgraph_function_flags_ready): Declare.
3524 * cgraph.c (cgraph_mark_local_functions): Rename to ...
3525 (cgraph_function_and_variable_visibility) ... this one; handle
3526 externally_visible flags.
3527 (decide_is_function_needed): Set externally_visible flag.
3528 (cgraph_finalize_function): Deal properly with early cleanups.
3529 (cgraph_optimize): Update call of
3530 cgraph_function_and_variable_visibility.
3532 2005-06-02 Steven Bosscher <stevenb@suse.de>
3533 Mostafa Hagog <mustafa@il.ibm.com>
3535 * cfgloop.h (doloop_condition_get): Make external.
3536 * loop-doloop.c (doloop_condition_get): Generalize to make it
3537 usable in modulo-sched.c.
3538 * modulo-sched.c (doloop_register_get): Use
3539 doloop_condition_get instead of duplicating it.
3541 2005-06-02 Bernd Schmidt <bernd.schmidt@analog.com>
3543 * reload1.c (reload): Undo 2005-04-20 change. Make sure we detect
3544 the correct set of init_insns that need deletion.
3545 * local-alloc.c (update_equiv_regs): When substituting sole definition
3546 into sole use of a reg, delete it from liveness information.
3548 2005-06-02 Kaz Kojima <kkojima@gcc.gnu.org>
3550 * config/sh/sh.h (TARGET_FPU_DOUBLE): Use MASK_SH4.
3552 2005-06-01 Diego Novillo <dnovillo@redhat.com>
3554 PR 14341, PR 21332, PR 20701, PR 21029, PR 21086, PR 21090
3555 PR 21289, PR 21348, PR 21367, PR 21368, PR 21458.
3556 * fold-const.c (invert_tree_comparison): Make extern.
3557 * tree-flow.h (enum value_range_type): Move to tree-ssa-propagate.
3558 (struct value_range_def): Limewise.
3559 (get_value_range): Remove.
3560 (dump_value_range): Remove.
3561 (dump_all_value_ranges): Remove.
3562 (debug_all_value_ranges): Remove.
3563 (vrp_evaluate_conditional): Declare.
3564 * tree-ssa-propagate.c (struct prop_stats_d): Add field
3566 (substitute_and_fold): Add argument use_ranges_p.
3568 If use_ranges_p is true, call fold_predicate_in to fold
3569 predicates using range information.
3570 Ignore ASSERT_EXPRs.
3571 Change debugging output to only show statements that have been
3573 (replace_phi_args_in): Move debugging output code from
3574 substitute and fold.
3575 (fold_predicate_in): New local function.
3576 * tree-ssa-propagate.h (enum value_range_type): Move from
3578 (struct value_range_d): Likewise.
3580 (value_range_t): Rename from value_range.
3581 * tree-vrp.c (found_in_subgraph): Rename from found.
3582 (get_opposite_operand): Remove.
3583 (struct assert_locus_d): Declare.
3584 (assert_locus_t): Declare.
3585 (need_assert_for): Declare.
3586 (asserts_for): Declare.
3587 (blocks_visited): Declare.
3588 (vr_value): Declare.
3589 (set_value_range): Add argument 'equiv'.
3590 Don't drop to VARYING ranges that cover all values in the
3592 Make deep copy of equivalence set 'equiv'.
3593 (copy_value_range): New local function.
3594 (set_value_range_to_undefined): New local function.
3595 (compare_values): Return -2 if either value has overflowed.
3596 (range_includes_zero_p): New local function.
3597 (extract_range_from_assert): Flip the predicate code if the
3598 name being asserted is on the RHS of the predicate.
3599 Avoid creating unnecessary symbolic ranges if the comparison
3600 includes another name with a known numeric range.
3601 Update the equivalnce set of the new range when asserting
3603 (extract_range_from_ssa_name): Update the equivalence set of
3604 the new range with VAR.
3605 (extract_range_from_binary_expr): Also handle TRUTH_*_EXPR.
3606 If -fwrapv is used, set the resulting range to VARYING if the
3607 operation overflows. Otherwise, use TYPE_MIN_VALUE and
3608 TYPE_MAX_VALUE to represent -INF and +INF.
3609 Fix handling of *_DIV_EXPR.
3610 (extract_range_from_unary_expr): Handle MINUS_EXPR and
3611 ABS_EXPR properly by switching the range around if necessary.
3612 (extract_range_from_comparison): New local function.
3613 (extract_range_from_expr): Call it.
3614 (adjust_range_with_scev): Do not adjust the range if using
3615 wrapping arithmetic (-fwrapv).
3616 (dump_value_range): Also show equivalence set.
3617 Show -INF and +INF for TYPE_MIN_VALUE and TYPE_MAX_VALUE.
3618 (build_assert_expr_for): Also build ASSERT_EXPR for EQ_EXPR.
3619 (infer_value_range): Change return value to bool.
3620 Add arguments 'comp_code_p' and 'val_p'.
3621 Do not attempt to infer ranges from statements that may throw.
3622 Store the comparison code in comp_code_p.
3623 Store the other operand to be used in the predicate in val_p.
3624 (dump_asserts_for): New.
3625 (debug_asserts_for): New.
3626 (dump_all_asserts): New.
3627 (debug_all_asserts): New.
3628 (register_new_assert_for): New.
3629 (register_edge_assert_for): New.
3630 (find_conditional_asserts): New.
3631 (find_assert_locations): New.
3632 (process_assert_insertions_for): New.
3633 (process_assert_insertions): New.
3634 (insert_range_assertions): Initialize found_in_subgraph,
3635 blocks_visited, need_assert_for and asserts_for.
3636 Call find_assert_locations and process_assert_insertions.
3637 (remove_range_assertions): Add more documentation.
3638 (vrp_initialize): Change return type to void.
3639 Do not try to guess if running VRP is worth it.
3640 (compare_name_with_value): New.
3641 (compare_names): New.
3642 (vrp_evaluate_conditional): Add argument 'use_equiv_p'. If
3643 use_equiv_p is true, call compare_names and
3644 compare_name_with_value to compare all the ranges for every
3645 name in the equivalence set of the predicate operands.
3647 (vrp_meet): Try harder not to derive a VARYING range.
3648 If two values meet, the resulting equivalence set is the
3649 intersection of the two equivalence sets.
3650 (vrp_visit_phi_node): Call copy_value_range to get the current
3651 range information of the LHS.
3652 (vrp_finalize): Create a value vector representing all the
3653 names that ended up with exactly one value in their range.
3654 Call substitute_and_fold.
3655 (execute_vrp): Document equivalence sets in ranges.
3656 * tree.h (SSA_NAME_VALUE_RANGE): Remove.
3657 (struct tree_ssa_name): Remove field value_range.
3658 (invert_tree_comparison): Declare.
3660 2005-06-01 Daniel Berlin <dberlin@dberlin.org>
3662 Fix PR tree-optimization/21839
3664 * gimplify.c (zero_sized_field_decl): New function.
3665 (gimplify_init_ctor_eval): Use it.
3667 2005-06-01 Josh Conner <jconner@apple.com>
3670 * gimplify.c (gimplify_init_constructor): Don't spill initializer
3671 to read-only memory if it's sparse.
3673 2005-06-01 Ramana Radhakrishnan <ramana@codito.com>
3675 * doc/rtl.texi: Remove references to NOTE_INSN_SETJMP.
3676 Add documentation for REG_SETJMP
3678 2005-06-01 Richard Guenther <rguenth@gcc.gnu.org>
3680 * stmt.c (expand_case): Use build_int_cst.
3681 (node_has_low_bound): Likewise, and correct type mismatch.
3682 (node_has_high_bound): Likewise.
3683 * fold-const.c (fold_binary): Ensure we build trees
3684 with the correct types - undo what STRIP_NOPS possibly did.
3686 2005-06-01 Richard Guenther <rguenth@gcc.gnu.org>
3688 * tree.h (fold_indirect_ref_1): Export from fold-const.c.
3689 * fold-const.c (fold_indirect_ref_1): No longer static.
3690 * tree-inline.c (copy_body_r): Use fold_indirect_ref_1 for
3691 folding, if possible.
3693 2005-06-01 Joseph S. Myers <joseph@codesourcery.com>
3695 * common.opt (fjump-tables): New.
3696 * doc/invoke.texi (-fno-jump-tables): Document.
3697 * stmt.c (expand_end_case_type): Do not emit jump tables unless
3700 2005-06-01 Richard Earnshaw <richard.earnshaw@arm.com>
3702 * arm.md (bunordered, bordered, bungt, bunlt, bunge, bunle, buneq)
3703 (bltgt, arm_buneq, arm_bltgt, sunordered, sordered, sungt, sunge)
3704 (sunlt, sunle): Enable patterns on VFP.
3706 * arm.md (attribute 'type'): Add new types - f_loads floadd, f_stores,
3707 f_stored, f_flag, f_cvt.
3708 (generic_sched): No-longer used for the arm1020e and arm1022e cores.
3709 Include arm1020e.md.
3710 * vfp.md (fmstat): New cpu unit. Add an exclusion set between it and
3711 the ds and fmac pipelines. Re-work all load and store patterns and
3712 all conversion patterns to use new attributes. Adjust reservation
3713 descriptions accordingly.
3714 * arm1020e.md: New file.
3715 * t-arm: Add dependency.
3717 2005-06-01 Jan Hubicka <jh@suse.cz>
3719 * except.c (struct eh_region): Kill unused fields.
3720 * basic-block.h (struct basic_block_def): Likewise.
3722 2005-06-01 J"orn Rennecke <joern.rennecke@st.com>
3724 PR rtl-optimization/21767
3725 * rtl.h (function_invariant_p): Re-add declaration.
3726 * reload1.c (function_invariant_p): No longer static.
3727 * ifcvt.c (dead_or_predicable): Remove REG_EQUAL notes that
3728 might have become invalid.
3730 2005-06-01 Jakub Jelinek <jakub@redhat.com>
3734 * gimplify.c (gimplify_decl_expr): Call gimplify_type_sizes
3735 on variable sizes types if a decl is a pointer to a VLA.
3736 (gimplify_type_sizes): Handle POINTER_TYPE and REFERENCE_TYPE.
3737 Call gimplify_type_sizes on aggregate fields. Prevent infinite
3740 * fold-const.c (fold_ternary): Optimize BIT_FIELD_REF of VECTOR_CST.
3742 * config/i386/xmmintrin.h (_mm_setzero_ps, _mm_set_ss, _mm_set1_ps,
3743 _mm_set_ps, _mm_setr_ps): Add __extension__.
3744 * config/i386/emmintrin.h (_mm_set_sd, _mm_set1_pd, _mm_set_pd,
3745 _mm_setr_pd, _mm_setzero_pd, _mm_set_epi64x, _mm_set_epi64x,
3746 _mm_set_epi32, _mm_set_epi16, _mm_set_epi8, _mm_setzero_si128):
3748 (_mm_clflush): Don't use return in void function.
3750 * config/i386/emmintrin.h (_mm_castpd_ps, _mm_castpd_si128,
3751 _mm_castps_pd, _mm_castps_si128, _mm_castsi128_ps, _mm_castsi128_pd):
3752 Use __inline instead of inline.
3754 2005-06-01 Richard Guenther <rguenth@gcc.gnu.org>
3756 * fold-const.c (fold_binary): Fix types in strlen vs.
3757 zero comparison folding.
3759 2005-06-01 Richard Henderson <rth@redhat.com>
3761 * configure.ac (HAVE_AS_JSRDIRECT_RELOCS): New.
3762 * config.in, configure: Rebuild.
3763 * config/alpha/alpha.c (print_operand): Add 'j'.
3764 * alpha.md (divmodsi_internal_er_1): Use it.
3765 (divmoddi_internal_er_1): Likewise.
3767 2005-06-01 Richard Sandiford <rsandifo@redhat.com>
3769 * system.h (TARGET_OPTIONS, TARGET_SWITCHES): Poison.
3770 * opts.h (print_filtered_help): Delete.
3771 * opts.c (handle_option, decode_options): Remove calls to
3773 (print_target_help): New function.
3774 (common_option, print_help): Call print_target_help instead of
3775 display_target_options.
3776 (print_filtered_help): Make static.
3777 * toplev.h (display_target_options, set_target_switch): Delete.
3778 * toplev.c (target_switches, target_options, display_target_options)
3779 (set_target_switch): Delete.
3780 (print_switch_values): Remove handling of TARGET_SWITCHES and
3782 (default_get_pch_validity): Likewise. Only treat target_flags
3783 specially if targetm.check_pch_target_flags is nonnull.
3784 (pch_option_mismatch): New function.
3785 (default_pch_valid_p): Use it. Remove handling of TARGET_SWITCHES
3786 and TARGET_OPTIONS. Only treat target_flags specially if
3787 targetm.check_pch_target_flags is nonnull.
3788 * config/ia64/ia64.c (ia64_override_options): Don't mention
3789 TARGET_OPTIONS in comment.
3790 * config/m68k/m68k-none.h (CC1_SPEC): Likewise.
3791 * doc/invoke.texi: Remove a reference to TARGET_SWITCHES.
3792 * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS): Don't mention the
3793 interaction with TARGET_SWITCHES.
3794 (TARGET_@var{featurename}, TARGET_SWITCHES, TARGET_OPTIONS): Delete.
3796 2005-06-01 Richard Sandiford <rsandifo@redhat.com>
3798 * config/sh/sh.c (multcosts): Check sh_multcost rather than
3800 (sh_register_move_cost): Likewise sh_gettrcost and sh_gettrcost_str.
3801 (sh_multcost_str, sh_gettrcost_str, sh_div_str, sh_divsi3_libfunc)
3802 (cut2_workaround_str): Delete.
3803 * config/sh/sh.h (SUBTARGET_OPTIONS, TARGET_OPTIONS)
3804 (TARGET_SH5_CUT2_WORKAROUND, sh_multcost_str, sh_gettrcost_str)
3805 (sh_div_str, sh_divsi3_libfunc, cut2_workaround_str): Delete.
3806 * config/sh/sh.opt (mcut2-workaround, mdiv=, mdivsi3_libfunc=)
3807 (mgettrcost=, multcost=): New options.
3809 2005-06-01 Richard Sandiford <rsandifo@redhat.com>
3811 * opts.h (cl_option_state): New structure.
3812 (get_option_state): Declare.
3813 * opts.c (get_option_state): New function.
3814 * toplev.c (option_affects_pch_p): New function.
3815 (default_get_pch_validity): Store the state of all options for which
3816 option_affects_pch_p returns true.
3817 (default_pch_valid_p): Check the state of those options here.
3818 Only check target_flags separately if targetm.check_pch_target_Flags
3819 is nonnull or if TARGET_SWITCHES is defined.
3821 2005-06-01 Richard Sandiford <rsandifo@redhat.com>
3823 * config/mips/mips-protos.h (mips_use_ins_ext_p): Remove parameter
3826 2005-06-01 Mostafa Hagog <mustafa@il.ibm.com>
3828 * modulo-sched.c (undo_generate_reg_moves ): Fix PR 21138.
3830 2005-06-01 Mostafa Hagog <mustafa@il.ibm.com>
3832 * gcse.c (compute_transp, load_killed_in_block): Use
3835 2005-06-01 David.Billinghurst <David.Billinghurst@riotinto.com>
3838 * config/mips/mips-protos.h: Declare mips_use_ins_ext_p
3840 2005-05-31 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3842 * errors.h (warning, error, fatal, internal_error): Add printf
3844 * genmodes.c (make_vector_mode): Fix format arguments.
3846 2005-05-31 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3848 * basic-block.h, bb-reorder.c, c-gimplify.c, config/darwin.c,
3849 config/rs6000/rs6000-c.c, dominance.c, gimple-low.c, gimplify.c,
3850 lambda-code.c, lambda-trans.c, tree-browser.c, tree-cfg.c,
3851 tree-chrec.c, tree-data-ref.c, tree-dfa.c, tree-eh.c,
3852 tree-if-conv.c, tree-into-ssa.c, tree-loop-linear.c,
3853 tree-mudflap.c, tree-nomudflap.c, tree-outof-ssa.c,
3854 tree-pretty-print.c, tree-scalar-evolution.c, tree-sra.c,
3855 tree-ssa-ccp.c, tree-ssa-copy.c, tree-ssa-dce.c, tree-ssa-dom.c,
3856 tree-ssa-dse.c, tree-ssa-forwprop.c, tree-ssa-live.c,
3857 tree-ssa-operands.c, tree-ssa-phiopt.c, tree-ssa-pre.c,
3858 tree-ssa-propagate.c, tree-ssa-sink.c, tree-ssa-threadupdate.c,
3859 tree-ssa-uncprop.c, tree-ssa.c, tree-vect-analyze.c,
3860 tree-vect-transform.c, tree-vectorizer.c, vec.c: Don't include
3861 errors.h and include toplev.h if necessary.
3863 * rtl.c, varray.c: If we're compiling as a GENERATOR_FILE, include
3864 errors.h otherwise include toplev.h.
3866 * Makefile.in: Update dependencies.
3868 2005-06-01 Danny Smith <dannysmith@users.sourceforge.net>
3870 * config/i386/cygming.h (NO_PROFILE_COUNTERS): Define.
3872 2005-05-31 Geoffrey Keating <geoffk@geoffk.org>
3874 * config/rs6000/rs6000.md (sync_boolcshort_internal): New.
3875 * config/rs6000/rs6000.c (rs6000_emit_sync): Shift count must
3876 be complemented for big-endian. Mask for AND must be rotated,
3877 not shifted. Handle short operands with NOT on the memory
3880 2005-05-30 Daniel Berlin <dberlin@dberlin.org>
3882 * c-objc-common.c (c_tree_printer): Check flag before hashtable.
3883 Use DECL_DEBUG_EXPR and SET_DECL_DEBUG_EXPR.
3884 * dwarf2out.c (dwarf2out_var_location): Ditto.
3885 * toplev.c (default_tree_printer): Ditto.
3886 * tree-outof-ssa.c (create_temp): Ditto.
3887 * tree-sra.c (instantiate_element): Ditto.
3888 * var-tracking.c (track_expr_p): Ditto.
3889 * tree.c (struct tree_map): New structure.
3890 (debug_expr_for_decl): New.
3891 (tree_map_eq): New function.
3892 (tree_map_hash): Ditto.
3893 (tree_map_marked_p): Ditto.
3894 (print_debug_expr_statistics): Ditto.
3895 (decl_debug_expr_lookup): Ditto.
3896 (decl_debug_expr_insert): Ditto.
3897 (dump_tree_statistics): Dump debug_expr hashtable stats.
3898 * tree.h (DECL_DEBUG_EXPR): Change
3899 (SET_DECL_DEBUG_EXPR): Add.
3901 2005-06-01 Alan Modra <amodra@bigpond.net.au>
3903 * configure.ac: Add --enable-secureplt.
3904 (HAVE_AS_REL16): Test for R_PPC_REL16 relocs.
3905 * config.in: Regenerate.
3906 * configure: Regenerate.
3907 * config.gcc (powerpc64-*-linux*, powerpc-*-linux*): Add
3908 rs6000/secureplt.h to tm_file when enable_secureplt.
3909 * doc/invoke.texi (msecure-plt, mbss-plt): Document.
3910 * doc/install.texi: Document --enable-targets and --enable-secureplt.
3911 Correct xrefs to "Using the GNU Compiler Collection (GCC)".
3912 * config/rs6000/secureplt.h: New file.
3913 * config/rs6000/sysv4.h (TARGET_SECURE_PLT): Define.
3914 (SUBTARGET_OVERRIDE_OPTIONS): Error if -msecure-plt given without
3916 (CC1_SECURE_PLT_DEFAULT_SPEC): Define.
3917 (CC1_SPEC): Delete duplicate mno-sdata. Invoke cc1_secure_plt_default.
3918 (SUBTARGET_EXTRA_SPECS): Add cc1_secure_plt_default.
3919 * config/rs6000/sysv4.opt (msecure-plt, bss-plt): Add options.
3920 * config/rs6000/rs6000.h (TARGET_SECURE_PLT): Define.
3921 * config/rs6000/rs6000.c (rs6000_emit_load_toc_table): Handle
3922 TARGET_SECURE_PLT got register load sequence.
3923 (rs6000_emit_prologue): Call rs6000_emit_load_toc_table when
3925 (rs6000_elf_declare_function_name): Don't emit toc address offset
3926 word when TARGET_SECURE_PLT.
3927 * config/rs6000/rs6000.md (elf_high, elf_low): Move past load_toc_*.
3928 (load_toc_v4_PIC_1) Enable for TARGET_SECURE_PLT.
3929 (load_toc_v4_PIC_3b, load_toc_v4_PIC_3c): New insns.
3930 (call, call_value): Mark pic_offset_table_rtx used for sysv pic and
3932 (call_nonlocal_sysv, call_value_nonlocal_sysv, sibcall_nonlocal_sysv,
3933 sibcall_value_nonlocal_sysv): Add 32768 offset when TARGET_SECURE_PLT
3935 * config/rs6000/tramp.asm (trampoline_initial): Use "bcl 20,31".
3936 (__trampoline_setup): Likewise. Init r30 before plt call.
3938 2005-05-31 DJ Delorie <dj@redhat.com>
3940 * expr.c (convert_move): When a partial_int requires multiple
3941 conversion steps, make sure successive steps convert the
3942 intermediate value, not the original value.
3944 * expmed.c (expand_mult): Convert partial_int multiplies to
3945 shift/add combinations too.
3947 * genmodes.c (mode_data): Add wider_2x.
3948 (calc_wider_mode): Calculate twice-wider mode too.
3949 (emit_mode_wider): Emit twice-wider mode too.
3950 * machmode.h (mode_2xwider, GET_MODE_2XWIDER_MODE): New.
3951 * expr.c (expand_expr_real_1): Use it for expanding
3954 2005-05-31 Zdenek Dvorak <dvorakz@suse.cz>
3956 PR tree-optimization/21817
3957 * tree-ssa-loop-im.c (for_each_index): Handle VECTOR_CST.
3959 2005-05-31 Pat Haugen <pthaugen@us.ibm.com>
3961 * loop.c (loop_invariant_p, valid_initial_value_p): Revert last
3964 2005-05-31 Andrew Pinski <pinskia@physics.uc.edu>
3968 * fold-const.c (fold_checksum_tree): Copy types also if
3969 TYPE_CONTAINS_PLACEHOLDER_INTERNAL is set.
3970 Don't call fold_checksum_tree for TREE_LIST's TREE_CHAIN
3972 Tail recurse TREE_LIST's TREE_CHAIN.
3974 2005-05-31 Andrew Pinski <pinskia@physics.uc.edu>
3977 * tree-ssa-copy.c (dump_copy_of): Create a bitmap and don't visit a
3978 SSA_NAME twice and cause the loop to become finite. Remove the test
3981 2005-05-31 Andrew Pinski <pinskia@physics.uc.edu>
3983 * tree-cfg.c (verify_expr):