OSDN Git Service

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