OSDN Git Service

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